SVM一些问题及思考
2017-09-11 13:06
337 查看
给定训练集合
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变成第一种情况
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变成第一种情况
相关文章推荐
- Spring 代理对象,cglib,jdk的问题思考,AOP 配置注解拦截 的一些问题.为什么不要注解在接口,以及抽象方法.
- 2017年5月运维管理工作上的一些问题与思考
- 关于二分查找及其上下界问题的一些思考
- 对“人生八大问题”的一些思考
- 与cache相关的一些问题和思考
- 刷算法题学到的一些思考问题的方式(动态更新)
- 0302思考并回答一些问题
- 关于面向构件和EOS的一些思考-xml和元数据解决了接口脆弱性问题吗?
- 对操作系统开发相关的一些问题的思考
- 如何分析思考oralce的一些问题的一点感悟!
- 关于后台问题的一些思考
- 项目进度2: 已完成NFS搭建,以及对之前一些问题的思考
- 使用redis缓存数据需要注意的问题以及个人的一些思考和理解
- PHP保持SESSION问题以及由SESSION性能引发的一些思考
- 关于SVM的一些思考
- 0302思考并回答一些问题
- 0302思考并回答一些问题
- 从离职到求职中的一些所要思考问题
- 对动态规划问题的一些思考
- 对操作系统开发相关的一些问题的思考