支持向量机原理及应用示例(一)

SVM(支持向量机)原理与示例(1)

支持向量机在做什么?

应用场合:给定一个线性可分的训练样本集 D = { ( x 1 ⃗ , y 1 ) , ( x 2 ⃗ , y 2 ) , . . . , ( x m ⃗ , y m ) } , y i ∈ { − 1 , + 1 } D=\{{(\vec{x_1},y_1),(\vec{x_2},y_2),...,(\vec{x_m},y_m)}\},y_i\in\{-1,+1\} D={(x1 ,y1),(x2 ,y2),...(xm ,ym)},yi{1,+1}则SVM分类学习算法的目的是找到一个超平面(Hyper plane),这个超平面可以把两类样本给分离开。
注意:我们首先讨论样本空间线性可分的问题,随后讨论样本空间近似线性可分,最后讨论样本空间线性不可分

第一个问题:超平面在哪里?

注意:我们首先讨论的仍然是样本空间线性可分的问题
Q:存在的超平面特别多,具体应该寻找哪一个呢?
A 1 A_1 A1:从抽象语言来描述,我们需要找到的超平面应该是在两类特征样本的“正中间”,这样它的容忍性最好,也更加鲁棒
A 2 A_2 A2:从数学语言来描述,我们先来定义一些东西
(1)超平面可以用下面的线性方程来表示 w T x + b = 0 , w^Tx+b=0, wTx+b=0,(2)样本空间中的任意一点 x ⃗ \vec{x} x 到超平面 ( w , b ) (w,b) (w,b)的距离可以写做 r = ∣ w T x + b = 0 ∣ ∥ w ∥ r=\frac{\begin{vmatrix}w^Tx+b=0\end{vmatrix}}{\begin{Vmatrix}w\end{Vmatrix}} r=wwTx+b=0

注:点到平面的距离 d = ∣ P A ⃗ ⋅ n ⃗ ∣ ∣ n ⃗ ∣ d=\frac{\begin{vmatrix}\vec{PA}·\vec{n}\end{vmatrix}}{\begin{vmatrix}\vec{n}\end{vmatrix}} d=n PA n 样本空间任意一点到超平面距离可由此公式推来,具体推导略,因为不重要!

(3)假设超平面 ( w , b ) (w,b) (w,b)可以将训练样本正确分类,则有若 y i = + 1 y_i=+1 yi=+1,则有 w T x i + b > 0 w^Tx_i+b>0 wTxi+b>0;若 y i = − 1 y_i=-1 yi=1,则有 w T x i + b < 0 w^Tx_i+b<0 wTxi+b<0.令 { w T x + b ≥ + 1 , y i = + 1 w T x + b ≤ − 1 , y i = − 1 \begin{cases}w^Tx+b\ge+1,\qquad y_i=+1\\ w^Tx+b\le-1,\qquad y_i=-1 \end{cases} {wTx+b+1,yi=+1wTx+b1,yi=1其中距离超平面最近的几个训练样本使得上式子的等号成立,这些样本称之为支持向量(support vector),两个异类支持向量到超平面的距离之和为 γ = 2 ∥ w ∥ . \gamma=\frac{2}{\begin{Vmatrix}w\end{Vmatrix}}. γ=w2.我们把这玩意叫做间隔(margin).

利用上面(2)中的距离公式和(3)里面提到的等式成立的条件来求,很容易的~水平:小学一年级

所以回到上面的话题来,我们想要按照抽象语言说的那样,这个超平面需要这个超平面的容忍性最好,正中间,鲁棒性最好,因为SVM的发明人Vapnik想到我把这两个异类支持向量到超平面的距离之和最大不就可以了吗?也就是要找到”最大间隔"。那我们具体怎么来做呢?

第二个问题:如何去寻找超平面呢?

注意:我们首先的还是讨论样本空间线性可分的问题

就是找到能够满足(3)中不等式组的 w w w b b b,使得(3)中的 γ \gamma γ最大,就可以得到一组优化问题,即 m a x w , b 2 ∥ w ∥ \underset{w,b}{max}\quad \frac{2}{\begin{Vmatrix}w\end{Vmatrix}} w,bmaxw2 s . t . y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , . . . , m . s.t.\quad y_i(w^Tx_i+b)\ge1,\quad i=1,2,...,m. s.t.yiwTxi+b)1,i=1,2,...,m.我们来修改一下,把它变成凸二次规划问题(Quadratic programming) m i n w , b 1 2 ∥ w ∥ 2 \underset{w,b}{min}\quad \frac{1}{2}\begin{Vmatrix}w\end{Vmatrix}^2 w,bmin21w2 s . t . y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , . . . , m s.t.\quad y_i(w^Tx_i+b)\ge1,\quad i=1,2,...,m s.t.yi(wTxi+b)1,i=1,2,...,m上面的式子就是支持向量机(Support Vector Machine,SVM)的基本型。(与后续的对偶问题对应)

二次规划问题是指,目标函数(Objective function)是二次项,限制条件是一次项,所以我们做了这样的修改,那么为什么要改成二次规划问题呢(凸优化)?是因为二次规划问题要么只有一个极值,要么无解,所以做了这样的改动。而且凸二次规划问题是有现成的计算包进行求解的,所以才需要这样去做。

第三个问题:更加高效地去求解凸二次规划的方法

注意:我们首先的依旧讨论样本空间线性可分的问题
Q: Vapnik想到应用拉格朗日对偶性,通过求解对偶问题(dual problem)得到原始问题(primal problem)的最优解。为什么可以呢?对偶问题和原始问题的关系是什么?又或者你可以去问对偶问题、原始问题是什么他们又和拉格朗日函数有什么关系?为什么利用一定要利用对偶问题去解决原始问题?同志们,带着这些问题你来学一下下面的东西,PS:我们要引入一个牛逼的东西了,叫做KKT条件,具体是什么呢?请您慢慢来看。//相关解答在这个问题最后去做一下个人理解的回答。

我们先来引入原始问题的定义,假设 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上连续可微的函数,考虑约束最优化问题 m i n x ∈ R n = f ( x ) \underset{x\in\R^n}{min}=f(x) xRnmin=f(x) s . t . c i ( x ) ≤ 0 , i = 1 , 2 , . . . , k s.t. \quad c_i(x)\le0,\quad i=1,2,...,k s.t.ci(x)0,i=1,2,...,k h j ( x ) = 0 , j = 1 , 2 , . . . , j h_j(x)=0,\quad j=1,2,...,j hj(x)=0,j=1,2,...,j
接下来我们补充一下高数上面讲到的拉格朗日函数(ps:多元函数的极值及求法那一章,我记得我考研的时候还考了)广义的拉格朗日函数可以定义为如下 L ( x , α , β ) = f ( x ) + ∑ i = 1 k α i c i ( x ) + ∑ j = 1 l β j h j ( x ) L(x,\alpha,\beta)=f(x)+\sum_{i=1}^{k}\alpha_ic_i(x)+\sum_{j=1}^{l}\beta_jh_j(x) L(x,α,β)=f(x)+i=1kαici(x)+j=1lβjhj(x)其中 α i , β i \alpha_i,\beta_i αi,βi拉格朗日乘子 α i ≥ 0 \alpha_i\ge0 αi0.

我们来考虑一个关于 x x x的函数的原问题的描述如下: θ P ( x ) = m a x α , β : α ≥ 0 L ( x , α , β ) \theta_P(x)=\underset{\alpha,\beta:\alpha\ge0}{max}L(x,\alpha,\beta) θP(x)=α,β:α0maxL(x,α,β)如果某个 i i i使得约束 c i ( x ) > 0 c_i(x)>0 ci(x)>0或者存在某个 j j j使得 h j ( x ) ≠ 0 h_j(x)\ne0 hj(x)=0,这样我们可以令 α → + ∞ \alpha\rightarrow+\infty α+,或者某个 j j j可令 β j h j ( x ) → + ∞ \beta_jh_j(x)\rightarrow+\infty βjhj(x)+,而将其余的 α i , β j \alpha_i,\beta_j αi,βj均取 0 0 0。那么就会使得 θ P ( x ) = m a x α , β : α ≥ 0 [ f ( x ) + ∑ i = 1 k α i c i ( x ) + ∑ j = 1 l β j h j ( x ) ] = + ∞ \theta_P(x)=\underset{\alpha,\beta:\alpha\ge0}{max}\Bigg[f(x)+\sum_{i=1}^{k}\alpha_ic_i(x)+\sum_{j=1}^{l}\beta_jh_j(x)\Bigg]=+\infty θP(x)=α,β:α0max[f(x)+i=1kαici(x)+j=1lβjhj(x)]=+反之,如果 x x x满足原始问题约束条件,则可以由拉格朗日函数知, θ 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),\quad x满足原始问题约束}\\{+\infty,\quad 其他} \end{cases} θP(x)={f(x),x+,
如果考虑关于 x x x函数最小问题,则可以转换为 m i n x θ P ( x ) = m i n x m a x α , β : α i ≥ 0 L ( x , α , β ) \underset{x}{min}\theta_P(x)=\underset{x}{min}\underset{\alpha,\beta:\alpha_i\ge0}{max}L(x,\alpha,\beta) xminθP(x)=xminα,β:αi0maxL(x,α,β)这样就可以将原始问题的解等价为拉格朗日函数的极小极大问题。为啥牛逼呢,请往下看

我们接着引入对偶问题的定义(提前透漏一下,即是拉格朗日函数的极大极小问题),首先定义 θ D ( α , β ) = m i n x L ( x , α , β ) \theta_D(\alpha,\beta)=\underset{x}{min}L(x,\alpha,\beta) θD(α,β)=xminL(x,α,β)接着极大化上述问题,即 m a x α , β : α i ≥ 0 θ D ( α , β ) = m a x α , β : α i ≥ 0 m i n x L ( x , α , β ) \underset{\alpha,\beta:\alpha_i\ge0}{max}\theta_D(\alpha,\beta)=\underset{\alpha,\beta:\alpha_i\ge0}{max}\underset{x}{min}L(x,\alpha,\beta) α,β:αi0maxθD(α,β)=α,β:αi0maxxminL(x,α,β)接着我们把广义拉格朗日极大极小问题表示为约束最优化问题: m a x α , β : α i ≥ 0 θ D ( α , β ) = m a x α , β : α i ≥ 0 m i n x L ( x , α , β ) \underset{\alpha,\beta:\alpha_i\ge0}{max}\theta_D(\alpha,\beta)=\underset{\alpha,\beta:\alpha_i\ge0}{max}\underset{x}{min}L(x,\alpha,\beta) α,β:αi0maxθD(α,β)=α,β:αi0maxxminL(x,α,β) s . t . α i ≥ 0 , i = 1 , 2... , k s.t.\quad\alpha_i\ge0,\quad i=1,2...,k s.t.αi0,i=1,2...,k Tip:约束最优化问题求min和max只是符号的问题,仔细对比一下就可以发现
至此,原始问题的对偶问题定义完毕,那么对偶问题的最优值定义为 d ∗ = m a x α , β : α i ≥ 0 θ D ( α , β ) d^*=\underset{\alpha,\beta:\alpha_i\ge0}{max}\theta_D(\alpha,\beta) d=α,β:αi0maxθD(α,β)
结合刚原始问题,我们定义原始问题的最优值为 p ∗ = m i n x θ P ( x ) p^*=\underset{x}{min}\theta_P(x) p=xminθP(x)下面我们来记住三个定理(具体推理手推一下就可以出来,很easy,可是试着推导一下)来表明原始问题和对偶问题解的关系

定理1 \quad 若原问题与对偶问题都有最优值,则 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^*=\underset{\alpha,\beta:\alpha_i\ge0}{max}\underset{x}{min}L(x,\alpha,\beta)\le\underset{x}{min}\underset{\alpha,\beta:\alpha_i\ge0}{max}L(x,\alpha,\beta)=p^* d=α,β:αi0maxxminL(x,α,β)xminα,β:αi0maxL(x,α,β)=p则由此可以推论设 x ∗ x^* x α ∗ , β ∗ \alpha^*,\beta^* α,β是两个问题的可行解。并且 d ∗ = p ∗ d^*=p^* d=p,那么他们分别就是两个问题的最优解,即 x ∗ x^* x是原始问题的最优解, α ∗ , β ∗ \alpha^*,\beta^* α,β是对偶问题的最优解。

定理2 \quad 假设函数 f ( x ) f(x) f(x) c j ( x ) c_j(x) cj(x)是凸函数, h j ( x ) h_j(x) hj(x)是仿射函数,并且不等式约束 c j ( x ) c_j(x) cj(x)严格执行,则存在 x ∗ x^* x α ∗ , β ∗ \alpha^*,\beta^* α,β,使得 x ∗ x^* x是原始问题的最优解, α ∗ , β ∗ \alpha^*,\beta^* α,β是对偶问题的最优解,并且 p ∗ = d ∗ = L ( x ∗ , α ∗ , β ∗ ) p^*=d^*=L(x^*,\alpha^*,\beta^*) p=d=L(x,α,β).

定理3 \quad 假设函数 f ( x ) f(x) f(x) c j ( x ) c_j(x) cj(x)是凸函数, h j ( x ) h_j(x) hj(x)是仿射函数,并且不等式约束 c j ( x ) c_j(x) cj(x)严格执行,则 x ∗ x^* x是原始问题的最优解, α ∗ , β ∗ \alpha^*,\beta^* α,β是对偶问题的最优解的充分必要条件是KKT条件: ∇ x L ( x ∗ , α ∗ , β ∗ ) = 0 \nabla_xL(x^*,\alpha^*,\beta^*)=0 xL(x,α,β)=0 a i ∗ c i ( x ∗ ) = 0 i = 1 , 2 , . . . , k a_i^*c_i(x^*)=0\quad i=1,2,...,k aici(x)=0i=1,2,...,k c i ( x ∗ ) ≤ 0 i = 1 , 2 , . . . , k c_i(x^*)\le0\quad i=1,2,...,k ci(x)0i=1,2,...,k a i ∗ ≥ 0 i = 1 , 2 , . . . , k a_i^*\ge0\quad i=1,2,...,k ai0i=1,2,...,k h j ( x ∗ ) = 0 j = 1 , 2 , . . . , j h_j(x^*)=0\quad j=1,2,...,j hj(x)=0j=1,2,...,j

广义地来说,我们可以看到完全可以在限制条件都满足的条件下来通过求解对偶问题来获得原始问题的求解,而对偶问题的求解我们可以首先求 L ( x , α , β ) L(x,\alpha,\beta) L(x,α,β) x x x的极小(朋友们,想想高数是不是方法已经出来了),然后再对 α , β \alpha,\beta α,β求极小得到。下面我们俩根据SVM的实际需求来看看。

首先我们构建出一个基于SVM基本型的拉格朗日函数。定义拉格朗日函数如下 L ( w , b , α ) = 1 2 ∥ w ∥ 2 − ∑ i = 1 N α i y i ( w ⋅ x i + b ) + ∑ i = 1 N α i L(w,b,\alpha)=\frac{1}{2}\begin{Vmatrix}w\end{Vmatrix}^2-\sum_{i=1}^{N}\alpha_iy_i(w·x_i+b)+\sum_{i=1}^{N}\alpha_i L(w,b,α)=21w2i=1Nαiyi(wxi+b)+i=1Nαi(注意这个拉格朗日函数没有 β 那 一 项 \beta那一项 β,然后你对照一下SVM基本型就可以知道了。)
根据拉格朗日的对偶性,原始问题的对偶问题是极大极小问题: m a x α   m i n w , b L ( w , b , α ) \underset{\alpha}{max}\ \underset{w,b}{min}L(w,b,\alpha) αmax w,bminL(w,b,α)

PART1:求解对偶问题的解

1、求 m i n w , b L ( w , b , α ) \underset{w,b}{min}L(w,b,\alpha) w,bminL(w,b,α)

将拉格朗日函数分别对 w , b w,b w,b求偏导为零可以得到,来来来求一下~ ∇ w L ( w , b , α ) = w − ∑ i = 1 N α i y i x i = 0 \nabla_wL(w,b,\alpha)=w-\sum_{i=1}^N\alpha_iy_ix_i=0 wL(w,b,α)=wi=1Nαiyixi=0 ∇ b L ( w , b , α ) = − ∑ i = 1 N α i y i = 0 \nabla_bL(w,b,\alpha)=-\sum_{i=1}^N\alpha_iy_i=0 bL(w,b,α)=i=1Nαiyi=0

Tip:若 f ( w ) = 1 2 ∥ w ∥ 2 f(w)=\frac{1}{2}\begin{Vmatrix}w\end{Vmatrix}^2 f(w)=21w2,则 ∂ f ( w ) ∂ w = w \frac{\partial f(w)}{\partial w}=w wf(w)=w;若 f ( w ) = w T x f(w)=w^Tx f(w)=wTx,则 ∂ f ( w ) ∂ w = x \frac{\partial f(w)}{\partial w}=x wf(w)=x具体见范式求导与矩阵求导#

w = ∑ i = 1 N α i y i x i w=\sum_{i=1}^N\alpha_iy_ix_i w=i=1Nαiyixi ∑ i = 1 N α i y i = 0 \sum_{i=1}^N\alpha_iy_i=0 i=1Nαiyi=0我们把上面两个结果带进去拉格朗日函数,可得(自己去带啊): m i n 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 \underset{w,b}{min}L(w,b,\alpha)=-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i·x_j)+\sum_{i=1}^N\alpha_i w,bminL(w,b,α)=21i=1Nj=1Nαiαjyiyj(xixj)+i=1Nαi

Tip: 1 2 ∥ w ∥ 2 = w T ⋅ w \frac{1}{2}\begin{Vmatrix}w\end{Vmatrix}^2=w^T·w 21w2=wTw

2、求 m i n w , b L ( w , b , α ) \underset{w,b}{min}L(w,b,\alpha) w,bminL(w,b,α) α \alpha α的极大

即对偶问题 m a x α − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 N α i \underset{\alpha}{max}\quad-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i·x_j)+\sum_{i=1}^N\alpha_i αmax21i=1Nj=1Nαiαjyiyj(xixj)+i=1Nαi s . t . ∑ i = 1 n α i y i = 0 s.t.\quad \sum_{i=1}^n\alpha_iy_i=0 s.t.i=1nαiyi=0 α i ≥ 0 , i = 1 , 2 , . . . , N \alpha_i\ge0,\quad i=1,2,...,N αi0,i=1,2,...,N我们把最大问题转换为最小问题,结合之前原问题与对偶问题的关系定理,我们可以知道对对偶问题求解即可以得到原始问题的解。转换后的等价对偶最优化问题是: m i n α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i \underset{\alpha}{min}\quad \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i·x_j)-\sum_{i=1}^N\alpha_i αmin21i=1Nj=1Nαiαjyiyj(xixj)i=1Nαi s . t . ∑ i = 1 n α i y i = 0 s.t.\quad \sum_{i=1}^n\alpha_iy_i=0 s.t.i=1nαiyi=0 α i ≥ 0 , i = 1 , 2 , . . . , N \alpha_i\ge0,\quad i=1,2,...,N αi0,i=1,2,...,N

PART2:求解原问题的解

在得到对偶问题最优解 α ∗ \alpha^* α后,可利用下面式子去求得原始问题的最优解
你可以这样去想,根据定理2我们可知,现在原始问题肯定有一个最优解w*,b*;而现在对偶问题也有最优解a*,那么根据定理3我们知道他们肯定满足KKT条件,这样就可以通过对偶问题得到原始问题的最优解了 w ∗ = ∑ i α i ∗ y i x i w^*=\sum_i\alpha_i^*y_ix_i w=iα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·x_j) b=yji=1Nαiyi(xixj)现在我们来回答最开始的问题.
Q 1 Q1 Q1:通过求解对偶问题(dual problem)得到原始问题(primal problem)的最优解。为什么可以呢?
A A A:我认为通过上述三个定理去证明了可行性并给予了计算的步骤。
Q 2 Q2 Q2:为什么利用一定要利用对偶问题去解决原始问题
A A A:一般来说对偶问题都容易求解,从这个可以看出单纯从数量上来说,对偶问题只用求解 α \alpha α一个量;二是大家看到 x i ⋅ x j x_i·x_j xixj这一个项了嘛?这是样本内积,这对后面我们引入核函数来对非线性可分样本提供了思路。

总结:通过上面问题我们可以这样说,我们已经可以很完美地解决线性可分样本的分类问题了,怎么解决呢?分类的决策函数可以写成: f ( x ) = s i g n ( ∑ i = 1 N α i ∗ y i ( x ⋅ x i ) + b ∗ ) f(x)=sign\Bigg(\sum_{i=1}^N\alpha_i^*y_i(x·x_i)+b^*\Bigg) f(x)=sign(i=1Nαiyi(xxi)+b)具体算法是什么呢?
思路大概是什么样子呢:首先求对偶问题的解a*,然后求得原始问题w*,b*。得到超平面及分类决策函数。这种算法名字叫做 线性可分支持向量机学习算法
大家可以尝试写一下。
一些小细节
(1)在计算 b ∗ b^* b的时候,注意到 y j y_j yj,我们可以挑选一个 α ∗ \alpha^* α中的正分量 α j ∗ > 0 \alpha_j^*>0 αj>0来计算。
(2)大家会发现,在计算 w ∗ w^* w b ∗ b^* b时候,用到了样本 x x x的内积,这个东西就很有意思了,怎么有意思呢?我们且在后面慢慢分析。

PART3:线性可分支持向量机学习算法


输入:线性可分训练集 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} y ∈ { − 1 , + 1 } , i = 1 , 2... , N ; y\in\{-1,+1\},i=1,2...,N; y{1,+1},i=1,2...,N;
过程
1:构建并求解约束最优化问题 m i n α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i \underset{\alpha}{min}\quad \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i·x_j)-\sum_{i=1}^N\alpha_i αmin21i=1Nj=1Nαiαjyiyj(xixj)i=1Nαi s . t . ∑ i = 1 n α i y i = 0 s.t.\quad \sum_{i=1}^n\alpha_iy_i=0 s.t.i=1nαiyi=0 α i ≥ 0 , i = 1 , 2 , . . . , N \alpha_i\ge0,\quad i=1,2,...,N αi0,i=1,2,...,N求得最优解 α ∗ = ( α 1 ∗ , α 2 ∗ , . . . , α N ∗ ) T 。 \alpha^*=(\alpha_1^*,\alpha_2^*,...,\alpha_N^*)^T。 α=(α1,α2,...,αN)T
2:计算 w , b w,b w,b w ∗ = ∑ i α i ∗ y i x i w^*=\sum_i\alpha_i^*y_ix_i w=iα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·x_j) b=yji=1Nαiyi(xixj)
3:求得超平面 w ∗ ⋅ x + b ∗ = 0 w^*·x+b^*=0 wx+b=0以及分类决策函数 f ( x ) = s i g n ( w ∗ ⋅ x + b ∗ ) f(x)=sign(w^*·x+b^*) f(x)=sign(wx+b)
输出:分离超平面和分类决策函数。


当然,世界上只有很少很少的分类问题是线性可分的。

第四个问题:如果有一些“逆子”样本不遵守线性可分怎么办?

考虑这样一个问题,总有一些训练数据是“不听话”的,无法满足上面方法中不等式约束,或者说,使用之后出现“过拟合”现象,那怎么办呢?考虑下面一个目标函数: m i n w , b      1 2 ∥ w ∥ 2 + C ∑ i = 1 N ξ i \underset{w,b}{min}\ \ \ \ \frac{1}{2}\begin{Vmatrix}w\end{Vmatrix}^2+C\sum_{i=1}^{N}\xi_i w,bmin    21w2+Ci=1Nξi
这个函数应该怎么解释呢?
1)首先他是对原问题优化问题目标函数的优化,目的是使得间隔最大化,同时要使得不满足样本的数目尽可能少。
2)我们抱着这个目的去思考上面这个目标函数,前半个式子我们不用考虑了即是为了实现最大化间隔的目标,那么后面一项 C ∑ i = 1 N ξ i C\sum_{i=1}^{N}\xi_i Ci=1Nξi是为了什么呢?不言而喻是为了实现不满足样本数目尽量少的目标。
3)要想了解后面一项具体是怎么实现不满足样本数量尽量少的目标的,我们需要对 ξ i \xi_i ξi进行一个定义,我们把他称之为松弛变量(stack variables),这个变量的目的是挑选出不符合约束 y i ( w T x i + b ) ≥ 1. y_i(w^Tx_i+b)\ge1. yi(wTxi+b)1.的点。考虑到这点,我们继续看前面的常数 C C C
4)接着我们来定义一下其中 C C C称之为惩罚参数(本质是一个大于 0 0 0的常数),由应用问题决定,当 C > 0 C>0 C>0时对误分类的惩罚增大, C C C值小时对误分类的惩罚减小。换言之我们可以考虑极限情况,当 C C C无穷大时,那么任何一个不符合约束的样本都会对整体的值产生深远的巨大的让人无法接受的结果,无法完成 m i n min min的目的,因此优化算法会迫使所有样本都去满足约束,于是他就和未加松弛变量是一个效果。而换言之,当 C C C取得有限值得时候,我们就可以允许一些样本不去满足约束,便达到了我们的目的。所以 C C C的选取特别有意义啊,根据实际应用问题取做一个选择。

那么,线性不可分的线性支持向量机的学习问题变成了如下的凸二次规划问题(原始问题): m i n w , b , ξ    1 2 ∥ w ∥ 2 + C ∑ i = 1 N ξ i \underset{w,b,\xi}{min}\ \ \frac{1}{2}\begin{Vmatrix}w\end{Vmatrix}^2+C\sum_{i=1}^N\xi_i w,b,ξmin  21w2+Ci=1Nξi s . t .    y i ( w ⋅ x i + b ) ≥ 1 − ξ i , i = 1 , 2 , . . . , N s.t.\ \ y_i(w·x_i+b)\ge1-\xi_i,\quad i=1,2,...,N s.t.  yi(wxi+b)1ξi,i=1,2,...,N ξ i ≥ 0 i = 1 , 2 , . . . , N \xi_i\ge0\quad i=1,2,...,N ξi0i=1,2,...,N大家可以按照上面对待原问题变换成对偶问题的步骤来求解一下这个原问题的对偶问题是什么?
Tip:首先将原问题的拉格朗日函数写出来,注意因为s.t多了一项,所以在拉格朗日函数里面也应该多一项\mu_i;然后对偶问题求拉格朗日极大极小问题,第一步求解L(w,b,\xi,\alpha,\mu)对w,b,\xi的极小,再对极小结果求\alpha的极大便可以得到
原问题的对偶问题是: m a x α    − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 N α i \underset{\alpha}{max}\ \ -\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i·x_j)+\sum_{i=1}^N\alpha_i αmax  21i=1Nj=1Nαiαjyiyj(xixj)+i=1Nαi s . t . ∑ i = 1 N α i y i = 0 s.t.\quad \sum_{i=1}^{N}\alpha_iy_i=0 s.t.i=1Nαiyi=0 C − α i − μ i = 0 C-\alpha_i-\mu_i=0 Cαiμi=0 α i ≥ 0 \alpha_i\ge0 αi0 μ i ≥ 0 i = 1 , 2 , . . . , N \mu_i\ge0\quad i=1,2,...,N μi0i=1,2,...,N对后面三个约束条件进行变换可以得到 0 ≤ α i ≤ C 0\le\alpha_i\le C 0αiC
因此可以得到增加软间隔后得线性可分支持向量机学习算法如下:


输入:线性可分训练集 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} y ∈ { − 1 , + 1 } , i = 1 , 2... , N ; y\in\{-1,+1\},i=1,2...,N; y{1,+1},i=1,2...,N;
过程
1:构建并求解约束最优化问题 m i n α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i \underset{\alpha}{min}\quad \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i·x_j)-\sum_{i=1}^N\alpha_i αmin21i=1Nj=1Nαiαjyiyj(xixj)i=1Nαi s . t . ∑ i = 1 n α i y i = 0 s.t.\quad \sum_{i=1}^n\alpha_iy_i=0 s.t.i=1nαiyi=0 0 ≤ α i ≤ C , i = 1 , 2 , . . . , N 0\le\alpha_i\le C,\quad i=1,2,...,N 0αiC,i=1,2,...,N求得最优解 α ∗ = ( α 1 ∗ , α 2 ∗ , . . . , α N ∗ ) T 。 \alpha^*=(\alpha_1^*,\alpha_2^*,...,\alpha_N^*)^T。 α=(α1,α2,...,αN)T
2:计算 w , b w,b w,b w ∗ = ∑ i α i ∗ y i x i w^*=\sum_i\alpha_i^*y_ix_i w=iαiyixi并选择 α ∗ \alpha^* α的一个正分量 0 ≤ α j ∗ ≤ C 0\le\alpha_j^*\le C 0αjC,计算 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·x_j) b=yji=1Nαiyi(xixj)
3:求得超平面 w ∗ ⋅ x + b ∗ = 0 w^*·x+b^*=0 wx+b=0以及分类决策函数 f ( x ) = s i g n ( w ∗ ⋅ x + b ∗ ) f(x)=sign(w^*·x+b^*) f(x)=sign(wx+b)
输出:分离超平面和分类决策函数。


那么至此,线性支持向量机学习来说,学习策略是软间隔最大化,学习算法为凸二次规划。总结一下:利用对偶问题优化了求解步骤,并埋下一个很大的向量内积的伏笔;随后利用软间隔的措施,可以使得样本有一些容错率。

第五个问题:分类问题是非线性的怎么办?

记得Minsky在1969年《perceptron》中提过,日常中很多问题都是非线性可分的。那么我们应该怎么办呢?
策略:首先使用一个变换将原空间的数据映射到新空间;随后在新空间里用线性分类方法从训练数据中学习分类模型。
而牛逼的核技巧就基于这种策略,他通过一个非线性变换将输入空间(欧式空间或离散集合)对应于一个特征空间(希尔伯特空间),使得在输入空间中的超曲线模型对应于特征空间的超平面模型,这样分类问题学习任务通过在特征空间中求解线性支持向量机就可以完成。
提到核技巧就不得不提核函数,下面定义: ϕ ( 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)·\phi(z) K(x,z)=ϕ(x)ϕ(z)则称 K ( x , z ) K(x,z) K(x,z)为核函数, ϕ ( x ) \phi(x) ϕ(x)为映射函数。//其实按照我的理解,就是有技巧地升维处理了一波。
我们用核函数进行代替对偶问题目标函数中的内积,则目标函数成为了 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\Bigg(\sum_{i=1}^{N_s}\alpha_i^*y_iK(x_i,x)+b^*\Bigg) f(x)=sign(i=1NsαiyiK(xi,x)+b)
那么这个升维度肯定不能乱升,举个例子,二维平面上的东西你统一升到三维但是还在一个平面上,那么是不是依旧没办法线性可分。所以这个函数 K ( x , z ) K(x,z) K(x,z)必须满足一定的条件才能变成可以用的核函数。条件是什么呢?那就是这个函数必须是正定核函数
各位看官想看详细地证明过程,可以私信我,也可以去买一本《统计学习方法》里面有~
那么,常用的核函数包括多项式核函数、高斯核函数、线性内核、Tanh核、字符串核函数。如果是软件包那么肯定给各位预留出了这些接口。
至此,我们可以得到非线性支持向量机的学习算法。


输入:线性可分训练集 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} y ∈ { − 1 , + 1 } , i = 1 , 2... , N ; y\in\{-1,+1\},i=1,2...,N; y{1,+1},i=1,2...,N;
1:选取合适的核函数和适当的参数 C C C,构建并求解约束最优化问题 m i n α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j K ( x i ⋅ x j ) − ∑ i = 1 N α i \underset{\alpha}{min}\quad \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 αmin21i=1Nj=1NαiαjyiyjK(xixj)i=1Nαi s . t . ∑ i = 1 n α i y i = 0 s.t.\quad \sum_{i=1}^n\alpha_iy_i=0 s.t.i=1nαiyi=0 0 ≤ α i ≤ C , i = 1 , 2 , . . . , N 0\le\alpha_i\le C,\quad i=1,2,...,N 0αiC,i=1,2,...,N求得最优解 α ∗ = ( α 1 ∗ , α 2 ∗ , . . . , α N ∗ ) T 。 \alpha^*=(\alpha_1^*,\alpha_2^*,...,\alpha_N^*)^T。 α=(α1,α2,...,αN)T
2:计算 w , b w,b w,b w ∗ = ∑ i α i ∗ y i x i w^*=\sum_i\alpha_i^*y_ix_i w=iαiyixi并选择 α ∗ \alpha^* α的一个正分量 0 ≤ α j ∗ ≤ C 0\le\alpha_j^*\le C 0αjC,计算 b ∗ = y j − ∑ i = 1 N α i ∗ y i K ( x i ⋅ x j ) b^*=y_j-\sum_{i=1}^N\alpha_i^*y_iK(x_i·x_j) b=yji=1NαiyiK(xixj)
3:求得超平面 w ∗ ⋅ x + b ∗ = 0 w^*·x+b^*=0 wx+b=0以及分类决策函数 f ( x ) = s i g n ( ∑ i = 1 N s α i ∗ y i K ( x i , x ) + b ∗ ) f(x)=sign\Bigg(\sum_{i=1}^{N_s}\alpha_i^*y_iK(x_i,x)+b^*\Bigg) f(x)=sign(i=1NsαiyiK(xi,x)+b)
输出:分离超平面和分类决策函数。

最后说明一下我们一般使用序列最小最优化(sequential minimal optimization, SMO)算法取实现凸二次规划的对偶问题。

具体实现我们将在下一期讲述~

参考资料:
1、浙江大学B站《机器学习》;
2、机器学习西瓜书;
3、统计学习方法,李航。
请各位支持正版,尽量去购买书籍完成详细地推导。为社会主义建设添砖加瓦~

最后希望女朋友可以考研成功~

你可能感兴趣的:(支持向量机原理及应用示例(一))