什么是支持向量机?
支持向量机,其英文名为support vector machine,一般简称SVM,通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。SVM有很多实现,但是本篇文章只关注其中最流行的一种实现,即序列最小优化(Sequential Minimal Optimization,SMO)算法。
线性可分
对于二维空间来说,我们可以找到一条线,将两个不同类别的样本划分开来,我们就说这个样本集是线性可分的,如下图所示。
分隔超平面,支持向量与SVM
下图中有一个二维平面,平面上有两种不同的数据,分别用圈和叉表示。由于这些数据是线性可分的,所以可以用一条直线将这两类数据分开,而这条直线就叫做一个"分隔超平面",当然如果给定一个三维空间那么分割数据点的就是一个平面,因此给定一个n维空间,则其则需要n-1维的某某对象来进行分割,那么该某某对象就被叫做”超平面“。
而由上图我们也许会想到这个直线不这么画行不行呢?歪一点貌似也可以将不同数据点分割到两边,事实确实如此,所以我们希望找到离分隔超平面最近的点,确保它离这个分隔超平面尽可能远,其中点到分隔超平面的距离就被称为"间隔",我们希望间隔尽可能大,这是因为如果我们犯错或者在有限数据集上训练分类器的话,我们希望分类器尽可能健壮。
而其中离超平面最近的那些点则被称作为"支持向量"。
理解SVM,咱们必须先弄清楚一个概念:线性分类器。
给定一些数据点,它们分别属于两个不同的类,现在要找到一个线性分类器把这些数据分成两类。如果用x表示数据点,用y表示类别(y可以取1或者-1,分别代表两个不同的类),一个线性分类器的学习目标便是要在n维的数据空间中找到一个超平面(hyper plane),这个超平面的方程可以表示为(w 是垂直于超平面的一个向量,定义为法向量,而中的T代表转置):
可能有读者对类别取1或-1有疑问,事实上,这个1或-1的分类标准起源于logistic回归。
我们尝试把logistic回归做个变形。首先,将使用的结果标签y = 0和y = 1替换为y = -1,y = 1,然后将(
)中的
替换为b,最后将
替换为