您的位置:首页 > 其它

SVM一些问题及思考

2017-09-11 13:06 267 查看
给定训练集合

D=(x1,y1),(x2,y2)……(xn,yn)

划分超平面

wTx+b=0

点到直线距离

r=|wTx+b|||w||

找到离分隔平面最近的点,称为支持向量,距离记为rm

rm=|wTxm+b|||w||

然后通过等比例改变w,能够使得|wTxm+b|=1

从而就有下面的式子,当点为支持向量的时候等号成立;



记为 γ=2||w||



我们的优化目标就成了这样。



然后怎么求解。

书上写的对偶问题。

为什么要用对偶问题?

在约束最优化问题中,常常利用拉格朗日对偶性将原始问题转换为对偶问题,通过解对偶问题而得到原始问题的解。(方便求解)

转而求解其对偶问题,是因为它的对偶问题有很好的形式(向量内积形式),可以为SVM很方便的引人核函数。(引入核函数)

接下来写成拉格朗日的形式



转换成对偶形式,然后求导,带入



接下来用SMO求解。

细节可以参考下面的博客,写得很细很好。SMO可以参考周志华老师的西瓜书。

http://www.cnblogs.com/dreamvibe/p/4349886.html

综上所述,对偶问题有两个优点,

一个是方便计算,可以在周老师的书中看到,SMO方法将计算复杂度降低到只与样本数量相关。

第二是可以引入核函数(高斯核,多项式核,线性核,拉普拉斯核,sigmoid核)。将线性分类器升级到非线性。注意,核函数不是SVM特有的,SVM只是对它的应用。

接下来一个问题 。

软间隔。往往有很多数据并不能被超平面完全分开,往往存在一定的噪音点。

那么我们就需要在原来的线性可分的目标函数加上额外的损失。

所以就用了hingle loss 作为损失。

为什么要选hingle loss 知乎上有条解释很有意思(作者:檀画)。

链接:https://www.zhihu.com/question/47746939/answer/154058298

1. 实现了软间隔分类(这个Loss函数都可以做到)

2. 保持了支持向量机解的稀疏性。换用其他的Loss函数的话,SVM就不再是SVM了。正是因为HingeLoss的零区域对应的正是非支持向量的普通样本,从而所有的普通样本都不参与最终超平面的决定,这才是支持向量机最大的优势所在,对训练样本数目的依赖大大减少,而且提高了训练效率。

什么时候选择LR,什么时候选择SVM

在Andrew NG的课里讲到过:

1. 如果Feature的数量很大,跟样本数量差不多,这时候选用LR或者是Linear Kernel的SVM

2. 如果Feature的数量比较小,样本数量一般,不算大也不算小,选用SVM+Gaussian Kernel

3. 如果Feature的数量比较小,而样本数量很多,需要手工添加一些feature变成第一种情况
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息