深入理解SVM
martin
SVM核心思想一:最大间隔
对于一个分类算法,想要画出一条决策边界,但是由于决策边界有很多条我们想要通过某种衡量手段来确定一条在此条件下最好的一条决策边界,所以就会有个问题: 什么样的决策边界才是最好的呢? 于是最大边界应运而生。
让最大间隔作为衡量一条决策边界的好还的原因是,如果一条决策边界有最大间隔,那么这条决策边界就具有很好的 鲁棒性 ,相当于增加了一个缓冲地带,再来一个数据集我可以很从容的包容你进行分类不至于分错类别。
下面讲下最大间隔的概念,如上图,假如存在一条图中的决策边界,
A
为边界上的某一点,那么连接原点可以作出通过
对于训练集中的正类:
对于训练集中的负类:
我们先将这里的间隔设为1,当然,可以设置为5,10或者50,100等,但通过左右消除都可以变成1,所以这里就是用1来作为间隔距离。
SVM核心思想二:决策公式
将
y
的取值给出:
对于训练集中的正类:
对于训练集中的负类:
所以我们可以将上面三个公式合并起来得到一个决策公式,来表示对样本的正确分类:
而在决策边界的边界上的,可以理解为在
路边
上的点符合下面的公式:
SVM核心思想三:目标函数
现在我想要求得这条包含两个间隔的“马路”的宽度,所以我分别选取了在路两边上的点, OC,OD ,那么这两个向量之差就是”路”的宽度。
写成公式就是,这里的
w∥w∥
是对法向量单位化。:
因为这两个点在”路边上”,满足:
所以可以将第一个式子代入到第二个式子:
到上步我们就已经给出了间隔的一般表示,那么我们的目标就是最大化这个间隔,
即
等价于
等价于
等价于
因为 12∥w∥2 对于后续计算比较方便故选用。
SVM核心思想四:优化理论
运用拉格朗日来对上节中的目标函数进行优化,给出拉格朗日函数:
接下来对
w
求偏导
令
解得
接下来对 b 求偏导
令
解得
得出以上两个值
∥w∥=∑ni=1αiyixi
和
∑ni=1αiyi=0
,将这两个值分别带入到拉格朗日函数
L
中,得
这样就转化成了
然后我解得一个最优解 α∗ 之后分别可以求出对应的 w∗ 和 b∗ ,于是就又有了:
上式就变得非常厉害了,它是什么含义呢?原来并不是所有点都是在”路”的两边,只有极少数点也就是支持向量在这个地方,也就是KKT定理中所说的,只有支持向量才符合 α>0 ,其他的点都是 α=0 。所以,对于一个新测试点我们只要跟这些 数量很少 的支持向量 做一个内积加一个偏置 就可判断他是不是正类或者负类。于是乎就有了一个对于判断测试集的公式:
SVM核心思想五:损失函数
我们知道SVM使用的损失函数是hinge loss,即
这个公式意思就是当我有三个类别要分类,比如猫,狗,鸭子,那么我确定知道该类别是小狗了,按着公式的意思即取猫的得分和鸭子得分的和即可,不用把狗的得分算入即 j≠yi ,而 Δ 就是我们定的最大间隔,一个安全距离,该公式的意思就是 通过调整权重 W 降低那些与目标类别分数相近的其他类别的分数,而对于那些与目标分数大于“间隔”的类别分数不予理睬,因为分数相差很大很容易就可以判别与目标类别不相同。
SVM核心思想六:核方法
上几节中我们都是拿线性可分的例子来讲解得,那么SVM是否可以对线性不可分的数据集进行划分呢?答案是肯定的。那么这个方法就是利用核函数。通俗的讲,核函数所要做的事就是在某一空间的原始数据集是线性不可分的,如果我把这些数据集转化到另一个空间中说不定就会线性可分。如图:
转化成数学符号就是:
SVM核心思想七:SMO
在之前的第四节中我们说到了最优化拉格朗日函数然后求得一个
α
,有了
α
才可以求出
w
和
大体上可以将SMO方法看成是变化了的梯度上升。SMO要解决如下凸二次规划的对偶问题:
了
在这个问题中变量是拉格朗日乘子 α ,一个变量 αi 对应于一个样本点 (xi,yi) 变量的总数等于训练样本容量N。SMO的大体思路就是:
- 1、如果所有变量都满足最优化问题的KTT条件那么就会得到最优解,
- 2、否则选择两个变量,固定其他变量,针对这两个变量构建二次规划问题。
注意:
子问题的两个变量中只有一个是自由变量。假设
α1,α2
为两个变量,
α3,α4,...αN
固定,那么:
如果 α2 确定,那么 α1 也随之确定,所以子问题中同事更新两个变量。