最近想学透的SVM,慢慢啃,慢慢更新……
什么是支持向量机(Support vector machine)?
支持向量机是利用支持向量建立最优超平面的函数模型,从而解决二分类问题的方法。
先明确名词含义:
超平面(Hyperplane):一个n维空间中的(n-1)维子空间,对一个三维空间而言超平面是一个平面,对平面来说是一个直,对线来说是点。
支持向量(Support vector):距离超平面(即图中实线也可叫决策边界)最近的几个训练样本称为支持向量,例如下图的几个圈+圈-。
二分问题,说明最后分类结果有两种,在上图即表示为+或-,我们要找到一个超平面使得异类支持向量距离最远(越远意味着模型可以更“确定”地分类两种类别),也就是使图中的$\frac {2m}{||w||}$最大。下面推导一下过程。
1.超平面方程
超平面方程为 $w • x + b = 0$
向量$w$为超平面法向量,向量x为[0,0]到超平面上任意一点,实数b为截距。
从上图可以看出,$w • x = |w| * |x| * sin(θ) = |w|^2$ ,所以说超平面上任意一点与法向量$w$的内积都为常数,即满足此等式的向量构成了这个超平面(因为$w$与x都为列向量,所以有的地方公式写做 $w^T • x + b = 0$ 也是一样的)
2.几何间隔
如上图,任意一样本点A的坐标为$x ^{(i)}$ ,A 到超平面的垂直距离为 $\gamma ^{(i)}$,超平面的单位法向量是$ \frac{ω}{||ω||} $,B点是超平面上一点且是A点的投影,则 B 点的坐标 $ x ^{(i)}-\gamma ^{(i)} \frac{ω}{||ω||} $,将其带入超平面方程 $f (x) = ω^T x + b =0$ .
$f (x) = ω^T (x ^{(i)}-\gamma ^{(i)} \frac{ω}{||ω||}) + b =0$ 因$w^T * w = {||w||}^2$可得样本到超平面距离 $\gamma ^{(i)} = \frac{(w^Tx^{(i)}+b)}{||w||}$
注意,此处得到的是几何间隔,还有一个函数间隔因为会随着超平面$w$与b值的同比例改变而改变从而不能正确的反应样本到超平面的距离所以采用几何间隔。
对于每一个样本都有一个真实的正确分类$y^{(i)}$, 刚才得到的距离是有正负的,如果符号相同说明分类正确,几何间隔即为:
$\gamma ^{(i)} = y^{(i)}(\frac{(w^Tx^{(i)}+b)}{||w||})$
注意,此处得到的是几何间隔,还有一个函数间隔因为会随着超平面$w$与b值的同比例改变而改变从而不能正确的反应样本到超平面的距离所以采用几何间隔。
我们在所有样本的距离中取最小的那个,就是最后得到的样本集的几何间隔。
3.间隔最大化
要让间隔最大,就是让离超平面最近的点离超平面最远。
在上面第一个图中m其实就是一个分类的常数,一般我们取+1和-1,所以将样本带入超平面方程,要满足
两组异类支持向量是分别在两条线上的,将+1-1带入到$y^{(i)}(\frac{(w^Tx^{(i)}+b)}{||w||})$ 中我们会发现得到了每条虚线距离中间实线的距离为 $\frac{1}{||w||}$ 那么最大间隔自然而然就要使 $\frac{2}{||w||}$ 最大。
我们想让这个值变大,问题就变成了求 $||w||$ 最小,为了后续计算,等价变化一下,问题变为