您的位置:首页 > 其它

从零开始学习SVM(二)---松弛变量

2018-01-02 17:24 253 查看
上一篇文章《从零开始学习SVM》中引出了想要进行分开两个样本需要的目标函数,但是是针对线性可分的。如下图所示,是存在一个超平面完完全全的分开两类样本。



但是如果是线性不可分呢?同样以猫狗数据为例,有的狗被主人打扮确实像猫,人都容易混合,像这种相似性比较高的数据,可能无法通过线性的方法完全分开



即无法用一个超平面把两类数据分开,属于一种混合的状态,就如下图一样



一方面来说,人的识别准确度都无法达到100%,更别说机器了,一般只要机器能达到一个可以容忍的准确度,能完成分类工作就可以了。允许少部分样本在两个边界线内,甚至超出边界线(上图中的红点)。与此同时在最大化间隔的同时,不满足约束的样本应该尽可能的少。

minw,b12||w||2s.t.yi(wTxi+b)⩾1,i=1,2,3…,m.

我们的优化目标可以写为:

minw,b12||w||2+C∑imζis.t.yi(wT+b)⩾1−ζiζi⩾0,i=1,2,3…,m

引入”松弛变量”的概念,显然每个样本都有其对应的”松弛变量”,表征了该样本不满足约束的程度—来自《机器学习》周志华。我的理解是样本离虚线边界距离的大小,越小则不满足约束程度越小,越大则不满足约束程度越大。同理我们通过拉格朗日乘子法可得到的拉格朗日函数为:

L(w,b,α,ζ,u)=12||w||2+C∑imζi+∑imαi(1−ζi−yi(wT+b))−∑imuiζi

对L(w,b,α,ζ,u)的w,b,ζ求偏导为零可以得到

w=∑imαiyixi0=∑imαiyiC=αi+ui

经过带入可以惊人的发现,”松弛变量”并没有在目标函数里面,感觉整个人都轻松了一把。跟之前的不带有”松弛变量”的目标函数的唯一区别是α的取值范围变化了

maxα∑i=1mαi−12∑i=1m∑j=1mαiαjyiyjxTixj

s.t.∑i=1mαiyi=0C⩾αi⩾0,i=1,2,…,m

KKT条件:

αi⩾0 yif(xi)−1+ζi⩾0αi(yif(xi)−1+ζi)=0ζi⩾0,uiζi=0

KKT条件基本上与不带有”松弛变量”的目标函数一致,求解方法也一样,最大的收获是我们有了得到一定准确度的分类器的方法,使得svm不仅仅应用到科研理论中,同样可以应用到生产,适用业界数据多样、噪声随机多样的情形,满足业界的需求。后面的学习我们将针对该目标函数进行优化,我们将继续对线性分类进行讨论,后面会继续推出非线性的分类解决方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  svm