SVM一些问题及思考

给定训练集合

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

划分超平面

wTx+b=0

点到直线距离
r=|wTx+b|||w||

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

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

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

从而就有下面的式子,当点为支持向量的时候等号成立;
SVM一些问题及思考_第1张图片

记为 γ=2||w||
SVM一些问题及思考_第2张图片

我们的优化目标就成了这样。
SVM一些问题及思考_第3张图片

然后怎么求解。

书上写的对偶问题。

为什么要用对偶问题?
在约束最优化问题中,常常利用拉格朗日对偶性将原始问题转换为对偶问题,通过解对偶问题而得到原始问题的解。(方便求解)
转而求解其对偶问题,是因为它的对偶问题有很好的形式(向量内积形式),可以为SVM很方便的引人核函数。(引入核函数)

接下来写成拉格朗日的形式
这里写图片描述
转换成对偶形式,然后求导,带入
SVM一些问题及思考_第4张图片
接下来用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变成第一种情况

你可能感兴趣的:(机器学习)