ML笔记:分类算法之SVM

原文链接: http://www.voidcn.com/article/p-rxonljlu-yu.html

注:本文几乎所有东西都不是原创,但鉴于来源复杂不易查明、仅作为个人笔记查询,故不再一一插入链接。如有侵权,立删。

1. SVM是什么?

Support Vector Machine。一个普通的SVM就是一条直线,用来完美划分linearly separable的2类,即2分类。
但这有不是一条普通的直线,这是无数条可以分类的直线当中最完美的,因为它乔海在2个类的中间,距离2个类的点都一样远。
而所谓的Support Vector就是距离分界线最近的(如下图有填充色的苹果和香蕉)。如果去到这些点,直线多半是要改变位置的,可以说这些vectors(点)Support(定义)了Machine(分类器/模型)。
所以说,只要找到了这些最靠近的点,就找到SVM了。

如果是高维的点,SVM的分界就从线变成了平面或者超平面。其实本至上都是一刀切两块,姑且彤彤叫做直线了。

2. SVM的优缺点
  • 优点:
  1. 可以解决小样本情况下的ML问题
  2. 可以解决高维度问题,可以避免神经网络结构选择和局部极小点问题
  3. 可用于线性&非线性分类,泛化错误率低、计算开销不大、结果容易解释
  4. SVM是最好的现成的分类器,现成是指不加修改即可直接使用、并且能够得到较低的错误率,SVM可以对训练集之外的数据点做很好的分类决策
  • 缺点:
  1. 对参数调节和核函数的选择敏感,对缺失值敏感;
  2. SVM算法对大规模训练样本难以实施。由于SVM是借助二次规划来求解支持向量,所涉及到的m阶矩阵的计算(m为样本的个数)在m很大时,会耗费大连的机器内存和运算时间。(吐槽:这不就跟优点“计算开销不大”冲突了?)
  3. 用SVM解决多分类问题存在困难,经典的SVM算法只给出了2分类的算法,而在数据挖掘的实际应用中,一般要解决多分类的分类问题。当然,可以通过多个2分类SVM的组合来解决。
  4. 是一个凸优化问题,所以求得的解一定是全局最优而不是局部最优
3. SVM的原理

一种说法是:SVM是建立在统计学习理论的VC维理论和结构风险最小原理基础上的,根据有限的信息在模型的复杂性(即对特定训练样本的学习的Accruracy,参见混淆矩阵)和学习能力(即无错误的识别任意样本的能力)之间寻求最佳折中,一起获得最好的泛化能力/推广能力。

所谓VC维:

  • 是对函数的一种度量,可以简单的理解为问题的复杂程度,VC维越高,问题就越复杂。
    正是因为SVM关注的是VC为,我们深入了解后能看到,SVM解决问题的时候,和样本的维度是无关的(甚至样本是上万维的都可以,这使得SVM很适合用来解决文本分类的问题,当然,有这样的能力也因为引入了核函数
  • 将N个点进行分类,如分成2类,那么有2^N 种方法,即可以理解为2N个学习问题。若存在一个假设H,能准确无误地把2N种问题分类,那么这些点的数量N,就是H的VC维(如3个点在平面上,其线性划分的VC维是3而不大于3,因为只有3个样本点)。
4. SVM的主要应用场景&研究热点
  1. 主要应用于分类问题中的模式识别领域的文本识别、中文分类、人脸识别等;同时也应用到信息过滤等方面
  2. 当前的研究热点主要是对SVM中算法的优化:
    2.1 包括解决SVM中二次规划求解问题、对大规模SVM的求解问题、对SVM中QP问题的求解等
    2.2 另外就是如何更好地构造基于SVM的多分类器、如何提高SVM的归纳能力和分类速度等;
    2.3 如何根据实际问题确定核函数也是一个重要的热点(核函数即是线性不可分的转化为高维线性可分的问题,再进行线性分类);

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