机器学习 吴恩达 第十一章 笔记
十一、支持向量机(Support Vector Machines)
11.1 优化目标
到目前为止,你已经见过一系列不同的学习算法.在监督学习中,许多学习算法的性能都非常类似.因此,重要的不是你该选择使用学习算法A还是学习算法B,而更重要的是,应用这些算法时,所创建的大量数据在应用这些算法时,表现情况通常依赖于你的水平.比如:你为学习算法所设计的特征量的选择,以及如何选择正则化参数,诸如此类的事.还有一个更加强大的算法广泛的应用于工业界和学术界,它被称为支持向量机(Support Vector Machine).与逻辑回归和神经网络相比,支持向量机,或者简称SVM,在学习复杂的非线性方程时提供了一种更为清晰,更加强大的方式.
稍后的课程中,我也会对监督学习算法进行简要的总结.当然,仅仅是作简要描述.但对于支持向量机,鉴于该算法的强大和受欢迎度,在本课中,我会花许多时间来讲解它.它也是我们所介绍的最后一个监督学习算法.
正如我们之前开发的学习算法,我们从优化目标开始.为了描述SVM,我们从逻辑回归开始介绍.
我们考虑单个项对成本函数的贡献.如果你进一步观察逻辑回归的代价函数,你会发现每个样本 (x,y)都会为总代价函数做出贡献.公式如下图所示.
我们讨论
现在开始建立支持向量机,我们从这里开始:们会从这个代价函数开始,也就是
上面的y=1的情况,还有一种情况是y=0,此时只有第二项起作用.同样取
如果我们用一个新的代价函数来代替,即这条从0点开始的水平直线,然后是一条斜线,像上图.那么,现在给这个方程命名,一般称之为
下面是逻辑回归的代价函数(把负号移进了小括号里):
对于支持向量机,我们就将小括号的内容换成:
因为常数
最后,有别于逻辑回归输出的概率,SVM并不换输出概率.通过优化代价函数我们可以得到
11.2 大间隔的直观理解
人们有时将支持向量机称作是大间距分类器.本节讲述原因.
这是支持向量机模型的代价函数,接下来我们需要思考如何使代价函数变小.那么当
让我们看一下在支持向量机中,这个因子会导致什么结果.具体而言,我接下来会考虑一个特例.我们将这个常数
那么,我们的最小化情况变得如上所示,可以说当我们得到-1和1时,我们得到了一个很有趣的边界.
具体而言,如果你考察这样一个数据集,其中有正样本,也有负样本,可以看到这个数据集是线性可分的.我的意思是,存在一条直线把正负样本分开.当然有多条不同的直线,可以把正样本和负样本完全分开.
比如,下面就是一个决策边界可以把正样本和负样本分开.但是这两条线(红绿)有点差强人意.
支持向量机将会选择这个黑色的决策边界,相较于之前我用粉色或者绿色画的决策界,这条黑色的看起来好得多,黑线看起来是更稳健的决策界.数学上来讲,这是什么意思呢?这条黑线有更大的距离,这个距离叫做间距(margin).
当画出这两条额外的蓝线,我们看到黑色的决策界和训练样本之间有更大的最短距离.然而粉线和蓝线离训练样本就非常近,在分离样本的时候就会比黑线表现差.因此,这个距离叫做支持向量机的间距,而这是支持向量机具有鲁棒性的原因,因为它努力用一个最大间距来分离样本.因此支持向量机有时被称为大间距分类器,而这其实是求解上一页幻灯片上优化问题的结果.
下一节,我将会从直观上略述为什么这个优化问题会产生大间距分类器。总之这个图示有助于你理解支持向量机模型的做法,即努力将正样本和负样本用最大的间距分开.
最后一点,我们的大间隔分类器是在C(正则化常数)很大的情况下设立的.但是如果C很大时,出现一个异常点的时候,边界线就会很敏感,从黑色变成紫红色.但如果C设置小一点,分隔线就是黑色那条线.当然数据如果不是线性可分的,如果你在这里正样本集合中有负样本,则支持向量机也会将它们恰当分开.
但是实际上应用支持向量机的时候,当
最后,在让代价函数最小化的过程中,我们希望找出在
11.3 大分隔分类器背后的数学(选修)
本节的目的是让你对支持向量机中的优化问题以及如何得到大间距分类器,产生更好的直观理解.
首先,让我来给大家复习一下关于向量内积的知识.假设有两个向量
最后一点,需要注意的就是值
下面是我们先前给出的支持向量机模型中的目标函数.为了讲解方便,我做一点简化,仅仅是为了让目标函数更容易被分析.
注意在st的情况下,成本函数只剩下
现在看看这些项:
因此我们st的条件就可以替换为:
现在让我们考虑下面这里的训练样本.现在,继续使用之前的简化:
现在让我们看一下这对于优化目标函数意味着什么,我们将样本作投影到决策曲线,可以发现样本和
相反的,来看一个不同的决策边界.比如SVM选择了右下绿色那条决策线,而
最后,即使
11.4 核函数1
回顾我们之前讨论过可以使用高级数的多项式模型来解决无法用直线进行分隔的分类问题:
为了获得上图所示的判定边界,我们的模型可能是
得到
给定一个训练样本
例如:
注:这个函数与正态分布没什么实际上的关系,只是看上去像而已
让我们来尝试理解这个核函数.先看第一个标记,这里忽视了
(1)
(2)
因此,
更具体来说,假设我们的训练样本含有两个特征
解释一下第一幅图,横轴坐标是
第二幅图高度没有变化,但是当
上面是特征的定义,接下来我们要利用特征得到预测函数.给定一个样本
最后我们可以尝试多点代入,可以得出一个红色的边界,在范围里预测
总而言之,我们需要标记点和核函数来得出新的特征,训练出复杂的非线性边界.
11.5 核函数2
在上一节,我们讨论了核函数的思想,以及怎样利用它去实现支持向量机的一些新特性.本节,我们补充一些细节问题.
首先,如何选择地标
我们通常是根据训练集的数量选择地标的数量,即如果训练集中有
接下来是过程,在已知
注意这里预测和成本函数不要搞混了.前面>1和-1都是站在尽量减小成本函数的角度上考虑.
那么如何得到参数
在下图具体实施过程中,我们还需要对最后的正则化项进行些微调整,在计算
理论上讲,我们也可以在逻辑回归中使用核函数和地标技术,但是上面使用 M
来简化计算的方法不适用与逻辑回归,因此计算将非常耗费时间.
另一个值得说明的问题是:当使用SVM的时候,怎么选择参数
11.6 使用SVM
本节我们讨论运行或者运用SVM.正如我们在之前小节里提到的,不建议你自己写代码来求解参数
- 选择参数C
- 选择核函数(相似度函数)
比如,一个选择就是我们不选择任何核函数.只要当
从逻辑回归模型我们得到了支持向量机模型,在两者之间,我们应该如何选择呢?
下面是一些普遍使用的准则:
(1) 如果相较于m
而言,n
要大许多,即训练集数据量不够支持我们训练一个复杂的非线性模型,我们选用逻辑回归模型或者不带核函数的支持向量机.我们没有足够的数据拟合复杂的非线性函数.
(2) 如果n
较小,m
而且大小中等.例如n
在 1-1000 之间,而m
在10-10000(非1000000)之间,使用高斯核函数的支持向量机.
(3) 如果n
较小,m
而较大,例如n
在1-1000之间,而m
大于50000,则使用支持向量机会非常慢,解决方案是创造、增加更多的特征,然后使用逻辑回归或不带核函数的支持向量机.
逻辑回归或不带核函数的支持向量机是两个非常相似的算法.
值得一提的是,神经网络在以上三种情况下都可能会有较好的表现,但是训练神经网络可能非常慢,选择支持向量机的原因主要在于它的代价函数是凸函数,不存在局部最小值.
请注意,有的语言在实现SVM
的时候,可能会要求你自己实现一个核函数(比如Matlab),输入
虽然线性核函数和高斯核函数是我们最常使用的两个核函数,但不是所有我们提出来的核函数都是有效的核函数.核函数必须满足默塞尔定理(不满足就无法使用工具包用来优化求
(1) 多项式核函数:有多种形式,比如:
(2) 字符串核函数,用来衡量两个字符串的相似度等等
还有一个多分类问题.假设我们利用之前介绍的一对多方法来解决一个多类分类问题.如果一共有
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2021-02-14 Arrange the Bulls POJ - 2441
2021-02-14 Islands and Bridges POJ - 2288
2021-02-14 Hie with the Pie POJ - 3311
2021-02-14 炮兵阵地 POJ - 1185