机器学习 - 支持向量机 (Support Vector Machines)

1. 优化目标

在这里插入图片描述

这里的假设函数是缘自逻辑回归(Logistic),它也就是用到了 s i g m o i d sigmoid sigmoid 函数图像如上。其中, z z z 表示 θ T x \theta^Tx θTx

在逻辑回归中:如果有一个 y = 1 y=1 y=1的样本,希望 h θ ( x ) {{h}_{\theta }}\left( x \right) hθ(x) 趋近1,这样代价函数 J J J 才会最小, 从而正确地将此样本分类。在 s i g m o i d sigmoid sigmoid 函数中可以观察到,意味着当 h θ ( x ) {{h}_{\theta }}\left( x \right) hθ(x)趋近于1时, θ T x \theta^Tx θTx 应当远大于0。相反地,如果有另一个样本,即 y = 0 y=0 y=0。希望假设函数的输出值将趋近于0,这对应于 z z z 会远小于0。

现在,先忽略代价函数里的 1 / m 1/m 1/m 这一项,只考虑每一项对代价函数的贡献 (但是这一项是影响整个总代价函数中的这一项的) 。

现在,一起来考虑两种情况:

一种是 y = 1 y=1 y=1的情况;另一种是 y = 0 y=0 y=0 的情况。

在第一种情况中,假设 y = 1 y=1 y=1 ,此时在目标函数中只需有第一项起作用,因为 y = 1 y=1 y=1时, ( 1 − y ) (1-y) (1y)项将等于0。因此,当在 y = 1 y=1 y=1 的样本中时,即在 ( x , y ) (x, y) (x,y)中 ,得到 y = 1 y=1 y=1 − log ⁡ ( 1 − 1 1 + e − z ) ​ -\log(1-\frac{1}{1+e^{-z}})​ log(11+ez1)这样一项。

从这个代价函数开始,也就是 − log ⁡ ( 1 − 1 1 + e − z ) -\log(1-\frac{1}{1+e^{-z}}) log(11+ez1)一点一点修改,取这里的 z = 1 z=1 z=1 ,先画出将要用的代价函数。

在这里插入图片描述

新的代价函数将会水平的从这里到右边(图外),然后再画一条同逻辑回归非常相似的直线 (紫色线条)。这里是由两条线段组成,即位于右边的水平部分和位于左边的直线部分,新的代价函数,是在 y = 1 y=1 y=1的前提下的。

另外一种情况当 y = 0 y=0 y=0时,这时上述表达式只留下了第二项。同样地,要替代这一条蓝色的线,用相似的方法。

在这里插入图片描述

给这两个方程命名,上面的函数,称之为 cos ⁡ t 1 ( z ) {\cos}t_1{(z)} cost1(z),同时,下面的函数称它为 cos ⁡ t 0 ( z ) {\cos}t_0{(z)} cost0(z)。这里的下标是指在代价函数中,对应的 y = 1 y=1 y=1 y = 0 y=0 y=0 的情况,现在就开始构建支持向量机。

在这里插入图片描述

对于支持向量机而言,实质上要将这替换为 cos ⁡ t 1 ( z ) {\cos}t_1{(z)} cost1(z),也就是 cos ⁡ t 1 ( θ T x ) {\cos}t_1{(\theta^Tx)} cost1(θTx),同样地,也将这一项替换为 cos ⁡ t 0 ( z ) {\cos}t_0{(z)} cost0(z),也就是代价 cos ⁡ t 0 ( θ T x ) {\cos}t_0{(\theta^Tx)} cost0(θTx)。这里的代价函数 cos ⁡ t 1 {\cos}t_1 cost1,就是之前所提到的那条线。此外,代价函数 cos ⁡ t 0 {\cos}t_0 cost0,也是上面所介绍过的那条线。因此,对于支持向量机,得到了这里的最小化问题,即:

在这里插入图片描述

首先,要在代价函数中除去 1 / m 1/m 1/m这一项,这也会得出同样的 θ {{\theta }} θ 最优值,因为 1 / m 1/m 1/m 仅是个常量,因此,在最小化问题中,无论前面是否有 1 / m 1/m 1/m 这一项,最终所得到的最优值 θ {{\theta }} θ都是一样的。

第二点,对于逻辑回归,在目标函数中,有两项:第一个是训练样本的代价,第二个是正则化项,一般用这一项来平衡参数 θ \theta θ。为了只讨论优化前一项代价, A + λ × B A+\lambda\times B A+λ×B 把它变成 C × A + B C×A+B C×A+B ,但这里的 C C C 并不意味这等于 1 λ \frac{1}{\lambda} λ1,只是一种优化上的等效。然后最小化这个目标函数,得到SVM 学习到的参数 C C C

在这里插入图片描述

最后有别于逻辑回归输出的概率。当最小化代价函数,获得参数 θ {{\theta }} θ时,支持向量机所做的是它来直接预测 y = 1 y=1 y=1 或 0。因此,这个假设函数会预测1。当 θ T x \theta^Tx θTx大于或者等于0时,或者等于0时,所以学习参数 θ {{\theta }} θ就是支持向量机假设函数的形式。那么,这就是支持向量机数学上的定义。

2. 大边界的直观理解 (Large Margin Intuition)

在这里插入图片描述

这是支持向量机模型的代价函数,左边是关于 z z z的代价函数 cos ⁡ t 1 ( z ) {\cos}t_1{(z)} cost1(z),此函数用于正样本,而在右边是关于 z z z的代价函数 cos ⁡ t 0 ( z ) {\cos}t_0{(z)} cost0(z),横轴表示 z z z。当要最小化这些代价函数时,如果有一个正样本, y = 1 y=1 y=1,则只有在 z > = 1 z>=1 z>=1时,代价函数 cos ⁡ t 1 ( z ) = 0 {\cos}t_1{(z)}=0 cost1(z)=0,也就是希望 θ T x > = 1 \theta^Tx>=1 θTx>=1

反之,如果 y = 0 y=0 y=0,函数 cos ⁡ t 0 ( z ) {\cos}t_0{(z)} cost0(z),它只有在 z < = − 1 z<=-1 z<=1的区间里函数值为0。事实上,如果有一个正样本 y = 1 y=1 y=1,则其实仅仅要求 θ T x \theta^Tx θTx大于等于0,就能将该样本恰当分出,这是因为如果 θ T x \theta^Tx θTx>0的话,模型代价函数值为0,类似地,如果有一个负样本,则仅需要 θ T x \theta^Tx θTx<=0就会将负例正确分离,但是,支持向量机的要求更高,不仅仅要能正确分开输入的样本,即不仅仅要求 θ T x \theta^Tx θTx>0,需要的是比0值大很多,比如大于等于1,也想这个比0小很多,比如希望它小于等于-1,这就相当于在支持向量机中嵌入了一个额外的安全因子,或者说安全的间距因子。

在这里插入图片描述

但是,在支持向量机中,这个因子会导致什么结果。将这个常数 C C C设置成一个非常大的值。比如假设 C C C 的值为100000或者其它非常大的数,然后来观察支持向量机会给出什么结果?

如果 C C C非常大,则最小化代价函数的时候,将会很希望找到一个使第一项为0的最优解。

min ⁡ θ C ∑ i = 1 m [ y ( i ) cos ⁡ t 1 ( θ T x ( i ) ) + ( 1 − y ( i ) ) cos ⁡ t ( θ T x ( i ) ) ] + 1 2 ∑ i = 1 n θ j 2 \min\limits{\theta} C\sum\limits{i=1}^{m}\left[y^{(i)}{\cos}t_{1}\left(\theta^{T}x^{(i)}\right)+\left(1-y^{(i)}\right){\cos}t\left(\theta^{T}x^{(i)}\right)\right]+\frac{1}{2}\sum\limits{i=1}^{n}\theta^{2}_{j} minθCi=1m[y(i)cost1(θTx(i))+(1y(i))cost(θTx(i))]+21i=1nθj2

已经看到输入一个训练样本标签为 y = 1 ​ y=1​ y=1,想令第一项为0,需要做的是找到一个 θ ​ {{\theta }}​ θ,使得 θ T x > = 1 ​ \theta^Tx>=1​ θTx>=1,类似地,对于一个训练样本,标签为 y = 0 ​ y=0​ y=0,为了使 cos ⁡ t 0 ( z ) ​ {\cos}t_0{(z)}​ cost0(z) 函数的值为0,需要 θ T x < = − 1 ​ \theta^Tx<=-1​ θTx<=1。因此,现在考虑优化问题。选择参数,使得第一项等于0,就会导致下面的优化问题,因为将选择参数使第一项为0,因此这个函数的第一项为0,因此是 C ​ C​ C乘以0加上二分之一乘以第二项。这里第一项是 C ​ C​ C乘以0,因此可以将其删去,因为知道它是0。

这将遵从以下的约束: θ T x ( i ) > = 1 \theta^Tx^{(i)}>=1 θTx(i)>=1,如果 y ( i ) y^{(i)} y(i)是等于1 的, θ T x ( i ) < = − 1 \theta^Tx^{(i)}<=-1 θTx(i)<=1,如果样本 i i i是一个负样本,这样当求解这个优化问题的时候,当最小化这个关于变量 θ {{\theta }} θ的函数的时候,会得到一个非常有趣的决策边界。

在这里插入图片描述

具体而言,如果考察这样一个数据集,其中有正样本,也有负样本,可以看到这个数据集是线性可分的。意思是,存在一条直线把正负样本分开。当然有多条不同的直线,可以把正样本和负样本完全分开。

在这里插入图片描述

比如,黑色线条就是一个决策边界可以把正样本和负样本分开。

再画两条更差的决策界,粉色和绿色是另两条决策边界,可以将正样本和负样本分开,但仅仅是勉强分开,这些决策边界看起来都不是特别好的选择,支持向量机将会选择这个黑色的决策边界,相较于之前用粉色或者绿色画的决策界。这条黑色的看起来好得多,黑线看起来是更稳健的决策界。在分离正样本和负样本上它显得的更好。数学上来讲,这条黑线有更大的距离,这个距离叫做间距(margin)。

在这里插入图片描述

当画出这两条额外的蓝线,看到黑色的决策界和训练样本之间有更大的最短距离。然而粉线和蓝线离训练样本就非常近,在分离样本的时候就会比黑线表现差。因此,这个距离叫做支持向量机的间距,而这是支持向量机具有鲁棒性的原因,因为它努力用一个最大间距来分离样本。因此支持向量机有时被称为大间距分类器,而这其实是求解上一页幻灯片上优化问题的结果。

事实上,支持向量机现在要比这个大间距分类器所体现得更成熟,尤其是当使用大间距分类器的时候,学习算法会受异常点(outlier) 的影响。比如加入一个额外的正样本。

在这里插入图片描述

在这里,如果加了这个样本,为了将样本用最大间距分开,也许最终会得到一条类似粉色这样的决策界,仅仅基于一个异常值,仅仅基于一个样本,就将决策界从这条黑线变到这条粉线。而如果正则化参数 C C C,设置的非常大,这事实上正是支持向量机将会做的。它将决策界,从黑线变到了粉线,但是如果 C C C 设置的小一点,如果将C设置的不要太大,则最终会得到这条黑线,当然数据如果不是线性可分的,如果在这里有一些正样本或者在这里有一些负样本,则支持向量机也会将它们恰当分开。因此,大间距分类器的描述,仅仅是从直观上给出了正则化参数 C C C非常大的情形, C C C不是非常非常大的时候,它可以忽略掉一些异常点的影响,得到更好的决策界。甚至当数据不是线性可分的时候,支持向量机也可以给出好的结果。

回顾 C = 1 / λ C=1/\lambda C=1/λ,因此:

C C C 较大时,相当于 λ \lambda λ 较小,可能会导致过拟合,高方差。

C C C 较小时,相当于 λ \lambda λ较大,可能会导致低拟合,高偏差。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小王同学2024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值