带你搞懂支持向量机SVM算法原理

感知机是SVM的基础,详细介绍请戳http://blog.csdn.net/akirameiao/article/details/79436859

一、原理

1. 线性可分支持向量机

问题的输入输出
X = {x1,x2,...,xn}
Y = {+1, -1}

模型:
感知机的目的是找到一个可以正确分类数据的超平面S:ωx+b=0, 得到感知机模型 f(x)=sign(ωx+b),其中ωx+b>0为正类,ωx+b<0为负类。SVM和感知机最大的差别就是SVM寻找的间隔最大的超平面,所谓间隔,可以理解为实例点到超平面最小的距离,所以SVM找的是把数据正确分隔的”最开”的超平面。

间隔
函数间隔:对于给定的训练数据集T和超平面(ω,b), 定义超平面关于样本点(xi,yi)的函数间隔为 γ^i=yi(ωxi+b)
几何间隔:对于给定的训练数据集T和超平面(ω,b), 定义超平面关于样本点(xi,yi)的几何间隔为 γi=1||ω||yi(ωxi+b)=γ^i||ω||

所以我们可以建立模型:

输入: T={(x1,y1),(x2,y2),,(xi,yi)}
输出: 分离超平面:ωx+b=0 决策函数:f(x)=sign(ωx+b)

策略:
接下来的问题就是找到间隔最大的超平面,记超平面关于实例点的的几何间隔【1||ω||yi(ωxi+b)γi 】, 定义超平面关于所有实例点的几何间隔为【γ=maxγi】, 则问题就可以写成【 maxω,bγs.t.yi(ωxi+b)γi
有几何间隔和函数间隔的关系,问题可以改写为【maxγ^||ω||】【s.t.yi(ωxi+b)γ^,i=1,2,,N
由于同时成比例的改变 ω 和 b ,不会影响超平面的位置,也不会影响不等式约束和目标函数的优化,可以令【γ^=1】,为了求解的方便,把优化目标改成:min12||ω||2,约束条件改成yi(ωxi+b)10,i=1,2,,N

算法:
原始算法:

输入:线性可分数据集T={(x1,y1),(x2,y2),,(xn,yn)},其中,xiRn,yi{+1,1},i=1,2,,N
输出:最大间隔分离超平面:ωx+b=0 分类决策函数:f(x)=sign(ωx+b)

过程:(1)minω,b12||ω||2, s.t. yi(ωxi+b)10,i=1,2,,N,求的最优解 ω,b

(2)得到分离超平面 wx+b=0,决策函数 f(x)=sign(ωx+b)

对偶算法:

首先构建原始问题的拉格朗日函数 L(ω,b,α)=12||ω||2+i=1Nαi(1yi(ωxi+b)) 由拉格朗日对偶性,原始问题的对偶问题的极大极小问题 maxαminω,bL(ω,b,α) 接下来是求解过程

a. 对ω,b 求偏导数,并令其等于0,【ωL(ω,b,α)=ωi=1Nαiyixi=0 】, 【bL(ω,b,α)=i=1Nαiyi】,得到【ω=i=1Nαiyixi,i=1Nαiyi=0

b. 将a中得到的结果代入拉格朗日函数,化简得到
minω,bL(ω,b,α)=12i=1Nj=1Nαiαjyiyj(xixj)+i=1Nαi

c. 接下来求【maxα12i=1Nj=1Nαiαjyiyj(xixj)+i=1Nαi,s.t i=1Nαiyi=0, αi0】, 【i=1,2,,N

d. 转化为求【minα12i=1Nj=1Nαiαjyiyj(xixj)i=1Nαi, s.ti=1Nαiyi=0, αi0i=1,2,,N

拉格朗日函数的KKT条件
ωL(ω,b,α)=0
αi0
yif(xi)10
αi(yif(xi)1)=0

e. 由KKT条件,ω=i=1Nαyixi , 由于ω0可知存在下标 j,使得αj>0 , 那么yi(ωxi+b)=0,ω 代入,得到 b=yji=1Nαiyi(xixj)
输入:线性可分数据集T={(x1,y1),(x2,y2),,(xn,yn)},其中,xiRn,yi{+1,1},i=1,2,,N

f.计算出 α 之后,可以得到ω,b,分离超平面i=1Nαiyi(xxi)+b , 分类决策f(x)=sign(i=1Nαiyi(xxi)+b)

2. 线性支持向量机

如果数据中大部分点是线性可分的,但是存在少数点是线性不可分,这种情况下,就可以使用软间隔支持向量机,每个实例支付一个代价 ξi ,将约束条件写成 yi(ωxi+b)1ξi , 将优化目标函数写成 12||ω||2+CiNξi, C是调和两者的参数,这样的叫做软间隔支持向量机

策略:

min12||ω||2+CiNξi
s.t.yi(ωxi+b)1ξi
ξ0

算法:

a.L(ω,b,ξ,α,μ)=12||ω||2+CiNξi+iNαi[1ξiyi(ωxi+b)]+iN(μiξi)

展开后得到
L(ω,b,ξ,α,μ)=12||ω||2+CiNξi+iNαiiNαiξiiNαiyiωxiiNαiyibiNμiξi

b.原始问题的对偶问题ω,b,ξ求偏导数,得到
ωL=ωiNαiyixi
bL=iNαiyi
ξiL=Cαiμi

令偏导数为0,得到
ω=iNαiyixi
iNαiyi=0
Cαiμi=0

c.将b中的结果代入拉格朗日函数,得到对偶问题
minω,bL(ω,b,α)=12i=1Nj=1Nαiαjyiyj(xixj)+i=1Nαi

d. 接下来求
maxα12i=1Nj=1Nαiαjyiyj(xixj)+i=1Nαi,s.t i=1Nαiyi=0, αi0】, 【i=1,2,,N

e. 转化为求
minα12i=1Nj=1Nαiαjyiyj(xixj)i=1Nαi,
s.t i=1Nαiyi=0,
αi0i=1,2,,N
μi0
αi(yi(ωxi+b)1+ξi)=0

f.计算出 α 之后,可以得到ω,b,分离超平面i=1Nαiyi(xxi)+b , 分类决策f(x)=sign(i=1Nαiyi(xxi)+b)

3. 非线性支持向量机

当数据在当前输入空间线性不可分时,可以使用映射函数,ϕ(x) 将样本映射到特征空间,使它们变得线性可分

核函数:
K(xi,xj)=ϕ(xi)ϕ(xj)

优化目标可以写成
分离超平面i=1NαiyiKxxi)+b , 分类决策 f(x)=sign(i=1NαiyiK(xxi)+b)

核函数一般的由高斯核函数、

SMO算法
1.选出两个优化变量αi,αj之后,通过代数方法求解二次规划问题
2.选出一个变量αi,如何选择第二个变量αj

二、白板推导

带你搞懂支持向量机SVM算法原理

带你搞懂支持向量机SVM算法原理