机器学习之SVM(支持向量机)

前言

之前一直想总结关于支持向量机的相关内容,今天终于让我找到了机会,方便自己和大家翻阅参考。
SVM在之前的很长一段时间内是性能最好的分类器,它有严密而优美的数学基础作为支撑。在各种机器学习算法中,它是最不易理解的算法之一,要真正掌握它的原理有一定的难度。在本文中,将带领大家通过一张图来理清SVM的核心推导过程。

正文

在各种机器学习算法中,SVM是对数学要求较高的一种,一直以来不易被初学者掌握。如果能把握住推导的整体思路,则能降低理解的难度,在本文中将通过一张图来为大家讲述SVM的整个推导过程。

SVM由Vapnik等人在1995年提出,在出现之后的20多年里它是最具影响力的机器学习算法之一。在深度学习技术出现之前,使用高斯核的SVM在很多问题上一度取得了最好的效果。SVM不仅可以用于分类问题,还可以用于回归问题。它具有泛化性能好,适合小样本等优点,被广泛应用于各种实际问题。

我们可以通过一张图来概括整个推导过程:
111
最简单的SVM从线性分类器导出,根据最大化分类间隔的目标,我们可以得到线性可分问题的SVM训练时求解的问题。但现实应用中很多数据是线性不可分的,通过加入松弛变量和惩罚因子,可以将SVM推广到线性不可分的情况,具体做法是对违反约束条件的训练样本进行惩罚,得到线性不可分的SVM训练时优化的问题。这个优化问题是一个凸优化问题,并且满足Slater条件,因此强对偶成立,通过拉格朗日对偶可以将其转化成对偶问题求解。

到这里为止,支持向量机还是一个线性模型,只不过允许有错分的训练样本存在。通过核函数,可以将它转化成非线性模型,此时的对偶问题也是一个凸优化问题。这个问题的求解普遍使用的是SMO算法,这是一种分治法,它每次选择两个变量进行优化,这两个变量的优化问题是一个带等式和不等式约束条件的二次函数极值问题,可以求出公式解,并且这个问题也是凸优化问题。优化变量的选择通过KKT条件来确定。

下面我们按照这个思路展开,给出SVM完整的推导过程,难点在于拉格朗日对偶和KKT条件。

一、预备知识

为了大家能够理解推导过程,我们先介绍KKT条件。在微积分中我们学习过,带等式约束的最优化问题可以用拉格朗日乘数法求解,对于既有等式约束又有不等式约束的问题,也有类似的条件定义函数的最优解-这就是KKT条件。对于如下优化问题:
m i n    f ( x ) g i ( x ) ≤ 0 ,    i = 1 , 2 , . . . , q h i ( x ) = 0 ,    i = 1 , 2 , . . . , p min \; f(x) \\ g_i(x) \le 0 , \; i=1, 2, ..., q \\ h_i(x) = 0 , \; i=1, 2, ..., p minf(x)gi(x)0,i=1,2,...,qhi(x)=0,i=1,2,...,p
首先构造拉格朗日乘子函数:
L ( x , λ , μ ) = f ( x ) + ∑ j = 1 p λ j h j ( x ) + ∑ k = 1 q μ k g k ( x ) L(x, \lambda, \mu) = f(x) + \sum_{j=1}^p \lambda_{j} h_j(x) + \sum_{k=1}^q \mu_{k} g_k(x) L(x,λ,μ)=f(x)+j=1pλjhj(x)+k=1qμkgk(x)
其中 λ j ,    μ k \lambda_j,\; \mu_k λj,μk 被称为拉格朗日乘子,最优解 x ∗ x^{*} x 必须满足如下条件:
{ h j ( x ∗ ) = 0 g k ( x ∗ ) ≤ 0 ∇ x L ( x ∗ ) = 0 λ i ≠ 0 μ k ≥ 0 μ k g k ( x ∗ ) = 0 \begin{cases} h_j(x^{*}) = 0 \\ g_k(x^{*}) \le 0 \\ \nabla_{x} L(x^{*}) = 0 \\ \lambda_i \neq 0 \\ \mu_k \ge 0 \\ \mu_k g_k(x^{*}) = 0 \end{cases} hj(x)=0gk(x)0xL(x)=0λi=0μk0μkgk(x)=0
除了原本应该满足的等式约束和不等式约束之外:
∇ x L ( x ∗ ) = 0 \nabla_{x} L(x^{*}) = 0 xL(x)=0
和拉格朗日乘数法一样。唯独多了
μ k g k ( x ∗ ) = 0 \mu_k g_k(x^{*}) = 0 μkgk(x)=0
这一条件。

下面介绍拉格朗日对偶。对偶是求解最优化问题的一种手段,它将一个优化问题转化为另外一个更容易求解的问题,这两个问题是等价的。常见的对偶有拉格朗日对偶、Fenchel对偶。这里我们介绍拉格朗日对偶

对于如下带等式约束和不等式约束的最优化问题:
m i n    f ( x ) g i ( x ) ≤ 0 ,    i = 1 , 2 , . . . , m h i ( x ) = 0 ,    i = 1 , 2 , . . . , p min \; f(x) \\ g_i(x) \le 0 , \; i=1, 2, ..., m \\ h_i(x) = 0 , \; i=1, 2, ..., p minf(x)gi(x)0,i=1,2,...,mhi(x)=0,i=1,2,...,p
仿照拉格朗日乘数法构造如下广义拉格朗日函数:
L ( x , λ , ν ) = f ( x ) + ∑ i = 1 m λ i g i ( x ) + ∑ i = 1 p ν i g i ( x ) L(x, \lambda, \nu) = f(x) + \sum_{i=1}^m \lambda_{i} g_i(x) + \sum_{i=1}^p \nu_{i} g_i(x) L(x,λ,ν)=f(x)+i=1mλigi(x)+i=1pνigi(x)
同样的称 λ i ,    ν i \lambda_{i}, \; \nu_{i} λi,νi 为拉格朗日乘子。变量 λ i \lambda_{i} λi 必须满足 λ i ≥ 0 \lambda_{i} \ge 0 λi0 的约束。接下来将上面的问题转化为如下所谓的原问题形式,其最优解为:
p ∗ = m i n ⏟ x m a x ⏟ λ , ν ,    λ i ≥ 0 L ( x , λ , ν ) p^{*} = \underbrace{min}_{x} \underbrace{max}_{\lambda, \nu, \;\lambda_{i} \ge 0} L(x, \lambda, \nu) p=x minλ,ν,λi0 maxL(x,λ,ν)
= m i n ⏟ x    θ P ( x ) = \underbrace{min}_{x} \; \theta_{P}(x) =x minθP(x)
等式右边的含义是先固定住变量 x x x ,将其看成常数,让拉格朗日函数对乘子变量 λ ,    ν \lambda, \; \nu λ,ν 求最大值。消掉这两组变量之后,再对变量 x x x 求最小值。为了简化表述,定义如下最大化问题:
θ P ( x ) = m a x ⏟ λ , ν ,    λ i ≥ 0 L ( x , λ , ν ) \theta_{P}(x) = \underbrace{max}_{\lambda, \nu, \;\lambda_{i} \ge 0} L(x, \lambda, \nu) θP(x)=λ,ν,λi0 maxL(x,λ,ν)
这是一个对乘子变量求最大值的问题,将 x x x 看成常数。这样原问题被转化为先对乘子变量求最大值,再对 x x x 求最小值。这个原问题和我们要求解的最小化问题有同样的解,如果 x x x 违反了等式或不等式约束,上面问题的最优解是无穷大,因此不可能是问题的解。如果 x x x 满足等式和不等式约束,上面的问题的最优解就是 f ( x ) f(x) f(x) ,因此二者等价。通过这样的构造,将带约束条件的问题转化成对 x x x 没有约束的问题

接下来定义对偶问题与其最优解:
d ∗ = m a x ⏟ λ , ν ,    λ i ≥ 0 m i n ⏟ x L ( x , λ , ν ) = m a x ⏟ λ , ν ,    λ i ≥ 0 θ D ( λ , ν ) d^{*} = \underbrace{max}_{\lambda, \nu, \;\lambda_{i} \ge 0} \underbrace{min}_{x} L(x, \lambda, \nu) = \underbrace{max}_{\lambda, \nu, \;\lambda_{i} \ge 0} \theta_{D}(\lambda, \nu) d=λ,ν,λi0 maxx minL(x,λ,ν)=λ,ν,λi0 maxθD(λ,ν)
其中:
θ D ( λ , ν ) = m i n ⏟ x L ( x , λ , ν ) \theta_{D}(\lambda, \nu) = \underbrace{min}_{x} L(x, \lambda, \nu) θD(λ,ν)=x minL(x,λ,ν)
和上面的做法相反,这里是先固定拉格朗日乘子,调整 x x x 让拉格朗日函数对 x x x 求极小值;然后再调整拉格朗日乘子对函数求极大值。

原问题和对偶问题只是改变了求极大值和极小值的顺序,每次操控的变量是一样的。如果原问题和对偶问题都存在最优解,则对偶问题的最优值不大于原问题的最优值,即:
d ∗ = m a x ⏟ λ , ν ,    λ i ≥ 0 m i n ⏟ x L ( x , λ , ν ) ≤ m i n ⏟ x m a x ⏟ λ , ν ,    λ i ≥ 0 L ( x , λ , ν ) = p ∗ d^{*} = \underbrace{max}_{\lambda, \nu, \;\lambda_{i} \ge 0} \underbrace{min}_{x} L(x, \lambda, \nu) \le \underbrace{min}_{x} \underbrace{max}_{\lambda, \nu, \;\lambda_{i} \ge 0} L(x, \lambda, \nu) = p^{*} d=λ,ν,λi0 maxx minL(x,λ,ν)x minλ,ν,λi0 maxL(x,λ,ν)=p
这种关系被称为弱对偶,原问题最优值和对偶问题最优值的差 p ∗ − d ∗ p^{*} - d^{*} pd 称为对偶间隙如果原问题和对偶问题有相同的最优解,我们就可以把求解原问题转化为求解对偶问题,这称为强对偶。强对偶成立的一种前提条件是Slater条件

Slater条件指出,一个凸优化问题如果存在一个候选 x x x 使得所有不等式约束都严格满足,即对于所有的 i i i 都有 g i ( x ) < 0 g_i(x) \lt 0 gi(x)<0 不等式不取等号。则存在 x ∗ ,    λ ∗ ,    ν ∗ x^{*}, \; \lambda^{*}, \; \nu^{*} x,λ,ν 使得它们分别为原问题和对偶问题的最优解,并且:
p ∗ = d ∗ = L ( x ∗ , λ ∗ , ν ∗ ) p^{*} = d^{*} = L(x^{*}, \lambda^{*}, \nu^{*}) p=d=L(x,λ,ν)
Slater条件是强对偶成立的充分条件而不是必要条件。强对偶的意义在于:我们可以将求原问题转化为求对偶问题,有些时候对偶问题比原问题更容易求解。强对偶只是将原问题转化成对偶问题,而这个对偶问题怎么求解则是另外一个问题。

二、线性可分的情况

首先我们来看最简单的情况,线性可分的SVM。对于二分类问题,线性分类器用一个超平面将两类样本分开,对于二维平面,这个超平面是一条直线。线性分类器的判别函数为:
s i g n ( w T x + b ) sign(w^Tx + b) sign(wTx+b)
其中, w w w 为权重向量, b b b 为偏置项,是一个标量。一般情况下,给定一组训练样本可以得到不止一个线性分类器,下图就是一个例子:
222
上面的两个线性分类器都可以将两类样本分开,既然有不止一个可行的线性分类器,那么如何评估哪个分类器是最好的?SVM的目标是寻找一个分类超平面,它不仅能正确的分类每一个样本,并且要使得每一类样本中距离超平面最近的样本到超平面的距离尽可能远

给定一批训练样本,假设样本的特征向量为 x x x ,类别标签为 y y y ,取值为 + 1 +1 +1 或者 − 1 -1 1 ,分别代表正样本和负样本。SVM为这些样本寻找一个最优分类超平面,其方程为:
w T x + b = 0 w^Tx + b = 0 wTx+b=0
首先要保证每个样本都被正确分类。对于正样本有:
w T x + b ≥ 0 w^Tx + b \ge 0 wTx+b0
对于负样本有:
w T x + b < 0 w^Tx + b \lt 0 wTx+b<0
由于正样本的的类别标签为 + 1 +1 +1,负样本的类别标签为 − 1 -1 1 ,可以统一写成如下不等式约束:
y i ( w T x i + b ) ≥ 0 y_i (w^Tx_i + b) \ge 0 yi(wTxi+b)0
第二个要求是超平面离两类样本的距离要尽可能大。根据解析几何中点到平面的距离公式,每个样本点离分类超平面的距离为:
d = ∣ w T x i + b ∣ ∣ ∣ w ∣ ∣ d = \frac{|w^Tx_i + b|}{||w||} d=wwTxi+b
其中:
∣ ∣ w ∣ ∣ = w T w ||w|| = \sqrt{w^Tw} w=wTw
是向量的 L 2 L2 L2 范数。上面的分类超平面方程有冗余,如果将方程两边都乘以不等于 0 0 0 的常数,还是同一个超平面。利用这个特点可以简化问题的表述。对 w w w b b b 加上如下约束:
m i n ⏟ i    ∣ w T x i + b ∣ = 1 \underbrace{min}_i \; |w^Tx_i + b| = 1 i minwTxi+b=1
即离超平面最近的正、负样本代入超平面方程之后绝对值为 1 1 1 。这样可以消掉这个冗余,同时简化了点到平面距离的计算公式。对分类超平面的约束变成:
y i ( w T x i + b ) ≥ 1 y_i (w^Tx_i + b) \ge 1 yi(wTxi+b)1
这是上面那个不等式约束的加强版。分类超平面与两类样本之间的间隔为:
d ( w , b ) = m i n ⏟ x i ,    y i = − 1 d ( w , b ; x i ) + m i n ⏟ x i ,    y i = 1 d ( w , b ; x i ) d(w, b) = \underbrace{min}_{x_i, \; y_i=-1} d(w, b;x^{i}) + \underbrace{min}_{x_i, \; y_i=1} d(w, b;x^{i}) d(w,b)=xi,yi=1 mind(w,b;xi)+xi,yi=1 mind(w,b;xi)
= m i n ⏟ x i ,    y i = − 1 ∣ w T x i + b ∣ ∣ ∣ w ∣ ∣ + m i n ⏟ x i ,    y i = 1 ∣ w T x i + b ∣ ∣ ∣ w ∣ ∣ = \underbrace{min}_{x_i, \; y_i=-1} \frac{|w^Tx_i + b|}{||w||} + \underbrace{min}_{x_i, \; y_i=1} \frac{|w^Tx_i + b|}{||w||} =xi,yi=1 minwwTxi+b+xi,yi=1 minwwTxi+b
= 1 ∣ ∣ w ∣ ∣ ( m i n ⏟ x i ,    y i = − 1 ∣ w T x i + b ∣ + m i n ⏟ x i ,    y i = 1 ∣ w T x i + b ∣ ) = \frac{1}{||w||} \big(\underbrace{min}_{x_i, \; y_i=-1} |w^Tx_i + b| + \underbrace{min}_{x_i, \; y_i=1} |w^Tx_i + b|\big) =w1(xi,yi=1 minwTxi+b+xi,yi=1 minwTxi+b)
= 2 ∣ ∣ w ∣ ∣ = \frac{2}{||w||} =w2
目标是使得这个间隔最大化,这等价于最小化下面的函数:
1 2 ∣ ∣ w ∣ ∣ 2 \frac{1}{2} ||w||^2 21w2
带上前面定义约束条件之后优化问题可以写成:
{ m i n    1 2 w T w y i ( w T x i + b ) ≥ 1 \begin{cases} min \; \frac{1}{2} w^Tw \\ y_i (w^Tx_i + b) \ge 1 \end{cases} {min21wTwyi(wTxi+b)1
下图是线性可分的SVM示意图:
333

三、线性不可分的情况

线性可分的SVM不具有太多的实用价值,因为现实问题中样本一般都不是线性可分的,接下来我们将它进行扩展,得到能够解决线性不可分问题的模型。为了处理这个问题,当线性不可分时通过加上松弛变量和惩罚因子对错误分类的样本进行惩罚,可以得到如下最优化问题:
{ m i n    1 2 w T w + C ∑ i = 1 l ξ i y i ( w T x i + b ) ≥ 1 − ξ i ξ i ≥ 0 , i = 1 , 2 , . . . , l \begin{cases} min \; \frac{1}{2} w^Tw + C \sum_{i=1}^l \xi_i \\ y_i (w^Tx_i + b) \ge 1- \xi_i \\ \xi_i \ge 0, \quad i = 1, 2, ..., l \end{cases} min21wTw+Ci=1lξiyi(wTxi+b)1ξiξi0,i=1,2,...,l
其中 ξ i \xi_i ξi 是松弛变量,如果它不为 0 0 0 ,表示样本突破了不等式约束条件。 C C C 为惩罚因子,是人工设定的大于 0 0 0 的参数,用来对突破了不等式约束条件的样本进行惩罚。可以证明这个问题是凸优化问题,因此可以保证求得全局最优解。
另外,上述问题是满足Slater条件的。如果令 w = 0 ,    b = 0 ,    ξ i = 2 w=0,\; b=0,\; \xi_i=2 w=0,b=0,ξi=2
则有:
y i ( w T x i + b ) = 0 > 1 − ξ i = 1 − 2 = − 1 y_i (w^Tx_i + b) = 0 \gt 1-\xi_i = 1-2 = -1 yi(wTxi+b)=0>1ξi=12=1
不等式条件严格满足,因此强对偶条件成立,原问题和对偶问题有相同的最优解。因此可以转化成对偶问题求解,这样做的原因是原问题的不等式约束太多太复杂,不易于求解。

四、对偶问题

下面介绍如何将原问题转化成对偶问题。首先将上面最优化问题的等式和不等式约束方程写成标准形式:
y i ( w T x i + b ) ≥ 1 − ξ i ⇒ − ( y i ( w T x i + b ) − 1 + ξ i ) ≤ 0 ξ i ≥ 0 ⇒ − ξ i ≤ 0 y_i(w^Tx_i + b) \ge 1 - \xi_i \Rightarrow -\big(y_i(w^Tx_i + b)-1+\xi_i \big) \le 0 \\ \xi_i \ge 0 \Rightarrow -\xi_i \le 0 yi(wTxi+b)1ξi(yi(wTxi+b)1+ξi)0ξi0ξi0
然后构造拉格朗日乘子函数:
L ( w , b , α , ξ , β ) = 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 l ξ i − ∑ i = 1 l α i ( y i ( w T x i + b ) − 1 + ξ i ) − ∑ i = 1 l β i ξ i L(w, b, \alpha, \xi, \beta) = \frac{1}{2}||w||^2 + C\sum_{i=1}^l \xi_i - \sum_{i=1}^l \alpha_i \big(y_i(w^Tx_i + b)-1+\xi_i \big) - \sum_{i=1}^l \beta_i\xi_i L(w,b,α,ξ,β)=21w2+Ci=1lξii=1lαi(yi(wTxi+b)1+ξi)i=1lβiξi
其中 α ,    β \alpha, \; \beta α,β 是拉格朗日乘子。转换成对偶问题的具体做法是先固定住这两组乘子变量,对 w ,    b ,    ξ w, \; b, \; \xi w,b,ξ 求偏导数并令它们为 0 0 0,得到如下方程组:
{ ∂ L ∂ b = 0 ⇒ ∑ i = 1 l α i y i = 0 ∇ ξ L = 0 ⇒ α i + β i = C ∇ w L = 0 ⇒ w = ∑ i = 1 l α i y i x i \begin{cases} \frac{\partial{L}}{\partial{b}} = 0 \Rightarrow \sum_{i=1}^l \alpha_i y_i = 0 \\ \nabla_{\xi} L = 0 \Rightarrow \alpha_i + \beta_i = C \\ \nabla_w L = 0 \Rightarrow w = \sum_{i=1}^l \alpha_i y_i x_i \end{cases} bL=0i=1lαiyi=0ξL=0αi+βi=CwL=0w=i=1lαiyixi
将上面的这些结果代入拉格朗日函数中,消掉这些变量,得到关于乘子变量 α ,    β \alpha,\; \beta α,β 的函数,然后控制乘子变量,对函数取极大值:
m a x ⏟ α W ( α ) = m a x ⏟ α − 1 2 ∑ i = 1 l ∑ j = 1 l α i α j y i y j x i T x j + ∑ i = 1 l α k \underbrace{max}_{\alpha} W(\alpha) = \underbrace{max}_{\alpha} - \frac{1}{2}\sum_{i=1}^l \sum_{j=1}^l \alpha_i \alpha_j y_i y_j x_i^T x_j + \sum_{i=1}^l \alpha_k α maxW(α)=α max21i=1lj=1lαiαjyiyjxiTxj+i=1lαk
由于有等式约束 α i + β i = C \alpha_i + \beta_i = C αi+βi=C ,并且有不等式约束 β i ≥ 0 \beta_i \ge 0 βi0 ,因此有 α i ≤ C \alpha_i \le C αiC ,这等价于如下最优化问题:
{ m i n ⏟ α    1 2 ∑ i = 1 l ∑ j = 1 l α i α j y i y j x i T x j − ∑ i = 1 l α k 0 ≤ α i ≤ C ∑ j = 1 l α j y j = 0 \begin{cases} \underbrace{min}_{\alpha} \; \frac{1}{2}\sum_{i=1}^l \sum_{j=1}^l \alpha_i \alpha_j y_i y_j x_i^T x_j - \sum_{i=1}^l \alpha_k \\ 0 \le \alpha_i \le C \\ \sum_{j=1}^l \alpha_j y_j = 0 \end{cases} α min21i=1lj=1lαiαjyiyjxiTxji=1lαk0αiCj=1lαjyj=0
转化成对偶问题之后,不等式和等式约束都很简单,求解更为容易。可以证明,上面这个问题是也凸优化问题,可以保证求得全局最优解,将 w w w 的值代入超平面方程,最后的决策函数为:
s i g n ( α i y i x i T x + b ) sign(\alpha_i y_i x_i^T x + b) sign(αiyixiTx+b)
那些 α i ≠ 0 \alpha_i \neq 0 αi=0 的样本即为支持向量,下面是支持向量的示意图:
555

五、核函数

虽然加入了松弛变量和惩罚因子,但支持向量机还是一个线性模型,只是允许错分样本的存在,这从它的决策函数也可以看出来。接下来要介绍的核映射使得支持向量机成为非线性模型,决策边界不再是线性的超平面,而可以是形状非常复杂的曲面。

如果样本线性不可分,可以对特征向量进行映射将它转化到一般来说更高维的空间,使得在该空间中是线性可分的,这种方法在机器学习中被称为核技巧。核映射将特征向量变换到另外一个空间:
z = φ ( x ) z = \varphi(x) z=φ(x)
在对偶问题中计算的是两个样本向量之间的内积,因此映射后的向量在对偶问题中为:
z i T z j = φ ( x i ) T φ ( x j ) z_i^T z_j = \varphi(x_i)^T \varphi(x_j) ziTzj=φ(xi)Tφ(xj)
直接计算效率太低,而且不容易构造映射函数。如果映射函数选取得当,能够确保存在函数 K K K ,使得下面等式成立:
K ( x i , x j ) = K ( x i T x j ) = ϕ ( x i ) T ϕ ( x j ) K(x_i, x_j) = K(x_i^T x_j) = \phi(x_i)^T \phi(x_j) K(xi,xj)=K(xiTxj)=ϕ(xi)Tϕ(xj)
这样只需先对向量做内积然后用函数 K K K 进行变换,这等价于先对向量做核映射然后再做内积。在这里我们看到了求解对偶问题的另外一个好处,对偶问题中出现的是样本特征向量之间的内积,而核函数刚好作用于这种内积,替代对特征向量的核映射。满足上面条件的函数称为核函数,常用的核函数有以下几种:
666
核函数的精妙之处在于不用真的对特征向量做核映射,而是直接对特征向量的内积进行变换,而这种变换却等价于先对特征向量做核映射然后做内积。

为向量加上核映射后,要求解的最优化问题变为:
{ m i n ⏟ α    1 2 ∑ i = 1 l ∑ j = 1 l α i α j y i y j ϕ ( x i ) T ϕ ( x j ) − ∑ i = 1 l α k 0 ≤ α i ≤ C ∑ j = 1 l α j y j = 0 \begin{cases} \underbrace{min}_{\alpha} \; \frac{1}{2}\sum_{i=1}^l \sum_{j=1}^l \alpha_i \alpha_j y_i y_j \phi(x_i)^T \phi(x_j) - \sum_{i=1}^l \alpha_k \\ 0 \le \alpha_i \le C \\ \sum_{j=1}^l \alpha_j y_j = 0 \end{cases} α min21i=1lj=1lαiαjyiyjϕ(xi)Tϕ(xj)i=1lαk0αiCj=1lαjyj=0
根据核函数满足的等式条件,它等价于下面的问题:
{ m i n ⏟ α    1 2 ∑ i = 1 l ∑ j = 1 l α i α j y i y j K ( x i T x j ) − ∑ i = 1 l α k 0 ≤ α i ≤ C ∑ j = 1 l α j y j = 0 \begin{cases} \underbrace{min}_{\alpha} \; \frac{1}{2}\sum_{i=1}^l \sum_{j=1}^l \alpha_i \alpha_j y_i y_j K(x_i^T x_j) - \sum_{i=1}^l \alpha_k \\ 0 \le \alpha_i \le C \\ \sum_{j=1}^l \alpha_j y_j = 0 \end{cases} α min21i=1lj=1lαiαjyiyjK(xiTxj)i=1lαk0αiCj=1lαjyj=0
最后得到的分类判别函数为:
s i g n ( ∑ i = 1 l α i y i K ( x i T x ) + b ) sign \big(\sum_{i=1}^l \alpha_i y_i K(x_i^T x) + b \big) sign(i=1lαiyiK(xiTx)+b)
和不用核映射相比,只是求解的目标函数、最后的判定函数对特征向量的内积做了核函数变换。如果 K K K 是一个非线性函数,上面的决策函数则是非线性函数,此时SVM是非线性模型。当训练样本很多、支持向量的个数很大的时候,预测时的速度是一个问题,因此很多时候我们会使用线性支持向量机。

如果我们定义矩阵 Q Q Q ,其元素为:
Q i j = y i y j K ( x i T x j ) Q_{ij} = y_i y_j K(x_i^T x_j) Qij=yiyjK(xiTxj)
同时定义矩阵 K K K ,其元素为:
K i j = K ( x i T x j ) K_{ij} = K(x_i^T x_j) Kij=K(xiTxj)
对偶问题可以写成矩阵和向量的形式:
{ m i n ⏟ α    1 2 α T Q α − e T α 0 ≤ α i ≤ C ∑ j = 1 l α j y j = 0 \begin{cases} \underbrace{min}_{\alpha} \; \frac{1}{2}\alpha^T Q \alpha - e^T \alpha \\ 0 \le \alpha_i \le C \\ \sum_{j=1}^l \alpha_j y_j = 0 \end{cases} α min21αTQαeTα0αiCj=1lαjyj=0
可以证明,这个对偶问题同样是凸优化问题,这是由核函数的性质保证的,下图是使用高斯核的SVM对异或问题(线性不可分问题)的分类结果:
666
只要参数设置得当,使用高斯核的支持向量机确实能解决非线性分类问题,分类边界可以是非常复杂的曲线。

六、KKT条件

对于带等式和不等式约束的问题,在最优点处必须满足 K K T KKT KKT 条件,将 K K T KKT KKT 条件应用于SVM原问题的拉格朗日乘子函数,得到关于所有变量的方程,对于原问题中的两组不等式约束,根据 K K T KKT KKT 条件必须满足:
{ α i ( y i ( w T x i + b ) − 1 + ξ i ) = 0 , i = 1 , 2 , . . . , l β i ξ i = 0 , i = 1 , 2 , . . . , l \begin{cases} \alpha_i \big(y_i(w^Tx_i + b)-1+\xi_i \big) = 0, \quad i=1, 2, ..., l \\ \beta_i\xi_i = 0, \quad i=1, 2, ..., l \end{cases} {αi(yi(wTxi+b)1+ξi)=0,i=1,2,...,lβiξi=0,i=1,2,...,l
对于第一个方程,如果 α i > 0 \alpha_i \gt 0 αi>0 ,则必须有:
y i ( w T x i + b ) − 1 + ξ i = 0 y_i (w^Tx_i + b) -1 + \xi_i = 0 yi(wTxi+b)1+ξi=0
即:
y i ( w T x i + b ) = 1 − ξ i y_i (w^Tx_i + b) =1 - \xi_i yi(wTxi+b)=1ξi
而由于 ξ i ≥ 0 \xi_i \ge 0 ξi0 ,因此必定有:
y i ( w T x i + b ) ≤ 1 y_i (w^Tx_i + b) \le 1 yi(wTxi+b)1
再来看第二种情况:如果 α i = 0 \alpha_i = 0 αi=0 ,则对:
y i ( w T x i + b ) − 1 + ξ i = 0 y_i (w^Tx_i + b) -1 + \xi_i = 0 yi(wTxi+b)1+ξi=0
的值没有约束。
由于有 α i + β i = C \alpha_i + \beta_i =C αi+βi=C 的约束,因此 β i = C \beta_i = C βi=C ;又因为 β i ξ i = 0 \beta_i \xi_i = 0 βiξi=0 的限制,如果 β i > 0 \beta_i \gt 0 βi>0 ,则必须有 ξ i = 0 \xi_i = 0 ξi=0 。由于原问题中有约束条件:
y i ( w T x i + b ) ≥ 1 − ξ i y_i (w^Tx_i + b) \ge 1 - \xi_i yi(wTxi+b)1ξi
而由于 ξ i = 0 \xi_i = 0 ξi=0 ,因此有:
y i ( w T x i + b ) ≥ 1 y_i (w^Tx_i + b) \ge 1 yi(wTxi+b)1
对于 α i > 0 \alpha_i \gt 0 αi>0 的情况,我们又可以细分为 α i < C \alpha_i \lt C αi<C α i = C \alpha_i = C αi=C 。如果 α i < C \alpha_i \lt C αi<C ,由于有 α i + β i = C \alpha_i + \beta_i =C αi+βi=C 的约束,因此有 β i > 0 \beta_i \gt 0 βi>0 ;因为有 β i ξ i = 0 \beta_i \xi_i = 0 βiξi=0 的约束,因此 ξ i = 0 \xi_i = 0 ξi=0 。不等式约束:
y i ( w T x i + b ) ≥ 1 − ξ i y_i (w^Tx_i + b) \ge 1 - \xi_i yi(wTxi+b)1ξi
变为:
y i ( w T x i + b ) ≥ 1 y_i (w^Tx_i + b) \ge 1 yi(wTxi+b)1
由于 0 < α i < C 0 \lt \alpha_i \lt C 0<αi<C 时,既要满足:
y i ( w T x i + b ) ≤ 1 y_i (w^Tx_i + b) \le 1 yi(wTxi+b)1
又要满足:
y i ( w T x i + b ) ≥ 1 y_i (w^Tx_i + b) \ge 1 yi(wTxi+b)1
因此有:
y i ( w T x i + b ) = 1 y_i (w^Tx_i + b) = 1 yi(wTxi+b)=1
将三种情况合并起来,在最优点处,所有的样本都必须满足:
{ α i = 0 ⇒ y i ( w T x i + b ) ≥ 1 0 < α i < C ⇒ y i ( w T x i + b ) = 1 α i = C ⇒ y i ( w T x i + b ) ≤ 1 \begin{cases} \alpha_i = 0 \Rightarrow y_i (w^Tx_i + b) \ge 1 \\ 0 \lt \alpha_i \lt C \Rightarrow y_i (w^Tx_i + b) = 1 \\ \alpha_i = C \Rightarrow y_i (w^Tx_i + b) \le 1 \end{cases} αi=0yi(wTxi+b)10<αi<Cyi(wTxi+b)=1αi=Cyi(wTxi+b)1
上面第一种情况对应的是自由变量即非支持向量,第二种情况对应的是支持向量,第三种情况对应的是违反不等式约束的样本。在后面的求解算法中,会应用此条件来选择优化变量。

七、SMO算法

前面我们给出了SVM的对偶问题,但并没有说明对偶问题怎么求解。由于矩阵 Q Q Q 的规模和样本数相等,当训练样本数很大的时候,这个矩阵的规模很大,求解二次规划问题的经典算法将会遇到性能问题。下面将介绍SVM最优化问题的高效求解算法-经典的SMO算法。

SMO算法由Platt等人在1998年提出,是求解SVM对偶问题的高效算法。这个算法的思路是每次在优化变量中挑出两个分量进行优化,而让其他分量固定,这样才能保证满足等式约束条件,这是一种分治法的思想。

下面先给出对于这两个变量的优化问题(称为子问题)的求解方法。假设选取的两个分量为 α i ,    α j \alpha_i, \; \alpha_j αi,αj ,其他分量都固定即当成常数。由于
y i y i = 1 y_i y_i = 1 yiyi=1
以及
y j y j = 1 y_j y_j = 1 yjyj=1
对这两个变量的目标函数可以写成:
f ( α i , α j ) = 1 2 K i i α i 2 + 1 2 K j j α i 2 + s K i j α i α j + y i ν i α i + y j ν j α j − α i − α j + c f(\alpha_i, \alpha_j) = \frac{1}{2} K_{ii} \alpha_i^2 + \frac{1}{2} K_{jj} \alpha_i^2 + sK_{ij} \alpha_i \alpha_j + y_i \nu_i \alpha_i + y_j \nu_j \alpha_j - \alpha_i - \alpha_j + c f(αi,αj)=21Kiiαi2+21Kjjαi2+sKijαiαj+yiνiαi+yjνjαjαiαj+c
其中 c c c 是一个常数。前面的二次项很容易计算出来,一次项要复杂一些,其中:
{ s = y i y j ν i = ∑ k = 1 , k ≠ i , k ≠ j l y k α k ∗ K i k \begin{cases} s = y_i y_j \\ \nu_i = \sum_{k=1, k\neq i, k\neq j}^l y_k \alpha_k^{*} K_{ik} \end{cases} {s=yiyjνi=k=1,k=i,k=jlykαkKik
这里的变量 α ∗ \alpha^{*} α 为变量 α \alpha α 在上一轮迭代后的值。上面的目标函数是一个两变量的二次函数,我们可以直接给出最小值的解析解(公式解),只要你学过初中数学,都能理解这个方法。这个问题的约束条件为:
{ 0 ≤ α i ≤ C 0 ≤ α j ≤ C y i α i + y j α j = − ∑ k = 1 , k ≠ i , k ≠ j y k α k = ξ \begin{cases} 0 \le \alpha_i \le C \\ 0 \le \alpha_j \le C \\ y_i \alpha_i + y_j \alpha_j = - \sum_{k=1, k\neq i, k \neq j} y_k \alpha_k = \xi \end{cases} 0αiC0αjCyiαi+yjαj=k=1,k=i,k=jykαk=ξ
前面两个不等式约束构成了一个矩形,最后一个等式约束是一条直线。由于 y i ,    y j y_i, \; y_j yi,yj 的取值只能为 + 1 +1 +1 或者 − 1 -1 1 ,如果它们异号,等式约束为 α i − α j = ξ \alpha_i - \alpha_j = \xi αiαj=ξ
它确定的可行域是一条斜率为 1 1 1 的直线段。因为 α i ,    α j \alpha_i, \; \alpha_j αi,αj 要满足约束条件 0 ≤ α i ≤ C 0 \le \alpha_i \le C 0αiC 0 ≤ α j ≤ C 0 \le \alpha_j \le C 0αjC ,它们的可行域如下图所示:
777
上图中的两条直线分别对应于 y i y_i yi + 1 +1 +1 − 1 -1 1 的情况,如果是上面那条直线,则 α j \alpha_j αj 的取值范围为 [ − ξ ,    C ] [-\xi, \; C] [ξ,C] 。如果是下面的那条直线,则为 [ 0 ,    C − ξ ] [0, \; C-\xi] [0,Cξ]
对于这两种情况 α j \alpha_j αj 的下界和上界可以统一写成如下形式:
{ L = m a x ( 0 , α j − α i ) H = m i n ( C , C + α j − α i ) \begin{cases} L = max(0, \alpha_j - \alpha_i) \\ H = min(C, C+\alpha_j - \alpha_i) \end{cases} {L=max(0,αjαi)H=min(C,C+αjαi)
下边界是直线和 x x x 轴交点的 x x x 坐标以及 0 0 0 的较大值;上边界是直线和 x x x 轴的交点的 x x x 坐标和 C C C 的较小值。

再来看第二种情况。如果 y i ,    y j y_i, \; y_j yi,yj 同号,等式约束为 y i + y j = ξ y_i + y_j = \xi yi+yj=ξ
此时的下界和上界为:
{ L = m a x ( 0 , α j + α i − C ) H = m i n ( C , α j + α i ) \begin{cases} L = max(0, \alpha_j + \alpha_i -C) \\ H = min(C, \alpha_j + \alpha_i) \end{cases} {L=max(0,αj+αiC)H=min(C,αj+αi)
这种情况如下图所示:
888
利用这两个变量的等式约束条件,可以消掉 α i \alpha_i αi ,只剩下一个变量 α j \alpha_j αj ,目标函数是它的二次函数。我们可以直接求得这个二次函数的极值,假设不考虑约束条件得到的极值点为 α j n e w ,    u n c l i p p e d \alpha_j^{new, \; unclipped} αjnew,unclipped ,则最终的极值点为:
{ H α j n e w ,    u n c l i p p e d > H α j n e w ,    u n c l i p p e d L ≤ α j n e w ,    u n c l i p p e d ≤ H L α j n e w ,    u n c l i p p e d < L \begin{cases} H & \alpha_j^{new, \; unclipped} \gt H\\ \alpha_j^{new, \; unclipped} & L \le \alpha_j^{new, \; unclipped} \le H \\ L & \alpha_j^{new, \; unclipped} \lt L \end{cases} Hαjnew,unclippedLαjnew,unclipped>HLαjnew,unclippedHαjnew,unclipped<L
这三种情况如下图所示:
999
上图中第一种情况是抛物线的最小值点在 [ L , H ] [L,H] [L,H] 中;第二种情况是抛物线的最小值点大于 H H H ,被截断为 H H H ;第三种情况是小于 L L L,被截断为 L L L

下面我们来计算不考虑截断时的函数极值。为了避免分 − 1 -1 1 + 1 +1 +1 两种情况,我们将上面的等式约束两边同乘以 y i y_i yi 有:
α i + y i y j α j = y i ξ \alpha_i + y_i y_j \alpha_j = y_i \xi αi+yiyjαj=yiξ
变形后得到:
α i = y i ξ − y i y j α j \alpha_i = y_i \xi - y_i y_j \alpha_j αi=yiξyiyjαj
为了表述简单,令 w = y i ξ w = y_i \xi w=yiξ ,将上面方程代入目标函数中消掉 α i \alpha_i αi ,有:
1 2 K i i ( w − s α j ) 2 + 1 2 K j j α j 2 + s K i j ( w − s α j ) α j + y i ν i ( w − s α j ) + y j ν j α j − ( w − s α j ) − α j + c \frac{1}{2}K_{ii} (w - s\alpha_j)^2 + \frac{1}{2}K_{jj} \alpha_j^2 +sK_{ij} (w - s\alpha_j)\alpha_j + y_i \nu_i (w - s\alpha_j) + y_j \nu_j \alpha_j - (w - s\alpha_j) - \alpha_j + c 21Kii(wsαj)2+21Kjjαj2+sKij(wsαj)αj+yiνi(wsαj)+yjνjαj(wsαj)αj+c
对自变量 α j \alpha_j αj 求导并令导数为 0 0 0,得:
K i i ( w − s α j ) ( − s ) + K j j α j + s K i j ( w − 2 s α j ) − s y i ν i + y j ν j + s − 1 = 0 K_{ii}(w-s\alpha_j)(-s) + K_{jj} \alpha_j + sK_{ij} (w - 2 s \alpha_j) - sy_i\nu_i + y_j\nu_j + s -1 = 0 Kii(wsαj)(s)+Kjjαj+sKij(w2sαj)syiνi+yjνj+s1=0
而:
s y i ν i = y i y j y i ν i = y j ν i sy_i\nu_i = y_iy_jy_i\nu_i = y_j\nu_i syiνi=yiyjyiνi=yjνi
化简得:
( K i i + K j j − 2 K i j ) α j − s w K i i − s w K i j − y i ν i + y j ν j + s − 1 = 0 (K_{ii} + K_{jj} -2K_{ij})\alpha_j - swK_{ii} -swK_{ij} - y_i\nu_i + y_j\nu_j +s -1 = 0 (Kii+Kjj2Kij)αjswKiiswKijyiνi+yjνj+s1=0
即:
( K i i + K j j − 2 K i j ) α j = s w ( K i i + K i j ) + y i ν i − y j ν j + 1 − s (K_{ii} + K_{jj} -2K_{ij})\alpha_j = sw(K_{ii} + K_{ij}) + y_i\nu_i - y_j\nu_j +1 - s (Kii+Kjj2Kij)αj=sw(Kii+Kij)+yiνiyjνj+1s
w w w ν \nu ν 代入,化简得:
( K i i + K j j − 2 K i j ) α j = α j ∗ ( K i i + K j j − 2 K i j ) + y j ( μ i − μ j + y j − y i ) (K_{ii} + K_{jj} -2K_{ij})\alpha_j = \alpha_j^{*} (K_{ii} + K_{jj} -2K_{ij}) + y_j (\mu_i - \mu_j + y_j - y_i) (Kii+Kjj2Kij)αj=αj(Kii+Kjj2Kij)+yj(μiμj+yjyi)
如果令:
η = K i i + K j j − 2 K i j \eta = K_{ii} + K_{jj} -2K_{ij} η=Kii+Kjj2Kij
上式两边同时除以 η \eta η ,可以得到:
α j n e w = α j + y i ( E i − E j ) η \alpha_j^{new} = \alpha_j + \frac{y_i(E_i - E_j)}{\eta} αjnew=αj+ηyi(EiEj)
其中 E i = μ i − y i E_i = \mu_i - y_i Ei=μiyi ,考虑前面推导过的约束:
α j n e w = α j + y i ( E i − E j ) η \alpha_j^{new} = \alpha_j + \frac{y_i(E_i - E_j)}{\eta} αjnew=αj+ηyi(EiEj)
在求得 α j \alpha_j αj 之后,根据等式约束条件我们就可以求得另外一个变量的值:
α i n e w = α i + s ( α j − α j n e w , c l i p p e d ) \alpha_i^{new} = \alpha_i + s(\alpha_j - \alpha_j^{new, clipped}) αinew=αi+s(αjαjnew,clipped)
目标函数的二阶导数为 η \eta η ,前面假设二阶导数 η > 0 \eta \gt 0 η>0 ,从而保证目标函数是凸函数即开口向上的抛物线,有极小值。如果 η < 0 \eta \lt 0 η<0 或者 η = 0 \eta = 0 η=0 ,该怎么处理?对于线性核或正定核函数,可以证明矩阵 K K K 的任意一个上述子问题对应的二阶子矩阵半正定,因此必定有 η ≥ 0 \eta \ge 0 η0 ,无论本次迭代时 α i ,    α j \alpha_i, \; \alpha_j αi,αj 的初始值是多少,通过上面的子问题求解算法得到是在可行域里的最小值,因此每次求解更新这两个变量的值之后,都能保证目标函数值小于或者等于初始值,即函数值下降。

上面已经解决了两个变量问题的求解,接下来说明怎么选择这两个变量,最简单的是使用启发式规则。第一个变量的选择方法是在训练样本中选取违反KKT条件最严重的那个样本。在前面我们推导过,在最优点处训练样本是否满足KKT条件的判据是:
{ α i = 0 ⇔ y i g ( x i ) ≥ 1 0 < α i < C ⇔ y i g ( x i ) = 1 α i = C ⇔ y i g ( x i ) ≤ 1 \begin{cases} \alpha_i = 0 \Leftrightarrow y_i g(x_i) \ge 1 \\ 0 \lt \alpha_i \lt C \Leftrightarrow y_i g(x_i) =1 \\ \alpha_i = C \Leftrightarrow y_i g(x_i) \le 1 \end{cases} αi=0yig(xi)10<αi<Cyig(xi)=1αi=Cyig(xi)1
其中:
g ( x i ) = ∑ j = 1 l α j y j K ( x i , x j ) + b g(x_i) = \sum_{j=1}^l \alpha_j y_j K(x_i, x_j) + b g(xi)=j=1lαjyjK(xi,xj)+b
首先遍历所有满足约束条件 0 < α i < C 0 \lt \alpha_i \lt C 0<αi<C 的样本点,即位于间隔边界上的支持向量点,检验它们是否满足KKT条件。如果这些样本都满足KKT条件,则遍历整个训练样本集,判断它们是否满足KKT条件,直到找到一个违反KKT条件的变量 α i \alpha_i αi ,找到了第一个变量之后,接下来寻找 α j \alpha_j αj ,选择的标准是使得它有足够大的变化。根据前面的推导我们知道 α j n e w \alpha_j^{new} αjnew 依赖于 ∣ E i − E j ∣ |E_i - E_j| EiEj ,因此,我们选择使得 ∣ E i − E j ∣ |E_i - E_j| EiEj 最大的 α j \alpha_j αj 。由于 α i \alpha_i αi 已经选出来了,因此 E i E_i Ei 已经知道了。如果 E i > 0 E_i \gt 0 Ei>0 则选择最小的 E j E_j Ej ,否则选择最大的 E j E_j Ej

至此,我们给出了支持向量机求解的问题的完整推导过程,通过这张图,你将能更容易地理解这个算法。

参考文献

1、用一张图理解SVM的脉络
2、关于如何在markdown文本中书写数学符号和公式(Latex)
3、线性代数之矩阵微积分

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值