Chlzhong

SVM 支持向量机

· Liam

写这篇博客时看到知乎一篇 16 年的文章,作者指出传统 SVM 在对一些稀奇古怪的样本进行分类时有比较好的效果,但是评论区纷纷表示:多来几层神经网络就搞定了。由于我知识储备有限,在此就简单讲讲我的理解。


SVM基本形式求解

给定一个二分类问题的训练样本集:

D=(x1,y1),(x2,y2),,(xm,ym),yi1,+1D=(x_1,y_1),(x_2,y_2),…,(x_m,y_m),y_i∈−1,+11

我们的目标是找到一条分界线/超平面2来将两类区分开,如下图:

晨起动征铎
在样本空间中,用 wTx+b=0w^{T}x+b=0​ 来描述超平面。其中:
  • w=(w1,w2,,wd)w=(w_1,w_2,…,w_d) 为法向量,决定了超平面的方向
  • bb 为位移项,决定了超平面与原点的距离。

如果一个超平面能够将训练样本正确分类,则我们希望这个超平面具有的性质是,对于 (xi,yi)D(x_i,y_i)∈D,有: f(x)={wTx+b0,yi=+1; wTx+b0,yi=1. f(x) = \begin{cases} w^T x + b \geq 0, & y_i = +1; \ w^T x + b \leq 0, & y_i = -1. \end{cases}

换言之,在进行分类的时候,遇到一个新的数据点 xx,将 xx 代入 f(x)f(x) 中:

  • 如果 f(x)f(x) 小于 00 ,则将 xx 的类别赋为 1-1
  • 如果 f(x)f(x) 大于 00 ,则将 xx 的类别赋为 11

接下来的问题是,如何确定这个超平面呢? SVM 算法的标准是使直线离两边的点间隔最大。

间距计算

点到超平面的距离公式3为:

distance=wTx+bw\text{distance} = \frac{|w^T x + b|}{||w||}

注意到这个距离并未区分样本类别,于是令支持向量满足:

yi(wTxi+b)=λ=1y_i(w^T x_i + b) = λ = 14

此时得到间距:γ=2w\gamma =\frac{2}{||w||}

最优化问题

max2w ,s.t.yi(wTxi+b)1,i=1,,n\begin{aligned} \max & \frac{2}{||w||} \ ,\quad\text{s.t.} \quad y_i(w^T x_i + b) \geq 1, \quad i = 1,\ldots,n \end{aligned}

等价地,可以转化为:

min12w2 s.t.yi(wTxi+b)1,i=1,,n\begin{aligned} \min & \frac{1}{2}||w||^2 \ \quad\text{s.t.} \quad y_i(w^T x_i + b) \geq 1, \quad i = 1,\ldots,n \end{aligned}

这是一个凸二次规划问题,可以使用拉格朗日对偶理论求解5

求得模型

具体过程此处不题,得:f(x)=wTx+b=i=1mαiyixiTx+bf(x)=w^{T}x+b= \sum_{i=1}^m\alpha_i y_i x_i^{T}x+b


  1. 这里的一个问题是为什么 yy 取值在 111-1 之间,实际上是随便取的,只不过这样取值比较好计算。 ↩︎

  2. 此处也不对 超平面 这个词作过多讨论,大概是来源于逻辑回归。 ↩︎

  3. ω||\omega|| 表示的就是 ω\omega 的欧几里得范数或向量的长度(模) 。 ↩︎

  4. 本质上,这是一个数学技巧,λ\lambda 也可以取别的值。 ↩︎

  5. 那什么是拉格朗日对偶性呢?简单来讲,通过给每一一个约束条件加 α\alpha,定义拉格朗日函数,最终只对一个式子求最值。 ↩︎


评论