1 构建支持向量机
拥有了这些定义之后,现在我们就开始构建支持向量机。
1.1 替换逻辑回归函数
这就是我们在逻辑回归中使用的代价函数J(θ):
对于支持向量机而言,实际上,我们要将
上面式子中的这一项:
同样,这一项:
其中cost分别为下面的红线:
我们命名为
我们命名为
这里替换之后的
所以对于支持向量机的最小化代价函数问题,代价函数的形式如下:
1.2 去除多余的常数项 1m
现在按照支持向量机的惯例,我们去除
1.3 正则化项系数的处理
在逻辑回归的目标函数中,我们有两项表达式:
来自于训练样本的代价函数:
正则化项:
我们不得不使用正则化项来平衡我们的代价函数。这就相当于:
其中A相当于上面的第一项,B相当于第二项。
我们通过修改不同的正则化参数
但对于支持向量机,按照惯例我们将使用一个不同的参数来替换这里使用的
因此,在逻辑回归中,如果给
因此,这只是一种来控制这种权衡关系的不同的方式。当然你也可以把这里的C当做
因此,这样就得到了在支持向量机中的我们的整个优化目标函数:
最后有别于逻辑回归的一点,对于支持向量机假设函数的形式如下:
而不是逻辑回归中的S型曲线:
2 由逻辑回归到svm
安全距离因子
事实上,在逻辑回归中:
如果你有一个正样本,即y=1的情况下,我们仅仅需要\theta^{T}x\ge0;
如果你有一个负样本,即y=0的情况下,我们仅仅需要\theta^{T}x\lt0;
就能将该样本恰当的分类了。
但是支持向量机的要求更高,不仅仅要求
这就相当于在支持向量机中嵌入了一个额外的安全因子(或者说是安全距离因子)。接下来让我们来看看这个因子会导致什么结果:
具体而言,我接下来会将代价函数中的常数项C设置成一个非常大的值,比如100000或者其他非常大的数,然后再来观察支持向量机会给出什么结果。
当代价函数中
C的值非常大时,则最小化代价函数的时候,我们会很希望找到一个使第一项:
为0的最优解。
可以看到当输入一个正样本
对于代价函数
类似地,对于一个负训练样本
对于代价函数
这样一来会产生下面这种优化问题:
因为我们将选择参数使第一项为0,因此这个函数的第一项为0,因此是:
我们知道是C0的结果是0,因此可以删掉,所以最终得到的结果是:
其中:
若
若
这样我们就得到了一个非常有趣的决策边界。
3 SVM决策边界:线性分割案例
支持向量机会选择黑色的这一条直线:
这条直线看起来好很多,因为它看起来更加稳健。在数学上来讲就是这条直线拥有相对于训练数据更大的最短距离,这个所谓的距离就是指间距(margin),而之前两条粉线和蓝线距离训练样本非常近,在分离样本时就会表现的比黑线差。
当有一个异常值产生时:
我们的算法会受到异常值的影响。这时我们将支持向量机中的正则化因子CC设置的非常大,那么我们会得到类似这样一条粉色的决策边界:
那么我们仅仅通过一个异常值,就将我们的决策边界旋转了这么大的角度,实在是不明智的。
当我们的正则化因子CC的值非常大时,支持向量机确实会如此处理,但如果我们适当的减小CC的值,你最终还是会得到那条黑色的决策边界的。
如果数据是线性不可分的话,像这样:
支持向量机也可以恰当的将它们分开。
值得提醒的是CC的作用其实等同于1λ1λ,λλ就是我们之前用到的正则化参数。在支持向量机中,CC不是很大的时候,可以对包含异常数据、以及线性不可分的数据有比较好的处理效果。
稍后我们还会介绍支持向量机的偏差和方差,希望到那时候关于如何处理参数的这种平衡会变得更加清晰。
4 大间距分类器背后的数学原理
其中我们用||u||来表示u的范数(即u的长度),因此||u||的计算公式如下:
投影之后的长度就是图中红线p的长度:
同时也有另外一种计算内积的方式:
5 SVM决策边界
现在我们知道:
其中条件是:
根据第四小节可以写成:
这里的约束项是可以用p^{(i)}·||\theta||来替代的:
若
若
由于决策边界和参数向量是正交的(斜率相乘结果为-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,支持向量机仍然会找到正样本和负样本之间的大间距分隔。总之 我们解释了为什么支持向量机是一个大间距分类器。