SVM-非线性支持向量机及SMO算法

SVM-非线性支持向量机及SMO算法


线性不可分情况

线性可分问题的支持向量机学习方法,对线性不可分训练数据是不适用的,为了满足函数间隔大于1的约束条件,可以对每个样本 (xi,yi) 引进一个松弛变量 ξi0 ,使函数间隔加上松弛变量大于等于1,,

yi(wxi+b)1ξi

目标函数变为

12||w||2+Cj=1Nξi

其中,C>0称为惩罚参数,值越大对误分类的惩罚越大,值越小对误分类的惩罚越小。

因此,最小化目标函数也就是使 12||w||2 尽量小(间隔尽量大),同时使误分类点的个数尽量小。

线性不可分的线性支持向量机的学习问题变成如下凸二次规划问题:

minw,b,ξ12||w||2+Ci=1Nξis.t.yi(wxi+b)1ξi,i=1,2,,N,ξi0,i=1,2,,N

线性支持向量学习算法

  • 选择惩罚参数C>0,构造并求解凸二次规划问题

minα12i=1Nj=1Nαiαjyiyj(xixj)i=1Nαis.t.i=1Nαiyi=00αiC,i=1,2,,N

求得最优解 α=(α1,α2,,αN)T

  • 计算 w=Ni=1αiyixi

选择 α 的一个分量 αj 适合条件 0<αj<C ,计算

b=yii=1Nyiαi(xixj)

  • 求得分离超平面

wx+b=0

分类决策函数:

f(x)=sign(wx+b)

核函数

用线性分类方法求解非线性分类问题分为两步:首先使用一个变换将原空间的数据映射到新空间;然后在新空间里用线性分类学习方法从训练数据中学习分类模型。

核函数的空间转换

核技巧应用在支持向量机的基本思想:通过一个非线性变换将输入空间(欧式空间 Rn 或离散集合)对应于一个特征空间(希尔伯特空间H),使得在输入空间 Rn 中的超曲面模型对应于特征空间H中的超平面模型(支持向量机)。

非线性支持向量分类机

非线性支持向量机

从非线性分类训练集,通过核函数与间隔最大化或凸二次规划,学习得到的分类决策函数:

f(x)=sign(i=1NαiyiK(x,xi)+b)

称为非线性支持向量, K(x,z) 是正定核函数。

学习算法

  • 选择适当的核函数 K(x,z) 和适当的参数C,构造并求解最优化问题

minα12i=1Nj=1NαiαjyiyjK(xi,xj)i=1Nαis.t.i=1Nαiyi=0,0<αi<C,i=1,2,,N

求解最优解 α=(α1,α2,,αN)

  • 选择 α 的第一个正分量 0<αj<C ,计算

b=yii=1NαiyiK(xixj)

  • 构造决策函数

f(x)=sign(i=1NαiyiK(xxi)+b)

序列最小优化算法

SMO算法是一种启发式算法。如果所有变量都满足KKT条件,那么这个最优化问题就解决了(KKT问题是该最优化问题的充要条件),否则,选择两个变量,固定其他变量,针对这两个变量构造二次规划问题。该方法会使原始二次规划问题的目标函数变小,不断分解自问题并对子问题求解进而达到求解原问题的目的。

由于

i=1Nαiyi=0

所以

αi=1yii=2Nαiyi

两个变量的二次规划求解

假设选择两个变量 α1α2

minα1α2=12K11α21+12K22α22+y1y2K12α1α2(α1+α2)+y1α1i=3NyiαiKi1+y2α2i=3NyiαiK12s.t.α1y1+α2y2=i=3Nyiαi=ξ0αiC,i=1,2

由于只有两个变量 (αi,αj) ,因此根据两变量的符号情况约束条件可用二位空间中的图表示(参考 α1y1+α2y2=ξ() ),

二变量优化问题

L和H是 α 取值的最小和最大值,如果 yi!=yj ,则

L=max(0,α2α1),H=min(C,C+α2α1)

如果 yi=yj ,则

L=max(0,α2+α1+C),H=min(C,α2+α1)

g(x)=i=1NαiyiK(xi,x)+b

得到误差值:

Ei=g(xi)yi=(i=1NαiyiK(xi,x)+b)yi$,i=1,2

此最优问题的解是:

αnew2=αold2+y2(E1E2)η

其中,

η=K11+K222K12=||ϕ(x1)ϕ(x2)||2

ϕ(x) 为输入空间到特征空间的映射,经过剪辑后是

f(n)=H,αnew2>Hαnew2,Lαnew2HL,αnew2<L

αnew1

αnew1=αold1+y1y2(αold2αnew2)

变量的选择方法

SMO算法在每个子问题中选择两个变量优化,其中至少一个变量是违反KKT条件的。

1.第1个变量的选择

SMO算法在外层循环中选取违反KKT条件最严重的样本点,并将其对应的变量作为第1个变量,KKT条件如下

αi=0<=>yig(xi)10<αi<C<=>yig(xi)=1αi=C<=>yig(xi)1

其中, g(xi)=Nj=1αjyjK(xi,xj)+b

该检验在 ϵ 范围内进行的,在校验过程中,外层循环首先遍历所有满足条件 0<αi<C 的样本点,即在间隔边界上的支持向量点,检验它们是否满足KKT条件。如果这些样本点都满足KKT条件,那么遍历整个训练集,检验它们是否满足KKT条件。

2.第2个变量的选择

SMO算法在内层循环,假设在外层循环中已经找到第一个变量 α1 ,现在要在内层循环中找到第2个变量 α2 ,第2个变量选择的标准是希望能使 α2 有足够的变化。根据上一节可知, αnew2 是依赖 |E1E2| 的,为了加快计算速度,最简单的做法是选择 |E1E2| 最大的(如果 E1 为负值,则选择最大的 Ei 作为 E2 ,否则选择最小的 Ei E2 ,需要保存所有的 Ei )。

3.计算阈值b和差值 Ei

在每次完成两个变量优化后,都要重新计算阈值b。

由KKT条件得

i=1NαiyiKi1+b=yi

从而

bnew1=y1i=3NαiyiKi1αnew1y1K11αnew2y2K21

由于 Ei=g(xi)yi=(Ni=1αiyiK(xi,x)+b)yi , \quad i = 1,2$,则

E1=g(x1)y1=i=3NαiyiKi1+αold1y1K11+αold2y2K21+boldy1

将上式中的 yiNi=3αiyiKi1 代入 bnew1 的公式中,得到

bnew1=E1y1K11(αnew1αold1)y2K21(αnew2αold2)+bold

对于b的取值:

bnew={bnew1=bnew2,0<αnewi<C,i=1,2bnew1+bnew22,αnewi==0orCKKT



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值