Support Vector Machine1 (SVM)
支持向量机SVM,是机器学习基础算法中最重要的算法之一。
1. 间距(margin)
在二分类中,我们还是从分类问说起,图中ABC三个点,图中A点比C点更加“自信”,因为A离间距更远。分类正确的可能性更大,我们能不能找到这样的决策线(距离)是的‘ABC’都能够更加自信呢? SVM就是做这样的工作
2. 函数间距和几何间距
函数间距:我们定义:当y=1 分类为1,
w
T
x
+
b
w^{T}x+b
wTx+b 越大,间距越大。那是不是
(
w
,
b
)
(w,b)
(w,b)越大越好呢,不是的!
2
∗
(
w
,
b
)
2*(w,b)
2∗(w,b) 虽然让函数间距扩大2北,但是没有任何意义,所以
∣
∣
w
∣
∣
=
1
||w||=1
∣∣w∣∣=1 正则化w(normalization)
所以,我们的目标是在间距中找到最小的,让最小的间距最大化(看起来有点绕,但是仔细想一下,最小的间距最大化,就是找到了那个最大的分类线)
几何间距:
几何间距就更加直观,就是找到一个区分线,让整体效果更好。
就是找到最好的
γ
\gamma
γ, 其中
w
/
∣
∣
w
∣
∣
w/||w||
w/∣∣w∣∣是单位向量。 那么有
w
T
x
+
b
=
0
w^{T}x+b=0
wTx+b=0 上的点就是决策线上的点。所以图中的B点在决策线上,
最后还是问题划归为:
2. 优化分类器(The optimal margin classifier)
那我们如何找到这个问题分类器,数学公式如下:
一般的,我们让
γ
=
1
\gamma=1
γ=1,上面的公式等价为:这就可以用QP软件解二次极值的问题了。
3. 拉格朗日乘子法(Lagrange duality)
拉格朗日乘子法的基本思想就是通过引入拉格朗日乘子来将含有n个变量和k个约束条件的约束优化问题转化为含有(n+k)个变量的无约束优化问题,或者我们可以这么看,拉格朗日乘子法通过将k个约束条件转化进偏导方程组中的k个等式从而使得原问题不再出现约束。拉格朗日乘子背后的数学意义是其为约束方程梯度线性组合中每个向量的系数。
我们用拉格朗日乘法子法表示:
求偏导数
当L取满足上述条件然后取得极值后,我们可以发现有 min(L) = min(f) 也就是说我们只要求出上述方程组,其解便是f的极值点。则我们便将对于f的约束优化问题转化成了对于L的非约束优化问题。
3. KKT 条件
KKT条件是指在满足一些有规则的条件下, 一个非线性规划(Nonlinear Programming)问题能有最优化解法的一个必要和充分条件. 这是一个广义化拉格朗日乘子法的成果. 一般地, 一个最优化数学模型的列标准形式参考开头的式子, 所谓 Karush-Kuhn-Tucker 最优化条件。
首先我们看:
广义的拉格朗日乘子法
我们定义:
我们得到一个等价的公式:
所以符合KKT条件:
4. 优化间距分类器(Optimal margin classifiers)
我们回归SVM问题:
由于拉格朗日乘子法,我们有:
针对w,b求导数:(w可以计算出来)
然后我们把w带入拉格朗日的方程:
所以我们的等价公式为:
经过如此复杂的证明和运算:其实我们得到,w的值是x的内积的线性组合:
本专栏图片、公式很多来自台湾大学李弘毅老师、斯坦福大学cs229,斯坦福大学cs231n 、斯坦福大学cs224n课程。在这里,感谢这些经典课程,向他们致敬!