「这是我参与2022首次更文挑战的第8天,活动详情查看:2022首次更文挑战」。
SVM(Support Vector Machine,支持向量机)是一个线性分类器,是最经典的分类算法,其核心目标就是找到最大间隔超平面。本文记录SVM的推导过程。
概述
SVM就是一个分类器,只是相对于传统的线性分类器,它添加了一个支持向量的概念。

从图片上解释,对于一组数据,SVM在使用直线的同时要求数据点距离这条直线的最小距离最大,也就是说分类器和数据之间要有足够大的“间隔”。这样做的好处是很明显的,越大的“间隔”代表了更大的转圜空间,在得到新的数据之后更容易将其正确分类。
而SVM的工作就是求解这个最大间隔,也就是最优化问题。对于线性可分的数据,可以直接套用线性规划的知识进行推导,但如果数据线性不可分,就需要核函数进行数据升维,进行超平面分类。
目标函数
SVM是一个线性分类器,SVM的目标就是找到最大间隔超平面。
wTx+b=0
- 二维空间点(x,y)到直线Ax+By+C=0的距离为:
{% raw %}
A2+B2∣Ax+By+C∣
{% endraw %}
- 扩展到k维空间后,点X=(x1,x2,…,xk)到超平面wTx+b=0距离为:
∥w∥∣∣wTx+b∣∣
∥w∥=w12+…wn2
- 我们希望这个超平面可以区分不同两类数据特征,这个分类决策函数就是:
f(x)=sign(wTx+b)
- 我们的数据为{% raw %}(xi,yi),i∈{1,2,…,n},yi∈{1,−1}{% endraw %},定义点{% raw %}(xi,yi){% endraw %}到超平面的函数距离{% raw %}γ^i{% endraw %}:
{% raw %}
γ^i=yi(w⋅xi+b)
{% endraw %}
- 而我们的目标是找到可以最大化数据到点几何距离的超平面,将几何距离用γi表示,为:
{% raw %}
γi=∣∥w∥w⋅xi+∥w∥b∣=∥w∥∣wTxi+b∣=∥w∥yi(w⋅xi+b)=∥w∥γ^i
{% endraw %}
{% raw %}
\begin{array}{*{20}{l}}
{\mathop {\max }\limits_{{\bf{w}},b} }&\gamma \\
{{\rm{ s}}{\rm{.t}}{\rm{. }}}&{{y_i}\left( {\frac{{\bf{w}}}{{{||\bf{w}||}}} \cdot {x_i} + \frac{b}{{{||\bf{w}||}}}} \right) \ge \gamma ,\quad i = 1,2, \cdots ,n}
\end{array}
{% endraw %}
{% raw %}
\begin{array}{*{20}{l}}
{\mathop {\max }\limits_{{\bf{w}},b} }&{\frac{{{{\hat \gamma }_i}}}{{{||\bf{w}||}}}}\\
{{\rm{s}}.{\rm{t}}.}&{{y_i}\left( {{\bf{w}} \cdot {x_i} + b} \right) \ge {{\hat \gamma }_i},\quad i = 1,2, \cdots ,n}
\end{array}
{% endraw %}
- 事实上函数间隔γ^并不影响最优化问题的解,假设将w和b成倍的改变为aw,ab,那么函数间隔也会相应变成aγ^,因此为简便,我们取 γ^=1,因此优化函数为最大化1/∣∣w∣∣,这等价于最小化∣∣w∣∣,考虑到求导方便,我们最小化1/2∣∣w∣∣2
- 优化函数最终为:
{% raw %}
\begin{array}{*{20}{l}}
{\mathop {\min }\limits_{{\bf{w}},b} }&{\frac{1}{2}||{\bf{w}}|{|^2}}\\
{{\rm{s}}.{\rm{t}}.}&{{y_i}\left( {{\bf{w}} \cdot {{\bf{x}}_i} + b} \right) - 1 \ge 0,\quad i = 1,2, \cdots ,n}
\end{array}
{% endraw %}
拉格朗日对偶求极值
{% raw %}
\begin{array}{*{20}{l}}
{\mathop {\min }\limits_{{\bf{w}},b} }&{\frac{1}{2}||{\bf{w}}|{|^2}}\\
{{\rm{s}}.{\rm{t}}.}&1-{{y_i}\left( {{\bf{w}} \cdot {{\bf{x}}_i} + b} \right) \le 0,\quad i = 1,2, \cdots ,n}
\end{array}
{% endraw %}
{% raw %}
L(w,b,α)=21∣∣w∣∣2+i=1∑nαi(1−yi(w⋅xi+b))
{% endraw %}
- 原始问题为凸优化问题,我们按照KKT条件求解该问题的对偶问题,即可根据强对偶条件获得原始问题的解
- 对偶问题为:
{% raw %}
αmaxD(α)=αmaxw,bminL(w,b,α)
{% endraw %}
- 先求最小化极值问题{% raw %} w,bminL(w,b,α){% endraw %}:
{% raw %}
\left\{ {\begin{array}{*{20}{c}}
{\frac{{\partial {\rm{L}}}}{{\partial {\bf{w}}}} = 0}\\
{\frac{{\partial {\rm{L}}}}{{\partial b}} = 0}
\end{array}} \right.
{% endraw %}
{% raw %}
\left\{ {\begin{array}{*{20}{c}}
{{\bf{w}} = \sum\limits_{i = 1}^n {{\alpha _i}{y_i}{{\bf{x}}_i}} }\\
{\sum\limits_{i = 1}^n {{\alpha _i}{y_i} = 0} }
\end{array}} \right.
{% endraw %}
- 带入L(w,b,α)得:
{% raw %}
L(w,b,α)=21∥w∥2+i=1∑nαi[1−yi(wTxi+b)]=21wTw−wTi=1∑nαiyixi−bi=1∑nαiyi+i=1∑nαi=21wTi=1∑nαiyixi−wT′i=1∑nαixiyi−b∗0+i=1∑nαi=i=1∑nαi−21(i=1∑nαiyixi)Ti=1∑nαiyixi=i=1∑nαi−21i,j=1∑nαiαjyiyjxiTxj
{% endraw %}
{% raw %}
\begin{array}{*{20}{c}}
{\mathop {\max }\limits_{\bf{\alpha }} \sum\limits_{i = 1}^n {{\alpha _i}} - \frac{1}{2}\sum\limits_{i,j = 1}^n {{\alpha _i}} {\alpha _j}{y_i}{y_j}{\bf{x}}_i^T{{\bf{x}}_j}}\\
{\qquad \begin{array}{*{20}{c}}
{{\rm{ s}}{\rm{.t}}{\rm{. }}{\alpha _i} \ge 0,\quad i = 1,2, \ldots ,n}\\
{\sum\limits_{i = 1}^n {{\alpha _i}} {y_i} = 0}
\end{array}}
\end{array}
{% endraw %}
-
可以看到通过拉格朗日对偶,我们将原始拉格朗日方程k+1+n个未知数、n个复杂不等式约束条件的优化问题转换为了n个未知数,1个等式约束的问题,当然满足KKT条件是前提
-
对于这个问题,我们有更高效的优化算法,即序列最小优化(SMO)算法。我们通过这个优化算法能得到α,再根据α,我们就可以求解出w和b,进而求得我们最初的目的:找到超平面,即"决策平面"。
参考资料