什么是SVM?
SVM(全称:Support Vector Machine)支持向量机,这只是它的名称,向量就是和我们以前学过的向量一样(下文有介绍),它可以有效解决分类问题(我们只讨论分类问题),何为分类呢?顾名思义,就是把你拥有的数据分成几类。
什么是向量?
向量,顾名思义就是有方向的纯量(标量),纯量呢就是只有大小,没有方向比如5,只有大小,是一个纯量。
比如有一辆车以每秒10 m/s 的速度超你行驶过来,和以每秒 10m/s 的速度远离你,这车辆的速度虽然一样,但是造成的结果却是大相径庭(撞到你或者远离你),但是如果给这个速度加一个方向,那么你就知道它是以10m/s的速度超哪个方向运动了,这就是向量,有方向的纯量。
支持向量机(SVM)
怎么分类
如下图:
绿圈和红圈是两类数据,这两条线是分类的基准,也就是分类边界,那么那条线比较好一些呢?
什么是好?也就是能分的平均,也就是尽量使两类数据对称,尽量使未来的数据也能正确的匹配,泛化力较好(就是使未来要分类的数据也能正确分类),所以那条分类线你应该在脑海里想想出来了吧。
我们要找到最好的一条线去分类这两类数据,那么哪条线是最好的分类线呢?
如下图有红色两条线,红色两条线是两类数据的边界,恰好能分类此数据,但是它的容错性比较低,但是如果我们取两条线中间的那条绿色的线作为分类线,那么对于此类数据,应该是最好的分类线了。
专业名称:
那条绿色的线我们叫做超平面(hiperplane)
为什么是超平面,不是超平线呢?因为这只是简单的二维数据,我们到三维,四维,甚至更高维度,所以就称之为超平面了。
支持向量:E,G,K这三个点,支持向量机,有支持向量的点,当然也有不支持的点,这个图只有E,G,K三个点是支持向量的。
间隔:两条红线直接的距离我们称之为间隔。
所以我们以下目标就是要找到那个hiperplane,这是一个数学问题,你要记住以下方法都是来寻找那个超平面的,只不过是利用数学技巧进行优化寻找罢了,目的还是寻找那个hiperplane。
先找二维平面(也就是上图点的分类 线)
利用如上分类点A,B,C,D,E,F,G,H,I,J,K
设训练样本集为T:
T = {(X→,Y),⋯}
X 为分类的向量
Y 为分类标记,也就是两个间隔的边界
我们人工手动给现有的数据进行标记,使得我们现有的数据可以分成两类,一类标记为+1,另一类为-1,我们称之为监督学习。
监督学习:
监督学习,就如同我们上面的例子一样,是给现有数据进行人工手动做分类标签,使程序一开始就知道要分类的标签。
非监督学习:
非监督学习,刚好和监督学习相反,就是不给数据做分类标签,让机器自动识别分类类型(不要觉得不可思议,只要我们数据得当,那么结合一定的数学模型,也是容易做到的)
所以得到一个约束方程
对偶问题
线性不可分
我们上面的数据是线性可以分离的,也就是一条线即可分开数据,但是如果遇到下面这种怎么办呢?
利用核函数
转换数据到高维度,如图
什么是核函数
简单理解就是通过数学手段,把当前数据维度转换到更高维度,如上图的过程
原文连接:http://deelmind.cn/2018/01/29/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0-SVM/#more