Chapter 6 SVM

#第六章 支持向量机


6.1 间隔与支持向量机

分类学习最基本的想法就是基于训练集D再样本空间中找到一个最鲁棒的划分超平面。它可用如下线性方程来描述:
w T x + b = 0 w^Tx+b=0
其中,w被称为法向量,可用于描述超平面的方向,b为位移项,决定超平面到原点的距离。显然这两项决定了划分超平面,可以证明样本空间中任意点 x \bf x 到超平面距离可写为:
r = w T x + b w r=\frac{|w^T\bf x+b|}{||w||}
若有超平面 ( w , b ) (w,b) 能将训练样本正确分类,那么距离该平面最近的几个训练样本点会使得
{ w T x i + b + 1 , y i = + 1 w T x i + b 1 , y i = 1 \begin{cases}w^Tx_i+b\geq +1,&y_i=+1\\ w^Tx_i+b\leq -1,&y_i=-1\end{cases}
那这样的几个训练样本点我们称其为“支持向量”,两个异类支持向量到超平面的距离之和称为"间隔"(margin): γ = 2 / w \gamma=2/||w||
为了找到间隔最大的划分超平面,也就是要求:
m a x w , b 2 w s . t . y i ( w T x i + b ) 1 , i = 1 , 2 , . . . , m max_{w,b} \quad\frac{2}{||w||}\\ s.t. y_i(w^T{\bf x_i}+b)\geq 1,i=1,2,...,m
上面涉及的最大化 w 1 ||w||^{-1} 等价于最小化 w 2 ||w||^{2} ,即:
(6.1) m i n w , b 1 2 w 2 s . t . y i ( w T x i + b ) 1 , i = 1 , 2 , . . . , m min_{w,b}\quad \frac{1}{2}{||w||^2}\\ s.t. y_i(w^T{\bf x_i}+b)\geq 1,i=1,2,...,m\tag{6.1}
这就是SVM的基本型

6.2 对偶问题

首先,我们要求(6.1)的话,这本身是一个凸优化的问题,显然能用现成的优化计算包求解,但还有更为高效的方法————拉格朗日乘子法,可得到其对偶问题:即对式(6.1)的每条约束添加一个拉格朗日乘子 α i 0 \alpha_i\geq0 (不等式约束),那么该问题的朗格朗日函数可写为:
(6.2) L ( w , b , α ) = 1 / 2 w 2 + i = 1 m α i ( 1 y i ( w T x i + b ) ) L(w,b,\alpha)=1/2||w||^2+\sum_{i=1}^m\alpha_i(1-y_i(w^Tx_i+b))\tag{6.2}
L ( w , b , α ) L(w,b,\alpha) 求偏导为0,最后可得出(6.1)的对偶问题(下6.3),求解(6.2)中的拉格朗日算子:
(6.3) m a x α     i = 1 m α i 1 / 2 i = 1 m j = 1 m α i α j y i y j x i T x j s . t i = 1 m α i y i = 0 , α i 0 , i = 1 , 2 , . . . , m max_\alpha\ \ \ \sum_{i=1}^m\alpha_i-1/2\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_jx_i^Tx_j\\ s.t \sum_{i=1}^m\alpha_iy_i=0,\\ \alpha_i\geq0,i=1,2,...,m\tag{6.3}
求解该式是一个二次规划问题,但鉴于实际处理时,有时候样本数过大,导致通用的求解二次规划算法如拉格朗日等方法并不适用,为了避免障碍,人们通过利用问题本身的特性,提出如SMO(Sequential Minimal Optimization) 等多种高效算法。

最终模型为: f ( x ) = w T x + b = i = 1 m α i y i x i T x + b f(x)=w^Tx+b=\sum_{i=1}^m\alpha_iy_ix_i^Tx+b
注意,由于(6.1)中有不等式约束,所以上述过程还须满足KKT(Karchur-Kuhn-Tucker)条件:
a l p h a i 0 ; y i f ( x i ) 1 0 ; α i ( y i f ( x i ) 1 ) = 0. alpha_i\geq0;\\ y_if(x_i)-1\geq0;\\ \alpha_i(y_if(x_i)-1)=0.
SMO基本思路:先选择两个变量 α i \alpha_i α j \alpha_j 并固定其他参数,这样,在初始化参数后,不断执行以下步骤:

  • 选取一对需更新的变量 α i α j \alpha_i和\alpha_j
  • 固定 α i α j \alpha_i和\alpha_j 以外的参数,求解(6.2)获得更新后的 α i α j \alpha_i和\alpha_j
    其中 α i \alpha_i α j \alpha_j 的选择方法是先选择违背KKT条件程度最大的变量,再选择使两变量间隔最大的第二个变量,这样的两个变量进行更新,带给目标函数值的变化会更大。

6.3 核函数

当原始样本空间并不存在超平面将其划分,那么我们就要考虑将样本从原始空间映射到一个更高维的特征空间,实际上,只要原始空间是有限维的,即属性数有限,那么一定存在一个高位特征空间使样本可分。令 ϕ ( x ) \phi(x) 表示将x映射后的特征向量,则测试对应的划分超平面所对应的模型为:
f ( x ) = w T ϕ ( x ) + b , f(x)=w^T\phi(x)+b,
其中,为确定w和b,类似于(6.1)的情况有对偶问题:
(6.4) m a x α i = 1 m α i 1 / 2 i = 1 m j = 1 m α i α j y i y j ϕ ( x i ) T ϕ ( x j ) s . t i = 1 m α i y i = 0 , α i 0 , i = 1 , 2 , . . . , m max_\alpha\sum_{i=1}^m\alpha_i-1/2\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_j\phi(x_i)^T\phi(x_j)\\ s.t \sum_{i=1}^m\alpha_iy_i=0,\\ \alpha_i\geq0,i=1,2,...,m\tag{6.4}
求解上式涉及到计算 ϕ ( x i ) T ϕ ( x j ) \phi(x_i)^T\phi(x_j) ,这是样本 x i x_i x j x_j 映射到特征空间之后的内积。但由于维数可能过高,甚至无穷维,我们需要再设想一个函数使得 x i x_i x j x_j 在特征空间的内积等于他们在原始样本空间中的函数结果。(这称为核技巧),即:
κ ( x i , x j ) = < ϕ ( x i ) , ϕ ( x j ) > = ϕ ( x i ) T ϕ ( x j ) \kappa(x_i,x_j)=<\phi(x_i),\phi(x_j)>=\phi(x_i)^T\phi(x_j)
则,可将(6.4)写成:
(6.4) m a x α i = 1 m α i 1 / 2 i = 1 m j = 1 m α i α j y i y j κ ( x i , x j ) s . t i = 1 m α i y i = 0 , α i 0 , i = 1 , 2 , . . . , m max_\alpha\sum_{i=1}^m\alpha_i-1/2\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_j\kappa(x_i,x_j)\\ s.t \sum_{i=1}^m\alpha_iy_i=0,\\ \alpha_i\geq0,i=1,2,...,m\tag{6.4}
求解后得出: f ( x ) = w T ϕ ( x ) + b = i = 1 m α i y i κ ( x , x i ) + b f(x)=w^T\phi(x)+b=\sum_{i=1}^m\alpha_iy_i\kappa(x,x_i)+b
这里的 κ ( . , . ) \kappa(.,.) 就是核函数。上面的最终模型也称为“支持向量展式”。
 
定理:令 χ \chi 为输入空间, κ ( . , . ) \kappa(.,.) 是定义在 χ × χ \chi\times\chi 上的对称矩阵,则 κ \kappa 是核函数当且仅当对于任意数据 D = { x 1 , x 2 , . . . , x m } D=\{x_1,x_2,...,x_m\} ,“核矩阵”K总是半正定的:
K = κ ( x 1 , x 1 ) κ ( x 1 , x j ) κ ( x 1 , x m ) κ ( x i , x 1 ) κ ( x i , x j ) κ ( x i , x m ) κ ( x m , x 1 ) κ ( x m , x j ) κ ( x m , x m ) K=\begin{vmatrix} \kappa(x_1,x_1)&\cdots&\kappa(x_1,x_j)&\cdots&\kappa(x_1,x_m)\\ \vdots&\ddots&\vdots&\ddots&\vdots\\ \kappa(x_i,x_1)&\cdots&\kappa(x_i,x_j)&\cdots&\kappa(x_i,x_m)\\ \vdots&\ddots&\vdots&\ddots&\vdots\\ \kappa(x_m,x_1)&\cdots&\kappa(x_m,x_j)&\cdots&\kappa(x_m,x_m) \end{vmatrix}
上面的定理表明,只要对称函数所对应的核矩阵半正定,他就能作为核函数使用。
而且,对于一个半正定核矩阵,你总能找到一个与之对应的映射 ϕ \phi ,换言之,任何一个核函数都隐式的定义了一个称为“再生核希尔伯特空间”(Reproducing Kernel Hilbert Space,简称RKHS)的特征空间。
常用的核函数:
表6.1 常用的核函数

名称 表达式 参数
线性核 κ ( x i , x j ) = x i T x j \kappa(x_i,x_j)=x_i^Tx_j
多项式核 κ ( x i , x j ) = ( x i T x j ) d \kappa(x_i,x_j)=(x_i^Tx_j)^d d 1 d\geq1 ,为多项式的次数
高斯(径向基)核 κ ( x i , x j ) = e x p ( x i T x j 2 2 σ 2 ) \kappa(x_i,x_j)=exp(-\frac{\|\|x_i^Tx_j\|\|^2}{2\sigma^2}) σ > 0 \sigma>0 为高斯核的带宽
拉普拉斯核 κ ( x i , x j ) = e x p ( x i T x j σ ) \kappa(x_i,x_j)=exp(-\frac{\|\|x_i^Tx_j\|\|}{\sigma}) σ > 0 \sigma>0
sigmoid核 κ ( x i , x j ) = t a n h ( β x i T x j + θ ) \kappa(x_i,x_j)=tanh(\beta x_i^Tx_j+\theta) t a n h tanh 为双曲正切函数, β > 0 \beta>0 , θ < 0 \theta<0

此外,核函数还可通过上述核函数的组合得到:

  • κ 1 \kappa_1 κ 2 \kappa_2 为核函数,则对于任意正数 γ 1 \gamma_1 γ 2 \gamma_2 ,其线性组合:
    γ 1 κ 1 + γ 2 κ 2 \gamma_1\kappa_1+\gamma_2\kappa_2
    也是核函数。
  • κ 1 \kappa_1 κ 2 \kappa_2 为核函数,则核函数的直积:
    κ 1 κ 2 = κ 1 ( x , z ) κ 2 ( x , z ) \kappa_1\bigotimes\kappa_2=\kappa_1(x,z)\kappa_2(x,z)
    也是核函数。
  • κ 1 \kappa_1 为核函数,则对于任意函数g(x):
    κ ( x , z ) = g ( x ) κ 1 ( x , z ) g ( z ) \kappa(x,z)=g(x)\kappa_1(x,z)g(z)
    也是核函数。

6.4 软间隔与正则化

软间隔是指允许某些样本不满足约束 y i ( w T x i + b ) 1 y_i(w^Tx_i+b)\geq1 .以避免难以找到合适的核函数或即使找到可以对应的核函数,也很难断定该划分结果没有过拟合。
当然,在最大化间隔的同时,不满足约束的样本应该尽可能少。于是优化目标可写为:
(6.5) m i n w , b    1 2 w 2 + C i = 1 m l 0 / 1 ( y i ( w T x i + b ) 1 ) , min_{w,b}\ \ \frac12||w||^2+C\sum_{i=1}^ml_{0/1}(y_i(w^Tx_i+b)-1),\tag{6.5}
其中C>0是一个常数, l 0 / 1 l_{0/1} 是"0/1损失函数"
l 0 / 1 = { 1 , i f   z < 0 ; 0 , o t h e r w i s e . l_{0/1}=\begin{cases} 1,& if\ z<0;\\ 0,& otherwise. \end{cases}
显然,当C无穷大,(6.5)式等价于(6.2),而当C为有限值时,式(6.5)会允许一些样本不满足约束。
但是,在最优化时, l 0 / 1 l_{0/1} 非凸非连续,难以求解。于是我们引入“替代损失函数”:
hinge损失: l h i n g e ( z ) = m a x ( 0 , 1 z ) ; l_{hinge}(z)=max(0,1-z);
指数损失(exponential loss): l e x p ( z ) = e x p ( z ) ; l_{exp}(z)=exp(-z);
对率损失(logistic loss): l l o g ( z ) = l o g ( 1 + e x p ( z ) ) . l_{log}(z)=log(1+exp(-z)).
 
若用hinge损失,则是(6.5)变为
(6.6) m i n w , b    1 2 w 2 + C i 1 m m a x ( 0 , 1 y i ( w T x i + b ) ) min_{w,b}\ \ \frac12||w||^2+C\sum_{i_1}^mmax(0,1-yi(w^Tx_i+b))\tag{6.6}
再引入松弛变量(slack variable) ξ i 0 \xi_i\geq0 ,可将(6.6)写为:
KaTeX parse error: No such environment: align at position 7: \begin{̲a̲l̲i̲g̲n̲}̲ min_{w,b,\xi_i…
这就是常用“软间隔SVM”
这里,松弛变量表示样本离群的程度,松弛变量越大,离群越远,松弛变量为零,则样本没有离群。因为松弛变量是非负的,因此样本的函数间隔可以比1小。函数间隔比1小的样本被叫做离群点,我们放弃了对离群点的精确分类,这对我们的分类器来说是种损失。但是放弃这些点也带来了好处,那就是超平面不必向这些点的方向移动,因而可以得到更大的几何间隔(在低维空间看来,分类边界也更平滑)。
 
显然,式(6.7)中每一个样本都有一个对应的松弛变量,用以表征该样本不满足约束 y i ( w T x i + b ) 1 y_i(w^Tx_i+b)\geq1 的程度,但是,与(6.1)相似,这仍是个二次规划问题,于是我们同样引入拉格朗日乘子法,令:
L ( w , b , α , ξ , μ ) = 1 2 w 2 + C i = 1 m ξ i + i = 1 m α i ( 1 ξ i y i ( w T x i + b ) ) i = 1 m μ i ξ i , L(w,b,\alpha,\xi,\mu)= \frac12||w||^2+C\sum_{i=1}^m\xi_i\\ +\sum_{i=1}^m\alpha_i(1-\xi_i-y_i(w^Tx_i+b))-\sum_{i=1}^m\mu_i\xi_i,
其中 α i 0 , μ i 0 \alpha_i\geq0,\mu_i\geq0 是拉格朗日乘子。
对偶问题为:
(6.8) m a x α i = 1 m α i 1 / 2 i = 1 m j = 1 m α i α j y i y j x i T x j s . t i = 1 m α i y i = 0 , C α i 0 , i = 1 , 2 , . . . , m max_\alpha\sum_{i=1}^m\alpha_i-1/2\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_jx_i^Tx_j\\ s.t \sum_{i=1}^m\alpha_iy_i=0,\\ C\geq\alpha_i\geq0,i=1,2,...,m\tag{6.8}
其KTT条件要求:
{ a l p h a i 0 μ i 0 ; y i f ( x i ) 1 + ξ i 0 ; α i ( y i f ( x i ) 1 + ξ i ) = 0 ; ξ i 0 , μ i ξ i = 0. \begin{cases} alpha_i\geq0,\mu_i\geq0;\\ y_if(x_i)-1+\xi_i\geq0;\\ \alpha_i(y_if(x_i)-1+\xi_i)=0;\\ \xi_i\geq0,\mu_i\xi_i=0. \end{cases}
 
其他替代损失函数如对率损失函数,其与对率回归的优化目标相近,通常情况下性能也相当,主要优势在于其输出具有自然的概率意义,即在给出预测标记时也给出了概率,当然SVM输出并不具有概率意义,所以还需要进行特殊处理。另外,对率损失函数是光滑的单调递减函数,其解依赖于较高的训练样本量。

6.5支持向量回归

对于回归问题,传统回归模型直接基于模型输出 f ( x ) f(x) 与真实输出y之间的差别来计算损失,要求 f ( x ) y f(x)与y 完全相同时,损失才为零。而SVR(Support Vector Regression)假设我们能容忍 f ( x ) f(x) 与y之间最多有 ϵ \epsilon 的偏差,即形式化SVR问题为:
m i n w , b    1 2 w 2 + C i = 1 m l ϵ ( f ( x i ) y i ) min_{w,b}\ \ \frac12||w||^2+C\sum_{i=1}^ml_\epsilon(f(x_i)-y_i)
其中C为正则化常数, l ϵ l_\epsilon ϵ \epsilon -不敏感损失函数:
(6.9) l ϵ ( z ) = { 0 , i f    z ϵ z ϵ , o t h e r w i s e . l_\epsilon(z)= \begin{cases}0,& if\ \ |z|\leq\epsilon\\ |z|-\epsilon,& otherwise.\tag{6.9} \end{cases}
引入松弛变量 ξ i \xi_i ξ i ^ \hat{\xi_i} ,(6.9)变为:
m i n w , b , ξ i , ξ i ^ 1 2 w 2 + C i = 1 m ( ξ i + ξ i ^ ) s . t .   f ( x i ) y i ϵ + ξ i , y i f ( x i ) ϵ + ξ i ^ , ξ i 0 , ξ i ^ 0 , i = 1 , 2 , . . . , m min_{w,b,\xi_i,\hat{\xi_i}}\frac12||w||^2+C\sum_{i=1}^m(\xi_i+\hat{\xi_i})\\ s.t.\ f(x_i)-y_i\leq\epsilon+\xi_i,\\ y_i-f(x_i)\leq\epsilon+\hat{\xi_i},\\ \xi_i\geq0,\hat{\xi_i}\geq0,i=1,2,...,m
然后同6.4中提出的,利用拉格朗日乘子法得到拉格朗日函数并求偏导为零以限定出一些条件,将条件带回原式,得到对偶问题加上KTT条件的约束,得出SVR的解:
f ( x ) = i = 1 m ( α ^ i α i ) x i T x + b f(x)=\sum_{i=1}^m(\hat{\alpha}_i-\alpha_i)x_i^Tx+b

6.6 核方法

表示定理:令 H \Bbb{H} 为核函数 κ \kappa 对应的再生核希伯尔特空间, h H ||h||_\Bbb{H} 表示 H \Bbb{H} 空间中关于h的范数,对于任意单调递增函数 Ω : [ 0 , ] R \Omega:[0,\infty] \mapsto\Bbb{R} 和任意非负损失函数 l : R m [ 0 , ] l:\Bbb{R}^m\mapsto[0,\infty] ,优化问题
m i n h H    F ( h ) = Ω ( h H ) + l ( h ( x 1 ) , h ( x 2 ) , . . . , h ( x m ) ) min_{h\in\Bbb H}\ \ F(h)=\Omega(||h||_\Bbb H)+l(h(x_1),h(x_2),...,h(x_m))
的解总写为:
h ( x ) = i = 1 m α i κ ( x , x i ) h^*(x)=\sum_{i=1}^m\alpha_i\kappa(x,x_i)
 
表示定理对损失函数没有限制,对正则化项 Ω \Omega 只要求单调递增,甚至不要求是凸函数。这就意味着对于一般的损失函数和正则化项,优化问题的最优解 h ( x ) h^*(x) 购课表示为核函数 κ ( x , x i ) \kappa(x,x_i) 的线性组合。
核方法:通过“核化”(即引入核函数)来将线性学习器拓展为非线性学习器。(本书以线性判别分析中引入核方法来举例)

猜你喜欢

转载自blog.csdn.net/qq_23129193/article/details/85068940