关于SVM的一点个人理解

来源:互联网 发布:java个人简历自我评价 编辑:程序博客网 时间:2024/04/29 23:49

网上关于SVM的资料很多,但是我还是想简单说下自己的理解,希望能为各位初学者做一个参考:

  1. 通俗的说,SVM的原理就是对于N维数据,寻找一个N-1维的超平面,将这N维数据区别开来。
  2. 关于这个超平面,有个学问,如何找到这个超平面呢?就是使得离超平面比较近的点(所谓的支持向量)之间的距离最大,这样的分类效果才好。
  3. 如何使得支持向量之间的距离最大化呢?经过一系列的推倒,得到一个二次规划问题(凸优化问题),关于凸优化问题的解法很多,比较成熟。如smo
  4. 在线性可分的情况下,有一些错误分类的点怎么办呢?引入惩罚函数即可
  5. 如果数据不是线性可分的呢,怎么办?将数据映射到高维(例如选择高斯核函数),这样就可以线性可分了,比如我要区分开两本书,光从书名与内容这两个“维度”上,他们完全相同,但是如果再加上购买日期、购买价格等其他维,这样就可以将两本书区分开了(世界上没有完全相同的两片树叶)
  6. 关于核函数的选择,一般都是尝试法,不过根据经验,核函数对于分类效果的好坏影响不是很大,反正重点好像是点选择惩罚系数C上。

总之,SVM是一个很完美的分类器,也是一个很难被打败的分类器,即使现在deep learning这么火,谢谢大家,就到这里了

0 0