SVM是一种经典的二分类模型,它可以被看作是感知机模型的扩展。本文首先介绍感知机模型,然后介绍支持向量机的推导过程及求解方法。参考资料—李航统计学习方法,西瓜书,Ng机器学习课程cs229-SVM。
感知机
感知机也是一个经典的二分类模型,它假设数据集是线性可分的。感知机的预测函数如下:
,其中
是符号函数。一张图表示感知机模型:
我们看到,感知机模型只需要训练出的参数能够对所有训练样本正确分类就可以了。实际上,感知机模型的优化目标如下:
其中
表示误分类样本点集合。对于任意一个误分类样本点
,都有
,当不存在误分类样本点的时候,上式最小。
感知机学习算法
从表达式中可以看出,感知机是误分类驱动的一种学习方法。因此,感知机学习过程可采用随机梯度下降的方法。令
。
在随机梯度下降法中,每次迭代随机选取一个误分类点(
)做梯度下降,也就是下式:
;
。
直到所有的训练样本都被正确分类,迭代也就停止了。
感知机的学习目标只要求找到一个线性超平面,使得误分类样本点的个数为0即可。那么显然是有无穷多组最优参数。
间隔最大化与SVM
SVM可以看成是感知机的推广,SVM是从感知机得到的最优参数里面找到这样一组参数。这组参数所确定的超平面到两类样本点的最短距离要最大,这个解释稍微有点绕口。同样地,一张图表明支持向量机模型。
我们可以看到,这个分类超平面不太一样,它到两类样本点的最短距离是相等的。我们令这个最短距离为
。根据点到直线的距离公式我们知道,任意一个样本点
到超平面的距离为
。
所以导出线性可分SVM的目标为:
。
我们令 ,那么上式转化为:
。
由于参数 和 可以任意的缩放变换而不改变这个超平面。所以上式转化为:
。
Equation 4:
。
即
。
Equation 4就是线性可分SVM的原始形式,接下来我们求解这个优化目标。
线性可分SVM的对偶形式
由于Equation 4.是一个凸二次规划问题,所以可以直接用现成的优化包求解。但是利用对偶问题解决这个会更加高效,而且能比较容易地做Kernel Trick。对Equation 4构建Lagrange函数
其中 为Lagrange乘子。
所以, 。
这个过程满足KKT条件如下:
其中式三被称为KKT互补条件。它表明了:对于大部分的样本点,其对应的 。只有少部分满足 的样本点, 可以不为0,在大多数实际情况下, 一般不为0。
现在谈谈SVM的对偶问题,令原始问题为P,对偶问题为D
;
;
当目标函数和不等式约束条件的函数均为为凸函数的时候,我们有原始问题的最优值等于对偶问题的最优值,且这种情况下,两者的最优解也相等。
也就是,假设
为原始问题的最优解,
为对偶问题的最优解,那么
回到Lagrange函数,我们求得 ,这是对偶问题的最优解。
我们将 的值代入Lagrange函数,即可得到对偶问题:
因为 。所以对偶问题的优化目标如下:
我们在讲完软间隔最大化和Kernel Trick之后再来讨论SVM的优化方法。
软间隔最大化
在大多数情况下,很难保证数据是线性可分的,而硬间隔最大化又只能保证线性可分的数据。因此,在SVM中我们容忍少部分训练样本是被误分类的,因此就导出了软间隔最大化。示意图如下(图片引用自https://www.cnblogs.com/pinard/p/6100722.html):
先写出软间隔最大化的数学表达式:
其中
是常数。软间隔最大化的含义是容忍一定的误差,因此我们在优化目标中加入了松弛变量
。当然这个松弛变量不是白加的,因此在优化目标中加入了惩罚。我们考虑一下约束条件。很显然,
有如下取值:
1.
,这表明超平面对样本
是完全正确分类的,即
位于支持向量的外侧;
2.
,这表明超平面对样本
是正确分类的,即
有可能位于支持向量的内侧或者外侧;
3.
,这表明样本
可能会位于超平面上,或者被正确分类,或者是被完全正确分类;
3.
,这表明
可能被误分类,或者位于超平面上,或者被正确分类,或者被完全正确分类。
我们看到,
的值表明了模型对
的松弛程度,
越大就表明对该样本的容忍程度越大。
: 注意!!!这也就是说,根据约束条件,可能会存在某一个样本 的 ,其分类情况是:被完全正确分类。
事实果真如此吗?如果说仅仅只看约束条件,那么确实是这样。
但是我们再来看优化目标,其中加入了一项 ,这是惩罚项。这也就意味着我们希望 尽可能小。
略微思索可知, 即是个伪命题。
证明(不那么严谨):我们用反证法。假设存在一个样本 被完全正确分类,那么显然 。那么显然,若 ,约束条件 是不起作用的,也就是说,这个条件的等式形式不满足,它对于优化 没有任何的帮助。那么,根据优化目标中的惩罚项可知,我们想让 尽可能小,因此我们希望 的等式条件尽可能满足,松弛条件尽可能严格。因此这里 ,样本 满足 。命题证毕。
可见,在 的情况下,仍然有大部分样本的约束条件是不起作用。起作用的只有支持向量,误分类样本和弱正确分类的样本。
特别地,当 的情况下,软间隔最大化退化为硬间隔最大化(线性可分)的问题。
软间隔最大化的SVM对偶形式
同线性可分SVM类似,对优化目标
构建Lagrange函数如下:
原始问题为 ,对偶问题为 。
这和硬间隔最大化SVM的Lagrange函数求梯度的结果是一致的。将
代入到
可得:
。
所以原问题转化为
。
由于 ,其中 ,因此有 。
Kernel Trick
要说SVM比Logistic Regression,NB,KNN这些方法好,最主要的原因就是SVM可以引入Kernel。这使得SVM比起其他方法更加鲁棒,也更加灵活,对产生于不同类型分布的数据都有较强的适用性。可以这样说,SVM的关键就在于Kernel的选取与设计。
那么什么是Kernel呢?Kernel能做什么呢?
- 我们令两个样本的Kernel表达为 。函数 。这是第一步的理解。
- ,其中 。其中n可以是 。
看到这里,看官可能看明白了,Kernel实际上是找这样一个映射
,使得先用
对两个输入向量做一个维度的变化,然后,在变化后的维度上面做一个向量内积。我们知道,对于很多低维的数据集不是线性可分的,采用这种维度映射的方式可以把这种数据集映射到高维空间甚至无穷维,使得数据在高维空间是线性可分的。实际上,由于现实情况下
不好计算,而
是易计算的,在对偶问题中也只出现了
的这种内积形式。所以一般情况下是直接选取
作为对偶问题中
的替换。因此,含有核函数的对偶目标如下所示:
.
常用的Kernel有这样一些:
Linear Kernel:
Multinomial Kernel:
Gaussian Kernel:
关于这些核是如何将数据映射到高维甚至无穷维特征空间的,请参考例子
https://blog.csdn.net/wuyanxue/article/details/79642758
SVM的优化方法-SMO
假设已经解得
,我们就可以写出SVM的分类决策函数:
这里
有两种求解方式:1. 寻找任意一个支持向量,也就是
的点,使得
,从而求得
。
另一种方法求解
:
那么现在的关键问题是:如何求解 ?
坐标上升法求解无约束优化目标
对于无约束优化目标:
.
我们可以采用坐标上升(Coordinate Ascending)法求解。每次固定一个分量,对这个分量做梯度上升。算法的伪代码如下:
Randomly initialize a
while (Unconvergence)
for i from 1 to n do
a_i = argmax_{a_i} D(..., a_i, ...)
对于某一个分量
而言,其他分量被看成是常数,
是一个关于
的二次函数。那么分量
的迭代公式如下:
其中
是步长。
这是对于无监督的优化目标而言的求解方案,我们可以看到,这个方法是每次固定
个分量,对其中一个分量做梯度上升。
SMO算法求解约束优化目标
那么对于含有约束条件的优化目标:
.
我们显然无法利用坐标上升法来做,这是因为假设我们固定其中 个分量,那么由约束条件 可知,剩下的一个分量也就隐含的被固定住了,这样起不到迭代优化的作用。因此,对于这种情况,序列最小优化(Sequential Minimal Optimization)算法是固定住 个分量,对于两个活动的分量做交替最小化。具体地,在若干次迭代后,我们选择两个分量 。由约束条件可知
,
我们令
,那么
。注意到,由于
,因此除法可以变成乘法。在固定住其他
个变量之后,我们写出优化目标如下:
:
。
显然地,该优化目标是关于
的含不等式约束的凸二次规划问题。
这个优化目标可用现成的凸优化计算包得到,我们来推导一下解法。
由于
是关于
的二次函数,我们也知道,
中的约束条件是垂直于轴
的,因此
的候选最优解有这样几个
1. 满足
的
;
2.
;
3.
;
4. 满足
的
;
5. 满足
的
。
最优解的判定方法是:在上述5个候选解中选择一个使得 满足约束条件并且使得 最大的 即是最优解。从另外一个角度来看:假设最优解处在一个区间 , 是由约束条件决定的,假设 的无约束最优解是 。那么有约束条件的最优解是
分量的选择方法
我们还遗留有这样一个问题,即上述所说都是在两个分量确定后的解法。那么,如何选择这两个分量 和 呢?
我们当然会想到去优先选择违反约束条件最严重的样本,约束条件满足如下三种情况:
1.
2.
3.
我们首选选择满足
但不满足
的点作为第一个分量。其次选择第二个分量
,使得
的变化要尽可能的大。
我们知道
是第i个约束条件的拉格朗日乘子,对应着样本
,因此,我们可以定义
要使得
的变化大,那么我们需要找到
,满足
。表示
与
两者预测效果的差异性。
很显然,每次我们在更新了 和 之后,我们需要重新计算偏移量 。