SVM推导

image

如图,对于一个可分并且没有异常数据的二分问题,通过原始的感知机算法能够得到正确分类。如果靠近直线的蓝点再往上移动一点,就回被错误预测,算法的泛化能力并不好。支持向量机是一种讲样本与分界面之间间隔最大化的算法,所以用SVM可以或者更好的划分。

Hard Margin SVM(硬间隔支持向量机)

为了方便我们使y={1    if 正确分类1 if 错误分类,这时,我们要求的为如下公式

{argmaxw,bminx|wTx+b|ws.t.      (wTx+b)>0

即在正确分类的情况下使到分界线的距离最小的点最大化。
前文中y{1,1},所以可以写作

{argmaxw,bminxy(wTx+b)ws.t.      (wTx+b)>0

首先将由于多个(w,b)对应一个分界面,为了使最小值最大化分界面到两边最近的点距离一样,我们就可以通过缩放得出minx|wTx+b|=1。即:

argmaxw,bminxy(wTx+b)w=argmaxw,bminxy(wTx+b)w=argmaxw,b1w=argminw,bw=argminw,b12wTw

两边最小值一定存在且一定是±1,所以可以写作

{argminw,b12wTw               s.t.  1yi(wTxi+b)0

通过拉格朗日乘子法,我们可以去掉对(w,b)的约束。设L(w,b,λ)=12wTw+i=0nλ(1yi(wTxi+b)),可得

{minw,bmaxλL(w,b,λ)s.t.  λi0                   

由于强对偶,得

{maxλminw,bL(w,b,λ)s.t.  λi0                   

分别对w、b求导并令偏导为零

Lw=wi=1nλixiyi=0Lb=i=1nλiyi=0

得:

w=i=1nλixiyii=1nλiyi=0

将条件带入,得:

L(w,b,λ)=12i=1nj=1nλiλjyiyj(xixj)+i=1nλii=1nλiyi(j=1nλjyj(xixj)+b)=12i=1nj=1nλiλjyiyj(xixj)+i=1nλii=1nj=1nλiλjyiyj(xixj)i=1nλiyib=j=1nλi12i=1nj=1nλiλjyiyj(xixj)

{maxλj=1nλi12i=1nj=1nλiλjyiyj(xixj)s.t.  λi0i=1nλiyi=0

又由于KKT条件,可得

wL=0b=0g(x)0λ0λg(x)=0

λ0时,(1yi(wTxi+b))=0
最终得

w=i=1nλixiyib=sSyswTxs=sSys(i=1nλixiyi)xs

其中λi未知可以通过SMO算法求出
这是可以通过y=sign(wTx+b)
这便是Hard Margin SVM(硬间隔支持向量机)。Hard Margin SVM是一个硬分类算法,所以对于存在异常数据和不可分的问题,效果不好,如果我们允许少量的样本跨过分界会有更好的效果,即Soft Margin SVM(软间隔支持向量机)。

Soft Margin SVM(软间隔支持向量机)

如何量化那条线更好呢?我们可以用过一个损失函数,最简单的就是穿过分界线的个数J=countsSS(s)  (S={(x,y)|y(WTx+b)<1}),但此函数不连续。另一种连续的函数跨过分界线距离之和J=sS1ys(WTxs+b)  (S={(x,y)|y(WTx+b)<1})

每个样本的损失为loss=max(0,1ys(WTxs+b)),这时,我们得到了hinge loss(铰链损失)loss=max(0,1z)

image
这时候我们就可以通过,将原来改写成下列公式。

{argminw,b12wTw+Ci=1nmax(0,1ys(WTxs+b))s.t.  1yi(wTxi+b)0

通常情况下引入变量ξ,来简写这个式子

{argminw,b12wTw+Ci=1nξis.t.  yi(wTxi+b)1ξiξi0

通过这两个式子限制损失项最小值为0。如何实现的呢?
通过这种方式求最小值,使得ξ不能太大,也就是满足下面两个条件的最小值,如果yi(wTxi+b)1,正确分类,这时候损失应为0,ξ最小值为0,否则迫使等号成立,即ξi=1yi(wTxi+b)。经过化简即可求出(w,b)。

posted @   孑然520  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示