支持向量机
间隔与支持向量
给定训练样本集D={(x1,y1),(x2,y2),...,(xm,ym)},yi∈{−1,+1}D = \{(\bm{x_1},y_1), (\bm{x_2},y_2),..., (\bm{x_m},y_m)\}, y_i \in \{-1, +1\}D={(x1,y1),(x2,y2),...,(xm,ym)},yi∈{−1,+1},分类学习最基本得想法就是基于训练集D在样本空间中找到一个划分超平面,将不同得类别分开。这个超平面对于样本得局部扰动“容忍性最好”。
- 划分超平面可以通过以下线性方程表示:
ωTx+b=0\bm{\omega^Tx} + b = 0ωTx+b=0
ω=(ω1,ω2,...,ωd)\bm{\omega} = (\omega_1,\omega_2,...,\omega_d)ω=(ω1,ω2,...,ωd)为法向量,决定了超平面得方向;b为位移项,决定了超平面与远点之间的距离
-
样本空间任意衣点x\bm{x}x到超平面的距离可写为:
r=∣ωTx+b∣∣∣ω∣∣r = \frac{|\bm{\omega^Tx} + b|}{||\bm{\omega} ||}r=∣∣ω∣∣∣ωTx+b∣ -
假设超平面能将训练样本正确分类,即对于(xi,yi)∈D(\bm{x_i},y_i)\in D(xi,yi)∈D,若yi=+1y_i = +1yi=+1,则有ωTxi+b>0\bm{\omega^Tx_i} + b > 0ωTxi+b>0;若yi=−1y_i = -1yi=−1,则有ωTxi+b<0\bm{\omega^Tx_i} + b < 0ωTxi+b<0;令
{ωTxi+b≤−1,yi=−1;ωTxi+b≥+1,yi=+1;\{_{\bm{\omega^Tx_i} + b \le -1, \quad y_i = -1;}^{\bm{\omega^Tx_i} + b \ge +1, \quad y_i = +1;}{ωTxi+b≤−1,yi=−1;ωTxi+b≥+1,yi=+1; -
距离超平面最近的这几个训练样本点使上式等号成立,他们被称为“支持向量”,两个异类支持向量到超平面的距离之和为"间隔":
γ=2∣∣ω∣∣\gamma = \frac{2}{||\bm{\omega}||}γ=∣∣ω∣∣2 -
找到最大间隔,就是:
maxω,bγ=2∣∣ω∣∣s.t.yi(ωTxi+b)≥1,i=1,2,...,m. \max \limits_{\bm{\omega},b} \quad \gamma = \frac{2}{||\bm{\omega}||} \\ s.t. \quad y_i(\bm{\omega^Tx_i} + b ) \ge 1, i=1,2,...,m. ω,bmaxγ=∣∣ω∣∣2s.t.yi(ωTxi+b)≥1,i=1,2,...,m.
或者
minω,b12∣∣ω∣∣2s.t.yi(ωTxi+b)≥1,i=1,2,...,m. \min \limits_{\bm{\omega},b} \quad \frac{1}{2}||\bm{\omega}||^2 \\ s.t. \quad y_i(\bm{\omega^Tx_i} + b ) \ge 1, i=1,2,...,m. ω,bmin21∣∣ω∣∣2s.t.yi(ωTxi+b)≥1,i=1,2,...,m.
这就是支持向量机(SVM)的基本型。
对偶问题
- 对于上面的公式,使用拉格朗日乘子法可得到其“对偶问题”,对上式的每条约束添加拉格朗日乘子αi≥0\alpha_i \ge 0αi≥0,该问题的拉格朗日函数可写为:
L(ω,b,α)=12∣∣ω∣∣2+∑i=1mαi(1−yi(ωTxi+b))L(\bm{\omega}, b,\bm{\alpha}) = \frac{1}{2} ||\bm{\omega}||^2 + \sum_{i=1}^m \alpha_i(1-y_i(\bm{\omega^Tx_i} + b))L(ω,b,α)=21∣∣ω∣∣2+i=1∑mαi(1−yi(ωTxi+b)) - 对ω\bm{\omega}ω和b求偏导可得:
ω=∑i=1mαiyixi0=∑i=1mαiyi \bm{\omega} = \sum_{i=1}^{m}\alpha_iy_i\bm{x_i} \\ 0 = \sum_{i=1}^{m}\alpha_iy_i ω=i=1∑mαiyixi0=i=1∑mαiyi - 带入可得对偶问题:
maxα∑i=1mαi−12∑i=1m∑j=1mαiαjyiyjxiTxjs.t.∑i=1mαiyi=0αi≥0,i=1,2,...,m. \max \limits_{\bm{\alpha}} \quad \sum_{i=1}^{m}\alpha_i - \frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_j\bm{x_i^Tx_j} \\ s.t. \quad \sum_{i=1}^{m}\alpha_iy_i = 0 \\ \alpha_i \ge 0, i = 1,2,...,m. αmaxi=1∑mαi−21i=1∑mj=1∑mαiαjyiyjxiTxjs.t.i=1∑mαiyi=0αi≥0,i=1,2,...,m. - 解出α\bm{\alpha}α,求出ω和b\bm{\omega}和bω和b即可得到模型:
f(x)=ωTx+b=∑i=1mαiyixiTx+bf(\bm{x}) = \bm{\omega^Tx} + b = \sum_{i=1}^{m}\alpha_iy_i\bm{x_i^Tx} + bf(x)=ωTx+b=i=1∑mαiyixiTx+b - 上述过程需要满足KKT条件
{ai≥0;yif(xi)−1≥0;α(yif(xi)−1)=0; \begin{cases} a_i \ge 0; \\ y_if(\bm{x_i}) - 1 \ge 0; \\ \alpha(y_if(\bm{x_i}) - 1) = 0; \end{cases} ⎩⎪⎨⎪⎧ai≥0;yif(xi)−1≥0;α(yif(xi)−1)=0;
对任意样本(xi,yi)(\bm{x_i},y_i)(xi,yi)总有αi=0或者yif(xi)=1\alpha_i = 0 或者 y_if(\bm{x_i}) = 1αi=0或者yif(xi)=1,若αi=0\alpha_i = 0αi=0,则该样本将不会在求和中出现,也就不会对f(x)f(x)f(x)有任何影响,若α>0\alpha > 0α>0,则必有yif(xi)=1y_if(\bm{x_i}) = 1yif(xi)=1,所对应的样本点位于最大间隔的边界上,是一个支持向量。这就是一个支持向量机的重要性质:训练完成后,大部分的训练样本都不需要保留,最终模型仅与支持向量有关。
如何求解问题呢?这是个二次规划问题,可使用二次规划算法来求解,然而问题的规模正比于训练样本数,这会在实际任务中造成很大的开销。于是可以使用SMO(Sequential Minimal Optimization)算法.
SMO(Sequential Minimal Optimization)算法的基本思路,先固定αi\alpha_iαi以外所有参数,然后求αi\alpha_iαi上的极值,由于存在约束∑i=1mαiyi=0\sum_{i=1}^{m}\alpha_iy_i = 0∑i=1mαiyi=0,若固定αi\alpha_iαi之外的其他变量,则αi\alpha_iαi可由其他变量导出,于是SMO每次选择两个变量αi和αj\alpha_i和\alpha_jαi和αj,并固定其他的变量,这样,在参数初始化后,SMO不断执行这个两个步骤。
- 选取一对需要更新的变量αi和αj\alpha_i和\alpha_jαi和αj。
- 固定αi和αj\alpha_i和\alpha_jαi和αj以外的参数,求解获得更新后的αi和αj\alpha_i和\alpha_jαi和αj。
SMO采用了一个启发式:使选取的两个变量对应样本之间的间隔变大,直观解释是,这样的两个变量有很大的区别,与两个相似的变量进行更新相比,对它们进行更新会带给目标函数值更大的变化。
- SMO算法之所以高效,恰是由于固定其他参数后,仅优化两个参数的过程能做到非常高效,具体来说,仅考虑αi和αj\alpha_i和\alpha_jαi和αj时,约束条件可重写为:
αiyi+αjyj=c\alpha_iy_i + \alpha_jy_j = cαiyi+αjyj=c
c=−∑k≠i,jαkykc = -\sum \limits_{k\ne i,j}\alpha_ky_kc=−k̸=i,j∑αkyk,用上式消去αj\alpha_jαj,得到一个关于αi\alpha_iαi的单变量二次规划问题,仅有的约束条件时αi≥0\alpha_i \ge 0αi≥0
- 确定偏移项b,对于任意的支持向量(xs,ys)都有ysf(xs)=1(\bm{x_s}, y_s)都有y_sf(\bm{x_s}) = 1(xs,ys)都有ysf(xs)=1:
ys(∑i∈SαiyixiTxs+b)=1y_s(\sum_{i\in S }\alpha_iy_i\bm{x_i^Tx_s} + b) = 1ys(i∈S∑αiyixiTxs+b)=1
b=1∣S∣∑s∈S(1ys−∑i∈SαiyixiTxs)b = \frac{1}{|S|}\sum \limits_{s \in S} (\frac{1}{y_s} - \sum_{i\in S }\alpha_iy_i\bm{x_i^Tx_s} )b=∣S∣1s∈S∑(ys1−i∈S∑αiyixiTxs)
核函数
当遇到线性不可分的样本时,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分,令ϕ(x)\phi(\bm{x})ϕ(x)表示将x映射后的特征向量,则模型变为:
f(x)=ωTϕ(x)+b\bm{f(x) = \omega^T\phi({x})} + bf(x)=ωTϕ(x)+b
minω,b12∣∣ω∣∣2s.t.yi(ωTϕ(xi)+b)≥1,i=1,2,...,m. \min \limits_{\bm{\omega},b} \quad \frac{1}{2}||\bm{\omega}||^2 \\ s.t. \quad y_i(\bm{\omega^T\phi({x_i})} + b ) \ge 1, i=1,2,...,m. ω,bmin21∣∣ω∣∣2s.t.yi(ωTϕ(xi)+b)≥1,i=1,2,...,m.
- 其对偶问题
maxα∑i=1mαi−12∑i=1m∑j=1mαiαjyiyjϕ(xi)Tϕ(xj)s.t.∑i=1mαiyi=0αi≥0,i=1,2,...,m. \max \limits_{\bm{\alpha}} \quad \sum_{i=1}^{m}\alpha_i - \frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_j\bm{\phi({x_i})^T\phi({x_j})} \\ s.t. \quad \sum_{i=1}^{m}\alpha_iy_i = 0 \\ \alpha_i \ge 0, i = 1,2,...,m. αmaxi=1∑mαi−21i=1∑mj=1∑mαiαjyiyjϕ(xi)Tϕ(xj)s.t.i=1∑mαiyi=0αi≥0,i=1,2,...,m. - 求解涉及到计算ϕ(xi)Tϕ(xj)\bm{\phi({x_i})^T\phi({x_j})}ϕ(xi)Tϕ(xj),样本映射到特征空间之后的内积,由于特征空间的维数可能很高,甚至是无穷维,因此直接计算时困难的,于是出现了核函数:
k(xi,yi)=<ϕ(xi),ϕ(xj)>=ϕ(xi)Tϕ(xj)k(\bm{x_i, y_i}) = <\bm{\phi({x_i}),\phi({x_j})}> = \bm{\phi({x_i})^T\phi({x_j})}k(xi,yi)=<ϕ(xi),ϕ(xj)>=ϕ(xi)Tϕ(xj)
即xi\bm{x_i}xi和yi\bm{y_i}yi在特征空间的内积等于他们在原始样本空间中通过函数k(.,.)k(.,.)k(.,.)计算的结果
- 于是
maxα∑i=1mαi−12∑i=1m∑j=1mαiαjyiyjk(xi,xj)s.t.∑i=1mαiyi=0αi≥0,i=1,2,...,m. \max \limits_{\bm{\alpha}} \quad \sum_{i=1}^{m}\alpha_i - \frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_jk(\bm{x_i, x_j}) \\ s.t. \quad \sum_{i=1}^{m}\alpha_iy_i = 0 \\ \alpha_i \ge 0, i = 1,2,...,m. αmaxi=1∑mαi−21i=1∑mj=1∑mαiαjyiyjk(xi,xj)s.t.i=1∑mαiyi=0αi≥0,i=1,2,...,m. - 求解后得到
f(x)=ωTϕ(x)+b=∑i=1mαiyiϕ(xi)Tϕ(xj)+b=∑i=1mαiyik(xi,xj)+b \bm{f(x) = \omega^T\phi({x})} + b \\ = \sum_{i=1}^{m}\alpha_iy_i\bm{\phi({x_i})^T\phi({x_j})} + b \\ = \sum_{i=1}^{m}\alpha_iy_ik(\bm{x_i, x_j}) + b f(x)=ωTϕ(x)+b=i=1∑mαiyiϕ(xi)Tϕ(xj)+b=i=1∑mαiyik(xi,xj)+b
常用的核函数
名称 表达式 参数 线性核 k(xi,xj)k(\bm{x_i, x_j})k(xi,xj) 多项式核 k(xi,xj)k(\bm{x_i, x_j})k(xi,xj) d≥1d \ge 1d≥1为多项式次数 高斯核 k(xi,xj)k(\bm{x_i, x_j})k(xi,xj) σ>0\sigma > 0σ>0为高斯核的带宽 拉普拉斯核 k(xi,xj)k(\bm{x_i, x_j})k(xi,xj) σ>0\sigma > 0σ>0 Sigmod核 k(xi,xj)k(\bm{x_i, x_j})k(xi,xj) tanhtanhtanh为双面正切函数,β>0,θ<0\beta > 0, \theta < 0β>0,θ<0 此外也可以通过函数组合得到。
软间隔和正则化
现实任务中往往很难确定一个合适的核函数使得训练样本在特征空间中线性可分,即使找到了某个核函数使训练集在特征空间中线性可分,也很难断定线性可分的结果不是由于过拟合所造成的。缓解该问题的一个办法就是允许支持向量机在一些样本上出错,就是"软间隔"的概念,所有样本都必须划分正确,这成为"硬间隔"。
- 软间隔允许某些样本不满足约束条件:
yi(ωTxi+b)≥1y_i(\bm{\omega^T{x_i}} + b ) \ge 1yi(ωTxi+b)≥1 - 在最大化间隔的同时,不满足约束条件的样本应尽可能地少,优化目标可写:
minω,b12∣∣ω∣∣2+C∑i=1mℓ0/1(yi(ωTxi+b)−1) \min \limits_{\bm{\omega}, b} \quad \frac{1}{2} ||\bm{\omega}||^2 + C\sum_{i=1}^m \ell_{0/1}(y_i(\bm{\omega^Tx_i} + b)-1) ω,bmin21∣∣ω∣∣2+Ci=1∑mℓ0/1(yi(ωTxi+b)−1)
CCC是一个常数,ℓ0/1\ell_{0/1}ℓ0/1是“0/1损失函数”
ℓ0/1(z)={1,ifz<0;0,otherwise \ell_{0/1}(z)= \begin{cases} 1, & if \quad z < 0; \\ 0, & otherwise \end{cases} ℓ0/1(z)={1,0,ifz<0;otherwise
当CCC无穷大时,迫使上式所有样本均满足约束,等价于硬间隔,当CCC取值有限时,允许一些样本不满足约束
ℓ0/1\ell_{0/1}ℓ0/1非凸、非连续,数学性质不太好,经常会用一些函数代替ℓ0/1\ell_{0/1}ℓ0/1,称为“替代损失函数”。
下图给了三种替代损失函数:
- hinge损失:ℓhinge=max(0,1−z)\ell_{hinge} = max(0,1-z)ℓhinge=max(0,1−z)
- 指数损失(exponential loss):ℓexp=exp(−z)\ell_{exp} = exp(-z)ℓexp=exp(−z)
- 对率损失(logistic loss):ℓlog=log(1+exp(−z))\ell_{log} = log(1 + exp(-z))ℓlog=log(1+exp(−z))
-
采用hinge损失,则变成:
minω,b12∣∣ω∣∣2+C∑i=1mmax(0,1−yi(ωTxi+b))\min \limits_{\bm{\omega}, b} \quad \frac{1}{2} ||\bm{\omega}||^2 + C\sum_{i=1}^m max(0, 1 - y_i(\bm{\omega^Tx_i} + b))ω,bmin21∣∣ω∣∣2+Ci=1∑mmax(0,1−yi(ωTxi+b)) -
引入"松弛变量"ξi≥0\xi_i \ge 0ξi≥0,可重写为:
minω,b,ξi12∣∣ω∣∣2+C∑i=1mξis.t.yi(ωTxi+b)≥1−ξiξi≥0,i=1,2,...,m. \min \limits_{\bm{\omega}, b,\xi_i} \quad \frac{1}{2} ||\bm{\omega}||^2 + C\sum_{i=1}^m\xi_i \\ s.t. \quad y_i(\bm{\omega^T{x_i}} + b ) \ge 1 - \xi_i \\ \xi_i \ge 0, i = 1,2,...,m. ω,b,ξimin21∣∣ω∣∣2+Ci=1∑mξis.t.yi(ωTxi+b)≥1−ξiξi≥0,i=1,2,...,m. -
拉格朗日函数为:
L(ω,b,α,ξ,μ)=12∣∣ω∣∣2+C∑i=1mξi+∑i=1mαi(1−ξi−yi(ωTxi+b))−∑i=1mμiξi L(\bm{\omega}, b,\bm{\alpha, \xi, \mu}) = \frac{1}{2} ||\bm{\omega}||^2 + C\sum_{i=1}^m\xi_i \\+ \sum_{i=1}^{m}\alpha_i(1-\xi_i-y_i(\bm{\omega^T{x_i}} + b )) - \sum_{i=1}^{m}\mu_i\xi_i L(ω,b,α,ξ,μ)=21∣∣ω∣∣2+Ci=1∑mξi+i=1∑mαi(1−ξi−yi(ωTxi+b))−i=1∑mμiξi
其中αi≥0,μi≥0\alpha_i \ge 0, \mu_i \ge 0αi≥0,μi≥0是拉格朗日乘子。
- 对ω,b,ξi\bm{\omega}, b,\xi_iω,b,ξi求偏导为0得:
ω=∑i=1mαiyixi,0=∑i=1mαiyi,C=αi+μi. \bm{\omega} = \sum_{i=1}^{m} \alpha_i y_i \bm{x_i}, \\ 0 = \sum_{i=1}^{m} \alpha_i y_i, \\ C= \alpha_i + \mu_i. ω=i=1∑mαiyixi,0=i=1∑mαiyi,C=αi+μi. - 带入上式得对偶问题:
maxα∑i=1mαi−12∑i=1m∑j=1mαiαjyiyjxiTxjs.t.∑i=1mαiyi=0C≥αi≥0,i=1,2,...,m. \max \limits_{\bm{\alpha}} \quad \sum_{i=1}^{m}\alpha_i - \frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_j\bm{x_i^Tx_j} \\ s.t. \quad \sum_{i=1}^{m}\alpha_iy_i = 0 \\ C \ge \alpha_i \ge 0, i = 1,2,...,m. αmaxi=1∑mαi−21i=1∑mj=1∑mαiαjyiyjxiTxjs.t.i=1∑mαiyi=0C≥αi≥0,i=1,2,...,m. - 对软间隔支持向量机,KKT条件得要求:
{ai≥0,μi≥0,yif(xi)−1+ξi≥0,α(yif(xi)−1+ξi)=0,ξi≥0,μiξi=0. \begin{cases} a_i \ge 0,\\ \mu_i \ge0,\\ y_if(\bm{x_i}) - 1 + \xi_i\ge 0, \\ \alpha(y_if(\bm{x_i}) - 1 + \xi_i) = 0,\\ \xi_i \ge 0,\\ \mu_i\xi_i = 0. \end{cases} ⎩⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎧ai≥0,μi≥0,yif(xi)−1+ξi≥0,α(yif(xi)−1+ξi)=0,ξi≥0,μiξi=0.
对任意样本(xi,yi)(\bm{x_i},y_i)(xi,yi)总有αi=0或者yif(xi)=1−ξi\alpha_i = 0 或者 y_if(\bm{x_i}) = 1 - \xi_iαi=0或者yif(xi)=1−ξi,若αi=0\alpha_i = 0αi=0,则该样本将不会在求和中出现,也就不会对f(x)f(x)f(x)有任何影响,若α>0\alpha > 0α>0,则必有yif(xi)=1−ξiy_if(\bm{x_i}) = 1 - \xi_iyif(xi)=1−ξi,即样本是支持向量,若α<C\alpha < Cα<C,则μi>0\mu_i > 0μi>0,进而ξi=0\xi_i = 0ξi=0,该样本卡在最大间隔边界上,若α=C\alpha = Cα=C,则μi=0\mu_i = 0μi=0,若此时ξi≤1\xi_i \le 1ξi≤1则该样本落在最大间隔内部,若ξi>1\xi_i >1ξi>1则样本被错误分类