svm 支持向量机

python实现svm程序
python实现svm精简版

1、线性可分SVM

1.1 、数据集及最终分类器形式

  • 假设特征空间上的训练数据集:

T={(x1,y1),(x2,y2),...,(xN,yN)}

xiyi{+1,1}

  • 给定线性可分训练数据集,通过间隔最大化或等价地求解相应的凸二次规划问题学习得到分离超平面:

wx+b=0(1.1.1)

  • 相应的分类决策函数为:
    f(x)=sign(wx+b)(1.1.2)

1.2、函数间隔和几何间隔定义

  • (w,b) 样本点的函数间隔

    γi^=yi(wxi+b)(1.2.1)

  • (w,b) 数据集T的函数间隔:

γ^=mini=1,2,...,Nγi^(1.2.2)

  • (w,b) 样本点的几何间隔:

γi=yi(w||w||xi+b||w||)(1.2.3)

  • (w,b) 数据集T的几何间隔

γ=mini=1,2,...,Nγi(1.2.4)

1.3、最大间隔超平面定义

  • 几何间隔表示约束最优化问题:

maxw,b   γ(1.3.1)

s.t.   yi(w||w||xi+b||w||)γ,   i=1,2,...,N(1.3.2)

  • 函数间隔表示约束最优化问题:

maxw,b   γ^||w||(1.3.3)

s.t.   yi(wxi+b)γ^,   i=1,2,...,N(1.3.4)

  • 函数间隔 γ^ 的取值并不影响最优化问题的解,所以令 γ^ =1,得到等价的约束最优化问题:

minw,b 12||w||2(1.3.5)

s.t.   yi(wxi+b)10,   i=1,2,...,N(1.3.6)

1.4、带约束的优化问题,构建拉格朗日函数

  • αi0,i=1,2,...,N,

L(w,b,a)==12||w||2+i=1Nαi(1yi(wxi+b))12||w||2i=1Nαiyi(wxi+b)+i=1Nαi(1.4.1)

α=(α1,α2,,αN)T
原始问题描述:

maxαL(w,b,α)=12||w||2

minw,b12||w||2=minw,b maxαL(w,b,α)

kkt
maxα  minw,bL(w,b,α)(1.4.2)

  • minw,bL(w,b,α)
    将拉格朗日函数 L(w,b,α)w,b0
    wL(w,b,α)bL(w,b,α)==wi=1Nαiyixi=0i=1Nαiyi=0(1.4.3)(1.4.4)

    得到:
    w=i=1Nαiyixi(1.4.5)

    i=1Nαiyi=0(1.4.6)

    1.4.51.4.61.4.1
    minw,bL(w,b,α)==12i=1Nj=1Nαiαjyiyj(xixj)i=1Nαiyi(j=1Nαjyjxj)xi+b+i=1Nαi12i=1Nj=1Nαiαjyiyj(xixj)+i=1Nαi(1.4.7)

    即:
    minw,bL(w,b,α)=12i=1Nj=1Nαiαjyiyj(xixj)+i=1Nαi(1.4.8)
  • minw,b L(w,b,α)α

maxαs.t.12i=1Nj=1Nαiαjyiyj(xixj)+i=1Nαii=1Nαiyi=0αi0,  i=1,2,...,N

  • 由极大值转换成极小值,得到下面与之等价的对偶最优化问题:

minαs.t.12i=1Nj=1Nαiαjyiyj(xixj)i=1Nαii=1Nαiyi=0αi0,  i=1,2,...,N(1.4.9)(1.4.10)(1.4.11)

  • 根据KKT条件得:

    w=i=1Nαiyixib=yji=1Nαiyi(xixj)(1.4.12)(1.4.13)

    α 可以通过smo算法求出

  • 分类决策函数可以写成:

    f(x)=sign(i=1Nαiyi(xxj)+b)(1.4.14)

    • 证明:kkt条件如下:
      wL(w,b,α)=wi=1Nαiyixi=0bL(w,b,α)=i=1Nαiyi=0αi(yi(wxi+b)1)=0 i=1,2,...,Nyi(wxi+b)10, i=1,2,...,Nαi0,i=1,2,...,N(1.4.15)(1.4.16)(1.4.17)(1.4.18)(1.4.19)

      由此得:
      w=i=1Nαiyixi(1.4.20)

      至少有一个 αj>0()j
      yj(wxj+b)1=0(1.4.21)

      y2j=1 所以:
      b=yji=1Nαiyi(xixj)(1.4.22)

2、线性不可分SVM

2.1、线性不可分问题描述

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

minw,b,ξs.t.12||w||2+i=1NCξiyi(wxi+b)1ξi, i=1,2,...,Nξi0, i=1,2,....,N(2.1.1)(2.1.2)(2.1.3)

  • 并非所有点都有松弛变量  ξ ,超越分类边界内的才有,在边界上及以外的点  ξ=0
  •  ξ  越大表示在边界内且离分类边界越远
  • C惩罚因子,表示对边界内的样本的惩罚。C越大目标函数损失越大,C无限大为硬间隔问题。

2.2、构造拉格朗日函数并求解

L(w,b,ξ,α,μ)=12||w||2+i=1NCξii=1Nαi(yi(wxi+b)1+ξi)i=1Nμiξi(2.2.1)

maxα,μL(w,b,ξ,α,μ)=12||w||2+i=1NCξiminw,b,ξ 12||w||2+i=1NCξi=minw,b,ξ maxα,μL(w,b,ξ,α,μ)maxα,μ minw,b,ξL(w,b,ξ,α,μ)

  • minw,b,ξL(w,b,ξ,α,μ),w,b,ξ :

    wL(w,b,ξ,α,μ)bL(w,b,ξ,α,μ)ξiL(w,b,ξ,α,μ)===wi=0Nαiyixi=0i=0Nαiyi=0Cαiμi=0(2.2.2)(2.2.3)(2.2.4)

    得:
    w=i=0Nαiyixii=0Nαiyi=0Cαiμi=0(2.2.5)(2.2.6)(2.2.7)

    将2.2.5,2.2.6,2.2.7带入2.2.1得:
    minw,b,ξL(w,b,ξ,α,μ)=12i=1nj=1Nαiαjyiyj(xixj)+i=1Nαi(2.2.8)

  • minw,b,ξL(w,b,ξ,α,μ)α

maxαs.t.12i=1nj=1Nαiαjyiyj(xixj)+i=1Nαii=1Nαiyi=0Cαiμi=0αi0μi0,  i=1,2,...,N(2.2.9)(2.2.10)(2.2.11)(2.2.12)(2.2.13)

  • 可以简化成如下形式:

minαs.t.12i=1nj=1Nαiαjyiyj(xixj)i=1Nαii=1Nαiyi=00αiC,i=1,2,...,N(2.2.14)(2.2.15)(2.2.16)

  • αsmoαj,0<αj<C,kkt
    w=i=1Nαiyixib=yji=1Nyiαi(xixj)(2.2.17)(2.2.18)

    分类决策函数可以写成:
    f(x)=sign(i=1Nαiyi(xxj)+b)

    • 证明:原始问题是凸二次规划问题,满足KKT条件,得:
      wL(w,b,ξ,α,μ)=wi=1Nαiyixi=0bL(w,b,ξ,α,μ)=i=1Nαiyi=0ξL(w,b,ξ,α,μ)=Cαμ=0αi(yi(wxi+b)1+ξi)=0μiξi=0yi(wxi+b)1+ξi0ξi0αi0μi0,i=1,2,...,N(2.2.19)(2.2.20)(2.2.21)(2.2.22)(2.2.23)(2.2.24)(2.2.25)(2.2.26)(2.2.27)

      根据2.2.19得:
      w=i=1Nαiyixi(2.2.17)
    • 0<αj<C
      Cαμ=0μi=Cαi>0
      μiξi=0,ξi=0
      αi(yi(wxi+b)1+ξi)=0,0<αj<Cξi=0
      yi(wxi+b)1=0, 此点为分类边界上的点,支持向量点
      b=yji=1Nyiαi(xixj)(2.2.18)
    • αi=0
      Cαμ=0C=μi>0
      μiξi=0,ξi=0,
      ξi=0yi(wxi+b)1+ξi0
      yi(wxi+b)1 ,此点为分类边界外的样本点

    • αi=C
      Cαμ=0μi=0
      μiξi=0,ξi0,
      αi=Cαi(yi(wxi+b)1+ξi)=0yi(wxi+b)1+ξi=0
      ξi0yi(wxi+b)1+ξi=0yi(wxi+b)=1ξi
      yi(wxi+b)1 ,此点为分类边界内的样本点


3、 SVM核函数

  • 核函数定义
    χHχH

    ϕ(x):χH

    使xzχ,K(x,z)
    K(x,z)=ϕ(x)ϕ(z)

    K(x,z)ϕ(x)

  • 线性分类器求解非线性分类问题分为两步:

    1. 使用一个变换将原来数据映射到新的空间,
    2. 在新空间里用线性分类学习方法从训练数据中学习分类模型。
  • 常用核函数
    • 线性核函数
      κ(x,xi)=xxi
    • 多项式核函数
      κ(x,xi)=(γ(xxi)+γ)d,γ>0
    • 高斯核函数(径向基函数)
      κ(x,xi)=exp(||xxi||2δ2)
    • sigmoid核函数
      κ(x,xi)=tanh(η<x,xi>+θ)

      tanh(x)=sinh(x)cosh(x)=exexex+ex
x = -5:0.01:5; 
plot(x,tanh(x)), grid on

这里写图片描述

  • 选用技巧
    1. 如果Feature的数量很大,跟样本数量差不多,这时候选用LR或者是Linear Kernel的SVM
    2. 如果Feature的数量比较小,样本数量一般,不算大也不算小,选用SVM+Gaussian Kernel
    3. 如果Feature的数量比较小,而样本数量很多,需要手工添加一些feature变成第一种情况

4、拉格朗日对偶性

  • 带约束的极值问题:
    f(x),ci(x),hj(x)Rn
    minxRns.t.f(x)ci(x)0,  i=1,2,...,khj(x)=0,j=1,2,...,l
  • 原始问题
    首先引入广义拉格朗日函数(generalize Lagrange function)
    L(x,α,β)=f(x)+i=1kαici(x)+j=1lβjhj(x)

    ,x=(x(1),x(2),...,x(n))TRn,αi,βjαi0,x

θp(x)=maxα,β:αi0L(x,α,β)

θp(x)={f(x),+x

p=minxθp(x)=minxmaxα,β;αi0L(x,α,β)

  • 对偶问题:
    定义:

    θD(α,β)=minxL(x,α,β)

    maxα,β;α0θD(α,β)=maxα,β;α0minxL(x,α,β)

    maxα,β;α0minxL(x,α,β)广

  • 原始问题和对偶问题都有最优值,则:

    d=maxα,β;α0minxL(x,α,β)minxmaxα,β;αi0L(x,α,β)=p

    对原始问题和对偶问题,假设函数 f(x)cj(x) 是凸函数, hj(x) 是仿射函数,并且不等式约束c_i(x)是严格可行的,则 xα,β 分别对原始问题和对偶问题的解的充分必要条件 xα,βKarushKuhnTucker(KKT)

xL(x,α,β)=0αL(x,α,β)=0βL(x,α,β)=0αici(x)=0,  i=1,2,...,kci(x)0,  i=1,2,...,kai0,  i=1,2,...,khi(x)=0,,  i=1,2,...,k

5、SMO算法

5.1、问题描述及变种

  • SMO算法要解如下凸优化的对偶问题:

    minαs.t.12i=1nj=1Nαiαjyiyj(xixj)i=1Nαii=1Nαiyi=00αiC,i=1,2,...,N(2.2.14)(2.2.15)(2.2.16)

  • Ni=1αiyi=0α1,α2,αi(i=3,4,...,N)SMO

    minα1,α2  W(α1,α2)=12K11α21+12K22α22+y1y2K12α1α2(α1+α2)+y1α1i=3NyiαiKi1+y2α2i=3NyiαiKi2+constant(5.1.1)

s.t.α1y1+α2y2=i=3Nyiαi=ζ0αiC,i=1,2(5.1.2)(5.1.3)

其中, Kij=K(xi,xj),i,j=1,2,...,N,ζconstant

5.2、 α2

保证等式约束:

i=1Nαiyi=0

α1α2,
αnew1y1+αnew2=αold1y1+αold2y2=ζ(5.2.1)

  • αold1y1+αold2y2=ζy1y2,

这里写图片描述

线10线y1=1,y2=1
α2[ζ,C]  [αold2αold1,C]

线10线y1=1,y2=1
α2[0,Cζ]  [0,C+αold2αold1]

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

  • y1=y2
    L=max(0,αold2+αold1C),H=min(C,αold2+αold1)

5.3、 α2,α1


u=i=1Nαiyik(xi,x)b

根据公式5.1.1,最优化问题沿着约束方向未经剪辑时的解是:

αnew2=αold2+y2(E1E2)η

其中:
E1E2η===u1y1u2y2K11+K222K12

kktα2[L,H]
αnew2=H,αnew,unc2,Lαnew,unc2>HLαnew,unc2Hαnew,unc2<L

α1:
αnew1=αold1+yiy2(αold2αnew2)

α1α2α1,kktα2max|E1E2|b

b=b1b212(b1+b2)0<a1<C0<a2<Cothers

b1=bE1y1K11(αnew1αold1)y2K21(αnew2αold2)b2=bE2y1K12(αnew1αold1)y2K22(αnew2αold2)

参考

http://blog.csdn.net/zouxy09/article/details/17292011

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值