SVM Soft/Hard/核 原理整理

  • SVM简介
    SVM是定义在特征空间上的间隔最大的线性分类器(可以使用核函数来实现非线性分类),本质上是求解凸二次规划的最优化算法

  • SVM的特点
    1.训练好的模型的算法复杂度是由支持向量的个数决定的,而不是由数据的维度决定的。所以 SVM 不太容易产生 overfitting
    2.SVM 训练出来的模型完全依赖于支持向量,即使训练集里面所有非支持向量的点都被去除,重复训练过程,结果仍然会得到完全一样的模型
    3.一个 SVM 如果训练得出的支持向量个数比较少,那么SVM 训练出的模型比较容易被泛化
    上面三点引用自这个博客

  • 形象图解
    SVM Soft/Hard/核 原理整理
    上图引用自这篇博客
    1.图中的那条实线就是分类线,在如果数据是高维的,那通过直线来分类是不行的,应该是用一个面(曲面,平面)来分,那这个面被成为是超平面
    2.这条线的方程为:wx+b=0w\cdot x+b=0,与它平行的两条虚线就是最大间隔分界线
    3.定义所有数据为:D={(x1,y1),(x2,y2),...,(xN,yN)}D=\left\{ \left( \boldsymbol{x}_1,y_1 \right) ,\left( \boldsymbol{x}_2,y_2 \right) ,...,\left( \boldsymbol{x}_N,y_N \right) \right\}(注意一下x\boldsymbol{x}向量哦),一共有NN个数据点,其中,xiRnx_i\in \mathbb{R}^nyi{+1,1},i=1,2,...Ny_i\in \left\{ +1,-1 \right\} ,i=1,2,...N,对于二分类问题,SVM所要定义的类别标签是1(正例)和-1(反例)
    4.我们假设数据DD是线性可分的,然后定义线性分类线为wx+b=0w\cdot x+b=0,那么每个样本点(xi,yi)\left( \boldsymbol{x}_i,y_i \right)到分类线的距离为:
    γi=yi(wwxi+bw)\gamma _i=y_i\left( \frac{\boldsymbol{w}}{\lVert \boldsymbol{w} \rVert}\cdot \boldsymbol{x}_{\boldsymbol{i}}+\frac{b}{\lVert \boldsymbol{w} \rVert} \right)
    为什么是这个公式呢?看看初中知识吧:
    SVM Soft/Hard/核 原理整理
    那为什么会在前面乘上一个yiy_i呢?看看上面的dd是绝对值的,也就是说γi\gamma _i是利用了分类标签为+1-1,去掉了绝对值号
    5.然后,计算一下所有样本点到分类线的距离最小值:
    γ=mini=1,2...,Nγi\gamma =\underset{i=1,2...,N}{\min}\gamma _i
    这个距离γ\gamma就是支持向量到分类线的距离
    6.到这里,我们可以把SVM看成是求解带有约束项的优化问题:
    maxw,b γ\underset{\boldsymbol{w,}b}{\max}\ \gamma
    s.t.   yi(wwxi+bw)γ ,i=1,2,...,Ns.t.\ \ \ y_i\left( \frac{\boldsymbol{w}}{\lVert \boldsymbol{w} \rVert}\cdot \boldsymbol{x}_{\boldsymbol{i}}+\frac{b}{\lVert \boldsymbol{w} \rVert} \right) \ge \gamma \ ,i=1,2,...,N
    化简一下上面的约束条件为:
    yi(wwγxi+bwγ)1y_i\left( \frac{\boldsymbol{w}}{\lVert \boldsymbol{w} \rVert \gamma}\cdot \boldsymbol{x}_{\boldsymbol{i}}+\frac{b}{\lVert \boldsymbol{w} \rVert \gamma} \right) \ge 1
    其中,wγ\lVert \boldsymbol{w} \rVert \text{,}\gamma均为标量,所以可以令:
    w=wwγ\boldsymbol{w}=\frac{\boldsymbol{w}}{\lVert \boldsymbol{w} \rVert \gamma}
    b=bwγb=\frac{b}{\lVert \boldsymbol{w} \rVert \gamma}
    因此上述约束可以化简为:
    yi(wxi+b)1, i=1,2,...,Ny_i\left( \boldsymbol{w}\cdot \boldsymbol{x}_{\boldsymbol{i}}+b \right) \ge 1,\ i=1,2,...,N
    又因为最优问题为最大化γ\gamma,所以等价于最大化1w\frac{1}{\lVert \boldsymbol{w} \rVert},也就等价于最小化 12w2\frac{1}{2}\lVert \boldsymbol{w} \rVert ^2
    7.那么优化目标又可以简化为:
    minw,b 12w2\underset{\boldsymbol{w,}b}{\min}\ \frac{1}{2}\lVert \boldsymbol{w} \rVert ^2
    s.t.  yi(wxi+b)1, i=1,2,...,Ns.t.\ \ y_i\left( \boldsymbol{w}\cdot \boldsymbol{x}_{\boldsymbol{i}}+b \right) \ge 1,\ i=1,2,...,N
    这是一个含有不等式约束的凸二次规划问题,可以对其使用拉格朗日乘子法得到其对偶问题(这个高数学过),由于约束条件有NN个,所以下面要减掉NN个不等式条件
    L(w,b,α)=12w2i=1Nαi(yi(wxi+b)1)L\left( \boldsymbol{w,}b,\boldsymbol{\alpha } \right) =\frac{1}{2}\lVert \boldsymbol{w} \rVert ^2-\sum_{i=1}^N{\alpha _i\left( y_i\left( \boldsymbol{w}\cdot \boldsymbol{x}_{\boldsymbol{i}}+b \right) -1 \right)}
    其中, αi0\alpha _i\ge 0为拉格朗日乘子,然后令θ(w)=maxαi0 L(w,b,α)\theta \left( \boldsymbol{w} \right) =\underset{\alpha _{_i}\ge 0}{\max}\ L\left( \boldsymbol{w,}b,\boldsymbol{\alpha } \right)
    具体可以展开成:
    θ(w)={12w2 ,x可行区域+     ,x不可行区域\theta \left( \boldsymbol{w} \right) =\begin{cases} \frac{1}{2}\lVert \boldsymbol{w} \rVert ^2\ ,\boldsymbol{x}\in \text{可行区域}\\ +\infty \ \ \ \ \ ,\boldsymbol{x}\in \text{不可行区域}\\ \end{cases}
    8.因此优化问题转换为:
    minw,b θ(w)=minw,bmaxαi0 L(w,b,α)=p\underset{\boldsymbol{w,}b}{\min}\ \theta \left( \boldsymbol{w} \right) =\underset{\boldsymbol{w,}b}{\min}\underset{\alpha _i\ge 0}{\max}\ L\left( \boldsymbol{w,}b,\boldsymbol{\alpha } \right) =p^*
    利用对偶特性,转换为
    maxαi0minw,b L(w,b,α)=d\underset{\alpha _i\ge 0}{\max}\underset{\boldsymbol{w,}b}{\min}\ L\left( \boldsymbol{w,}b,\boldsymbol{\alpha } \right) =d^*
    如果要让p=dp^*=d^*,需要满足一下条件:
    ① 优化问题是凸优化问题(满足,因为12w2\frac{1}{2}\lVert \boldsymbol{w} \rVert ^2)
    ② 满足KKT(Karush-Kuhn-Tucker)条件,需要满足一下三个条件:
    αi0yi(wixi+b)10αi(yi(wixi+b)1)=0\alpha _i\ge 0\\ y_i\left( \boldsymbol{w}_{\boldsymbol{i}}\cdot \boldsymbol{x}_{\boldsymbol{i}}+b \right) -1\ge 0\\ \alpha _i\left( y_i\left( \boldsymbol{w}_{\boldsymbol{i}}\cdot \boldsymbol{x}_{\boldsymbol{i}}+b \right) -1 \right) =0
    8.为了得到求解对偶问题的具体形式,令 对和 的偏导为0,这样就可以去求解最优的ww了,可得:
    w=i=1Nαiyixi\boldsymbol{w}=\sum_{i=1}^N{\alpha _iy_i\boldsymbol{x}_{\boldsymbol{i}}}
    i=1Nαiyi=0\sum_{i=1}^N{\alpha _iy_i}=0
    可以明显看出,只要求出了最优的αi\alpha _i就可以找到最优的w\boldsymbol{w}
    代入到拉格朗日等式L(w,b,α)=12w2i=1Nαi(yi(wxi+b)1)L\left( \boldsymbol{w,}b,\boldsymbol{\alpha } \right) =\frac{1}{2}\lVert \boldsymbol{w} \rVert ^2-\sum_{i=1}^N{\alpha _i\left( y_i\left( \boldsymbol{w}\cdot \boldsymbol{x}_{\boldsymbol{i}}+b \right) -1 \right)}中,消去wwbb,得到:
    L(w,b,α)=12i=1Nj=1Nαiαjyiyj(xixj)i=1Nαiyi((j=1Nαjyjxj)xi+b)+i=1NαiL\left( \boldsymbol{w,}b,\boldsymbol{\alpha } \right) =\frac{1}{2}\sum_{i=1}^N{\sum_{j=1}^N{\alpha _i\alpha _jy_iy_j\left( \boldsymbol{x}_{\boldsymbol{i}}\cdot \boldsymbol{x}_{\boldsymbol{j}} \right)}}-\sum_{i=1}^N{\alpha _iy_i\left( \left( \sum_{j=1}^N{\alpha _jy_j\boldsymbol{x}_{\boldsymbol{j}}} \right) \cdot \boldsymbol{x}_{\boldsymbol{i}}+b \right) +}\sum_{i=1}^N{\alpha _i}
               =12i=1Nj=1Nαiαjyiyj(xixj)+i=1Nαi\ \ \ \ \ \ \ \ \ \ \ =-\frac{1}{2}\sum_{i=1}^N{\sum_{j=1}^N{\alpha _i\alpha _jy_iy_j\left( \boldsymbol{x}_{\boldsymbol{i}}\cdot \boldsymbol{x}_{\boldsymbol{j}} \right)}}+\sum_{i=1}^N{\alpha _i}
    也就是:
    minw,b L(w,b,α)=12i=1Nj=1Nαiαjyiyj(xixj)+i=1Nαi\underset{\boldsymbol{w,}b}{\min}\ L\left( \boldsymbol{w,}b,\boldsymbol{\alpha } \right) =-\frac{1}{2}\sum_{i=1}^N{\sum_{j=1}^N{\alpha _i\alpha _jy_iy_j\left( \boldsymbol{x}_{\boldsymbol{i}}\cdot \boldsymbol{x}_{\boldsymbol{j}} \right)}}+\sum_{i=1}^N{\alpha _i}
    因此,优化问题变为:
    maxα 12i=1Nj=1Nαiαjyiyj(xixj)+i=1Nαi\underset{\boldsymbol{\alpha }}{\max}\ -\frac{1}{2}\sum_{i=1}^N{\sum_{j=1}^N{\alpha _i\alpha _jy_iy_j\left( \boldsymbol{x}_{\boldsymbol{i}}\cdot \boldsymbol{x}_{\boldsymbol{j}} \right)}}+\sum_{i=1}^N{\alpha _i}
    s.t.    i=1Nαiyi=0s.t.\ \ \ \ \sum_{i=1}^N{\alpha _iy_i}=0
           αi0, i=1,2,...,N\ \ \ \ \ \ \ \alpha _i\ge 0,\ i=1,2,...,N
    等效为:
    minα 12i=1Nj=1Nαiαjyiyj(xixj)i=1Nαi\underset{\boldsymbol{\alpha }}{\min}\ \frac{1}{2}\sum_{i=1}^N{\sum_{j=1}^N{\alpha _i\alpha _jy_iy_j\left( \boldsymbol{x}_{\boldsymbol{i}}\cdot \boldsymbol{x}_{\boldsymbol{j}} \right)}}-\sum_{i=1}^N{\alpha _i}
    9.在 α\boldsymbol{\alpha }^*中,至少存在一个 αj>0\alpha _{j}^{*}>0(反证法可以证明,若全为0,则w=0\boldsymbol{w}=0,矛盾,因为无法构造出分类线了),对此jj有:
    yj(wxj+b)1=0y_j\left( \boldsymbol{w}^*\cdot \boldsymbol{x}_{\boldsymbol{j}}+b^* \right) -1=0
    于是可以得到:
    w=i=1Nαiyixi\boldsymbol{w}^*=\sum_{i=1}^N{\alpha _{i}^{*}y_i\boldsymbol{x}_i}
    b=yji=1Nαiyi(xixj)b^*=y_j-\sum_{i=1}^N{\alpha _{i}^{*}y_i\left( \boldsymbol{x}_{\boldsymbol{i}}\cdot \boldsymbol{x}_{\boldsymbol{j}} \right)}
    10.到此,SVM的数学推导就完成了,总结一下,对于任意(xi,yi)\left( \boldsymbol{x}_{\boldsymbol{i}},y_i \right) ,总有αi=0\alpha _i=0或者yj(wxj+b)=1y_{j}\left(\boldsymbol{w} \cdot \boldsymbol{x}_{j}+b\right)=1。若αi=0\alpha _i=0,则该样本不会在最后求解模型参数的式子中出现。若 αi>0\alpha _i>0,则必有yj(wxj+b)=1y_j\left( \boldsymbol{w}\cdot \boldsymbol{x}_{\boldsymbol{j}}+b \right) =1 ,所对应的样本点位于最大间隔边界上,是一个支持向量。这显示出支持向量机的一个重要性质:训练完成后,大部分的训练样本都不需要保留,最终模型仅与支持向量有关

  • 以上是对hard SVM的介绍,下面介绍soft SVM
    1.soft就是软间隔的意思,使用的原因是:我们最先假定数据是线性可分的,然而实际上总会有孤立点存在,那么模型如果完全按照上面hard SVM操作,那这些孤立点怎么办呢?这时就需要soft间隔了
    2.加入松弛变量后,原来的优化目标变为了:
    minw,b,ξi 12w2+Ci=1mξi\underset{\boldsymbol{w,}b,\xi _i}{\min}\ \frac{1}{2}\lVert \boldsymbol{w} \rVert ^2+C\sum_{i=1}^m{\xi _i}
    s.t.  yi(wxi+b)1ξis.t.\ \ y_i\left( \boldsymbol{w}\cdot \boldsymbol{x}_{\boldsymbol{i}}+b \right) \ge 1-\xi _i
         ξi0 , i=1,2,...,N\ \ \ \ \ \xi _i\ge 0\ ,\ i=1,2,...,N
    其中 ξi\xi _i 为“松弛变量”,ξi=max(0,1yi(wxi+b))\xi _i=\max \left( 0,1-y_i\left( \boldsymbol{w}\cdot \boldsymbol{x}_{\boldsymbol{i}}+b \right) \right),即一个hinge损失函数。每一个样本都有一个对应的松弛变量,表征该样本不满足约束的程度。 C>0C>0称为惩罚参数, CC值越大,对分类的惩罚越大。

  • 核SVM
    1.加核函数思路与KPCA一致,具体可以参考我的另一篇博客
    2.这里我只说明一下加核的地方:
    minα 12i=1Nj=1NαiαjyiyjK(xi,xj)i=1Nαi\underset{\boldsymbol{\alpha }}{\min}\ \frac{1}{2}\sum_{i=1}^N{\sum_{j=1}^N{\alpha _i\alpha _jy_iy_jK\left( \boldsymbol{x}_{\boldsymbol{i}},\boldsymbol{x}_{\boldsymbol{j}} \right)}}-\sum_{i=1}^N{\alpha _i}