04 支持向量机(SVM)
1、定义
支持向量机(Support Vector Machine,SVM)
支持(support)向量(vector)指的就是样本点机器(Machine)
支持向量机它是针对线性可分情况进行分析的,对于线性不可分的情况,它会将向量(样本)映射到一个更高维的空间里,在这个更高维空间里建立有一个最大间隔超平面,进行线性可分。
通俗来讲,它是一种二类分类模型,目的就是用一个分离器(超平面)最优的将空间中的样本点一分为二。
SVM 的主要思想可以概括为两点:
1、它是针对线性可分情况进行分析,对于线性不可分的情况,通过使用非线性映射算法将低维输入空间线性不可分的样本转化为高维特征空间,使其线性可分,从而使得高维特征空间采用线性算法对样本的非线性特征进行线性分析成为可能;
2、 它基于结构风险最小化理论之上在特征空间中建构最优分割超平面,使得学习器得到全局最优化,并且在整个样本空间的期望风险以某个概率满足一定上界。
支持向量与间隔
什么是间隔?
指的是一个 训练样本点 和 决策面 之间的间隔最小间隔 最大化
最小间隔是所有样本点到决策面之间最近的距离r(也就是离决策面最近的那个样本点到决策面的距离r)
最小间隔r越大,那么其泛化误差就越小,模型就越好
给定的训练样本集D={ ,
…
}
在上图中,我们想将样本分为两类。观察图可知。加粗的那根线是最理想的,因为这根线离所有样本点最远,实现了 最小间隔 最大化,对训练样本局部扰动的容忍性最好。既这根加粗的线就是最优分割线。
将二维平面拓展到3维空间
如果我们在一个3维立体空间中。想将这个立体空间中的样本一分为二,则需要用一个平面(超平面)。
例子(知乎上某位大神举得例子,觉得写的特别好)
故事是这样子的:
在很久以前的情人节,大侠要去救他的爱人,但魔鬼和他玩了一个游戏。
魔鬼在桌子上似乎有规律放了两种颜色的球,说:“你用一根棍分开它们?要求:尽量在放更多球之后,仍然适用。”
于是大侠这样放
然后魔鬼,又在桌上放了更多的球,似乎有一个球站错了阵营。
支持向量机(SVM)就是试图把棍放在最佳位置,好让在棍的两边有尽可能大的间隙。(最小间隔r最大化)
现在即使魔鬼放了更多的球,棍仍然是一个好的分界线。
然后,在SVM 工具箱中有另一个更加重要的诀窍。 魔鬼看到大侠已经学会了一个诀窍,于是魔鬼给了大侠一个新的挑战。
现在,大侠没有棍可以很好帮他分开两种球了,现在怎么办呢?当然像所有武侠片中一样大侠桌子一拍,球飞到空中。然后,凭借大侠的轻功,大侠抓起一张纸,插到了两种球的中间。
现在,从魔鬼的角度看这些球,这些球看起来像是被一条曲线分开了。
(把这些球叫做 「data」,把棍子 叫做 「classifier」, 最大间隙trick 叫做「optimization」, 拍桌子叫做「kernelling」, 那张纸叫做「hyperplane」。)
2、优缺点
优点
§ 可以解决高维问题,即大型特征空间;
§ 能够处理非线性特征的相互作用;
§ 无需依赖整个数据;
§ 可以提高泛化能力;
缺点
§ 当观测样本很多时,效率并不是很高;
§ 对非线性问题没有通用解决方案,有时候很难找到一个合适的核函数;
§ 对缺失数据敏感;
3、应用场景
适合于数据量比较小、有多个特征的数据的情况进行分类,支持向量机擅长在变量 X 与其它变量之间进行二元分类操作,无论其关系是否是线性的
§ 价格估算
§ 新闻分类
§ 手写识别
§ 垃圾邮件分类器
§ 入侵检测系统中的网络行为