支持向量机

背景介绍

面对海量的数据,人们通常会选择使用分类的手段对数据进行整理。比如,图书馆的书按照学科分类进行摆放;网络上的新闻按照分类展示给用户浏览。
如果我们将分类这项任务建立成数学模型,其要解决的问题就是把数据映射到特征空间,然后在特征空间中找到一个分离超平面,能将数据分到不同的类。

最简单的线性分类器是感知机,如果特征空间中的数据点可以被完全分开到两个类别中,那么我们可以在特征空间中找到很多分离超平面把数据点完全分开。那么在这么多分离超平面中,是否存在一个最好的分离超平面呢?我们认为最好的分离超平面是所有数据点距离分离超平面的距离和最大的那个分离超平面,我们称距离和最大为间隔最大,支持向量机就是定义在特征空间上的间隔最大的线性分类器。

在数据非线性可分的情况下,我们无论如何也找不到一个分离超平面将数据完全分开,此时我们可以退而求其次,寻找一个分类超平面尽可能地把数据分开,我们也称这为软间隔最大化。我们通过使得软间隔最大化找到的线性分类器叫做软间隔支持向量机。和软间隔支持向量机对应的,在数据线性可分的情况下,我们通过硬间隔最大化得到的线性分类器叫做硬间隔支持向量机。

实际情况中,我们事先并不清楚数据是否线性可分,所以通常使用的都是软间隔支持向量机。

支持向量机本身只支持二元分类,如果想要进行多元分类任务,需要使用one vs one 或者 one vs all 的策略实现。

支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划问题,也等价于正则化的Hinge loss函数的最小化问题。

应用场景

原理介绍

在特征空间中,分离超平面可用如下线性方程来描述:
$${ w }^{ T }x+b=0 \quad\quad\quad\quad\quad(1.1)$$
其中,\(w=({ w }_{ 1 };{ w }_{ 2 };…;{ w }_{ d })\) 为法向量,决定了超平面的方向,\(b\) 为位移项,决定了超平面与原点之间的距离。显然,分离超平面可被法向量 \(w\) 和位移 \(b\) 确定,我们将其记为 \((w,b)\)。样本空间中任意点\(x\)到超平面 \((w,b)\) 的距离可以写为
$$ r=\frac { |{ w }^{ T }x+b| }{ ||w|| } \quad\quad\quad\quad\quad(1.2) $$
假设数据是线性可分的,那么分离超平面 \((w,b)\) 能将样本数据完全正确分类,即对于 \(({ x }_{ i },{ y }_{ i })\in D\) ,若\({ y }_{ i }=+1\),则有 \({ w }^{ T }{ x }_{ i }+b>0\);若 \({ y }_{ i }=-1\),则有 \({ w }^{ T }{ x }_{ i }+b < 0\)。


$$\begin{cases} { w }^{ T }{ x }_{ i }+b\ge 1,\quad { y }_{ i }=+1; \\ { w }^{ T }{ x }_{ i }+b \le 1,\quad { y }_{ i }=-1; \end{cases} \quad\quad \quad \quad (1.3) $$

如上图所示,距离分离超平面最近的几个样本数据点会使得(1.3)的等号成立,它们被称为“支持向量”,两个不同类的支持向量到超平面的距离之和为:
$$r=\frac { 2 }{ ||w|| } \quad\quad\quad\quad\quad(1.4)$$
它被称为“间隔”。

要找到具有“最大间隔”的分离超平面,也就是要找到能满足式(1.3)中约束的参数\(w\)和\(b\),使得\(r\)最大,即
$$\max _{ w,b }{ \frac { 2 }{ ||w|| } } \quad s.t.\quad { y }_{ i }({ w }^{ T }{ x }_{ i }+b)\ge 1,i=1,2,…,m. \quad (1.5) $$
显然为了最大化间隔,仅需最大化\({ ||w|| }^{ -1 }\),这等价于最小化\({ ||w|| }^{ 2 }\)。于是(1.5)也可以写成
$$ \min _{ w,b }{ \frac { 1 }{ 2 } { ||w|| }^{ 2 } } \quad s.t.\quad { y }_{ i }({ w }^{ T }{ x }_{ i }+b)\ge 1,\quad i=1,2,…,m. (1.6)$$
以上就是支持向量机(Support Vector Machine)的基本型。

程序实现

算法总结