1 基本概念
支持向量机核心在于寻找分隔超平面,写为$mathtt{w}^Tmathtt{x}+b$,任意一点到超平面的距离为$frac{|mathtt{w}^Tmathtt{A}+b|}{||mathtt{w}||}$。
以平台上的直线为例,直线$Ax+By+C=0$,点$(x_0,y_0)$到直线的距离为$frac{|Ax_0+By_0+C|}{sqrt{A^2+B^2}}$ttt $ frac {|Ax_0+By_0+C|} {sqrt{A^2+B^2}} $。
为寻找最优超平面,设计函数$f(mathtt{w}^Tmathtt{x}+b)$,其中当$mult 0$时$f(mu)$为-1,反之为+1,这样的好处是,可以算所有点到超平面距离之和,间距为$label*(mathtt{w}^Tmathtt{x}+b)$,现在的目标就是找到最优的w和b,使得所有点到超平面的距离是最小的,即$$argmax_{w,b}{min_n(labelcdot(mathtt{w}^Tx+b))cdotfrac{1}{lVertmathtt{w} Vert}}$$,其中除以$lVertmathtt{w} Vert$的目的是保证距离超平面最近的点距离超平面的距离为1,其他距离大于1 ,约束条件即为$label*(mathtt{w}^Tmathtt{x}+b)ge 1$。
此优化问题最适合用拉格朗日乘子法求解。将上述问题写成数据点的形式:
$$max_{alpha}[sum_{i=1}^malpha-frac{1}{2}sum_{i,j=1}^mlabel^{(i)}cdot label^{(j)}cdotalpha_icdotalpha_jlangle x^{(i)},x^{(j)} angle]$$
其中,$langle x^{(i)},x^{(j)} angle$表示$x^{(i)}$和$x^{(j)}$两个向量的内积,其约束条件为$$alphage 0,和sum_{i-1}^malpha_icdot label^{(i)})=0$$
这里,假设所有数据都是线性可分的。如果所有的数据不能被完美线性可分,这时引入松弛变量,允许数据点分在错误的一侧,此时的约束条件为:
$$Cgealphage 0,和sum_{i-1}^malpha_icdot label^{(i)})=0$$
这里的常数C用于控制“最大化间隔”和“保证大部分点的函数间隔小于1.0”这两个目标。
引用《机器学习实战》一书。