1、支持向量机介绍
1.1 二分类问题延展
首先我们在去了解支持向量机的作用原理之前,我们应该先弄明白支持向量机是解决分类问题的。先前我们在Task1逻辑回归解决二分类问题中,我们在二维情况下,要找到一条线将不同类的样本划分开来。从图中不难看出,仅仅是将两种不同类样本划分开,可以有很多种选择。那究竟哪一种比较好?或者说我们应该如何找出最优的划分曲线。这就是支持向量机要做的东西。

1.2 间隔、支持向量、支持向量机模型
1.2.1 间隔与支持向量
在样本空间中,划分超平面可以用线性方程来表示:wTx+b=0。这个超平面完全由w(w=(w1;w2;w3;...;wd))和b来决定,其中w为超平面的法向量,b为位移项。
我们再考虑用逻辑回归进行分类时,我们将z>0时,令y=0;z>0时,令y=1。参考于此,我们同样方法得到下列式子{wTxi≥+1,yi=+1wTxi≤−1,yi=−1

根据上式,其中γ=∥w∥2(∥w∥是二阶范数,∥w∥=wTw)被称为间隔,而画红圈的样本是恰好使得上式的等号成立,它们就被成为支持向量。
关于间隔是如何求出来的,是要根据样本空间上的点到超平面的距离公式算出来的。距离公式是:r=∥w∥wTx+b,推导如下:

我们已经知道w是划分超平面的法向量,对于求点x到超平面wTx+b=0的距离,就是求xx0在w上的投影。
于是,有:
r=(x−x0)⋅∣∣w∣∣w
wTx0+b=0,代入上式
得:r=∥w∥wTx+b
同理,可推出间隔γ。
1.2.2 支持向量机模型
我们找到的超平面以γ最大为最优。也就是要找到满足{wTxi≥+1,yi=+1wTxi≤−1,yi=−1约束的参数w和b,使得γ最大,即
w,bmax∣∣w∣∣2
s.t. yi(wTxi+b)⩾1
为了后续推导方便,我们可以将这种规划问题换一种方式,很容易得出,求2∣∣w∣∣−1的最大值问题可以转化为求21∣∣w∣∣2的最小值问题,于是,得
w,bmin21∣∣w∣∣2
s.t. yi(wTxi+b)⩾1,i=1,2,...,m
这就是支持向量机(Support Vector Machine)SVM 的基本型。
2、支持向量机的对偶问题
2.1 对偶问题的推导
我们注意到SVM的基本型实际上式一个凸二次规划问题,可以通过现有的优化计算包进行求解。我们在这里却不这样计算,而是通过引入拉格朗日乘子转化为其对偶问题。我们引入拉格朗日乘子αi⩾0得到该问题的拉格朗日函数:
L(w,b,α)=21∣∣w∣∣2+∑i=1mαi(1−yi(wTxi+b))
其中α=(αi;αi;...;αm);
令L(w,b,α)分别对w和b的偏导为0,得
(1)w=∑i=1mαiyixi
(2)0=∑i=1mαiyi
将式(1)(2)代入L(w,b,α)
L(w,b,α)=21∣∣w∣∣2+∑i=1mαi(1−yi(wTxi+b))
=21wTw+∑i=1m(αi−αiyiwTxi−αiyib)
=∑i=1m21αiyiwTxi+∑i=1mαi−∑i=1mαiyiwTxi−∑i=1mαiyib
=−∑i=1m21αiyiwTxi+∑i=1mαi
=−∑i=1m∑j=1m21αiαjyiyjxjTxi+∑i=1mαi
考虑约束条件可得其对偶问题
αmax∑i=1mαi−21∑i=1m∑j=1mαiαjyiyjxiTxj
s.t.∑i=1mαiyi=0
αi⩾0,i=1,2,...,m
对偶问题的KKT条件
⎩⎪⎨⎪⎧αi⩾0yif(xi)−1⩾0αi(yif(xi)−1)=0
对偶问题详细推导及证明请点击这里
另外对于求解这个二次规划问题,比较高效的算法式SMO算法,具体见SMO算法
3、核函数
3.1 引入
上述的支持向量机解决的分类问题还都只是处理线性问题,但如果是像下图所示的情况我们的SVM就不能解决。那有什么办法呢?

我们可以设想把二维平面上的点映射到更高维的空间中去,比如说二维映射到三维,见下图,这样我们就能将非线性的分类问题转化为线性问题,进而可以用SVM去解决。

为此,我们引入ϕ(x)来表示x映射后的特征向量,于是SVM的基本型变为:
w,bmin21∣∣w∣∣2
s.t. yi(wTϕ(x)i+b)⩾1,i=1,2,...,m
其对偶问题是:
αmax∑i=1mαi−21∑i=1m∑j=1mαiαjyiyjϕ(xi)Tϕ(xj)
s.t.∑i=1mαiyi=0
αi⩾0,i=1,2,...,m
求解上面的问题,我们需要计算ϕ(xi)Tϕ(xj)但是我们并不知道特征空间的维数,这个特征空间的维数可能很高,计算内积可能不好计算。为了避开这个障碍,我们假设有一个函数:
κ(xi,xj)=ϕ(xi)Tϕ(xj)
这个函数就是核函数
3.2 核函数
首先介绍一个定理:令χ 为输入空间,κ(⋅,⋅)是定义在χ×χ上的对称函数,则κ是核函数当且仅当对于任意数据D={x1,x2,...,xm},“核矩阵”总是半正定的。
下图实际中常用的核函数。
