机器学习笔记6-支持向量机(2/3)
-
线性支持向量机
对于线性不可分数据,线性可分支持向量机不适用,因为其不等式约束并不能都成立。线性不可分意味着某些样本点 ( x i , y i ) (x_i,y_i) (xi,yi)不能满足函数间隔大于等于一的约束条件,这时可对每个样本点 ( x i , y i ) (x_i,y_i) (xi,yi)引入一个松弛变量 ξ i ≥ 0 {\xi _i} \ge 0 ξi≥0,使函数间隔加上松弛变量大于等于一,此时约束条件为 y i ( w x i + b ) ≥ 1 − ξ i {y_i}{\rm{(}}w{x_i} + b{\rm{)}} \ge {\rm{1}} - {\xi _i} yi(wxi+b)≥1−ξi。同时对每个松弛变量 ξ i {\xi _i} ξi支付一个代价,使目标函数变成 1 2 ∥ w ∥ 2 + C ∑ i = 1 N ξ i \frac{{\rm{1}}}{{\rm{2}}}{\left\| w \right\|^2} + C\sum\limits_{i = {\rm{1}}}^N {{\xi _i}} 21∥w∥2+Ci=1∑Nξi, C C C为惩罚参数, C C C值大时对误分类的惩罚增大, C C C值小时对误分类的惩罚减小。这样,线性不可分的线性支持向量机变成如下凸二次规划问题:
min w , b , ξ 1 2 ∥ w ∥ 2 + C ∑ i = 1 N ξ i \mathop {\min }\limits_{w,b,\xi } \frac{{\rm{1}}}{{\rm{2}}}{\left\| w \right\|^2} + C\sum\limits_{i = {\rm{1}}}^N {{\xi _i}} w,b,ξmin21∥w∥2+Ci=1∑Nξi y i ( w x i + b ) ≥ 1 − ξ i , ξ i ≥ 0 {y_i}{\rm{(}}w{x_i} + b{\rm{)}} \ge {\rm{1}} - {\xi _i},{\xi _i} \ge 0 yi(wxi+b)≥1−ξi,ξi≥0
学习的对偶算法:以上原始问题的拉格朗日函数是:
L ( w , b , ξ , α , μ ) = 1 2 ∥ w ∥ 2 + C ∑ i = 1 N ξ i − ∑ i = 1 N α i ( y i ( w x i + b ) − 1 + ξ i ) − ∑ i = 1 N μ i ξ i L(w,b,\xi ,\alpha ,\mu ) = \frac{{\rm{1}}}{{\rm{2}}}{\left\| w \right\|^2} + C\sum\limits_{i = {\rm{1}}}^N {{\xi _i}} - \sum\limits_{i = {\rm{1}}}^N {{\alpha _i}({y_i}(w{x_i} + b) - 1 + {\xi _i})} - \sum\limits_{i = {\rm{1}}}^N {{\mu _i}{\xi _i}} L(w,b,ξ,α,μ)=21∥w∥2+Ci=1∑Nξi−i=1∑Nαi(yi(wxi+b)−1+ξi)−i=1∑Nμiξi其中 α i ≥ 0 , μ i ≥ 0 {{\alpha _i}} \ge 0,{{\mu _i}}\ge 0 αi≥0,μi≥0。将 L ( w , b , ξ , α , μ ) L(w,b,\xi ,\alpha ,\mu ) L(w,b,ξ,α,μ)函数对 w , b , ξ w,b,\xi w,b,ξ求偏导并令其为零,可得 w = ∑ i = 1 N α i y i x i w = \sum\limits_{i = {\rm{1}}}^N {{\alpha _i}{y_i}{x_i}} w=i=1∑Nαiyixi, ∑ i = 1 N α i y i = 0 \sum\limits_{i = {\rm{1}}}^N {{\alpha _i}{y_i}} = 0 i=1∑Nαiyi=0, C − α i − μ i = 0 C - {\alpha _i} - {\mu _i} = 0 C−αi−μi=0。将这些代入 L ( w , b , ξ , α , μ ) L(w,b,\xi ,\alpha ,\mu ) L(w,b,ξ,α,μ)函数,即得对偶问题:
min α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ∙ x j ) − ∑ i = 1 N α i \mathop {\min }\limits_\alpha \frac{{\rm{1}}}{{\rm{2}}}\sum\limits_{i = {\rm{1}}}^N {\sum\limits_{j = {\rm{1}}}^N {{\alpha _i}{\alpha _j}{y_i}{y_j}({x_i} \bullet {x_j})} } - \sum\limits_{i = {\rm{1}}}^N {{\alpha _i}} αmin21i=1∑Nj=1∑Nαiαjyiyj(xi∙xj)−i=1∑Nαi ∑ i = 1 N α i y i = 0 \sum\limits_{i = {\rm{1}}}^N {{\alpha _i}{y_i}} = 0 i=1∑Nαiyi=0 C − α i − μ i = 0 C - {\alpha _i} - {\mu _i} = 0 C−αi−μi=0若 α ∗ = ( α 1 ∗ , α 2 ∗ , . . . , α N ∗ ) T {\alpha ^*} = {(\alpha _{_1}^*,\alpha _{_2}^*,...,\alpha _{_N}^*)^T} α∗=(α1∗,α2∗,...,αN∗)T是对偶问题的解,则存在 C > α j ∗ > 0 C>\alpha _{_j}^*>0 C>αj∗>0,使得原始问题的解为: w ∗ = ∑ i = 1 N α i ∗ y i x i {w^*} = \sum\limits_{i = {\rm{1}}}^N {\alpha _i^*{y_i}{x_i}} w∗=i=1∑Nαi∗yixi, b ∗ = y j − ∑ i = 1 N α i ∗ y i ( x i ⋅ x j ) {b^*} = {y_j} - \sum\limits_{i = {\rm{1}}}^N {\alpha _i^*{y_i}{\rm{(}}{x_i}\cdot{x_j}{\rm{)}}} b∗=yj−i=1∑Nαi∗yi(xi⋅xj)。由于对与任一满足 C > α j ∗ > 0 C>\alpha _{_j}^*>0 C>αj∗>0条件的 α j ∗ \alpha _{_j}^* αj∗都可求出一个 b ∗ b^* b∗,因此 b b b的解是不唯一的。将对偶问题的解 α ∗ = ( α 1 ∗ , α 2 ∗ , . . . , α N ∗ ) T {\alpha ^*} = {(\alpha _{_1}^*,\alpha _{_2}^*,...,\alpha _{_N}^*)^T} α∗=(α1∗,α2∗,...,αN∗)T中对应于 α j ∗ > 0 \alpha _{_j}^*>0 αj∗>0的样本点称为支持向量。 -
非线性支持向量机
(1)核技巧:假设 χ \chi χ是输入空间(欧式空间 R n R^n Rn的子集), H H H为特征空间(希尔伯特空间),若存在一个从 χ \chi χ到 H H H的映射 ϕ ( x ) : χ → H \phi (x):\chi \to H ϕ(x):χ→H,使得对所有 x , z ∈ χ x,z\in \chi x,z∈χ,函数 K ( x , z ) K(x,z) K(x,z)满足条件 K ( x , z ) = ϕ ( x ) ⋅ ϕ ( z ) K(x,z) = \phi (x) \cdot \phi (z) K(x,z)=ϕ(x)⋅ϕ(z),则称 K ( x , z ) K(x,z) K(x,z)为核函数, ϕ ( x ) \phi (x) ϕ(x)为映射函数,式中 ϕ ( x ) ⋅ ϕ ( z ) \phi (x) \cdot \phi (z) ϕ(x)⋅ϕ(z)为内积操作。核技巧的想法是,在学习和预测中只定义核函数 K ( x , z ) K(x,z) K(x,z),而不显示地定义映射函数 ϕ ( x ) \phi (x) ϕ(x)。当给定了核函数 K ( x , z ) K(x,z) K(x,z)时,映射函数 ϕ ( x ) \phi (x) ϕ(x)并不唯一。
前面说到,对于线性支持向量机,无论目标函数还是决策函数(分离超平面),都只涉及到输入实例与实例之间的内积。而内积 x i ⋅ x j x_i \cdot x_j xi⋅xj可以用核函数 K ( x , z ) = ϕ ( x ) ⋅ ϕ ( z ) K(x,z) = \phi (x) \cdot \phi (z) K(x,z)=ϕ(x)⋅ϕ(z)来代替,此时对偶问题就会变为:
W ( α ) = 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j K ( x i , x j ) − ∑ i = 1 N α i W(\alpha ) = \frac{{\rm{1}}}{{\rm{2}}}\sum\limits_{i = {\rm{1}}}^N {\sum\limits_{j = {\rm{1}}}^N {{\alpha _i}{\alpha _j}{y_i}{y_j}K({x_i},{x_j})} } - \sum\limits_{i = {\rm{1}}}^N {{\alpha _i}} W(α)=21i=1∑Nj=1∑NαiαjyiyjK(xi,xj)−i=1∑Nαi分离超平面中的内积也可以用核函数代替 ∑ i = 1 N α i ∗ y i K ( x , x i ) + b ∗ \sum\limits_{i = {\rm{1}}}^N {\alpha _{_i}^*{y_i}K(x,{x_i})} + {b^*} i=1∑Nαi∗yiK(x,xi)+b∗。
在以上操作中,将输入空间中的内积 x i ⋅ x j x_i \cdot x_j xi⋅xj变换为特征空间中的内积 ϕ ( x i ) ⋅ ϕ ( x j ) \phi (x_i) \cdot \phi (x_j) ϕ(xi)⋅ϕ(xj),在新的特征空间里从训练样本中学习线性支持向量机。当映射函数是非线性函数时,学习到的含有核函数的支持向量机是非线性分类模型。也就是说,在核函数 K ( x , z ) K(x,z) K(x,z)给定条件下,可以利用线性分类问题的方法求解非线性分类问题的支持向量机。学习是隐式地在特征空间中进行,不需要显示地定义特征空间和映射函数。这样的技巧称为核技巧,它是巧妙地利用线性分类学习方法与核函数解决非线性问题的技术。
(2)正定核:通常所说的核函数就是正定核。如何判断一个给定的函数 K ( x , z ) K(x,z) K(x,z)是不是正定核?可以证明, K ( x , z ) K(x,z) K(x,z)是正定核的充要条件是 K ( x , z ) K(x,z) K(x,z)对应的Gram矩阵 K = [ K ( x i , x j ) ] m × m K = {{\rm{[}}K{\rm{(}}{x_i},{x_j}{\rm{)]}}_{_{m \times m}}} K=[K(xi,xj)]m×m是半正定矩阵。而对于检验核函数是否为正定核函数并不容易,所以一般会应用已知核函数。
(3)常用核函数:多项式核函数, K ( x , z ) = ( x ⋅ z + 1 ) p K(x,z) = {(x \cdot z + 1)^p} K(x,z)=(x⋅z+1)p;高斯核函数, K ( x , z ) = exp ( − ∥ x − z ∥ 2 2 σ 2 ) K(x,z) = \exp ( - \frac{{{{\left\| {x - z} \right\|}^2}}}{{2{\sigma ^2}}}) K(x,z)=exp(−2σ2∥x−z∥2);字符串核函数,核函数不仅可以定义在欧式空间,还可以定义在离散数据的集合上,这在文本分类、信息检索、生物信息学等方面都有应用。 -
序列最小最优化算法(SMO)
SMO算法要求解凸二次规划的对偶问题:
min α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j K ( x i , x j ) − ∑ i = 1 N α i \mathop {\min }\limits_\alpha \frac{{\rm{1}}}{{\rm{2}}}\sum\limits_{i = {\rm{1}}}^N {\sum\limits_{j = {\rm{1}}}^N {{\alpha _i}{\alpha _j}{y_i}{y_j}K({x_i},{x_j})} } - \sum\limits_{i = {\rm{1}}}^N {{\alpha _i}} αmin21i=1∑Nj=1∑NαiαjyiyjK(xi,xj)−i=1∑Nαi ∑ i = 1 N α i y i = 0 \sum\limits_{i = {\rm{1}}}^N {{\alpha _i}{y_i}} = 0 i=1∑Nαiyi=0 0 ≤ α i ≤ C 0 \le {\alpha _i} \le C 0≤αi≤C基本思路:若所有变量的解都满足此最优化问题的KKT条件,那么这个最优化问题的解就得到了。因为KKT条件是该最优化问题的充分必要条件。否则,选择连个变量,固定其它变量,针对这两个变量构建一个二次规划问题。这时子问题就可以通过解析方法求解,这样就可以大大提高整个算法的计算速度。子问题有两个变量,一个是违反KKT条件最严重的那个,另一个由约束条件自动确定。如此,SMO算法将原问题不断分解为子问题并对子问题进行求解,进而达到求解原问题的目的。整个算法包括两个部分:求解两个变量二次规划的解析方法和选择变量的启发式方法。