Sweety

Practice makes perfect

导航

svm之大间距分类(斯坦福machine learning week 6)

Posted on 2017-11-27 21:35  蓝空  阅读(439)  评论(0编辑  收藏  举报

1 构建支持向量机

拥有了这些定义之后,现在我们就开始构建支持向量机。

1.1 替换逻辑回归函数

这就是我们在逻辑回归中使用的代价函数J(θ):
这里写图片描述

J(θ)=1mi=1m[y(i) log(hθ(x(i)))+(1y(i)) log(1hθ(x(i)))]+λ2mj=1nθ2j

对于支持向量机而言,实际上,我们要将

上面式子中的这一项:(loghθ(x(i)))替换为:cost1(z),即:cost1(θTx(i))
同样,这一项:((log(1hθ(x(i)))))替换为:cost0(z):cost0(θTx(i))
其中cost分别为下面的红线:

图片描述
我们命名为cost1(z)
图片描述

我们命名为cost2(z)

这里替换之后的cost1(z)cost0(z)就是上面提到的那两条靠近逻辑回归函数的折线。

所以对于支持向量机的最小化代价函数问题,代价函数的形式如下:

minθ1m[mi=1y(i)cost1(θTx(i))+(1y(i))cost0(θTx(i))]+λ2mnj=1θ2j

1.2 去除多余的常数项 1m

现在按照支持向量机的惯例,我们去除1m这一项,因为这一项是个常数项,即使去掉我们也可以得出相同的θ最优值:

minθi=1m[y(i)cost1(θTx(i))+(1y(i))cost0(θTx(i))]+λ2j=1nθ2j

1.3 正则化项系数的处理

在逻辑回归的目标函数中,我们有两项表达式:

来自于训练样本的代价函数:

1m[i=1my(i)(loghθ(x(i)))+(1y(i))((log(1hθ(x(i)))))]

正则化项:
λ2j=1nθ2j

我们不得不使用正则化项来平衡我们的代价函数。这就相当于:

A+λB

其中A相当于上面的第一项,B相当于第二项。

我们通过修改不同的正则化参数λ来达到优化目的,这样我们就能够使得训练样本拟合的更好。

但对于支持向量机,按照惯例我们将使用一个不同的参数来替换这里使用的λ来实现权衡这两项的目的。这个参数我们称为C。同时将优化目标改为:

CA+B

因此,在逻辑回归中,如果给λ一个很大的值,那么就意味着给与B了一个很大的权重,而在支持向量机中,就相当于对C设定了一个非常小的值,这样一来就相当于对B给了比A更大的权重。

因此,这只是一种来控制这种权衡关系的不同的方式。当然你也可以把这里的C当做farc1λ来使用。

因此,这样就得到了在支持向量机中的我们的整个优化目标函数:

minθCi=1m[y(i)cost1(θTx(i))+(1y(i))cost0(θTx(i))]+12j=1nθ2j

最后有别于逻辑回归的一点,对于支持向量机假设函数的形式如下:

hθ(x)=1   if θTx0

hθ(x)=0   if θTx<0

而不是逻辑回归中的S型曲线:

hθ(x)=11+ex

2 由逻辑回归到svm

安全距离因子

事实上,在逻辑回归中:

如果你有一个正样本,即y=1的情况下,我们仅仅需要\theta^{T}x\ge0;
如果你有一个负样本,即y=0的情况下,我们仅仅需要\theta^{T}x\lt0;

就能将该样本恰当的分类了。

但是支持向量机的要求更高,不仅仅要求θTx0θTx<0,而且要求θTx比0大很多,或小很多。比如这里要求θTx1以及θTx1

这就相当于在支持向量机中嵌入了一个额外的安全因子(或者说是安全距离因子)。接下来让我们来看看这个因子会导致什么结果:

具体而言,我接下来会将代价函数中的常数项C设置成一个非常大的值,比如100000或者其他非常大的数,然后再来观察支持向量机会给出什么结果。

当代价函数中

minθCi=1m[y(i)cost1(θTx(i))+(1y(i))cost0(θTx(i))]+12j=1nθ2j

C的值非常大时,则最小化代价函数的时候,我们会很希望找到一个使第一项:

i=1m[y(i)cost1(θTx(i))+(1y(i))cost0(θTx(i))]

为0的最优解。

可以看到当输入一个正样本y(i)=1时,我们想令上面这一项为0,从图中可以得出

对于代价函数cost1(z)我们需要使得θTx(i)1

类似地,对于一个负训练样本y(i)=0时,我们想令上面这一项为0,从图中可以得出

对于代价函数cost0(z)我们需要使得θTx(i)1

这样一来会产生下面这种优化问题:

因为我们将选择参数使第一项为0,因此这个函数的第一项为0,因此是:

minθC0+12j=1nθ2j

我们知道是C0的结果是0,因此可以删掉,所以最终得到的结果是:

minθ12j=1nθ2j

其中:

y(i)=1时,则θTx(i)1
y(i)=0时,则θTx(i)1

这样我们就得到了一个非常有趣的决策边界。

3 SVM决策边界:线性分割案例

支持向量机会选择黑色的这一条直线:
图片描述

这条直线看起来好很多,因为它看起来更加稳健。在数学上来讲就是这条直线拥有相对于训练数据更大的最短距离,这个所谓的距离就是指间距(margin),而之前两条粉线和蓝线距离训练样本非常近,在分离样本时就会表现的比黑线差。

当有一个异常值产生时:
图片描述
这里写图片描述

我们的算法会受到异常值的影响。这时我们将支持向量机中的正则化因子CC设置的非常大,那么我们会得到类似这样一条粉色的决策边界:
这里写图片描述

那么我们仅仅通过一个异常值,就将我们的决策边界旋转了这么大的角度,实在是不明智的。
这里写图片描述

当我们的正则化因子CC的值非常大时,支持向量机确实会如此处理,但如果我们适当的减小CC的值,你最终还是会得到那条黑色的决策边界的。

如果数据是线性不可分的话,像这样:
这里写图片描述

支持向量机也可以恰当的将它们分开。

值得提醒的是CC的作用其实等同于1λ1λ,λλ就是我们之前用到的正则化参数。在支持向量机中,CC不是很大的时候,可以对包含异常数据、以及线性不可分的数据有比较好的处理效果。

稍后我们还会介绍支持向量机的偏差和方差,希望到那时候关于如何处理参数的这种平衡会变得更加清晰。

4 大间距分类器背后的数学原理

这里写图片描述
其中我们用||u||来表示u的范数(即u的长度),因此||u||的计算公式如下:

||u||=u21+u22

这里写图片描述

投影之后的长度就是图中红线p的长度:

p=vu

同时也有另外一种计算内积的方式:

uTv=p||u||

5 SVM决策边界

现在我们知道:

minθ12j=1nθ2j

其中条件是:

y(i)=1θTx(i)1
y(i)=0θTx(i)1

根据第四小节可以写成:

minθ12j=1nθ2j=12||θ||2

这里的约束项是可以用p^{(i)}·||\theta||来替代的:
y(i)=1时,则p(i)||θ||1
y(i)=0时,则p(i)||θ||1

由于决策边界和参数向量是正交的(斜率相乘结果为-1)(为什么决策边界和参数向量是正交的),我们可以绘制出对应的参数向量θ:

这里写图片描述

这里由于我们指定了θ0=0θ0=0,也就意味着决策边界是过原点的。

我们可以画出这个样本向量到θθ的投影p(1):
这里写图片描述

类似的,我们也可以画出第二个样本向量到θ的投影p(2):
这里写图片描述

我们会发现,这些p(i)p(i)将会是一些非常小的数。因此当我们考察优化目标函数的时候:

对于正样本(y(i)=1y(i)=1,即图中的”x”样本)而言,我们需要p(i)⋅||θ||≥1p(i)·||θ||≥1,由于p(i)p(i)非常小,也就意味着||θ||||θ||需要非常大。

对于负样本(y(i)=−1y(i)=−1,即图中的”o”样本)而言,我们需要p(i)⋅||θ||≤−1p(i)·||θ||≤−1,由于p(i)p(i)非常小,也就意味着||θ||需要非常大。

但我们的实际目标是希望找到一个参数θθ,使得它的范数||θ||||θ||是尽可能小的,因此这并不是一个好的决策边界,因为我们的||θ||比较大。

对于下面这个决策边界来说,情况就会有很大的不同:
如果我们现在再来绘制出样本向量在参数向量上的投影p(1)p(1)和p(2)p(2)的话,你会发现这些投影的长度比之前长多了:

这里写图片描述

最后一点,我们的推导自始至终都使用了截距为0(即θ0=0)这个简化假设。这样做的作用就是可以使得决策边界始终是通过原点的,如果你的决策边界不过原点,那么θ0≠0,但支持向量机会产生大间距分类器的结论依然成立(具体推导过程不再叙述,和这里很类似)。但是可以说明的是,即便θ0≠0,支持向量机仍然会找到正样本和负样本之间的大间距分隔。总之 我们解释了为什么支持向量机是一个大间距分类器。