给定训练样本集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } , y i ∈ { − 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在样本空间中找到一个划分超平面,将不同得类别分开。这个超平面对于样本得局部扰动“容忍性最好”。
ω = ( ω 1 , ω 2 , . . . , ω d ) \bm{\omega} = (\omega_1,\omega_2,...,\omega_d) ω=(ω1,ω2,...,ωd)为法向量,决定了超平面得方向;b为位移项,决定了超平面与远点之间的距离
样本空间任意衣点 x \bm{x} x到超平面的距离可写为:
r = ∣ ω T x + b ∣ ∣ ∣ ω ∣ ∣ r = \frac{|\bm{\omega^Tx} + b|}{||\bm{\omega} ||} r=∣∣ω∣∣∣ωTx+b∣
假设超平面能将训练样本正确分类,即对于 ( x i , y i ) ∈ D (\bm{x_i},y_i)\in D (xi,yi)∈D,若 y i = + 1 y_i = +1 yi=+1,则有 ω T x i + b > 0 \bm{\omega^Tx_i} + b > 0 ωTxi+b>0;若 y i = − 1 y_i = -1 yi=−1,则有 ω T x i + b < 0 \bm{\omega^Tx_i} + b < 0 ωTxi+b<0;令
{ ω T x i + b ≤ − 1 , y i = − 1 ; ω T x i + b ≥ + 1 , y i = + 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 . y i ( ω T x i + 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 ω , b 1 2 ∣ ∣ ω ∣ ∣ 2 s . t . y i ( ω T x i + 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)的基本型。
对任意样本 ( x i , y i ) (\bm{x_i},y_i) (xi,yi)总有 α i = 0 或 者 y i f ( x i ) = 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,则必有 y i f ( x i ) = 1 y_if(\bm{x_i}) = 1 yif(xi)=1,所对应的样本点位于最大间隔的边界上,是一个支持向量。这就是一个支持向量机的重要性质:训练完成后,大部分的训练样本都不需要保留,最终模型仅与支持向量有关。
如何求解问题呢?这是个二次规划问题,可使用二次规划算法来求解,然而问题的规模正比于训练样本数,这会在实际任务中造成很大的开销。于是可以使用SMO(Sequential Minimal Optimization)算法.
SMO(Sequential Minimal Optimization)算法的基本思路,先固定 α i \alpha_i αi以外所有参数,然后求 α i \alpha_i αi上的极值,由于存在约束 ∑ i = 1 m α i y i = 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不断执行这个两个步骤。
SMO采用了一个启发式:使选取的两个变量对应样本之间的间隔变大,直观解释是,这样的两个变量有很大的区别,与两个相似的变量进行更新相比,对它们进行更新会带给目标函数值更大的变化。
c = − ∑ k ≠ i , j α k y k c = -\sum \limits_{k\ne i,j}\alpha_ky_k c=−k̸=i,j∑αkyk,用上式消去 α j \alpha_j αj,得到一个关于 α i \alpha_i αi的单变量二次规划问题,仅有的约束条件时 α i ≥ 0 \alpha_i \ge 0 αi≥0
当遇到线性不可分的样本时,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分,令 ϕ ( x ) \phi(\bm{x}) ϕ(x)表示将x映射后的特征向量,则模型变为:
f ( x ) = ω T ϕ ( x ) + b \bm{f(x) = \omega^T\phi({x})} + b f(x)=ωTϕ(x)+b
min ω , b 1 2 ∣ ∣ ω ∣ ∣ 2 s . t . y i ( ω T ϕ ( x i ) + 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.
即 x i \bm{x_i} xi和 y i \bm{y_i} yi在特征空间的内积等于他们在原始样本空间中通过函数 k ( . , . ) k(.,.) k(.,.)计算的结果
常用的核函数
名称 表达式 参数 线性核 k ( x i , x j ) k(\bm{x_i, x_j}) k(xi,xj) 多项式核 k ( x i , x j ) k(\bm{x_i, x_j}) k(xi,xj) d ≥ 1 d \ge 1 d≥1为多项式次数 高斯核 k ( x i , x j ) k(\bm{x_i, x_j}) k(xi,xj) σ > 0 \sigma > 0 σ>0为高斯核的带宽 拉普拉斯核 k ( x i , x j ) k(\bm{x_i, x_j}) k(xi,xj) σ > 0 \sigma > 0 σ>0 Sigmod核 k ( x i , x j ) k(\bm{x_i, x_j}) k(xi,xj) t a n h tanh tanh为双面正切函数, β > 0 , θ < 0 \beta > 0, \theta < 0 β>0,θ<0 此外也可以通过函数组合得到。
现实任务中往往很难确定一个合适的核函数使得训练样本在特征空间中线性可分,即使找到了某个核函数使训练集在特征空间中线性可分,也很难断定线性可分的结果不是由于过拟合所造成的。缓解该问题的一个办法就是允许支持向量机在一些样本上出错,就是"软间隔"的概念,所有样本都必须划分正确,这成为"硬间隔"。
C C C是一个常数, ℓ 0 / 1 \ell_{0/1} ℓ0/1是“0/1损失函数”
ℓ 0 / 1 ( z ) = { 1 , i f z < 0 ; 0 , o t h e r w i s e \ell_{0/1}(z)= \begin{cases} 1, & if \quad z < 0; \\ 0, & otherwise \end{cases} ℓ0/1(z)={1,0,ifz<0;otherwise
当 C C C无穷大时,迫使上式所有样本均满足约束,等价于硬间隔,当 C C C取值有限时,允许一些样本不满足约束
ℓ 0 / 1 \ell_{0/1} ℓ0/1非凸、非连续,数学性质不太好,经常会用一些函数代替 ℓ 0 / 1 \ell_{0/1} ℓ0/1,称为“替代损失函数”。
下图给了三种替代损失函数:
采用hinge损失,则变成:
min ω , b 1 2 ∣ ∣ ω ∣ ∣ 2 + C ∑ i = 1 m m a x ( 0 , 1 − y i ( ω T x i + 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 , ξ i 1 2 ∣ ∣ ω ∣ ∣ 2 + C ∑ i = 1 m ξ i s . t . y i ( ω T x i + 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 , α , ξ , μ ) = 1 2 ∣ ∣ ω ∣ ∣ 2 + C ∑ i = 1 m ξ i + ∑ i = 1 m α i ( 1 − ξ i − y i ( ω T x i + b ) ) − ∑ i = 1 m μ 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是拉格朗日乘子。
对任意样本 ( x i , y i ) (\bm{x_i},y_i) (xi,yi)总有 α i = 0 或 者 y i f ( x i ) = 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,则必有 y i f ( x i ) = 1 − ξ i y_if(\bm{x_i}) = 1 - \xi_i yif(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则样本被错误分类