SVM公式推导

时间有限,markdown编辑公式不熟悉,全当是自己理理svm的公式了
支持向量机
SVM出发点:
1 对于二维平面,给定平面上的任何一个直线:
y(x)=ωTϕ(x)+b 直线1 (1)

对于平面上的任何一点,与直线的关系为:要么在直线上,要么在直线外,在直线上就是 y(x)=0
对于不在直线上,代入直线要么 y(x)>0 ,要么 y(x)<0
svm:对于平面上要分类的两类点(A类和B类,直线之上的定义为A类,类别标签为1,直线之下的定义为B类,标签定义为-1,标签用t表示),对于上面的直线,有

tny(xn)>0
(2)
与直线1平行,且经过A类最近的点,有 y(x)0 ,我们归一化 ω,b 参数,使得 y(x)1
同理对于经过B类最近的点,有 y(x)0 ,我们归一化参数 ω,b ,使得 y(x)1
两边再乘以标签t,就得到一个统一的表达式:
tny(xn)10
(3)
(注意,虽然归一化到一个公式,但是实际上对应有两条直线,对应于A,B类离 y(x)=0 直线最近点所组成的平行于 y(x)=0 两条平行线)

SVM要做的就是,将平行线:

tn(ωTϕ(xn)+b)=1
(4)
之间的距离最大化,对于两条直线上的点,这些点到直线 y(x)=0 的距离:
|y(x)|ω
(5)
由上面可以知道对于直线 y(x) 乘以t以后,一定大于零,且不会带来值的缩放,那么就可以变成下面的式子:
tny(xn)ω=tn(ωTϕ(xn)+b)ω
(6)
由于(3),我们取边界点值的话就是=1,那么优化就变成了:
1|ωω+1|
,我们可以写的再简单一点,去掉1,取倒数,乘以1/2,不影响结果:
argminω,b12ω2
(7)
由于在简化优化等式的时候,加上的前提条件:
t(ωTϕ(xn)+b)1,n=1,...,N
(8)
所有的数据点都满足式子8,只有边界点上的值会使得等号成立,我们一般希望用一个cost函数来进行优化,因此希望在一个优化式子中加入上面的约束,(7)是最小化,那么我们希望下面的式子也最小化:
tn(ωTϕ(xn)+b)1
(9)
上面这个式子实际上大于等于0,因此越大越好,可以转化成求最大值,因此乘以负号,这样就可以用一个最小化代价函数来表示,一般我们会对约束(有时这个式子也叫正则项)加上一个系数,这个系数的作用代表了影响力(这个系数大于等于0),最后的式子就是:
L(ω,b,a)=12ω2n=1Nan{tn(ωTϕ(xn)+b)1}
(10)
要求这个式子的最值,对于连续函数,最值在导数为0 的点,因此分别对参数求导:
得到下面的等式:
ω=n=1Nantnϕ(xn)0=n=1Nantn
(11)

代入上面的式子,乘以负号,求该式子的最大值,就变成了上面等式的对偶问题,下面的最大化解即是上面的最小化解:

L\~(a)=n=1Nan12n=1Nm=1Nanamtntmk(xn,xm)
(12)
限制条件为:
an0,n=1,...,Nn=1Nantn=0
(13)
这是一个多元二次函数的寻优问题,存在唯一解,求出来的w值,是公式11中的形式,将w代入1式
后,对任意的输入x,输出的y值为:
y(x)=n=1Nantnk(x,xn)+b
(14)
同时,有一下三个性质成立:
an0tny(xn)10an{tny(xn)1}=0
(15)
对于每个数据点,都对应于一个:
an
(16)
要么:
an=0
(17)
要么:
tny(xn)=1
(18)
。任何使得17成立的数据点都不会出现在14求和式子中,因此对新数据的预测没有作用。剩下的数据点被称为支持向量,由这些向量,及向量系数支撑了分类器的边界。由于这些支持向量满足18,因此他们对应于特征空间中位于最大边缘超平面内的点。这个性质是支持向量机在实际应用中的核心。一旦模型被训练完毕,相当多的数据点都可以被抛弃,只有支持向量被保存下来。
现在还有阈值参数b没确定,由公式14和18我们可以得到:
tn(mSamtmk(xn,xm)+b)=1
(19)
m表示支持向量的集合,n表示我们任取的一个支持向量,虽然任取一个支持向量可以求到b,但是使用整个支持向量的集合求解b取均值更稳健,tn的平方为1,两边乘以tn,整理后:
b=1NSnS(tnmS(amtmk(xn,xm)))
(20)
这样求得a,b参数后,就可以对任意输入向量进行判别了

数据重合
不一定所有的数据都是线性可分的,对于非线性可分,有以下两种处理方式:
1 将数据投影到高维空间中,典型的二维数据不可分数据投影到三维中就有可能线性可分
2 添加松弛变量
实际使用时,更多的是上面二者的结合,即同时进行投影和添加松弛变量,理想的情况下,所有的数据点满足公式8:

t(ωTϕ(xn)+b)1,n=1,...,N
(8)
但在这里,我们为每一个数据添加一个松弛变量,使得8式子变成:
tny(xn)1ξn,n=1,...,N
(21)
这个松弛变量的意义就在于,当有些数据点不满足8式子时,即有可能小于1,甚至小于0时,我们通过调节对应数据的松弛变量,就可以使得8式子成立。这个松弛变量被限定为大于等于0,等于0的点是在边界或者边界内部的点,是正确分类的点,在0和1之间的是边界面到中间面之间的数据,也是属于分类正确的点,当大于1 的时候,就是属于分类错误的点:
这里写图片描述图1
通过这种方式,允许一些数据点被错分,得到一个softmargin,虽然能够解决上面的无法求解的问题,但是会也会带来另一个问题,对异常点很敏感,因为误分类的惩罚随着松弛变量而线性增加。参考上面的最小化,我们这里的最小化变成:
Cn=1Nξn+12ω2
(22)
参数C控制了松弛变量惩罚与边缘之间的折中,由于任何误分类的数据点松弛变量都大于1,那么
nξn
(23)
是误分类数据点 数量的上界,C就类似于正则化系数,控制了 最小训练误差模型复杂度之间的折中。当C趋于无穷大时,就变成了上面的线性可分的支持向量机,即 C越大,错分点越少,为什么?因为在具有 导向作用的loss函数中,C越大,整个loss中C对应的那个松弛变量累加和 所占比例越大,loss函数越关注C对应那个松弛变量,即整个求解函数中, 会重点,优化关注这个正则项,但是太大,也会带来一个问题,就是 过拟合,所以,C的选择要适中。
对应于10式子:
L(ω,b,a)=12ω2n=1Nan{tn(ωTϕ(xn)+b)1}

(10)
就变成
L(ω,b,ξ,a,u)=12ω2+Cn=1Nξnn=1Nan{tny(xn)1+ξn}n=1Nunξn

(24)
a和u是系数,也叫拉格朗日乘数,都大于等于0.对应的KKT条件:
an0tny(xn)1+ξn0a(tny(xn)1+ξn)=0un0,ξn0,unξn=0

(25)
同上面一样,我们对24式子对每个参数分别求偏导数:
Lω=0ω=n=1Nantnϕ(xn)
(26)
Lb=0n=1Nantn=0Lξn=0an=Cun
(27)
使用这些结果代入24式,可以得到:
L\~(a)=n=1Nan12n=1Nm=1Nanamtntmk(xn,xm)
(28)

可以看到与线性可分的情况完全一样,唯一的区别,就是限制条件不一样,由于拉格朗日乘子大于0,即a,u大于0,那么由27中a = C -u:可知:

0anCn=1Nantn=0
(29)
由于非支持向量的系数an为0,支持向量的an大于0,对于前面的KKT条件第三个式子可知,对于支持向量,必有:
tny(xn)=1ξn
(30)
如果a小于c,那么u大于0,由式子25最下面一个可以得到松弛变量必须为0,因此,对于满足
0<an<C
(31)
的支持向量有:
t(mSamtmk(xn,xm)+b)=1
(32)
对于满足31添加的支持向量可以求b:
b=1NMnM(tnmSamtmk(xn,xm))
(33)
M表示满足31条件的数据集合

上面用到了参数C,对应的SVM叫C-SVM,还有还有另外对应的v-SVM,将C替换为v,然后修改式子28和对应的限制条件:

L\~(a)=12n=1Nm=1Nanamtntmk(xn,xm)
(34)
限制:
0an1Nn=1Nantn=0n=1Nanv
(35)
这种方法的优点是,v替代C,即可以被看成margin error的上界,也可以看作支持向量数量的下界。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值