svm简单推导
支持向量机(support vector machine, svm)在小样本、非线性、高维模式识别问题中有很多优势,并且能够方便地扩展到函数拟合等其他机器学习问题中。
1. svm思想
- 将低维空间中线性不可分的数据通过kernel trick映射到高维空间中,使得数据变得线性可分,从而实现分类;
- 寻找一个分割平面,使得两类数据距离这个平面最近的点到这个平面的距离相等且最大,这个平面即为所求分离超平面。
2. svm简单推导(适用于面试时手推公式)
svm的详细原理介绍及推导可见参考3(写的真的好,深入浅出),此处仅为面试时手推公式用的简洁版推导。
图片来源于参考3
如上图所示有两类样本,其中圆形样本的标签为\(y=+1\),正方形样本的标签为\(y=-1\)。设所求超平面的方程为:
其中\(w,x\)均为向量,\(b\)是标量。在上图中所求超平面即为中间的直线\(H\)。我们定义某个样本点\(x_i\)到超平面的距离为:
其中\(y_i\)是样本点\(x_i\)的标签,是个标量。容易知道\(y_i(w^Tx_i+b)\)总是大于0的(应为若\(y_i=+1\),表明样本点\(x_i\)属于此类样本,则\(w^Tx_i+b>0\),同理,若\(y_i=-1\),则\(w^Tx_i+b<0\)),因此它的值就等于\(|g(x_i)|\)。我们对间隔\(\rho_i\)进行归一化,得到几何间隔\(\delta_i\):
在上图中,\(H\)是分类面,\(H_1\),\(H_2\)平行于\(H\),且过离\(H\)最近的两类样本。\(H_1\)到\(H\),\(H_2\)到\(H\)的距离即为几何间隔。我们的目标是最大化几何间隔,通常我们是固定间隔\(g(x)\),将其固定为1,然后寻找最小的\(||w||\)。于是我们将目标函数定义为:
为了后续计算方便,我们将目标函数改写为:
另外我们还要加入约束条件。前面说到我们把间隔\(|g(x)|\)固定为1,则对于其他样本点,他们都应该在间隔外面。因此有:
综上,我们的优化问题变为求解以下函数:
回顾一下,我们的目标是要求一个最优的超平面方程\(g(x)=w^Tx+b=0\),要求这个最优的超平面方程,就是要求出参数向量\(w\)(参数b在求出了参数\(w\)后只要带入几个支持向量样本即可求得,支持向量就是落在\(H_1\),\(H_2\)上的样本点)。其实向量\(w\)只与支持向量及其标签有关,因此\(w\)可以表示如下:
其中\(x_1,...,x_t\)是\(t\)个支持向量,\(\alpha_1,...,\alpha_t\)是系数,也叫做拉格朗日乘子,\(y_1,...,y_t\)是支持向量对应的标签。\(w\)也可以表示如下:
\(g(x)\)的表达式可以改为:
其中\(<\cdot>\)表示内积,\(k(\cdot)\)表示核函数。要求超平面方程,我们就是要求\(g(x)\),要求\(g(x)\),就是要求\(\alpha_i(i=1,...,t)\)。
因为有离群点(对于正样本,即为\(H_1\)左边的点,对于负样本,即为\(H_2\)右边的点)的存在,我们引入松弛变量\(\gamma\),则目标函数改为如下:
其中\(C\)为惩罚因子,\(C\)越大,表示对离群点越重视,表示你非常不愿意放弃这些离群点。非离群点对应的松弛变量为0。松弛变量越大,表示离群点偏离得越远。
3. 核方法的思想
核方法的主要思想是基于这样一个假设:低维空间中线性不可分的点集在高维空间就变得线性可分了,如下图所示:
图片来源于网络
那么怎么将低维空间的点映射到高维空间呢?通过核技巧可以巧妙地解决这个问题。
高维空间中向量的乘积只要通过低维空间中点的核函数就可以计算,这种方法成为核技巧(kernel trick)。即只要在低维空间中计算两个点的核函数,我们就相当于得到这两个点在高维空间的内积。公式表达如下:
其中\(k(\cdot)\)是核函数,\(x_1,x_2\)是低维空间中的两个点,\(\phi(x_1),\phi(x_2)\)是\(x_1,x_2\)在高维空间中的向量表示,\(<\phi(x_1),\phi(x_2)>\)表示的是高维向量\(\phi(x_1)\)和\(\phi(x_2\)的内积。
4. 常用的核函数
线性核:
多项式核:
径向基核函数(Radial Basis Function):
高斯核函数:
Reference: