支持向量机(support vector machine)是一个非常强大并且有多种功能的机器学习模型,能够处理线性或非线性分类问题、回归问题,同时还可以做异常值的检测。SVM特别适合应用于复杂但中小规模数据集的分类问题。
支持向量机按照是否线性可分,可分为线性可分支持向量机(硬间隔分类和软间隔分类),线性不可分支持向量机。本篇我们将对线性支持向量机原理进行探讨。
1)线性分类器到线性支持向量机
对于线性可分的数据集 D = { ( x i , y i ) } i = 1 n D=\left\{ (x^i,y^i) \right\}^n_{i=1} D={
(xi,yi)}i=1n, x i ∈ R d x^i\in R^d xi∈Rd, y i ∈ { − 1 , 1 } y^i\in\left\{ -1,1\right\} yi∈{
−1,1},对于任意一个 x i x^i xi,满足
{ w T x i + b ≥ 0 时 y i ^ = 1 w T x i + b < 0 时 y i ^ = − 1 \qquad \ \qquad \qquad \qquad \qquad \begin{cases} w^Tx^i+b≥0 时\qquad\hat{y^i}=1 \\ w^Tx^i+b<0 时\qquad\hat{y^i}=-1 \\ \end{cases} {
wTxi+b≥0时yi^=1wTxi+b<0时yi^=−1
我们可以看出,其决策边界为 w T x + b = 0 w^Tx+b=0 wTx+b=0,对于这样的线性可分的数据,我们总可以找到无数条线将其分开,但是哪一条决策边界既能将所有的数据准确的分开,同时在新的数据上也能表现不错呢?
下图是鸢尾花的部分数据,这两个种类能够被非常清晰,非常容易的用一条直线分开(即线性可分)。左图显示了三种可能的线性分类器的判定边界,其中虚线表示的线性模型判定边界很差,甚至不能正确的划分类别,另外两个线性模型在这个数据集表现很好,但是它们的判定边界离样本点很近,在新的数据上可能不会表现很好。相反,右边的SVM判定边界实线既能够很开两个类,而且还能够尽可能的远离了最近的样本点。你可以认为SVM分类器让两个类之间保持尽可能宽的”街道“(图中的两个平行的虚线),尽可能宽的”街道“就叫做最大间隔距离。
当我们增加远离虚线外的样本,这并不会影响决策边界,因为决策边界是由“街道”(平行的虚线)边缘的样本决定的,这些决定决策边界的样本称为支持向量(support vector),如上图中的虚线上的两个被圆圈圈出来的点。
2)硬间隔分类的目标函数
对于线性可分数据集 D = { ( x i , y i ) } i = 1 n D=\left\{ (x_i,y_i) \right\}^n_{i=1} D={
(xi,yi)}i=1n, x i ∈ R d x_i\in R^d xi∈Rd, y i ∈ { − 1 , 1 } y_i\in\left\{ -1,1\right\} yi∈{
−1,1},决策边界为 w T X + b = 0 w^TX+b=0 wTX+b=0,支持向量为
{ w T x i + b = 1 w T x i + b = − 1 \ \qquad \ \qquad \qquad \qquad \qquad\begin{cases} w^Tx^i+b=1 \\ w^Tx^i+b=-1\\ \end{cases} {
wTxi+b=1wTxi+b=−1
下面我们来推导SVM的目标函数。我们先在决策边界上取两个点 x 1 , x 2 x^1,x^2 x1,x2, x 1 , x 2 x^1,x^2 x1,x2满足:
w T x 1 + b = 0 \qquad \ \qquad \qquad \qquad \qquad w^Tx^1+b=0 wTx1+b=0
w T x 2 + b = 0 \qquad \ \qquad \qquad \qquad \qquad w^Tx^2+b=0 wTx2+b=0
将两式相减,得: w T ( x 1 − x 2 ) = 0 w^T(x^1-x^2)=0 wT(x1−x2)=0,因此