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

非线性问题

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

在这里插入图片描述

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

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

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

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

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

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

使得对于所有的输入 x , z ∈ χ x,z\in\chi 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)表示两者的内积。

核技法在SVM中的使用

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

max ⁡ α , β − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j &lt; x i , x j &gt; + ∑ 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&lt;x_i,x_j&gt;+\sum\limits_{i=1}^{N}\alpha_i α,βmax21i=1Nj=1Nαiαjyiyj<xi,xj>+i=1Nα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) s.t.i=1Nαiyi=0(5)

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

求得的分离超平面如下:

∑ i = 1 N α i ∗ y i &lt; x , x i &gt; + b ∗ = 0 \sum\limits_{i=1}^{N}\alpha^*_iy_i&lt;x,x_i&gt;+b^*=0 i=1Nαiyi<x,xi>+b=0

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

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 α,βmax21i=1Nj=1NαiαjyiyjK(xi,xj)+i=1Nα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 i=1NαiyiK(xi,xj)+b=0

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

正定核

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

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

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

是半正定矩阵。

常用核函数

1、多项式核函数

K ( x , z ) = ( x ⋅ z + 1 ) p K(x,z)=(x\cdot z+1)^p K(x,z)=(xz+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 i=1Nαiyi(xix+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}) K(x,z)=exp(2σ2xz2)

对应的支持向量机为高斯径向基函数分类器,此时,分类超平面为:
∑ 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 i=1Nαiyiexp(2σ2xix2)+b=0

序列最小最优化算法

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

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

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

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

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

循 环 直 到 收 敛 : { 循环直到收敛:\{ {
f o r i = 1 − &gt; m { \qquad for\qquad i=1-&gt;m\{ fori=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) αi=argαmaxW(α1,α2,...,α,αi,...,αm)
} \qquad \} }
} \} }

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

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

对于约束条件 ∑ i = 1 N α i y i = 0 \sum\limits_{i=1}^{N}\alpha_iy_i=0 i=1Nαiyi=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 α1y1+α2y2=i=3Nαiyi,将 ∑ i = 3 N α i y i \sum\limits_{i=3}^{N}\alpha_iy_i i=3Nαiyi看做常数 ζ \zeta ζ,那么就有 α 1 y 1 + α 2 y 2 = ζ \alpha_1y_1+\alpha_2y_2=\zeta α1y1+α2y2=ζ,画在坐标系中得到下面的图

在这里插入图片描述

α 1 y 1 + α 2 y 2 = ζ \alpha_1y_1+\alpha_2y_2=\zeta α1y1+α2y2=ζ
= &gt; α 1 = ζ − α 2 y 2 y 1 =&gt;\alpha_1=\frac{\zeta-\alpha_2y_2}{y_1} =>α1=y1ζα2y2

α 2 \alpha_2 α2来表示 α 1 \alpha_1 α1,这样的话就只有一个变量 α 2 \alpha_2 α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 α,βmax21i=1Nj=1NαiαjyiyjK(xi,xj)+i=1Nα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 W(α1,α2,...,αN)=21i=1Nj=1NαiαjyiyjK(xi,xj)+i=1Nαi

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

在这里插入图片描述

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

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

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

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

最后计算总结如下:

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值