支持向量机学习笔记(三):非线性支持向量机与SMO算法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37334135/article/details/86085523

非线性问题

在之前学了线性支持向量机,通过训练集学习到分离超平面 w x + b = 0 wx+b=0 ,但是有时候分类问题不是线性的,也就是我们不能直接得到分离超平面。看下面两个图:

在这里插入图片描述

左边的图,只能使用一个椭圆(曲面)来对正例(黑点表示的实例)和负例(x表示的实例)来进行划分,而无法使用超平面 w x + b = 0 wx+b=0 来进行划分。对于这样的非线性问题,显然线性支持向量机无法求解,但是可以将左边图中的实例,按照某种映射关系映射到右图中,此时就可以使用线性支持向量机了。也就是说使用线性分类方法去解决非线性问题可以使用下面两个步骤:

  1. 使用一个函数,将原空间中的数据变映射到新空间(上图中左图中实例映射到右图);
  2. 在新空间里用线性分类学习方法学习到分类模型(这里就是使用线性支持向量机学习到超平面 w x + b = 0 wx+b=0 )。

核技法用到支持向量机中的思想:使用一个非线性变换将输入空间映射到特征空间,从而使得输入空间的超曲面对应于特征空间的超平面。

说到这就正式给出核函数的定义:

核函数:
χ \chi 为输入空间, H H 为特征空间,如果存在一个 χ \chi H H 的映射

ϕ ( x ) : χ > H \phi(x):\chi->H

使得对于所有的输入 x , z χ x,z\in\chi 满足条件

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) 表示两者的内积。

核技法在SVM中的使用

现在将核技法使用到非线性分类问题中,非线性支持向量机模型(凸二次规划对偶模型)如下:

max α , β 1 2 i = 1 N j = 1 N α i α j y i y j < x i , x j > + i = 1 N α i \max\limits_{\alpha,\beta}-\frac{1}{2}\sum\limits_{i=1}^{N}\sum\limits_{j=1}^{N}\alpha_i\alpha_jy_iy_j<x_i,x_j>+\sum\limits_{i=1}^{N}\alpha_i

s . t . i = 1 N α i y i = 0 ( 5 ) s.t.\qquad \sum\limits_{i=1}^{N}\alpha_iy_i=0\qquad (5)

0 α i C \qquad \qquad0\leq\alpha_i\leq C

求得的分离超平面如下:

i = 1 N α i y i < x , x i > + b = 0 \sum\limits_{i=1}^{N}\alpha^*_iy_i<x,x_i>+b^*=0

其中 < x i , x j > <x_i,x_j> 表示两个向量的内积。
不管是对偶模型还是求得的结果都是输入向量的内积,将其替换成核函数得到目标函数与分离超平面,得到:

max α , β 1 2 i = 1 N j = 1 N α i α j y i y j K ( x i , x j ) + i = 1 N α i \max\limits_{\alpha,\beta}-\frac{1}{2}\sum\limits_{i=1}^{N}\sum\limits_{j=1}^{N}\alpha_i\alpha_jy_iy_jK(x_i,x_j)+\sum\limits_{i=1}^{N}\alpha_i

i = 1 N α i y i K ( x i , x j ) + b = 0 \sum\limits_{i=1}^{N}\alpha^*_iy_iK(x_i,x_j)+b^*=0

其中 K ( x i , x j ) = ϕ ( x i ) ϕ ( x j ) K(x_i,x_j)=\phi(x_i)\cdot\phi(x_j) 也就是说,将输入空间中的向量 x i x_i 映射成特征空间的 ϕ ( x i ) \phi(x_i) (将输入空间向量内积转换成特征空间向量内积)转换就得到上面的右图中的点了,此时就可以使用线性支持向量机得到分离超平面,而关于核函数的选取得看具体的情况,后面会介绍常用的核函数。

正定核

上面介绍了核函数 K ( x , z ) K(x,z) ,而正定核也就是核函数。那么 K ( x , z ) K(x,z) 满足什么条件才能作为正定核呢,下面不加证明的给出正定核的充要条件。

K : χ × χ > R K:\chi ×\chi->R 是对称函数( K ( x , z ) χ K(x,z)中两个变量都属于同样的输入空间\chi ),那么 K ( x , z ) K(x,z) 是正定核的充要条件是,对于任意的 x i χ , i = 1 , 2 , . . . , n x_i\in \chi,i=1,2,...,n , K ( x , z ) K(x,z) 对应的矩阵:

K = [ K ( x i , x j ) ] n × n K=[K(x_i,x_j)]_{n\times n}

是半正定矩阵。

常用核函数

1、多项式核函数

K ( x , z ) = ( x z + 1 ) p K(x,z)=(x\cdot z+1)^p

对应的支持向量机为p次多项式分类器,此时,分类超平面为:
i = 1 N α i y i ( x i x + 1 ) p + b = 0 \sum\limits_{i=1}^{N}\alpha^*_iy_i(x_i\cdot x+1)^p+b^*=0

2、高斯核函数

K ( x , z ) = e x p ( x z 2 2 σ 2 ) K(x,z)=exp(-\frac{||x-z||^2}{2\sigma^2})

对应的支持向量机为高斯径向基函数分类器,此时,分类超平面为:
i = 1 N α i y i e x p ( x i x 2 2 σ 2 ) + b = 0 \sum\limits_{i=1}^{N}\alpha^*_iy_iexp(-\frac{||x_i-x||^2}{2\sigma^2})+b^*=0

序列最小最优化算法

到这里,线性可分支持向量机,线性支持向量机,非线性支持向量机已经学完了。关于如何求解各自的对偶问题还没有给出,每次都是假设 α = ( α 1 , α 2 , . . . , α N ) T \alpha=(\alpha_1,\alpha_2,...,\alpha_N)^T 已经求出,那么到底怎么求则是下面要介绍的序列最小最优化算法 (SMO)。

介绍SMO算法之前先介绍坐标上升法:

假设要求解无约束条件的函数参数如下:

a r g max α W ( α 1 , α 2 , . . . , α m ) arg\max \limits_{\alpha}W(\alpha_1,\alpha_2,...,\alpha_m)

坐标上升法的思路是,选取某一个 α i \alpha_i ,对其他的 α \alpha 进行固定,修改 α i \alpha_i 的值,使函数 W W 的值达到最大,此时选取下一个 α \alpha 的值,而对其他的所有 α \alpha 值进行固定,如此循环下去直到收敛,写成伪代码如下:

{ 循环直到收敛:\{
f o r i = 1 > m { \qquad for\qquad i=1->m\{
α i = a r g max α W ( α 1 , α 2 , . . . , α , α i , . . . , α m ) \qquad \qquad \alpha_i=arg\max \limits_{\alpha}W(\alpha_1,\alpha_2,...,\overline{\alpha},\alpha_i,...,\alpha_m)
} \qquad \}
} \}

SMO算法和坐标上升法是很类似的,将其用在解SVM中对偶模型中是这样做的,由于存在约束条件 i = 1 N α i y i = 0 \sum\limits_{i=1}^{N}\alpha_iy_i=0 ,所以每次选两个变量 α i , α j \alpha_i,\alpha_j ,使得两个变量变化幅度一样(一个增加多少另一个就减少多少)从而使得满足约束条件。下面给出较具体的介绍:

方便起见,假设选的两个参数是 α 1 , α 2 \alpha_1,\alpha_2 ,而其他变量 α 3 , α 4 , . . . , α N \alpha_3,\alpha_4,...,\alpha_N 进行固定,也就是说只要不含 α 1 , α 2 \alpha_1,\alpha_2 的项都看做常数了。

对于约束条件 i = 1 N α i y i = 0 \sum\limits_{i=1}^{N}\alpha_iy_i=0 ,转换一下得到 α 1 y 1 + α 2 y 2 = i = 3 N α i y i \alpha_1y_1+\alpha_2y_2=-\sum\limits_{i=3}^{N}\alpha_iy_i ,将 i = 3 N α i y i \sum\limits_{i=3}^{N}\alpha_iy_i 看做常数 ζ \zeta ,那么就有 α 1 y 1 + α 2 y 2 = ζ \alpha_1y_1+\alpha_2y_2=\zeta ,画在坐标系中得到下面的图

在这里插入图片描述

α 1 y 1 + α 2 y 2 = ζ \alpha_1y_1+\alpha_2y_2=\zeta
= > α 1 = ζ α 2 y 2 y 1 =>\alpha_1=\frac{\zeta-\alpha_2y_2}{y_1}

α 2 \alpha_2 来表示 α 1 \alpha_1 ,这样的话就只有一个变量 α 2 \alpha_2 了。
对偶问题的目标函数为:
max α , β 1 2 i = 1 N j = 1 N α i α j y i y j K ( x i , x j ) + i = 1 N α i \max\limits_{\alpha,\beta}-\frac{1}{2}\sum\limits_{i=1}^{N}\sum\limits_{j=1}^{N}\alpha_i\alpha_jy_iy_jK(x_i,x_j)+\sum\limits_{i=1}^{N}\alpha_i

W ( α 1 , α 2 , . . . , α N ) = 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_1,\alpha_2,...,\alpha_N)=-\frac{1}{2}\sum\limits_{i=1}^{N}\sum\limits_{j=1}^{N}\alpha_i\alpha_jy_iy_jK(x_i,x_j)+\sum\limits_{i=1}^{N}\alpha_i

α 3 , . . . , α N \alpha_3,...,\alpha_N 固定,而 α 1 \alpha_1 α 2 \alpha_2 来表示,带入到 W ( α 1 , α 2 , . . . , α N ) W(\alpha_1,\alpha_2,...,\alpha_N) ,那么得到的肯定就是一个关于 α 2 \alpha_2 的一元二次函数 W ( α 2 ) = a α 2 2 + b α 2 + c W(\alpha_2)=a\alpha_2^2+b\alpha_2+c (具体的可以自行计算),那么现在要做的就是求出 W ( α 2 ) W(\alpha_2) 最大值所对应的 α 2 \alpha_2 了,如果不考虑约束条件那么结果就是 W ( α 2 ) W(\alpha_2) 对应的抛物线的顶点了,但是,这个函数是受到了约束条件约束的,也就是上面两个图,假如就是左图,那么需要将这条抛物线和上面的左图画在一起,如下:

在这里插入图片描述

显然,1和3的情况是不满足约束条件的,因为最优值的 α 2 \alpha_2 的值一个是小于了 α 2 \alpha_2 的最小值,另一个是大于了 α 2 \alpha_2 的最大值,需要取在 α 2 \alpha_2 范围内 W ( α 2 ) W(\alpha_2) 是最优值。具体的就直接摘抄《统计学习方法》了,具体的细节会作解释。

在这里插入图片描述
剪辑指的是考虑约束条件( α 2 \alpha_2 取值范围)的情况。

为了理解方便就按照上面的两个图来解释:
对于 y 1 y 2 y_1\neq y_2 时候的边界问题:
(1)、当直线位于右下角的时候,下界 L = α 2 o l d α 1 o l d L=\alpha_2^{old}-\alpha_1^{old} α 2 o l d \alpha_2^{old} 是直线与下方的横纵的交点,而 α 1 o l d = 0 \alpha_1^{old}=0 ;而上界 H = C H=C
(2)、当直线位于左上角的时候,下界 L = 0 L=0 ,而上界 H = C + α 2 o l d α 1 o l d H=C+\alpha_2^{old}-\alpha_1^{old} ,注意 α 2 o l d α 1 o l d < 0 \alpha_2^{old}-\alpha_1^{old}<0 ,往左下方延长该执行,得到与下方横纵交点的值。

关于 y 1 = y 2 y_1=y_2 也分为左下方和右上方来讨论,具体的就详述了。

最后计算总结如下:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_37334135/article/details/86085523