【机器学习】支持向量机详解,附带案例

前言

\quad\quad 支持向量机基本思想就是 间隔最大化,看上去很简单,但是要想理解它并不是很容易。本篇将由基本概念出发,对公式进行推导,然后通过一些案例加以展示来介绍支持向量机。本篇篇幅比较长,需耐心仔细看完,适当动手跟着推导及代码实现。

由于博主也在学习中,所以本篇中难免会有些理解错误的地方,还望大家赐教,共同学习。

本篇的代码可见:Github

一、SVM 涉及的概念

\quad\quad 支持向量机(support vector machines,SVM)是一种二类分类模型。它的 基本模型定义在特征空间上的间隔最大的线性分类器,支持向量机的学习策略就是间隔最大化,可形式化为求解凸二次规划的问题

1、分类任务

\quad\quad 分类任务就是确定对象属于哪个预定义的目标类。分类任务的输入数据是记录的集合,每条记录也称为实例或样例,用元祖 ( x , y ) (x,y) (x,y) 表示,其中 x x x 是属性的集合, y y y 是类标记(也称目标属性)。在回归模型中,目标属性值是连续的;而在分类模型中,目标属性时离散的。

考虑二分类任务,其目标属性为 y ∈ { 0 , 1 } y \in \{0,1\} y{0,1},而线性回归模型参数的预测值 z = w T x + b z = w^Tx+b z=wTx+b 是实值,于是我们需要将实值 z z z 转换为目标属性值 0 或 1 。当然最理想的就是单位阶跃函数,但是单位阶跃函数不连续,于是使用 sigmoid函数 作为替代函数。

【机器学习】支持向量机详解,附带案例_第1张图片

sigmoid函数 表达式如下:
g ( z ) = 1 1 + e − z g(z) = \frac{1}{1 + e^{-z}} g(z)=1+ez1

Logistic回归 目的是从特征中学习出一个 0/1 分类模型,而这个分类模型是将特征的线性组合作为自变量,由于自变量的取值范围是 ( − ∞ , + ∞ ) (-\infty, + \infty) (,+) 。因此,使用 sigmoid函数 将自变量映射到 ( 0 , 1 ) (0,1) (0,1) 上,映射后的值被认为是属于 y = 1 y = 1 y=1的概率。

假设函数为:
h θ ( x ) = g ( θ T x ) = 1 1 + e − θ T x h_\theta(x) = g(\theta^Tx) = \frac{1}{1 + e^{-\theta^Tx}} hθ(x)=g(θTx)=1+eθTx1

根据 sigmoid函数 的特性,假设:
p ( y = 1 ∣ x ; θ ) = h θ ( x ) p(y=1|x;\theta) = h_{\theta}(x) p(y=1x;θ)=hθ(x)
p ( y = 0 ∣ x ; θ ) = 1 − h θ ( x ) p(y=0|x;\theta) =1 - h_{\theta}(x) p(y=0x;θ)=1hθ(x)

上式表示,已知样本 x x x 和参数 θ \theta θ 的情况下,样本 x x x 属于正样本 ( y = 1 y = 1 y=1)和负样本( y = 0 y = 0 y=0)的条件概率。若 h θ ( x ) > 0.5 h_\theta(x) > 0.5 hθ(x)>0.5 则属于正样本,反之属于负样本。

进一步的, h θ ( x ) h_\theta(x) hθ(x) 只和 θ T x \theta^Tx θTx 有关, θ T x > 0 \theta^Tx>0 θTx>0 ,那么 h θ ( x ) > 0.5 h_\theta(x) > 0.5 hθ(x)>0.5 ,而 g ( z ) g(z) g(z) 只是用来映射的,真实的类别决定权在于 θ T x \theta^Tx θTx 。当 θ T x ≫ 0 \theta^Tx \gg 0 θTx0 时, h θ ( x ) h_\theta(x) hθ(x)趋于1,反之趋于0。如果我们只从 θ T x \theta^Tx θTx 出发,那么模型应该尽可能的让训练数据中 y = 1 y =1 y=1 的特征 θ T x ≫ 0 \theta^Tx \gg 0 θTx0 ,而 y = 0 y = 0 y=0 的特征 θ T x ≪ 0 \theta^Tx \ll 0 θTx0

Logistic回归 就是要学习得到参数 θ \theta θ,使得正例的特征远远大于0,负例的特征远远小于0,而且要在全部训练数据上达到这个目标。

接下来,尝试把 Logistic回归 做个变形:

  • 首先将目标属性 y ∈ { 0 , 1 } y \in \{0,1\} y{0,1} 替换为 y ∈ { − 1 , 1 } y \in \{-1,1\} y{1,1}
  • θ T x = θ 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n \theta^Tx = \theta_0 + \theta_1 x_1+ \theta_2 x_2+...+ \theta_n x_n θTx=θ0+θ1x1+θ2x2+...+θnxn θ 0 \theta_0 θ0 替换为 b b b
  • 最后将 θ 1 x 1 + θ 2 x 2 + . . . + θ n x n \theta_1 x_1+ \theta_2 x_2+...+ \theta_n x_n θ1x1+θ2x2+...+θnxn 替换为 w T x = θ 1 x 1 + θ 2 x 2 + . . . + θ n x n w^Tx = \theta_1 x_1+ \theta_2 x_2+...+ \theta_n x_n wTx=θ1x1+θ2x2+...+θnxn
  • 得到 θ T x = w T x + b \theta^Tx =w^Tx +b θTx=wTx+b

就是说,除了 y y y 由 0 变为 -1,线性分类函数跟 Logistic回归 的形式化表示 h θ ( x ) = g ( θ T x ) = g ( w T x + b ) h_\theta(x) = g(\theta^Tx) = g(w^Tx +b) hθ(x)=g(θTx)=g(wTx+b) 没区别。

将假设函数 h w , b ( x ) = g ( w T x + b ) h_{w,b}(x) = g(w^Tx+b) hw,b(x)=g(wTx+b) 中的 g ( z ) g(z) g(z) 做一个简化,将其映射到 y = − 1 y = -1 y=1 y = 1 y = 1 y=1 上,映射如下:
g ( z ) = { 1 , z ⩾ 0 − 1 , z < 0 g(z) = \begin{cases} 1,& z \geqslant 0 \\ -1, & z < 0 \end{cases} g(z)={1,1,z0z<0

2、线性分类器

线性可分数据集:存在某个超平面S能够将数据集的正实例和负实例完全划分到超平面的两侧,则称为线性可分数据集;否则,线性不可分。

【机器学习】支持向量机详解,附带案例_第2张图片

如上图,这些数据就是线性可分的,所以可以用一条直线将这两类数据分开,二维中是一条直线,在多维中就是一个超平面。

这个超平面可以用分类函数 f ( x ) = w T x + b f(x) = w^Tx + b f(x)=wTx+b 表示,在进行分类时,将 x x x 代入 f ( x ) f(x) f(x) 中,如果 f ( x ) = 0 f(x) = 0 f(x)=0 表示数据点在超平面上; f ( x ) > 0 f(x) > 0 f(x)>0 对应 y = 1 y =1 y=1的数据点; f ( x ) < 0 f(x) < 0 f(x)<0 对应 y = − 1 y=-1 y=1的数据点。

3、SVM 在做什么?

【机器学习】支持向量机详解,附带案例_第3张图片

\quad\quad 假定给定数据如上图,圆的为正类,方的为负类,要想通过一个划分超平面(这里是二维,所以是条直线)将不同类别的样本分开。从图中我们就可以看出,能将训练样本分开的划分超平面可能有很多,但是我们应该去选择哪一个呢?

\quad\quad 直观上,我们应该选择中间红色的那个,因为它对于训练样本局部扰动的“容忍”性最好,比如,训练集外的样本可能比图中的样本更接近两类的划分超平面,这将使许多划分超平面出现错误,而红色的超平面受到的影响是最小的,也就是说,这个划分超平面的分类结果是最鲁棒的,对未知示例的泛化能力最强。

\quad\quad 找出这个划分超平面就成了关键,之前我们介绍的 感知机(点击链接) 也是寻找这个超平面,将训练集划分开,但是感知机利用误分类最小的策略,求得划分超平面,而且解有无穷多个;在所有的划分超平面中,有一个平面是最好的,它可以尽可能地让所有的样本点都离该划分超平面最远,这就是 SVM 要做的。

4、函数间隔

【机器学习】支持向量机详解,附带案例_第4张图片

如图,有三个实例 A 、 B 、 C A、B、C ABC 均在划分超平面的正类一侧,预测它们的类,点 A A A 距离超平面较远,若预测为正类,就比较确信预测是正确的;点 C C C 距离超平面较近,若预测为正类就不那么确信了;点 B B B 介于 A 、 C A、C AC 之间,预测其为正类的确信度也在 A 、 C A、C AC 之间。

一般来说,一个点距离超平面的远近可以相对地表示分类预测的确信程度。

我们注意到:当一个点 x x x 被正确预测时,那么 w x + b wx+b wx+b 的符合与类标记 y y y 的符号相同。

所以可用 y ( w ⋅ x + b ) y(w\cdot x+b) y(wx+b) 来表示分类的正确性及确信度。

对于给定的训练数据集 T T T 和超平面 ( w , b ) (w,b) (w,b)
(1)定义超平面 ( w , b ) (w,b) (w,b) 关于样本点 ( x i , y i ) (x_i,y_i) (xi,yi)函数间隔 为:

δ i = y i ( w ⋅ x i + b ) \delta_i = y_i(w \cdot x_i+b) δi=yi(wxi+b)

(2)定义超平面 ( w , b ) (w,b) (w,b) 关于训练数据集 T T T 的函数间隔为超平面 $(w,b) $关于 T T T 中所有样本点 ( x i , y i ) (x_i,y_i) (xi,yi) 的函数间隔之最小值,即:

δ = min ⁡ i = 1 , 2 , . . . , N δ i \delta = \min_{i = 1,2,...,N}\delta_i δ=i=1,2,...,Nminδi

函数间隔可以表示分类预测的正确性和确信度

5、几何间隔(点到超平面距离)

样本空间中任意点 x x x 到超平面 ( w , b ) (w,b) (w,b) 的距离可写为:

r = ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ r = \frac{|w^Tx+b|}{||w||} r=wwTx+b

补充:

x 0 x_0 x0 到超平面 S : w x + b = 0 S:wx+b=0 S:wx+b=0 的距离 d d d :

  • x 0 x_0 x0 S S S上面的投影为 x 1 x_1 x1,则 w x 1 + b = 0 wx_1+b=0 wx1+b=0

  • 由向量 x 0 x 1 ⃗ \vec{x_0x_1} x0x1 S S S平面的法向量平行:
    ∣ w ⋅ x 0 x 1 ⃗ ∣ = ( w 1 ) 2 + ( w 2 ) 2 + . . . + ( w N ) 2 d = ∣ ∣ w ∣ ∣ d |w \cdot \vec{x_0x_1}| = \sqrt{(w^1)^2 + (w^2)^2+...+(w^N)^2}d = ||w||d wx0x1 =(w1)2+(w2)2+...+(wN)2 d=wd

  • ∣ ∣ w ∣ ∣ 为 L 2 范 数 ||w||为L_2范数 wL2

  • 又:
    w ⋅ x 0 x 1 ⃗ = w 1 ( x 0 1 − x 1 1 ) + w 2 ( x 0 2 − x 1 2 ) + . . . + w N ( x 0 N − x 1 N ) w \cdot \vec{x_0x_1} = w^1(x_0^1-x_1^1)+w^2(x_0^2-x_1^2)+...+w^N(x_0^N-x_1^N) wx0x1 =w1(x01x11)+w2(x02x12)+...+wN(x0Nx1N)
    = w 1 x 0 1 + w 2 x 0 2 + . . . + w N x 0 N − ( w 1 x 1 1 + w 2 x 1 2 + . . . + w N x 1 N ) =w^1x_0^1+w^2x_0^2+...+w^Nx_0^N-(w^1x_1^1+w^2x_1^2+...+w^Nx_1^N) =w1x01+w2x02+...+wNx0N(w1x11+w2x12+...+wNx1N)

  • 又有: w ⋅ x + b = 0 w \cdot x + b = 0 wx+b=0
    = w 1 x 0 1 + w 2 x 0 2 + . . . + w N x 0 N − ( − b ) =w^1x_0^1+w^2x_0^2+...+w^Nx_0^N-(-b) =w1x01+w2x02+...+wNx0N(b)

  • 故:
    ∣ ∣ w ∣ ∣ d = ∣ w ⋅ x 0 + b ∣ ||w||d = |w \cdot x_0 + b| wd=wx0+b
    d = ∣ w ⋅ x 0 + b ∣ ∣ ∣ w ∣ ∣ d =\frac{|w \cdot x_0 + b|}{||w||} d=wwx0+b

对于给定的训练数据集 T T T和超平面 ( w , b ) (w,b) (w,b)
(1)定义超平面 ( w , b ) (w,b) (w,b)关于样本点 ( x i , y i ) (x_i,y_i) (xi,yi)的几何间隔为:

γ i = y i ( w ∣ ∣ w ∣ ∣ ⋅ x i + b ∣ ∣ w ∣ ∣ ) \gamma_i = y_i(\frac{w}{||w||} \cdot x_i+\frac{b}{||w||}) γi=yi(wwxi+wb)

(2)定义超平面 ( w , b ) (w,b) (w,b)关于训练数据集 T T T的几何间隔为超平面 ( w , b ) (w,b) (w,b)关于 T T T中所有样本点 ( x i , y i ) (x_i,y_i) (xi,yi)的几何间隔之最小值,即:

γ = min ⁡ i = 1 , 2 , . . . , N γ i \gamma = \min_{i = 1,2,...,N}\gamma_i γ=i=1,2,...,Nminγi

几何间隔与函数间隔的关系:
γ = δ ∣ ∣ w ∣ ∣ \gamma = \frac{\delta}{||w||} γ=wδ

以上内容可参考:点到直线的距离

6、支持向量

\quad\quad 训练数据集的样本点中与分离超平面距离最近的样本点的实例称为支持向量,即图中在黑色线上的实例点。

【机器学习】支持向量机详解,附带案例_第5张图片

7、拉格朗日对偶性

\quad\quad 在约束最优化问题中,常常利用拉格朗日对偶性将原始问题转化为对偶问题。通过求解对偶问题而得到原始问题的解。

\quad\quad 支持向量机和最大熵模型都用用到,下面我们来简单介绍下拉格朗日对偶性的主要概念和结果。

1.原始问题:

假设 f ( x ) , c i ( x ) , h j ( x ) f(x),c_i(x),h_j(x) f(x)ci(x)hj(x)是定义在 R n R^n Rn上的连续可微函数,考虑约束最优化问题:
min ⁡ x ∈ R n f ( x ) \min_{x \in R^n} f(x) xRnminf(x)
s . t . c i ( x ) ⩽ 0 , i = 1 , 2 , . . . , k s.t. c_i(x) \leqslant 0,i = 1,2,...,k s.t.ci(x)0i=1,2,...,k
h j ( x ) = 0 , j = 1 , 2 , . . . , l h_j(x) = 0,j = 1,2,...,l hj(x)=0j=1,2,...,l

称此约束最优化问题为原始最优化问题或原始问题。

首先,引进广义拉格朗日函数:

L ( x , α , β ) = f ( x ) + ∑ i = 1 k α i c i ( x ) + ∑ j = 1 k β j h j ( x ) L(x,\alpha,\beta) = f(x) +\sum_{i=1}^{k}\alpha_ic_i(x)+\sum_{j=1}^{k}\beta_jh_j(x) L(x,α,β)=f(x)+i=1kαici(x)+j=1kβjhj(x)

这里, x = ( x ( 1 ) , x ( 2 ) , 。 。 。 , x ( n ) ) T ∈ R n , α i , β j x=(x^{(1)},x^{(2)},。。。,x^{(n)})^T \in R^n, \alpha_i, \beta_j x=(x(1)x(2)x(n))TRnαiβj是拉格朗日乘子, α i ⩾ 0 \alpha_i \geqslant 0 αi0

那么原始问题就是:
θ p ( x ) = max ⁡ α , β : α i ⩾ 0 L ( x , α , β ) \theta_p(x)=\max_{\alpha,\beta:\alpha_i \geqslant0} L(x,\alpha,\beta) θp(x)=α,β:αi0maxL(x,α,β)

假设给定某个 x x x,如果 x x x违反了约束条件,即存在某个 i i i使得 c i ( w ) > 0 c_i(w)>0 ci(w)>0或者存在某个 j j j使得 h j ( w ) ≠ 0 h_j(w) \neq 0 hj(w)̸=0,那么就有:
θ p ( x ) = max ⁡ α , β : α i ⩾ 0 L ( x , α , β ) = + ∞ \theta_p(x)=\max_{\alpha,\beta:\alpha_i \geqslant0} L(x,\alpha,\beta) = +\infty θp(x)=α,β:αi0maxL(x,α,β)=+

因为若某个 i i i使得 c i ( w ) > 0 c_i(w)>0 ci(w)>0,则可令 α i → + ∞ , \alpha_i \rightarrow +\infty, αi+,若某个 j j j使得 h j ( w ) ≠ 0 h_j(w) \neq 0 hj(w)̸=0,则可令 β j \beta_j βj使 β j h j ( x ) → + ∞ \beta_jh_j(x) \rightarrow +\infty βjhj(x)+,而其余各 α i , β j \alpha_i,\beta_j αi,βj均为0

相反地,如果满足约束条件,则 ∑ i = 1 k α i c i ( x ) ⩽ 0 , ∑ j = 1 k β j h j ( x ) = 0 \sum_{i=1}^{k}\alpha_ic_i(x) \leqslant 0,\sum_{j=1}^{k}\beta_jh_j(x)=0 i=1kαici(x)0j=1kβjhj(x)=0,由于 f ( x ) f(x) f(x) 加上一个小于等于的数,最大值就是加上0,所以 θ p ( x ) = f ( x ) \theta_p(x) = f(x) θp(x)=f(x)

综上:
θ p ( x ) = { f ( x ) , x 满 足 原 始 问 题 约 束 + ∞ , 其 他 \theta_p(x) = \begin{cases} f(x), & x满足原始问题约束 \\ +\infty, & 其他\end{cases} θp(x)={f(x),+,x

所以,如果考虑极小化问题
min ⁡ x θ p ( x ) = min ⁡ x max ⁡ α , β : α i ⩾ 0 L ( x , α , β ) \min_x \theta_p(x) = \min_x \max_{\alpha,\beta : \alpha_i \geqslant 0}L(x,\alpha,\beta) xminθp(x)=xminα,β:αi0maxL(x,α,β)

它与原始问题最优化问题等价的,即他们有相同的解。这也称为广义拉格朗日 函数的极小极大问题。

2.对偶问题:
定义:
θ D ( α , β ) = min ⁡ x L ( x , α , β ) \theta_D(\alpha,\beta)=\min_xL(x,\alpha,\beta) θD(α,β)=xminL(x,α,β)

再考虑极大化上式,即

max ⁡ α , β : α i ⩾ 0 θ D ( α , β ) = max ⁡ α , β : α i ⩾ 0 min ⁡ x L ( x , α , β ) \max_{\alpha,\beta : \alpha_i \geqslant 0}\theta_D(\alpha,\beta)=\max_{\alpha,\beta : \alpha_i \geqslant 0}\min_xL(x,\alpha,\beta) α,β:αi0maxθD(α,β)=α,β:αi0maxxminL(x,α,β)

此称为广义拉格朗日函数的极大极小问题。

可以将广义拉格朗日函数的极大极小问题表示为约束最优化问题:
max ⁡ α , β θ D ( α , β ) = max ⁡ α , β min ⁡ x L ( x , α , β ) \max_{\alpha,\beta }\theta_D(\alpha,\beta)=\max_{\alpha,\beta }\min_xL(x,\alpha,\beta) α,βmaxθD(α,β)=α,βmaxxminL(x,α,β)
s . t . α i ⩾ 0 , i = 1 , 2 , . . . , k s.t. \alpha_i \geqslant 0 ,i =1,2,...,k s.t.αi0i=1,2,...,k
称为原始问题的对偶问题。

补充:

若原始问题和对偶问题都有最优解,则:
d ∗ = max ⁡ α , β ; α i ⩾ 0 min ⁡ x L ( x , α , β ) ⩽ min ⁡ x max ⁡ α , β ; α i ⩾ 0 L ( x , α , β ) = p ∗ d^* = \max_{\alpha,\beta;\alpha_i \geqslant 0} \min_x L(x,\alpha, \beta) \leqslant \min_x \max_{\alpha,\beta;\alpha_i \geqslant 0} L(x, \alpha, \beta) = p^* d=α,β;αi0maxxminL(x,α,β)xminα,β;αi0maxL(x,α,β)=p

对任意的 α , β \alpha, \beta α,β x x x ,有:
θ D ( α , β ) = min ⁡ x L ( x , α , β ) ⩽ L ( x , α , β ) ⩽ max ⁡ α , β : α i ⩾ 0 L ( x , α , β ) = θ p ( x ) \theta_D(\alpha,\beta)=\min_xL(x,\alpha,\beta) \leqslant L(x,\alpha,\beta) \leqslant \max_{\alpha,\beta:\alpha_i \geqslant0} L(x,\alpha,\beta) = \theta_p(x) θD(α,β)=xminL(x,α,β)L(x,α,β)α,β:αi0maxL(x,α,β)=θp(x)
即:
θ D ( α , β ) ⩽ θ p ( x ) \theta_D(\alpha,\beta) \leqslant \theta_p(x) θD(α,β)θp(x)
由于原始问题和对偶问题都有最优解,所以:
max ⁡ α , β : α i ⩾ 0 θ D ( α , β ) ⩽ min ⁡ x θ p ( x ) \max_{\alpha,\beta:\alpha_i \geqslant0}\theta_D(\alpha,\beta) \leqslant \min_x\theta_p(x) α,β:αi0maxθD(α,β)xminθp(x)
即:
d ∗ ⩽ p ∗ d^* \leqslant p^* dp

\quad\quad 在满足某些条件下,原始问题和对偶问题的最优解相等,即 d ∗ = p ∗ d^* = p^* d=p,这是可以通过解对偶问题替代求原始问题,往往原始问题求解最优解比较困难,但是求它的对偶问题比较容易。

\quad\quad 假设函数 f ( x ) f(x) f(x) c i ( x ) c_i(x) ci(x)是凸函数, h j ( x ) h_j(x) hj(x)是仿射函数,并且不等式约束 c i ( x ) c_i(x) ci(x)是严格可行的,则 x ∗ x^* x α ∗ , β ∗ \alpha^*,\beta^* α,β分别是原始问题和对偶问题的解的充分必要条件是 x ∗ , α ∗ , β ∗ x^*,\alpha^*,\beta^* x,α,β满足 KTT 条件:

∇ x L ( x ∗ , α ∗ , β ∗ ) = 0 \nabla_xL(x^*,\alpha^*,\beta^*) = 0 xL(x,α,β)=0
α i ∗ c i ( x ∗ ) = 0 , i = 1 , 2 , . . . , k \alpha_i^*c_i(x^*) = 0, \quad\quad i=1,2,...,k αici(x)=0,i=1,2,...,k
c i ( x ∗ ) ⩽ 0 , i = 1 , 2 , . . . , k c_i(x^*) \leqslant 0, \quad\quad i=1,2,...,k ci(x)0,i=1,2,...,k
α i ∗ ⩾ 0 , i = 1 , 2 , . . . , k \alpha_i^* \geqslant 0, \quad\quad i=1,2,...,k αi0,i=1,2,...,k
h j ( x ∗ ) = 0 , j = 1 , 2 , . . . , l h_j(x^*) = 0, \quad\quad j=1,2,...,l hj(x)=0,j=1,2,...,l

\quad\quad 以上介绍了理解支持向量机需要的基本概念,接下来我们将分别介绍线性可分支持向量机、线性支持向量机和线性不可分支持向量机。

3.拉格朗日乘子法帮助理解

待优化目标:
y = 0.6 ∗ ( θ 1 + θ 2 ) 2 − θ 1 ∗ θ 2 y=0.6 * (\theta_1 +\theta_2)^2 - \theta_1 * \theta_2 y=0.6(θ1+θ2)2θ1θ2
约束条件:
x 2 − x + 1 = 0 x ∈ [ − 4 , 4 ] x^2 - x + 1=0 \quad\quad x \in [-4,4] x2x+1=0x[4,4]

【机器学习】支持向量机详解,附带案例_第6张图片

上图中曲面为待优化目标,红点形成的曲线便是约束条件,表示要在约束条件下找到目标函数的最优解(最小值)

代码可见:01_拉格朗日乘子法.py

二、线性可分支持向量机

\quad\quad 我们知道,支持向量机的学习目标是在特征空间找到一个分离超平面,能将实例分到不同的类。

\quad\quad 当训练数据集线性可分时,存在无穷个分离超平面将两类数据正确分开。感知机利用误分类最小化的策略,求得分离超平面,不过这时的解有无穷多个。线性可分支持向量机利用间隔最大化求最优分离超平面,并且解是唯一的。

\quad\quad 那么我们如何使得间隔最大化并求得分离超平面呢?

1、间隔最大化(硬间隔)

\quad\quad 间隔最大化的直观解释是:对训练数据集找到 几何间隔最大 的超平面意味着以充分大的确信度对训练数据进行分类。也就是说,不仅将正负实例点分开,而求对最难分的实例点(离超平面最近的点)也有足够大的确信度将它们分开,这样的超平面对于未知的新实例有很好的分类预测能力。

\quad\quad 下面我们考虑如何求得一个几何间隔最大的分离超平面,即最大间隔分离超平面。我们可以将这个问题表示为下面的约束最优化问题:
max ⁡ w , b γ s . t . y i ( w ∣ ∣ w ∣ ∣ ⋅ x i + b ∣ ∣ w ∣ ∣ ) ⩾ γ , i = 1 , 2 , . . . , N \max_{w,b} \quad \gamma \\ s.t. \quad y_i(\frac{w}{||w||} \cdot x_i + \frac{b}{||w||}) \geqslant \gamma, \quad i = 1,2,...,N w,bmaxγs.t.yi(wwxi+wb)γ,i=1,2,...,N

即我们希望最大化超平面 ( w , b ) (w,b) (w,b)关于训练数据集的几何间隔 γ \gamma γ
约束条件表示:超平面关于每个样本点的几何间隔至少是 γ \gamma γ

进一步地,我们考虑几何间隔和函数间隔的关系。
γ = δ ∣ ∣ w ∣ ∣ \gamma =\frac{\delta}{||w||} γ=wδ
此处: δ \delta δ为函数间隔 y i ( w ⋅ x i + b ) y_i(w\cdot x_i +b) yi(wxi+b)

这是可将上面的约束问题改为:

max ⁡ w , b δ ∣ ∣ w ∣ ∣ s . t . y i ( w ⋅ x i + b ) ⩾ δ , i = 1 , 2 , . . . , N \max_{w,b} \quad \frac{\delta}{||w||} \\ s.t. \quad y_i(w\cdot x_i +b) \geqslant \delta, \quad i = 1,2,...,N w,bmaxwδs.t.yi(wxi+b)δ,i=1,2,...,N

这是我们需要注意到,函数间隔 δ \delta δ 的取值并不影响最优化问题的解。

这里,假设我们将 w , b w,b w,b按比例改为 λ w , λ b \lambda w,\lambda b λwλb,这是函数间隔变为 y i ( λ w ⋅ x i + λ b ) = λ δ y_i(\lambda w \cdot x_i + \lambda b) = \lambda \delta yi(λwxi+λb)=λδ
此时,函数间隔的改变并没有改变上面的约束,对目标函数的优化也没用影响,也就是说,它产生一个等价的最优化问题;
这样,我们就可以把函数间隔 δ \delta δ 特殊化,取 δ = 1 \delta = 1 δ=1
将上面 δ = 1 \delta = 1 δ=1,带入原来最优化问题中,注意到最大化 1 ∣ ∣ w ∣ ∣ \frac{1}{||w||} w1和最小化 1 2 ∣ ∣ w ∣ ∣ 2 \frac{1}{2}||w||^2 21w2是等价的。

我们将得到线性支持向量机学习的最优化问题:
min ⁡ w , b 1 2 ∣ ∣ w ∣ ∣ 2 s . t . y i ( w ⋅ x i + b ) − 1 ⩾ 0 , i = 1 , 2 , . . . , N \min_{w,b} \quad \frac{1}{2}||w||^2 \\ s.t. \quad y_i(w\cdot x_i +b) - 1 \geqslant 0, \quad i = 1,2,...,N w,bmin21w2s.t.yi(wxi+b)10,i=1,2,...,N

上面这个约束最优化问题是一个凸二次规划的问题。

如果求出了约束最优化问题的解 ( w ∗ , b ∗ ) (w^*,b^*) (w,b),那么就可以得到最大间隔分离超平面 w ∗ ⋅ x + b ∗ = 0 w^* \cdot x+b^*=0 wx+b=0及分类决策函数 f ( x ) = s i g n ( w ∗ ⋅ x + b ∗ ) f(x) = sign(w^* \cdot x+b^*) f(x)=sign(wx+b),即线性可分支持向量机。

2、线性可分支持向量机学习算法——最大间隔法如下:

输入:线性可分训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } T = \{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\} T={(x1,y1),(x2,y2),...,(xN,yN)},其中, x i ∈ X = R n , y i ∈ Y = { − 1 , + 1 } , i = 1 , 2 , . . . , N x_i \in \mathcal{X} = R^n,y_i \in \mathcal{Y}=\{-1,+1\},i=1,2,...,N xiX=RnyiY={1,+1}i=1,2,...,N
输出:最大间隔分离超平面和分类决策函数。
(1)构造并求解约束最优化问题:
min ⁡ w , b 1 2 ∣ ∣ w ∣ ∣ 2 s . t . y i ( w ⋅ x i + b ) − 1 ⩾ 0 , i = 1 , 2 , . . . , N \min_{w,b} \quad \frac{1}{2}||w||^2 \\ s.t. \quad y_i(w\cdot x_i +b) - 1 \geqslant 0, \quad i = 1,2,...,N w,bmin21w2s.t.yi(wxi+b)10,i=1,2,...,N
求得最优解 w ∗ , b ∗ w^*,b^* w,b
(2)由此得到分离超平面:
w ∗ ⋅ x + b ∗ = 0 w^* \cdot x+b^*=0 wx+b=0
分类决策函数:
f ( x ) = s i g n ( w ∗ ⋅ x + b ∗ ) f(x) = sign(w^* \cdot x+b^*) f(x)=sign(wx+b)

若训练数据集线性可分,则可将训练数据集中的样本点完全正确分开的最大间隔分离超平面存在且唯一。

我们知道 支持向量 就是距离分离超平面最近的实例点。注意到上面约束问题,支持向量便是使约束条件等号成立的点,即:
y i ( w ⋅ x + b ) − 1 = 0 y_i(w\cdot x+b) - 1 =0 yi(wx+b)1=0

在决定分离超平面时只有支持向量起作用,而其他实例点并不起作用,如果移动支持向量将改变所求的解;但是如果在间隔边界以外移动其他实例点,甚至去掉这些点,则解是不会改变的。

3、对偶算法

\quad\quad 为了求解线性可分支持向量机的最优化问题,将原来的约束最优化问题作为原始问题,应用拉格朗日对偶性,通过求解对偶问题得到原始问题的最优解。

这样做的有点:
对偶问题往往更容易求解
自然引入核函数,进而推广到非线性分类问题(这在后面会介绍)

现在我们就开始构建原始问题的对偶问题:

(1)首先构建拉格朗日函数
L ( w , b , α ) = 1 2 ∣ ∣ w ∣ ∣ 2 − ∑ i = 1 N α i [ y i ( w ⋅ x + b ) − 1 ] L(w,b,\alpha) = \frac{1}{2}||w||^2-\sum_{i=1}^N \alpha_i[y_i(w \cdot x + b) - 1] L(w,b,α)=21w2i=1Nαi[yi(wx+b)1]
其中, α i ⩾ 0 , α = ( α 1 , α 2 , . . . , α N ) T \alpha_i \geqslant 0,\alpha = (\alpha_1,\alpha_2,...,\alpha_N)^T αi0α=(α1,α2,...,αN)T为拉格朗日乘子向量。

根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题。

max ⁡ α min ⁡ w , b L ( w , b , α ) \max_\alpha \min_{w,b} L(w,b,\alpha) αmaxw,bminL(w,b,α)

即,需要先求 L ( w , b , α ) L(w,b,\alpha) L(w,b,α) w , b w,b w,b 的极小,再求对 α \alpha α 的极大。

(2)求 min ⁡ w , b L ( w , b , α ) \min_{w,b} L(w,b,\alpha) minw,bL(w,b,α)

将拉格朗日函数 L ( w , b , α ) L(w,b,\alpha) L(w,b,α) 分别对 w , b w,b w,b 求偏导并令其等于0
∇ w L ( w , b , α ) = w − ∑ i = 1 N α i y i x i = 0 ∇ b L ( w , b , α ) = 0 \nabla_wL(w,b,\alpha)=w-\sum_{i=1}^{N}\alpha_iy_ix_i=0 \\ \nabla_bL(w,b,\alpha)=0 wL(w,b,α)=wi=1Nαiyixi=0bL(w,b,α)=0
得:
w = ∑ i = 1 N α i y i x i ∑ i = 1 N α i y i = 0 w=\sum_{i=1}^{N}\alpha_iy_ix_i \\ \sum_{i=1}^{N}\alpha_iy_i=0 w=i=1Nαiyixii=1Nαiyi=0
代入拉格朗日函数中,即得:
L ( w , b , α ) = 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i y i ( ( ∑ j = 1 N α j y j x j ) ⋅ x i + b ) + ∑ i = 1 N α i = − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 N α i L(w,b,\alpha) = \frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i\alpha_jy_iy_j(x_i \cdot x_j)-\sum_{i=1}^N\alpha_iy_i((\sum_{j=1}^N\alpha_jy_jx_j)\cdot x_i+b)+\sum_{i=1}^N\alpha_i \\ = -\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i\alpha_jy_iy_j(x_i \cdot x_j)+\sum_{i=1}^N\alpha_i L(w,b,α)=21i=1Nj=1Nαiαjyiyj(xixj)i=1Nαiyi((j=1Nαjyjxj)xi+b)+i=1Nαi=21i=1Nj=1Nαiαjyiyj(xixj)+i=1Nαi
即:
min ⁡ w , b L ( w , b , α ) = − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 N α i \min_{w,b} L(w,b,\alpha)= -\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i\alpha_jy_iy_j(x_i \cdot x_j)+\sum_{i=1}^N\alpha_i w,bminL(w,b,α)=21i=1Nj=1Nαiαjyiyj(xixj)+i=1Nαi
(3)求 min ⁡ w , b L ( w , b , α ) \min_{w,b} L(w,b,\alpha) minw,bL(w,b,α) α \alpha α的极大,即是对偶问题:
max ⁡ α − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 N α i s . t . ∑ i = 1 N α i y i = 0 α i ⩾ 0 , i = 1 , 2 , . . . , N \max_\alpha \quad -\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i\alpha_jy_iy_j(x_i \cdot x_j)+\sum_{i=1}^N\alpha_i \\ s.t. \quad \sum_{i=1}^{N}\alpha_iy_i=0 \\ \alpha_i \geqslant 0, \quad i=1,2,...,N αmax21i=1Nj=1Nαiαjyiyj(xixj)+i=1Nαis.t.i=1Nαiyi=0αi0,i=1,2,...,N

将上式的目标函数由求极大转换为求极小,得到等价的对偶最优化问题:
min ⁡ α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i s . t . ∑ i = 1 N α i y i = 0 α i ⩾ 0 , i = 1 , 2 , . . . , N \min_\alpha \quad \frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i\alpha_jy_iy_j(x_i \cdot x_j)-\sum_{i=1}^N\alpha_i \\ s.t. \quad \sum_{i=1}^{N}\alpha_iy_i=0 \\ \alpha_i \geqslant 0, \quad i=1,2,...,N αmin21i=1Nj=1Nαiαjyiyj(xixj)i=1Nαis.t.i=1Nαiyi=0αi0,i=1,2,...,N

对于线性可分训练数据集,假设对偶最优化问题对 α \alpha α的解为 α ∗ = ( α 1 ∗ , α 2 ∗ , . . . , α N ∗ ) T \alpha^*=(\alpha_1^*,\alpha_2^*,...,\alpha_N^*)^T α=(α1,α2,...,αN)T,可以由 α ∗ \alpha^* α 求得原始最优化问题对 ( w , b ) (w,b) (w,b) 的解 w ∗ , b ∗ w^*,b^* w,b

  • 上式可以通过SMO算法求解,具体内容后面将介绍

存在以下定理:

假设 α ∗ = ( α 1 ∗ , α 2 ∗ , . . . , α N ∗ ) T \alpha^*=(\alpha_1^*,\alpha_2^*,...,\alpha_N^*)^T α=(α1,α2,...,αN)T 是对偶最优化问题的解,则存在下标 j j j ,使得 α j ∗ > 0 \alpha_j^* > 0 αj>0,并可求得原始最优化问题的解 w ∗ , b ∗ w^*,b^* w,b
w ∗ = ∑ i = 1 N α i ∗ y i x i b ∗ = y j − ∑ i = 1 N α i ∗ y i ( x i ⋅ x j ) w^* = \sum_{i=1}^N\alpha_i^*y_ix_i \\ b^* = y_j - \sum_{i=1}^N\alpha_i^*y_i(x_i \cdot x_j) w=i=1Nαiyixib=yji=1Nαiyi(xixj)

至此,分离超平面可以写成:
∑ i = 1 N α i ∗ y i ( x ⋅ x i ) + b ∗ = 0 \sum_{i=1}^N\alpha_i^*y_i( x \cdot x_i)+b^* = 0 i=1Nαiyi(xxi)+b=0
分类决策函数可以写为:
f ( x ) = s i g n ( ∑ i = 1 N α i ∗ y i ( x ⋅ x i ) + b ∗ ) f(x) = sign(\sum_{i=1}^N\alpha_i^*y_i( x \cdot x_i)+b^* ) f(x)=sign(i=1Nαiyi(xxi)+b)

这就是说,分类决策函数只依赖于输入 x x x 和训练数据集样本输入的内积。

4、线性可分支持向量机学习算法——对偶算法:

输入:线性可分训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } T = \{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\} T={(x1,y1),(x2,y2),...,(xN,yN)},其中, x i ∈ X = R n , y i ∈ Y = { − 1 , + 1 } , i = 1 , 2 , . . . , N x_i \in \mathcal{X} = R^n,y_i \in \mathcal{Y}=\{-1,+1\},i=1,2,...,N xiX=RnyiY={1,+1}i=1,2,...,N
输出:最大间隔分离超平面和分类决策函数。
(1)构造并求解约束最优化问题:
min ⁡ α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i s . t . ∑ i = 1 N α i y i = 0 α i ⩾ 0 , i = 1 , 2 , . . . , N \min_\alpha \quad \frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i\alpha_jy_iy_j(x_i \cdot x_j)-\sum_{i=1}^N\alpha_i \\ s.t. \quad \sum_{i=1}^{N}\alpha_iy_i=0 \\ \alpha_i \geqslant 0, \quad i=1,2,...,N αmin21i=1Nj=1Nαiαjyiyj(xixj)i=1Nαis.t.i=1Nαiyi=0αi0,i=1,2,...,N
求得最优解 α ∗ = ( α 1 ∗ , α 2 ∗ , . . . , α N ∗ ) T \alpha^*=(\alpha_1^*,\alpha_2^*,...,\alpha_N^*)^T α=(α1,α2,...,αN)T
(2)计算:
w ∗ = ∑ i = 1 N α i ∗ y i x i w^* = \sum_{i=1}^N\alpha_i^*y_ix_i w=i=1Nαiyixi
并选择 α ∗ \alpha^* α 的一个正分量 α j ∗ > 0 \alpha_j^* > 0 αj>0,计算:
b ∗ = y j − ∑ i = 1 N α i ∗ y i ( x i ⋅ x j ) b^* = y_j - \sum_{i=1}^N\alpha_i^*y_i(x_i \cdot x_j) b=yji=1Nαiyi(xixj)
(3)求得分离超平面:
∑ i = 1 N α i ∗ y i ( x ⋅ x i ) + b ∗ = 0 \sum_{i=1}^N\alpha_i^*y_i( x \cdot x_i)+b^* = 0 i=1Nαiyi(xxi)+b=0
分类决策函数:
f ( x ) = s i g n ( ∑ i = 1 N α i ∗ y i ( x ⋅ x i ) + b ∗ ) f(x) = sign(\sum_{i=1}^N\alpha_i^*y_i( x \cdot x_i)+b^* ) f(x)=sign(i=1Nαiyi(xxi)+b)

5、下面通过具体的数据,比较两个算法的计算:

数据如下图:正例点是 x 1 = ( 3 , 3 ) T , x 2 = ( 4 , 3 ) T , 负 例 点 是 x 3 = ( 1 , 1 ) T x_1 = (3,3)^T,x_2 = (4,3)^T,负例点是x_3 = (1,1)^T x1=(3,3)T,x2=(4,3)Tx3=(1,1)T

【机器学习】支持向量机详解,附带案例_第7张图片

问题:试求最大间隔分离超平面?

1.最大间隔法求解:

解:按照最大间隔法,根据训练数据集构造约束最优化问题:
min ⁡ w , b 1 2 ( w 1 2 + w 2 2 ) s . t . 3 w 1 + 3 w 2 + b ⩾ 0        4 w 1 + 3 w 2 + b ⩾ 0        − 1 w 1 − 1 w 2 − b ⩾ 0 \min_{w,b} \quad \frac{1}{2}(w_1^2+w_2^2) \\ s.t. \quad 3w_1+3w_2 + b \geqslant 0 \\ \quad \ \ \ \ \ \ 4w_1+3w_2 + b \geqslant 0 \\ \quad \ \ \ \ \ \ -1w_1-1w_2 - b \geqslant 0 w,bmin21(w12+w22)s.t.3w1+3w2+b0      4w1+3w2+b0      1w11w2b0
求得此最优化问题的解为: w 1 = w 2 = 1 2 , b = − 2 w_1=w_2=\frac{1}{2},b=-2 w1=w2=21,b=2。于是最大间隔分离超平面为:
1 2 x ( 1 ) + 1 2 x ( 2 ) − 2 = 0 \frac{1}{2}x^{(1)}+\frac{1}{2}x^{(2)}-2 = 0 21x(1)+21x(2)2=0
其中, x 1 = ( 3 , 3 ) T 与 x 3 = ( 1 , 1 ) T x_1 = (3,3)^T 与 x_3 = (1,1)^T x1=(3,3)Tx3=(1,1)T是支持向量。

2.对偶算法求解:

解:根据所给数据,对偶问题是:
min ⁡ α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i = 1 2 ( 18 α 1 2 + 25 α 2 2 + 2 α 3 2 + 42 α 1 α 2 − 12 α 1 α 3 − 14 α 2 α 3 ) − α 1 − α 2 − α 3 s . t . α 1 + α 2 − α 3 = 0 α i ⩾ 0 , i = 1 , 2 , 3 \min_\alpha \quad \frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i\alpha_jy_iy_j(x_i \cdot x_j)-\sum_{i=1}^N\alpha_i \\ = \frac{1}{2}(18\alpha_1^2+25\alpha_2^2+2\alpha_3^2+42\alpha_1\alpha_2-12\alpha_1\alpha_3-14\alpha_2\alpha_3)-\alpha_1-\alpha_2-\alpha_3 \\ s.t. \alpha_1+\alpha_2-\alpha_3=0 \\ \alpha_i \geqslant 0, \quad i=1,2,3 αmin21i=1Nj=1Nαiαjyiyj(xixj)i=1Nαi=21(18α12+25α22+2α32+42α1α212α1α314α2α3)α1α2α3s.t.α1+α2α3=0αi0,i=1,2,3
解这一最优化问题,将 α 3 = α 1 + α 2 \alpha_3 = \alpha_1+\alpha_2 α3=α1+α2代入目标函数并记为:
s ( α 1 , α 2 ) = 4 α 1 2 + 13 2 α 2 2 + 10 α 1 α 2 − 2 α 1 − 2 α 2 s(\alpha_1,\alpha_2) = 4\alpha_1^2+\frac{13}{2}\alpha_2^2+10\alpha_1\alpha_2-2\alpha_1-2\alpha_2 s(α1,α2)=4α12+213α22+10α1α22α12α2
α 1 , α 2 \alpha_1,\alpha_2 α1,α2求偏导数并令其为0,易知 s ( α 1 , α 2 ) s(\alpha_1,\alpha_2) s(α1,α2)在点 ( 3 2 , − 1 ) T (\frac{3}{2},-1)^T (23,1)T取极值,但该点不满足约束条件 α 2 ⩾ 0 \alpha_2 \geqslant 0 α20,所以极小值应在边界上达到。

α 1 = 0 \alpha_1 = 0 α1=0时,最小值 s ( 0 , 2 13 ) = − 2 13 s(0, \frac{2}{13}) = -\frac{2}{13} s(0,132)=132;当 α 2 = 0 \alpha_2 = 0 α2=0时,最小值 s ( 1 4 , 0 ) = − 1 4 s(\frac{1}{4},0) = -\frac{1}{4} s(410)=41。于是, s ( α 1 , α 2 ) s(\alpha_1,\alpha_2) s(α1,α2) α 1 = 1 4 , α 2 = 0 \alpha_1=\frac{1}{4},\alpha_2=0 α1=41,α2=0达到最小,此时 α 3 = α 1 + α 2 = 1 4 \alpha_3 = \alpha_1+\alpha_2 = \frac{1}{4} α3=α1+α2=41

这样, α 1 ∗ = α 3 ∗ = 1 4 \alpha_1^*=\alpha_3^* = \frac{1}{4} α1=α3=41对应的实例点 x 1 , x 3 x_1,x_3 x1,x3是支持向量,根据:
w ∗ = ∑ i = 1 N α i ∗ y i x i w^* = \sum_{i=1}^N\alpha_i^*y_ix_i w=i=1Nαiyixi
b ∗ = y j − ∑ i = 1 N α i ∗ y i ( x i ⋅ x j ) b^* = y_j - \sum_{i=1}^N\alpha_i^*y_i(x_i \cdot x_j) b=yji=1Nαiyi(xixj)
计算得:
w ∗ = 1 4 ( 1 ) ( 3 , 3 ) + 1 4 ( − 1 ) ( 1 , 1 ) = ( 1 2 , 1 2 ) w 1 ∗ = w 2 ∗ = 1 2 w^* = \frac{1}{4}(1)(3,3)+\frac{1}{4}(-1)(1,1) = (\frac{1}{2},\frac{1}{2})\\ w_1^*=w_2^* = \frac{1}{2} w=41(1)(3,3)+41(1)(1,1)=(21,21)w1=w2=21
取点 x 1 = ( 3 , 3 ) T 求 b ∗ , 此 时 j = 1 , y j = 1 x_1=(3,3)^T求b^*,此时j=1,y_j=1 x1=(3,3)Tbj=1,yj=1
b ∗ = 1 − [ 1 4 ( 1 ) ( x 1 ⋅ x 1 ) + 1 4 ( − 1 ) ( x 3 ⋅ x 1 ) ] = 1 − ( 1 4 ∗ 18 − 1 4 ∗ 6 ) = − 2 b^* = 1 - [\frac{1}{4}(1)(x_1 \cdot x_1)+\frac{1}{4}(-1)(x_3 \cdot x_1)] \\ = 1-(\frac{1}{4}*18-\frac{1}{4}*6)= -2 b=1[41(1)(x1x1)+41(1)(x3x1)]=1(4118416)=2

于是分离超平面为:
1 2 x ( 1 ) + 1 2 x ( 2 ) − 2 = 0 \frac{1}{2}x^{(1)}+\frac{1}{2}x^{(2)}-2 = 0 21x(1)+21x(2)2=0
分类决策函数为:
f ( x ) = s i g n ( 1 2 x ( 1 ) + 1 2 x ( 2 ) − 2 ) f(x) = sign(\frac{1}{2}x^{(1)}+\frac{1}{2}x^{(2)}-2 ) f(x)=sign(21x(1)+21x(2)2)

由上面两种方法可见,两种方法得到的超平面是一样的,也验证了对偶方法的有效性。

至此,我们得到目标函数:
max ⁡ α i ⩾ 0 L ( w , b , α ) = max ⁡ α i ⩾ 0 1 2 ∣ ∣ w ∣ ∣ 2 − ∑ i = 1 N α i [ y i ( w ⋅ x + b ) − 1 ] \max_{\alpha_i \geqslant 0}L(w,b,\alpha) = \max_{\alpha_i \geqslant 0} \frac{1}{2}||w||^2-\sum_{i=1}^N \alpha_i[y_i(w \cdot x + b) - 1] αi0maxL(w,b,α)=αi0max21w2i=1Nαi[yi(wx+b)1]

注意到,如果 x i x_i xi 是支持向量的话,上式中 y i ( w ⋅ x + b ) − 1 = 0 y_i(w \cdot x + b) - 1 = 0 yi(wx+b)1=0 (因为至此向量的函数间隔为1),而对于非支持向量来说,函数间隔会大于1,因此 y i ( w ⋅ x + b ) − 1 > 0 y_i(w \cdot x + b) - 1 > 0 yi(wx+b)1>0 ,而 α i ⩾ 0 \alpha_i \geqslant 0 αi0,为了满足最大化, α i \alpha_i αi必须等于0。

到目前为止,线性可分支持向量机只能处理线性可分数据集,不过,在得到了对偶问题形式之后,通过核函数(Kernel)推广到非线性的情况就变成了一个非常容易的事情了。

三、核函数 Kernel

\quad\quad 在现实任务中,我们得到的一般都不是线性可分的,这时线性可分支持向量机就不适用了。因为这时我们之前所提到的不等式约束并不能都成立。那么对于非线性的数据 SVM 是如何处理的呢?

\quad\quad 对于非线性的情况,SVM 的处理方法是选择一个核函数 k ( ⋅ , ⋅ ) k(\cdot,\cdot) k(,),通过将数据映射到高维空间,来解决在原始空间中线性不可分的问题。

\quad\quad 具体来说,在线性不可分的情况下,支持向量机首先在低维空间中完成计算,然后通过核函数将输入空间映射到高维特征空间,最终在高维特征空间中构造出最优的分离超平面,从而把平面上本身不好分的非线性数据分开。如图所示,一维数据在二维空间无法划分,从而映射到三维空间里划分:

【机器学习】支持向量机详解,附带案例_第8张图片

因此,在没有核函数之前,当我们希望用前面线性分类问题的方法来解决这个问题,就需要选择一个非线性特征集,并将数据改写成新的表达方式,这等价于应用一个固定的非线性映射,将数据映射到特征空间,在特征空间中使用线性分类器。

f ( x ) = ∑ i = 1 N w i ϕ i ( x ) + b f(x) = \sum_{i=1}^N w_i \phi_i(x) + b f(x)=i=1Nwiϕi(x)+b

其中, ϕ \phi ϕ:表示从输入空间到某个特征空间的映射,这意味着线性分类方法求解非线性分类问题一般分为两步:

  • 使用一个变换将原空间的数据映射到新空间;
  • 在新空间里使用线性分类学习方法从训练数据中学习分类模型。

1、核函数:如何处理非线性数据

\quad\quad 假设我们有如下图所示的两类数据,分别为两个圆圈的形状,很明显这样的数据是线性不可分的,那么我们如何把这两类数据分开呢?

【机器学习】支持向量机详解,附带案例_第9张图片

\quad\quad 事实上,上图数据集使用两个不同半径的圆圈加上少量噪声生成得到的,所以,一个理想的分类应该是一个“圆圈”而不是一条直线(超平面),如果用 X 1 X_1 X1 X 2 X_2 X2 来表示这个二维平面的两个坐标,我们知道一个二次曲线的方程可以写成如下形式:

a 1 X 1 + a 2 X 1 2 + a 3 X 2 + a 4 X 2 2 + a 5 X 1 X 2 + a 6 = 0 a_1X_1 + a_2X_1^2+a_3X_2+a_4X_2^2+a_5X_1X_2+a_6=0 a1X1+a2X12+a3X2+a4X22+a5X1X2+a6=0

注意上面的形式,如果我们构造另一个五维的空间,其中五个坐标的值分别为:
Z 1 = X 1 , Z 2 = X 1 2 , Z 3 = X 2 , Z 4 = X 2 2 , Z 5 = X 1 X 2 Z_1 = X_1,Z_2=X_1^2,Z_3=X_2,Z_4=X_2^2,Z_5=X_1X_2 Z1=X1,Z2=X12,Z3=X2,Z4=X22,Z5=X1X2
那么,上面的方程就可以写成:

∑ i = 1 5 a i Z i + a 6 = 0 \sum_{i=1}^5a_iZ_i + a_6 =0 i=15aiZi+a6=0

\quad\quad 关于新的坐标 Z Z Z ,如果我们做一个映射 ϕ : R 2 → R 5 \phi:R_2 \rightarrow R_5 ϕR2R5,将 X X X 按照上面的规则映射为 Z Z Z ,那么在的新的空间中原来的数据将变成线性可分的,从而使用之前我们推导的线性分类算法就可以进行处理了,这正是 Kernel 方法处理非线性问题的基本思想。

\quad\quad 再进一步描述 Kernel 的细节之前,不妨再来看看上述例子在映射过后的直观形态。当然,我们无法把五维空间画出来,不过由于我们生成数据的时候用了特殊的情形,所以这里的超平面实际的方程是这个样子的(圆心在 X 2 X_2 X2轴上的一个正圆):

∑ i = 1 5 a i Z i + a 6 = 0 \sum_{i=1}^5a_iZ_i + a_6 =0 i=15aiZi+a6=0

\quad\quad 因此我只需要把它映射到 Z 1 = X 1 2 , Z 2 = X 2 2 , Z 3 = X 2 Z_1 = X_1^2,Z_2 = X_2^2,Z_3 = X_2 Z1=X12,Z2=X22,Z3=X2,这样一个三维空间中即可,下图即是映射之后的结果,将坐标经过适当的旋转,就可以很明显地看出,数据是可以通过的一个平面来分开的,如下图:

【机器学习】支持向量机详解,附带案例_第10张图片

核函数相当于把原来的分类函数:
f ( x ) = ∑ i = 1 n α i y i ⟨ x i , x ⟩ + b f(x) = \sum_{i=1}^n\alpha_iy_i \langle x_i, x \rangle + b f(x)=i=1nαiyixi,x+b
映射成:
f ( x ) = ∑ i = 1 n α i y i ⟨ ϕ ( x i ) , ϕ ( x ) ⟩ + b f(x) = \sum_{i=1}^n\alpha_iy_i \langle \phi(x_i), \phi(x) \rangle + b f(x)=i=1nαiyiϕ(xi),ϕ(x)+b

而其中的 α \alpha α 可以通过求解如下对偶问题得到:

max ⁡ α ∑ i = 1 n α i − 1 2 ∑ i , j = 1 n α i α j y i y j ⟨ ϕ ( x i ) , ϕ ( x ) ⟩ \max_\alpha \sum_{i=1}^n \alpha_i - \frac{1}{2} \sum_{i,j=1}^n \alpha_i \alpha_j y_i y_j\langle \phi(x_i), \phi(x) \rangle αmaxi=1nαi21i,j=1nαiαjyiyjϕ(xi),ϕ(x)
s . t . α i ⩾ 0 i = 1 , 2 , . . . , n s.t. \quad \alpha_i \geqslant0 \quad\quad i = 1,2,...,n s.t.αi0i=1,2,...,n
∑ i = 1 n α i y i = 0 \sum_{i=1}^n \alpha_i y_i =0 i=1nαiyi=0

得到以上对偶问题,似乎我们就可以解决非线性问题,我们只需要找到一个映射 ϕ ( ⋅ ) \phi(\cdot) ϕ(),然后将非线性数据映射到新空间中,再做线性 SVM 即可,然而事实上并没有这么简单。

  • 在最初的例子里,我们对一个二维空间最映射,选择的新空间是原始空间的所有一阶和二阶的组合,得到五维空间;
  • 如果原始空间是三维的,那么我们就会得到:3个一次项+3个二次交叉项+3个平方项+1个三次交叉项+6个一次和二次交叉项=19维的空间,这个数目层指数级爆炸增长,从而必定给 ϕ ( ⋅ ) \phi(\cdot) ϕ() 的计算带来困难,而且如果遇到无穷维的情况,就根本无法计算了。

这时候,Kernel 核函数就派上用场了。

我们还使用前面的二维原始空间,设两个向量 x 1 = ( η 1 , η 2 ) T x_1 = (\eta_1, \eta_2)^T x1=(η1,η2)T x 2 = ( ξ 1 , ξ 2 ) T x_2 = (\xi_1, \xi_2)^T x2=(ξ1,ξ2)T,而 ϕ ( ⋅ ) \phi(\cdot) ϕ() 即是前面说的五维空间的映射,因此映射后的内积为:
⟨ ϕ ( x 1 ) , ϕ ( x 2 ) ⟩ = η 1 ξ 1 + η 1 2 ξ 1 2 + η 2 ξ 2 + η 2 2 ξ 2 2 + η 1 η 2 ξ 1 ξ 2 \langle \phi(x_1),\phi(x_2)\rangle = \eta_1\xi_1 + \eta_1^2\xi_1^2+\eta_2\xi_2+\eta_2^2\xi_2^2+\eta_1\eta_2\xi_1\xi_2 ϕ(x1),ϕ(x2)=η1ξ1+η12ξ12+η2ξ2+η22ξ22+η1η2ξ1ξ2

上式可通过如下推导得到:

  • x 1 、 x 2 x_1、x_2 x1x2通过 ϕ ( ⋅ ) \phi(\cdot) ϕ()映射到五维空间,然后计算内积:
    ϕ ( x 1 ) → ( η 1 , η 1 2 , η 2 , η 2 2 , η 1 η 2 ) ϕ ( x 1 ) → ( ξ 1 , ξ 1 2 , ξ 2 , ξ 2 2 , ξ 1 ξ 2 ) \phi(x_1) \rightarrow (\eta_1,\eta_1^2,\eta_2,\eta_2^2,\eta_1\eta_2) \quad\quad \phi(x_1) \rightarrow (\xi_1,\xi_1^2,\xi_2,\xi_2^2,\xi_1\xi_2) ϕ(x1)(η1,η12,η2,η22,η1η2)ϕ(x1)(ξ1,ξ12,ξ2,ξ22,ξ1ξ2)
    计算内积,对应位置相乘相加即可

另外,我们注意到:
( ⟨ x 1 , x 2 ⟩ + 1 ) 2 = ⟨ x 1 , x 2 ⟩ 2 + 2 ⟨ x 1 , x 2 ⟩ + 1 = ( η 1 ξ 1 + η 2 ξ 2 ) 2 + 2 ( η 1 ξ 1 + η 2 ξ 2 ) + 1 = 2 η 1 ξ 1 + η 1 2 ξ 1 2 + 2 η 2 ξ 2 + η 2 2 ξ 2 2 + 2 η 1 η 2 ξ 1 ξ 2 + 1 (\langle x_1,x_2\rangle + 1)^2 = \langle x_1,x_2\rangle^2+2\langle x_1,x_2\rangle+1\\ =(\eta_1\xi_1+\eta_2\xi_2)^2 + 2(\eta_1\xi_1+\eta_2\xi_2) + 1\\ = 2\eta_1\xi_1+\eta_1^2\xi_1^2+2\eta_2\xi_2+ \eta_2^2\xi_2^2 +2\eta_1\eta_2\xi_1\xi_2 +1 (x1,x2+1)2=x1,x22+2x1,x2+1=(η1ξ1+η2ξ2)2+2(η1ξ1+η2ξ2)+1=2η1ξ1+η12ξ12+2η2ξ2+η22ξ22+2η1η2ξ1ξ2+1
可以发现,上面的两个式子有很多相同的地方,实际上,我们只需要把某几个维度线性缩放一下,然后加上一个常数维度,具体来说,上面这个式子的计算实际上和映射:
φ ( X 1 , X 2 ) = ( 2 X 1 , X 1 2 , 2 X 2 , X 2 2 , 2 X 1 X 2 , 1 ) T \varphi(X_1,X_2) = (\sqrt2 X_1,X_1^2,\sqrt2X_2, X_2^2,\sqrt2X_1X_2,1)^T φ(X1,X2)=(2 X1,X12,2 X2,X22,2 X1X2,1)T

这个式子是根据上式凑出来的

然后计算内积 ⟨ φ ( X 1 ) , φ ( X 2 ) ⟩ \langle \varphi(X_1),\varphi(X_2)\rangle φ(X1),φ(X2)的结果是相同的,那么区别在于什么地方呢?

  • 一个是映射到高维空间中,然后再根据内积的公式计算;
  • 而另一个则直接在原始空间中计算,而不需要显式地写出映射后的结果

现在我们回忆下前面提到的维度爆炸,在前一种方法已经无法计算的情况下,后一种方法却依旧能处理,甚至无穷维度也没有问题。

我们把这里的 计算两个向量在隐式映射过后在空间中的内积的函数叫做核函数,例如,前面的例子中,核函数为:
k ( x 1 , x 2 ) = ( ⟨ x 1 , x 2 ⟩ + 1 ) 2 k(x_1,x_2)=(\langle x_1,x_2\rangle + 1)^2 k(x1,x2)=(x1,x2+1)2

由此可以发现,核函数 能够简化映射空间中的内积运算

2、核函数的定义

X \mathcal{X} X 是输入空间, H \mathcal{H} H为特征空间,如果存在一个从 X \mathcal{X} X H \mathcal{H} H的映射:
ϕ ( x ) : X → H \phi(x):\mathcal{X} \rightarrow \mathcal{H} ϕ(x):XH
使得对所有 x , z ∈ X , x,z \in \mathcal{X}, x,zX,函数 K ( x , z ) K(x,z) K(x,z)满足条件:
K ( x , z ) = ϕ ( x ) ⋅ ϕ ( z ) K(x,z) = \phi(x) \cdot \phi(z) K(x,z)=ϕ(x)ϕ(z)
则称 K ( x , z ) K(x,z) K(x,z)为核函数, ϕ ( x ) \phi(x) ϕ(x)为映射函数,式中 ϕ ( x ) ⋅ ϕ ( z ) \phi(x) \cdot \phi(z) ϕ(x)ϕ(z)为内积

核技巧的想法:在学习与预测中只定义核函数 K ( x , z ) K(x,z) K(x,z),而不显式地定义映射函数 ϕ \phi ϕ
因为通常计算 K ( x , z ) K(x,z) K(x,z)比较容易,而通过 ϕ ( x ) 和 ϕ ( z ) \phi(x)和\phi(z) ϕ(x)ϕ(z)的内积来计算 K ( x , z ) K(x,z) K(x,z)并不容易;
ϕ \phi ϕ是输入空间到特征空间的映射,特征空间 H \mathcal{H} H往往是高维的,甚至是无穷维;
对于给定的核 K ( x , z ) K(x,z) K(x,z),特征空间 H \mathcal{H} H和映射函数 ϕ \phi ϕ的取法并不唯一。

\quad\quad 在我们之前学习线性可分支持向量机和线性支持向量机时,无论是目标函数还是决策函数(分离超平面)都只涉及输入实例与实例之间的内积。在对偶问题的目标函数中的内积 x i , x j x_i,x_j xi,xj,可以用核函数 K ( x i , x j ) = ϕ ( x i ) ⋅ ϕ ( x j ) K(x_i,x_j) = \phi(x_i) \cdot \phi(x_j) K(xi,xj)=ϕ(xi)ϕ(xj)来代替。此时对偶问题的目标函数成为:
W ( α ) = 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j K ( x i , x j ) − ∑ i = 1 N α i W(\alpha)=\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_jK(x_i,x_j)-\sum_{i=1}^N\alpha_i W(α)=21i=1Nj=1NαiαjyiyjK(xi,xj)i=1Nαi
分类决策函数变为:
f ( x ) = s i g n ( ∑ i = 1 N s α i ∗ y i K ( x i , x ) + b ∗ ) f(x) = sign(\sum_{i=1}^{N_s}\alpha_i^*y_iK(x_i,x)+b^*) f(x)=sign(i=1NsαiyiK(xi,x)+b)

这就等价于:
经过映射函数 ϕ \phi ϕ将原来的输入空间变换到一个新的特征空间,将输入空间中的内积 x i ⋅ x j x_i \cdot x_j xixj变换为特征空间中的内积 ϕ ( x i ) ⋅ ϕ ( x j ) \phi(x_i) \cdot \phi(x_j) ϕ(xi)

你可能感兴趣的:(机器学习)