机器学习笔记6-支持向量机(2/3)

机器学习笔记6-支持向量机(2/3)

  1. 线性支持向量机
    对于线性不可分数据,线性可分支持向量机不适用,因为其不等式约束并不能都成立。线性不可分意味着某些样本点 ( x i , y i ) (x_i,y_i) 不能满足函数间隔大于等于一的约束条件,这时可对每个样本点 ( x i , y i ) (x_i,y_i) 引入一个松弛变量 ξ i 0 {\xi _i} \ge 0 ,使函数间隔加上松弛变量大于等于一,此时约束条件为 y i ( w x i + b ) 1 ξ i {y_i}{\rm{(}}w{x_i} + b{\rm{)}} \ge {\rm{1}} - {\xi _i} 。同时对每个松弛变量 ξ i {\xi _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}} 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}}
    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
    学习的对偶算法:以上原始问题的拉格朗日函数是:
    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}}
    其中 α i 0 , μ i 0 {{\alpha _i}} \ge 0,{{\mu _i}}\ge 0 。将 L ( w , b , ξ , α , μ ) L(w,b,\xi ,\alpha ,\mu ) 函数对 w , b , ξ w,b,\xi 求偏导并令其为零,可得 w = i = 1 N α i y i x i w = \sum\limits_{i = {\rm{1}}}^N {{\alpha _i}{y_i}{x_i}} i = 1 N α i y i = 0 \sum\limits_{i = {\rm{1}}}^N {{\alpha _i}{y_i}} = 0 C α i μ i = 0 C - {\alpha _i} - {\mu _i} = 0 。将这些代入 L ( w , b , ξ , α , μ ) L(w,b,\xi ,\alpha ,\mu ) 函数,即得对偶问题:
    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}}
    i = 1 N α i y i = 0 \sum\limits_{i = {\rm{1}}}^N {{\alpha _i}{y_i}} = 0 C α i μ i = 0 C - {\alpha _i} - {\mu _i} = 0
    α = ( α 1 , α 2 , . . . , α N ) T {\alpha ^*} = {(\alpha _{_1}^*,\alpha _{_2}^*,...,\alpha _{_N}^*)^T} 是对偶问题的解,则存在 C > α j > 0 C>\alpha _{_j}^*>0 ,使得原始问题的解为: w = i = 1 N α i y i x i {w^*} = \sum\limits_{i = {\rm{1}}}^N {\alpha _i^*{y_i}{x_i}} 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{)}}} 。由于对与任一满足 C > α j > 0 C>\alpha _{_j}^*>0 条件的 α j \alpha _{_j}^* 都可求出一个 b b^* ,因此 b b 的解是不唯一的。将对偶问题的解 α = ( α 1 , α 2 , . . . , α N ) T {\alpha ^*} = {(\alpha _{_1}^*,\alpha _{_2}^*,...,\alpha _{_N}^*)^T} 中对应于 α j > 0 \alpha _{_j}^*>0 的样本点称为支持向量。

  2. 非线性支持向量机
    (1)核技巧:假设 χ \chi 是输入空间(欧式空间 R n R^n 的子集), H H 为特征空间(希尔伯特空间),若存在一个从 χ \chi H H 的映射 ϕ ( x ) : χ H \phi (x):\chi \to H ,使得对所有 x , z χ x,z\in \chi ,函数 K ( x , z ) K(x,z) 满足条件 K ( x , z ) = ϕ ( x ) ϕ ( z ) K(x,z) = \phi (x) \cdot \phi (z) ,则称 K ( x , z ) K(x,z) 为核函数, ϕ ( x ) \phi (x) 为映射函数,式中 ϕ ( x ) ϕ ( z ) \phi (x) \cdot \phi (z) 为内积操作。核技巧的想法是,在学习和预测中只定义核函数 K ( x , z ) K(x,z) ,而不显示地定义映射函数 ϕ ( x ) \phi (x) 。当给定了核函数 K ( x , z ) K(x,z) 时,映射函数 ϕ ( x ) \phi (x) 并不唯一。
    前面说到,对于线性支持向量机,无论目标函数还是决策函数(分离超平面),都只涉及到输入实例与实例之间的内积。而内积 x i x j x_i \cdot x_j 可以用核函数 K ( x , z ) = ϕ ( x ) ϕ ( z ) K(x,z) = \phi (x) \cdot \phi (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}}
    分离超平面中的内积也可以用核函数代替 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^*}
    在以上操作中,将输入空间中的内积 x i x j x_i \cdot x_j 变换为特征空间中的内积 ϕ ( x i ) ϕ ( x j ) \phi (x_i) \cdot \phi (x_j) ,在新的特征空间里从训练样本中学习线性支持向量机。当映射函数是非线性函数时,学习到的含有核函数的支持向量机是非线性分类模型。也就是说,在核函数 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) 对应的Gram矩阵 K = [ K ( x i , x j ) ] m × m K = {{\rm{[}}K{\rm{(}}{x_i},{x_j}{\rm{)]}}_{_{m \times m}}} 是半正定矩阵。而对于检验核函数是否为正定核函数并不容易,所以一般会应用已知核函数。
    (3)常用核函数:多项式核函数, K ( x , z ) = ( x z + 1 ) p K(x,z) = {(x \cdot 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}}}) ;字符串核函数,核函数不仅可以定义在欧式空间,还可以定义在离散数据的集合上,这在文本分类、信息检索、生物信息学等方面都有应用。

  3. 序列最小最优化算法(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}}
    i = 1 N α i y i = 0 \sum\limits_{i = {\rm{1}}}^N {{\alpha _i}{y_i}} = 0 0 α i C 0 \le {\alpha _i} \le C
    基本思路:若所有变量的解都满足此最优化问题的KKT条件,那么这个最优化问题的解就得到了。因为KKT条件是该最优化问题的充分必要条件。否则,选择连个变量,固定其它变量,针对这两个变量构建一个二次规划问题。这时子问题就可以通过解析方法求解,这样就可以大大提高整个算法的计算速度。子问题有两个变量,一个是违反KKT条件最严重的那个,另一个由约束条件自动确定。如此,SMO算法将原问题不断分解为子问题并对子问题进行求解,进而达到求解原问题的目的。整个算法包括两个部分:求解两个变量二次规划的解析方法和选择变量的启发式方法。

猜你喜欢

转载自blog.csdn.net/zhennang1427/article/details/85235853