支持向量机的进阶部分,之前我是做过最基本的推导的。想看的朋友戳这里《线性可分支持向量机》。
上一篇我推导了一遍支持向量机的基本内容。包括支持向量机为什么提出,如何提出,还有为什么叫这个名字等方面,也包括支持向量机的完整数学推导。但是我们会发现一个问题,就是我们所有的推导都是建立在线性可分的条件下的,那么现实情况往往不那么乐观。所以我们需要对支持向量机理论进行扩充,使其能够进入实际应用。
而现有的支持向量机提出了两种方法来解决线性不可分的问题。一种是软间隔的引入,另一种是升维度使其可分。可能名字不好懂,没关系,接下来慢慢讨论。
软间隔
上一篇的两种间隔,几何间隔和函数间隔,都是属于硬间隔。意义是务必所有的样本点都被划分正确。那么有时候就会出现这种情况:
在支持向量机的推导中我们发现,支持向量机的基本工作机制是:找到类别中距离分隔线最近的点,并且调整分隔线最大化此间隔。而在如图所示样例中,我们不可能求得分隔线使得所有样本点都划分正确。并且导致此异常的点只占少数。那我们便引入软间隔。软间隔的最基本含义同硬间隔比较区别在于允许某些样本点不满足原约束,从直观上来说,也就是“包容”了那些不满足原约束的点。
当然,在最大化间隔的同时,不满足约束的样本应该尽量少。我们仍旧希望牺牲少量不满足约束的点的情况下,可以获得一条划分鲁棒性很好的分隔线。鲁棒性体现在正确分类样本数多,并且泛化性能足够好。
那么我们从数学角度来设计这个使用软间隔的线性支持向量机。
第一步,我们引入一个松弛变量。也就是将硬间隔软化的“重要指标”。线性不可分意味着某些点不满足约束条件,则添加了松弛变量的约束条件就变成了:
这个条件是需要所有的点都满足的。
并且的,对于每个松弛变量,我们都要支付一定的代价。目标函数变为了:
其中为惩罚参数。大对松弛变量的惩罚越大。最小化目标函数中我们包含了两种意思,一种是使得尽可能小并且间隔尽可能大,另一种就是误分类点的个数尽可能少。便是调节这两者之间的关系。
那么我们带软间隔的线性支持向量机的问题便如下所示:
此为凸二次规划问题。可知解存在,可证明唯一,而存在一个解区间。这在图中也好解释。斜率一定,分隔线在2倍间隔中上下平移,也就有了的区间。
原问题推导到对偶问题
我们根据原问题可写出其拉格朗日函数如下:
首先求函数对的极小,将其微分如下:
得:
将这几个式子代入到原拉格朗日函数中去,求拉格朗日函数对的极小。得:
再对其求关于的极大即得到我们的对偶问题:
利用消去,只留下变量。因为我们最终要求解的只与有关。并将约束写成。再将目标函数由极大转换成极小,此过程仅仅为了求解习惯。那么最终我们就会得到原问题的对偶问题为:
求解此对偶问题,我们会得到一个,则我们有如下定理:设为对偶问题的的一个解,若存在的一个分量并且有,则原始问题的解可以按下式求得:
证明:
原问题是凸二次规划,解满足KKT条件,即得:
由此三个式子很容易求解初。
线性支持向量机算法
输入:训练数据集,其中,
输出:分离超平面和分类决策函数。
- 选择惩罚参数,构造并解决凸二次规划问题。
求得最优解
2.计算
选择的一个分量适合条件,计算:
- 求得分离超平面:
分离决策函数:
需注意的是,对于任意的满足条件,我们都可以求出一个,理论上不唯一,但是实际情况只需挑一个按算法求解即可。