SVM支持向量机

概述

SVM,全称support vector machine,是一个非常经典的二分类算法,在神经网络流行之前,在机器学习领域占据着举足轻重的地位。

名词解释

  • 决策边界:决策边界是SVM中用来划分不同分类的边界线,svm就是通过优化决策边界找到最优模型的。
  • 支持向量:是决策边界的基础,决策边界求解过程,就是找到离不同分类的点距离最远的边界,依赖的点称之为支持向量。
  • 普通向量:除支持向量之外的数据点,这些点与决策边界的计算无关。

基本原理

适合进行分类任务。如下图所示,要区分蓝绿颜色的点,可以在它们中间找到很多的边界线,这个线称为决策边界线。SVM的目的是从这么多的决策边界线中找到离各颜色的支持向量距离最大的决策边界。
SVM支持向量机
上图有两个决策边界,都可以对两个类别的数据进行划分,但是显然右边的那条是最合适的,因为它离两边元素的距离最远,通俗的讲就是“路宽的优先选择”。

线性 VS 非线性

线性可分

线性可分指的就是通过线性函数,就能把数据进行正确分类,表现就是二维空间的一条直线,多维空间的一个平面(多维空间下可能就不是平面了,叫超平面)。

非线性可分

现实世界中,大多数情况下线性函数都不能进行有效的分类,比如下图所示的数据,内容交杂在一起,通过一个线性函数是不能进行有效划分的。
SVM支持向量机
这种情况下,就要使用非线性的函数才能很好的分类,比如一条曲线:
SVM支持向量机
实现思路是把低纬度数据通过转换形成高纬度数据,然后计算出最优的决策边界。当然,升维后数据计算的效率急剧下降,所以实现的时候只是模拟,并不会真正的去升维。能达到这个效果的函数有:
SVM支持向量机

适合场景

参数

C

代表模型的准确度,C越大,准确度越高。但是这个值并不是越大越好,因为过拟合的模型,在训练集上的表现肯定是最好的,但是由于缺乏泛化能力,在测试集上的效果可能会很差。所以C取什么值合适,还要看测试效果。

gamma

模型的复杂度,数值越大,模型的复杂度越高。一般在模型精度一致的情况下,该值越小越好。该参数只适合与非线性模型。

示例

参考

SVM支持向量机入门及数学原理
支持向量机(SVM)从入门到放弃再到掌握
《统计学方法》李航著