吴恩达机器学习笔记:第 7 周-12支持向量机(Support Vector Machines)12.1-12.3

目录

  • 第 7 周 12、 支持向量机(Support Vector Machines)
    • 12.1 优化目标

第 7 周 12、 支持向量机(Support Vector Machines)

12.1 优化目标

到目前为止,你已经见过一系列不同的学习算法。在监督学习中,许多学习算法的性能都非常类似,因此,重要的不是你该选择使用学习算法 A 还是学习算法 B,而更重要的是,应用这些算法时,所创建的大量数据在应用这些算法时,表现情况通常依赖于你的水平。比如:你为学习算法所设计的特征量的选择,以及如何选择正则化参数,诸如此类的事。还有一个更加强大的算法广泛的应用于工业界和学术界,它被称为支持向量机(Support Vector Machine)。与逻辑回归和神经网络相比,支持向量机,或者简称 SVM,在学习复杂的非线性方程时提供了一种更为清晰,更加强大的方式。因此,在接下来的视频中,我会探讨这一算法。在稍后的课程中,我也会对监督学习算法进行简要的总结。当然,仅仅是作简要描述。但对于支持向量机,鉴于该算法的强大和受欢迎度,在本课中,我会花许多时间来讲解它。它也是我们所介绍的最后一个监督学习算法。

正如我们之前开发的学习算法,我们从优化目标开始。那么,我们开始学习这个算法。为了描述支持向量机,事实上,我将会从逻辑回归开始展示我们如何一点一点修改来得到本质上的支持向量机。

在这里插入图片描述
那么,在逻辑回归中我们已经熟悉了这里的假设函数形式,和右边的 S 型激励函数。然而,为了解释一些数学知识.我将用z表示 θ T x θ^Tx θTx

现在考虑下我们想要逻辑回归做什么:如果有一个 𝑦 = 1的样本,我的意思是不管是在训练集中或是在测试集中,又或者在交叉验证集中,总之是 𝑦 = 1,现在我们希望ℎ𝜃(𝑥) 趋近 1。因为我们想要正确地将此样本分类,这就意味着当 ℎ𝜃(𝑥)趋近于 1 时, θ T x θ^Tx θTx 应当远大于 0,这里的>>意思是远远大于 0。这是因为由于 𝑧 表示 θ T x θ^Tx θTx,当 𝑧远大于 0 时,即到了该图的右边,你不难发现此时逻辑回归的输出将趋近于 1。相反地,如果我们有另一个样本,即𝑦 = 0。我们希望假设函数的输出值将趋近于 0,这对应于 θ T x θ^Tx θTx,或者就是 𝑧 会远小于 0,因为对应的假设函数的输出值趋近 0。
在这里插入图片描述
如果你进一步观察逻辑回归的代价函数,你会发现每个样本 (𝑥, 𝑦)都会为总代价函数,增加这里的一项,因此,对于总代价函数通常会有对所有的训练样本求和,并且这里还有一个 1 m \frac{1}{m} m1项,但是,在逻辑回归中,这里的这一项就是表示一个训练样本所对应的表达式。现在,如果我将完整定义的假设函数代入这里。那么,我们就会得到每一个训练样本都影响这一项。

现在,先忽略 1 m \frac{1}{m} m1 这一项,但是这一项是影响整个总代价函数中的这一项的。
现在,一起来考虑两种情况:
一种是𝑦等于 1 的情况;另一种是 𝑦 等于 0 的情况。在第一种情况中,假设 𝑦 = 1 ,此时在目标函数中只需有第一项起作用,因为𝑦 = 1时,
(1 − 𝑦)项将等于 0。因此,当在 𝑦 = 1 的样本中时,即在 (𝑥, 𝑦)中 ,我们得到 𝑦 = − l o g ( 1 1 + e − z ) −log(\frac{1}{1+e^{−z}}) log(1+ez1)这样一项,这里同上一张幻灯片一致。

我用 𝑧 表示 θ T x θ^Tx θTx,即: 𝑧 = θ T x θ^Tx θTx。当然,在代价函数中,𝑦 前面有负号。我们只是这样表示,如果 𝑦 = 1 代价函数中,这一项也等于 1。这样做是为了简化此处的表达式。如果画出关于𝑧 的函数,你会看到左下角的这条曲线,我们同样可以看到,当𝑧 增大时,也就是相
当于 θ T x θ^Tx θTx增大时,𝑧 对应的值会变的非常小。对整个代价函数而言,影响也非常小。这也就解释了,为什么逻辑回归在观察到正样本𝑦 = 1时,试图将 θ T x θ^Tx θTx设置得非常大。因为,在代价函数中的这一项会变的非常小。

现在开始建立支持向量机,我们从这里开始:我们会从这个代价函数开始,也就是 − l o g ( 1 1 + e − z ) −log(\frac{1}{1+e^{−z}}) log(1+ez1)一点一点修改,让我取这里的𝑧 = 1点,我先画出将要用的代价函数。
在这里插入图片描述

新的代价函数将会水平的从这里到右边(图外),然后我再画一条同逻辑回归非常相似的直线,但是,在这里是一条直线,也就是我用紫红色画的曲线,就是这条紫红色的曲线。那么,到了这里已经非常接近逻辑回归中使用的代价函数了。只是这里是由两条线段组成,即位于右边的水平部分和位于左边的直线部分,先别过多的考虑左边直线部分的斜率,这并不是很重要。但是,这里我们将使用的新的代价函数,是在𝑦 = 1的前提下的。你也许能想到,这应该能做同逻辑回归中类似的事情,但事实上,在之后的优化问题中,这会变得更坚定,并且为支持向量机,带来计算上的优势。例如,更容易计算股票交易的问题等等。

目前,我们只是讨论了𝑦 = 1的情况,另外一种情况是当𝑦 = 0时,此时如果你仔细观察代价函数只留下了第二项,因为第一项被消除了。如果当𝑦 = 0时,那么这一项也就是 0 了。所以上述表达式只留下了第二项。因此,这个样本的代价或是代价函数的贡献。将会由这一项表示。并且,如果你将这一项作为𝑧的函数,那么,这里就会得到横轴𝑧。现在,你完成了支持向量机中的部分内容,同样地,我们要替代这一条蓝色的线,用相似的方法。

在这里插入图片描述
如果我们用一个新的代价函数来代替,即这条从 0 点开始的水平直线,然后是一条斜线,像上图。那么,现在让我给这两个方程命名,左边的函数,我称之为cos𝑡1(𝑧),同时,右边函数我称它为cos𝑡0(𝑧)。这里的下标是指在代价函数中,对应的 𝑦 = 1 和 𝑦 = 0 的情况,拥有了这些定义后,现在,我们就开始构建支持向量机。

在这里插入图片描述
这是我们在逻辑回归中使用代价函数𝐽(𝜃)。也许这个方程看起来不是非常熟悉。这是因为之前有个负号在方程外面,但是,这里我所做的是,将负号移到了表达式的里面,这样做使得方程看起来有些不同。对于支持向量机而言,实质上我们要将这替换为cos𝑡1(𝑧),也就是cos𝑡1( θ T x θ^Tx θTx),同样地,我也将这一项替换为cos𝑡0(𝑧),也就是代价cos𝑡0( θ T x θ^Tx θTx)。这里的代价函数cos𝑡1,就是之前所提到的那条线。此外,代价函数cos𝑡0,也是上面所介绍过的那条线。因此,对于支持向量机,我们得到了这里的最小化问题,即:
在这里插入图片描述
然后,再加上正则化参数。现在,按照支持向量机的惯例,事实上,我们的书写会稍微有些不同,代价函数的参数表示也会稍微有些不同。

首先,我们要除去1/𝑚这一项,当然,这仅仅是由于人们使用支持向量机时,对比于逻辑回归而言,不同的习惯所致,但这里我所说的意思是:你知道,我将要做的是仅仅除去1/𝑚这一项,但是,这也会得出同样的 𝜃 最优值,好的,因为1/𝑚 仅是个常量,因此,你知道在这个最小化问题中,无论前面是否有1/𝑚 这一项,最终我所得到的最优值𝜃都是一样的。

第二点概念上的变化,我们只是指在使用支持向量机时,一些如下的标准惯例,而不是逻辑回归。因此,对于逻辑回归,在目标函数中,我们有两项:第一个是训练样本的代价,第二个是我们的正则化项,我们不得不去用这一项来平衡。这就相当于我们想要最小化𝐴加上正则化参数𝜆,然后乘以其他项𝐵对吧?这里的𝐴表示这里的第一项,同时我用 B 表示第二项,但不包括𝜆,我们不是优化这里的𝐴 + 𝜆 × 𝐵。我们所做的是通过设置不同正则参数𝜆达到优化目的。这样,我们就能够权衡对应的项,是使得训练样本拟合的更好。即最小化𝐴。还是保证正则参数足够小,也即是对于 B 项而言,但对于支持向量机,按照惯例,我们将使用一个不同的参数替换这里使用的𝜆来权衡这两项。你知道,就是第一项和第二项我们依照惯例使用一个不同的参数称为𝐶,同时改为优化目标,𝐶 × 𝐴 + 𝐵因此,在逻辑回归中,如果给定𝜆,一个非常大的值,意味着给予 B 更大的权重。而这里,就对应于将𝐶 设定为非常小的值,那么,相应的将会给𝐵比给𝐴更大的权重。因此,这只是一种不同的方式来控制这种权衡或者一种不同的方法,即用参数来决定是更关心第一项的优化,还是更关心第二项的优化。当然你也可以把这里的参数𝐶 考虑成1/𝜆,同 1/𝜆所扮演的角色相同,并且这两个方程或这两个表达式并不相同,因为𝐶 = 1/𝜆,但是也并不全是这样,如果当𝐶 = 1/𝜆时,这两个优化目标应当得到相同的值,相同的最优值 𝜃。因此,就用它们来代替。那么,我现在删掉这里的𝜆,并且用常数𝐶来代替。因此,这就得到了在支持向量机中我们的整个优化目标函数。然后最小化这个目标函数,得到 SVM 学习到的参数𝐶。
在这里插入图片描述
最后有别于逻辑回归输出的概率。在这里,我们的代价函数,当最小化代价函数,获得参数𝜃时,支持向量机所做的是它来直接预测𝑦的值等于 1,还是等于 0。因此,这个假设函数会预测 1。当 θ T x θ^Tx θTx大于或者等于 0 时,或者等于 0 时,所以学习参数𝜃就是支持向量机假设函数的形式。那么,这就是支持向量机数学上的定义。

在接下来的视频中,让我们再回去从直观的角度看看优化目标,实际上是在做什么,以及 SVM 的假设函数将会学习什么,同时也会谈谈如何做些许修改,学习更加复杂、非线性的函数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/800549.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[计算机知识] TCP/IP网络模型、MySQL的结构

TCP/IP网络模型 应用层 给用户提供应用功能,如HTTP, DNS 应用层处于用户态,传输层及以下处于内核态 传输层 给应用层提供网络支持,如TCP, UDP TCP提供稳定、面向连接的网络传输协议 应用层的数据可能会太大,就需要进行拆分…

大恒相机-程序异常退出后显示被占用

心跳时间代表多久向相机发送一次心跳包,如果超时则设备会认为断开了,停止工作并主动释放占用资源。 在相机打开后添加代码: #ifdef _DEBUG//设置心跳超时时间 3sObjFeatureControlPtr->GetIntFeature("GevHeartbeatTimeout")-&…

Github上传大文件(>25MB)教程

0.在github中创建新的项目(已创建可忽略这一步) 如上图所示,点击New repository 进入如下页面: 1.下载Git LFS 下载git 2.打开gitbash 3.上传文件,代码如下: cd upload #进入名为upload的文件夹,提前…

【御控物联】 JavaScript JSON结构转换(21):数组To对象——综合应用

文章目录 一、JSON结构转换是什么?二、术语解释三、案例之《JSON数组 To JSON对象》四、代码实现五、在线转换工具六、技术资料 一、JSON结构转换是什么? JSON结构转换指的是将一个JSON对象或JSON数组按照一定规则进行重组、筛选、映射或转换&#xff0…

希亦、石头、添可洗地机哪个更好用?资深家电测评师多角度横评

作为一个测评了许多洗地机的家电测评师,有很多人问我,他想入手一款适合自己的家用洗地机,不知道怎么购买到自己合适的,结果自己跑去搜索后发现为什么有的洗地机几百块钱就能入手,而有的又得几千元,买贵的怕…

JS--demo2录入学生信息

实现学生信息录取。 效果图: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><meta http-equiv"X-U…

JS小项目-计算器

需求&#xff1a;根据素材制作如图所示页面&#xff0c;在页面输入第一个数和第二个数&#xff0c;单击&#xff08;加&#xff09;、&#xff0d;&#xff08;减&#xff09;、&#xff0a;&#xff08;乘&#xff09;、&#xff0f;&#xff08;除&#xff09;按钮时&#xf…

Your file appears not to be a valid OLE2 document

前言 org.apache.poi.poifs.filesystem.NotOLE2FileException:Invalid header signature; read 0x0000000000000000, expected 0xE11AB1A1E011CFD0 - Your file appears not to be a valid OLE2 document解决 Excel兼容模式打开老版本文件造成文件损坏&#xff0c;大多说的是点…

vscode-tasks.json自定义任务

以下所有内容,参考自VScode官方文档: vscode_tasks-docs任务说明文档vscode_variables-reference-docs变量说明文档vscode addtional docs for tasksvscode launch.json 属性设置文档,(下文没有介绍,没有涉及) 浅浅记录一下个人对vscode任务(task)的理解,还谈不上使用. 文章目…

linux通配符

通配符&#xff0c;它是一种用于匹配文件名的特殊字符。通配符在Linux中可以帮助我们更加方便和快捷地查找和操作文件。

IDEA new ui 找不到evaluate

问题 idea升级新版本之后&#xff0c;发现熟悉的evaluate不见了&#xff0c;只能通过快捷键启动&#xff0c;未免太麻烦了&#xff0c;如何像旧版一样添加图标直接点呢&#xff1f; 解决方案 打开debug窗口&#xff0c;在这个地方右键&#xff0c;然后选择add actions 搜索…

Mysql底层原理四:B+树索引

B树索引&#xff08;索引的原理&#xff09; 1.前言 前边我们详细唠叨了InnoDB数据⻚的7个组成部分&#xff0c;知道了各个数据⻚可以组成⼀个双向链表&#xff0c;⽽每个数据⻚中的记录会按照主键值从⼩到⼤的顺序组成⼀个单向链 表&#xff0c;每个数据⻚都会为存储在它⾥边…

【Web】纯萌新的CISCN刷题记录(1)

目录 [CISCN 2019华东南]Web11 [CISCN 2019华北Day2]Web1 [CISCN 2019初赛]Love Math [CISCN 2022 初赛]ezpop [CISCN 2019华东南]Double Secret [CISCN 2023 华北]ez_date [CISCN 2019华北Day1]Web1 [CISCN 2019华东南]Web4 [CISCN 2019华北Day1]Web2 [CISCN 2023 …

解决电脑无故自动关机或重启的15种方法,总有一种适合你

序言 你的Windows PC是否在没有警告的情况下关闭或重新启动?这背后有几个潜在的原因。例如,它可能是软件/硬件冲突、过热或硬盘驱动器错误。本故障排除指南将概述在Windows 10/11中修复自动关闭和重新启动的多个解决方案。 如果你的计算机经常关闭,则必须在安全模式下启动…

JMeter 常见函数讲解

当使用JMeter进行性能测试或负载测试时&#xff0c;函数是一个非常有用的工具&#xff0c;可以帮助生成动态的测试数据或处理测试结果。 下面是一些常用的JMeter函数的详细讲解和并列示例&#xff1a; 1、__threadNum&#xff1a; 返回当前线程的编号。可以在测试过程中用于…

2024/4/1—力扣—主要元素

代码实现&#xff1a; 思路&#xff1a;摩尔投票算法 int majorityElement(int *nums, int numsSize) {int candidate -1;int count 0;for (int i 0; i < numsSize; i) {if (count 0) {candidate nums[i];}if (nums[i] candidate) {count;} else {count--;}}count 0;…

静态中间继电器 HJZ-J908 AC380V 导轨安装 JOSEF约瑟

系列型号&#xff1a; HJZ-J902静态中间继电器&#xff1b;HJZ-J905静态中间继电器&#xff1b; HJZ-J907静态中间继电器&#xff1b;HJZ-J907L静态中间继电器&#xff1b; HJZ-J908静态中间继电器&#xff1b;HJZ-J909静态中间继电器&#xff1b; HJZ-J910静态中间继电器&…

SpringCloud学习(12)-SpringCloudAlibaba-Sentinel

Sentinel介绍 Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件&#xff0c;主要以流量为切入点&#xff0c;从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。 官网 home | Sentinel 下载…

python应用-计算两个日期的时间差

学习目录 1. 安装deteutil包 2. 导入relativedelta类 3. 计算两个日期的差值 4. 计算1个日期和时间差相加后得到新的日期 之前在工作中遇到一个使用场景&#xff1a;需要计算两个日期之前的差值&#xff0c;比如相差了几年几月几日&#xff0c;查找资料发现deteutil包的rel…

从用友U9到钉钉通过接口配置打通数据

从用友U9到钉钉通过接口配置打通数据 接通系统&#xff1a;用友U9 用友U9cloud深耕制造领域十三载&#xff0c;U9cloud在机械、电子、汽配、家具、整车、军工等细分行业有着深厚的积累&#xff0c;尤其是机械、电子和汽配行业&#xff0c;不但打造了多个成熟的产品模式和应用场…