算法思路
支持向量机算法跟感知机类似,都是找到一个超平面将数据分割开来。
但是,我们知道,加入数据线性可分的情况下,一般分隔数据的超平面是无线个,那么哪一个超平面是最好的呢?
感知机算法对这个不做要求,而支持向量机要求寻找的超平面距离数据点尽可能的远,这就是支持向量机的主要思想。
那如果现在如果数据不是线性可分呢?
这里有两个策略:其一,我们可以允许支持向量机存在噪声点;其二,我们将空间扩展到高维,使其线性可分,这个便成为核函数。
模型定义
输入: X = { x ( 1 ) , x ( 2 ) , … , x ( K ) } X=\{x^{(1)}, x^{(2)}, \dots, x^{(K)}\} X={
x(1),x(2),…,x(K)}, y = { y ( 1 ) , y ( 2 ) , … , y ( K ) } y=\{y^{(1)}, y^{(2)}, \dots, y^{(K)}\} y={
y(1),y(2),…,y(K)}。其中, x ( i ) x^{(i)} x(i)代表数据的第 i i i个样本, x j x_j xj代表数据的第 j j j个维度, x ( i ) ∈ R D x^{(i)}\in \mathbf{R}^D x(i)∈RD, y ( i ) ∈ { − 1 , 1 } y^{(i)}\in\{-1,1\} y(i)∈{
−1,1};
模型: y ^ = s i g n ( w T x + b ) \hat y=sign(w^Tx+b) y^=sign(wTx+b)
模型推导
硬间隔
核心思想就是数据点距离决策边界尽可能的大,即:
{ max w , b min i y ( i ) ( w T x ( i ) + b ) ∥ w ∥ s . t . y ( i ) ( w T x ( i ) + b ) ≥ 0 \begin{cases} \max_{w,b} \min_i \frac{y^{(i)}(w^Tx^{(i)}+b)}{\left\|w\right\|}\\ s.t.\ y^{(i)}(w^Tx^{(i)}+b) \ge 0 \end{cases} {
maxw,bmini∥w∥y(i)(wTx(i)+b)s.t. y(i)(wTx(i)+b)≥0
其中,限制条件是分类正确的情况,毕竟我们的模型要求正确分类。
由于我们关心的是 w , b w,b w,b的方向,所以我们可以令 min i y ( i ) ( w T x ( i ) + b ) = 1 \min_i y^{(i)}(w^Tx^{(i)}+b)=1 miniy(i)(wTx(i)+b)=1,所以原式子化简为:
{ max w , b 1 ∥ w ∥ → min w , b 1 2 w T w s . t . y ( i ) ( w T x ( i ) + b ) ≥ 1 \begin{cases} \max_{w,b}\frac{1}{\left\|w\right\|} \to\min_{w,b}\frac{1}{2}w^Tw\\ s.t.\ y^{(i)}(w^Tx^{(i)}+b) \ge 1 \end{cases} {
maxw,b∥w∥1→minw,b21wTws.t. y(i)(wTx(i)+b)≥1
上式中的 1 2 \frac12 21常数,以及 ∥ w ∥ 2 = w T w \left\|w\right\|^2=w^Tw ∥w∥2=wTw均不影响结果。
采用拉格朗日乘子法,构造式子如下:
{ min w , b max λ L ( w , b , λ ) = 1 2 w T w + ∑ i = 1 K λ i ( 1 − y ( i ) ( w T x ( i ) + b ) ) s . t . λ i ≥ 0 \begin{cases} \min_{w,b}\max_\lambda L(w,b,\lambda) = \frac12 w^Tw+\sum_{i=1}^K \lambda_i(1-y^{(i)}(w^Tx^{(i)}+b))\\ s.t. \lambda_i \ge 0 \end{cases} {
minw,bmaxλL(w,b,λ)=21wTw+∑i=1Kλi(1−y(i)(wTx(i)+b))s.t.λi≥0
由于上式满足强队偶关系1 ,所以对原式求对偶得:
{ max λ min w , b L ( w , b , λ ) = 1 2 w T w + ∑ i = 1 K λ i ( 1 − y ( i ) ( w T x ( i ) + b ) ) s . t . λ i ≥ 0 \begin{cases} \max_\lambda\min_{w,b} L(w,b,\lambda) = \frac12 w^Tw+\sum_{i=1}^K \lambda_i(1-y^{(i)}(w^Tx^{(i)}+b))\\ s.t. \lambda_i \ge 0 \end{cases} {
maxλminw,bL(w,b,λ)=21wTw+∑i=1Kλi(1−y(i)(wTx(i)+b))s.t.λi≥0
先行求解 min w , b L ( w , b , λ ) = 1 2 w T w + ∑ i = 1 K λ i ( 1 − y ( i ) ( w T x ( i ) + b ) ) \min_{w,b} L(w,b,\lambda) = \frac12 w^Tw+\sum_{i=1}^K \lambda_i(1-y^{(i)}(w^Tx^{(i)}+b)) minw,bL(w,b,λ)=21wTw+∑i=1Kλi(1−y(i)(wTx(i)+b)),我们对其做偏导得:
{ ∂ L ( w , b , λ ) ∂ w = w − ∑ i = 1 K λ i y ( i ) x ( i ) ∂ L ( w , b , λ ) ∂ b = − ∑ i = 1 K λ i y ( i ) \begin{cases} \frac{\partial L(w,b,\lambda)}{\partial w}=w-\sum_{i=1}^K\lambda_iy^{(i)}x^{(i)}\\ \frac{\partial L(w,b,\lambda)}{\partial b}=-\sum_{i=1}^K\lambda_iy^{(i)} \end{cases} {
∂w∂L(w,b,λ)=w−∑i=1Kλiy(i)x(i)∂b∂L(w,b,λ)=−∑i=1Kλiy(i)
令其为0,得到 w = ∑ i = 1 K λ i y ( i ) x ( i ) , ∑ i = 1 K λ i y ( i ) = 0 w=\sum_{i=1}^K\lambda_iy^{(i)}x^{(i)},\sum_{i=1}^K\lambda_iy^{(i)}=0 w=∑i=1Kλiy(i)x(i),∑i=1Kλiy(i)=0。用其化简 L ( w , b , λ ) L(w,b,\lambda) L(w,b,λ)为:
L ( w , b , λ ) = 1 2 w T w + ∑ i = 1 K λ i ( 1 − y ( i ) ( w T x ( i ) + b ) ) = 1 2 ∑ i = 1 K λ i y ( i ) x ( i ) T ∑ j = 1 K λ j y ( j ) x ( j ) + ∑ i = 1 K