6. 支持向量机(Support Vector Machine,SVM)
6.1. 相关概念
6.1.1. 分类
- 硬间隔(Hard-margin)SVM,又叫最大间隔分类SVM;
- 软间隔(Soft-margin)SVM;
- 核(Kernel)SVM;
6.2. 硬间隔SVM
6.2.1. 问题定义:
之前的分类算法中,模型致力于寻找一个超平面,可以将训练集中的两类样本分开,但这个超平面理论上存在无数个,它们在训练集上的分类效果可能是相同的,但模型的鲁棒性是不同的,为了寻找最鲁棒的模型,SVM便想要寻找一个所有样本总间隔最大的超平面。
首先定义间隔:假设通过一个超平面 f ( x ⃗ ) = s i g n ( w ⃗ T x ⃗ + b ) f(\vec{x})=sign\left (\vec{w}^T\vec{x}+b \right ) f(x)=sign(wTx+b),可以完美拟合训练集所有样本,即对任意样本 i i i,都有 y i ( w ⃗ T x ⃗ i + b ) > 0 y_i(\vec{w}^T\vec{x}_i+b)>0 yi(wTxi+b)>0,则所有样本中最小的间隔为 margin ( w ⃗ ) = min w ⃗ , x ⃗ i 1 ∥ w ⃗ ∥ ∣ w ⃗ x ⃗ i + b ∣ \text{margin}(\vec{w})=\underset{\vec{w},\vec{x}_i}{\min}\frac{1}{\left \| \vec{w} \right \|}\left | \vec{w}\vec{x}_i+b \right | margin(w)=w,ximin∥w∥1∣wxi+b∣。
因此硬间隔SVM的优化目标即为最大化这个间隔,使得分类边界具有最高的鲁棒性,即
max w ⃗ margin ( w ⃗ ) = max w ⃗ min x ⃗ i 1 ∥ w ⃗ ∥ ∣ w ⃗ T x ⃗ i + b ∣ = max w ⃗ , b 1 ∥ w ⃗ ∥ min x ⃗ i ∣ w ⃗ T x ⃗ i + b ∣ , (6.1) \begin{aligned} \underset{\vec{w}}{\max} \ \text{margin}(\vec{w})&=\underset{\vec{w}}{\max}\ \underset{\vec{x}_i}{\min}\frac{1}{\left \| \vec{w} \right \|}\left | \vec{w}^T\vec{x}_i+b \right |\\ &=\underset{\vec{w},b}{\max}\ \frac{1}{\left \| \vec{w} \right \|}\underset{\vec{x}_i}{\min}\left | \vec{w}^T\vec{x}_i +b\right | ,\tag{6.1} \end{aligned} wmax margin(w)=wmax ximin∥w∥1
wTxi+b
=w,bmax ∥w∥1ximin
wTxi+b
,(6.1)
6.2.2. 问题化简:
因为 y i ∈ { − 1 , 1 } y_i\in \{-1,1\} yi∈{−1,1},所以可以写作 ∣ w ⃗ T x ⃗ i + b ∣ = y i ( w ⃗ T x ⃗ i + b ) \left | \vec{w}^T\vec{x}_i+b \right |=y_i(\vec{w}^T\vec{x}_i+b)
wTxi+b
=yi(wTxi+b),因此优化目标可以写作 max w ⃗ , b margin ( w ⃗ ) = max w ⃗ , b 1 ∥ w ⃗ ∥ min x ⃗ i y i ( w ⃗ T x ⃗ i + b ) \underset{\vec{w},b}{\max} \ \text{margin}(\vec{w})=\underset{\vec{w},b}{\max}\ \frac{1}{\left \| \vec{w} \right \|}\underset{\vec{x}_i}{\min}y_i(\vec{w}^T\vec{x}_i+b ) w,bmax margin(w)=w,bmax ∥w∥1ximinyi(wTxi+b)
又因为对超平面 w ⃗ \vec{w} w,我们只关心其方向,对 ∥ w ⃗ ∥ \left \| \vec{w} \right \| ∥w∥ 无要求,因此对 w ⃗ T x ⃗ i + b \vec{w}^T\vec{x}_i+b wTxi+b 我们只关心正负,无所谓值的大小,因此对 y i ( w ⃗ T x ⃗ i + b ) y_i(\vec{w}^T\vec{x}_i+b) yi(wTxi+b) 我们只关心是否大于0,无所谓值的大小。因此为了简化优化目标,可以令 min w ⃗ , x ⃗ i , b y i ( w ⃗ T x ⃗ i + b ) = 1 \underset{\vec{w},\vec{x}_i,b}{\min}\ y_i( \vec{w}^T\vec{x}_i+b )=1 w,xi,bmin yi(wTxi+b)=1,则优化目标变为
max w ⃗ margin ( w ⃗ ) = { max w ⃗ 1 ∥ w ⃗ ∥ ⋅ 1 = min w ⃗ ∥ w ⃗ ∥ = min w ⃗ w ⃗ T w ⃗ s.t. y i ( w ⃗ T x ⃗ i + b ) ⩾ 1 . (6.2) \begin{aligned} \underset{\vec{w}}{\max} \ \text{margin}(\vec{w})=\left\{\begin{matrix} \underset{\vec{w}}{\max}\ \frac{1}{\left \| \vec{w} \right \|}\cdot 1=\underset{\vec{w}}{\min}\left \| \vec{w} \right \|=\underset{\vec{w}}{\min}\ \vec{w}^T\vec{w}\\ \textbf{s.t.}\ \ y_i(\vec{w}^T\vec{x}_i +b)\geqslant 1 \end{matrix}\right..\tag{6.2} \end{aligned} wmax margin(w)={wmax ∥w∥1⋅1=wmin∥w∥=wmin wTws.t. yi(wTxi+b)⩾1.(6.2)
变为一个凸优化问题。
6.2.3. 问题求解:
优化问题首先考虑使用拉格朗日乘数法:
- L ( w ⃗ , λ ⃗ , b ) = w ⃗ T w ⃗ + ∑ i = 1 N λ i [ 1 − y i ( w ⃗ T x ⃗ i + b ) ] \mathcal{L}(\vec{w},\vec{\lambda},b)=\vec{w}^T\vec{w}+\sum_{i=1}^N\lambda_i\left [ 1-y_i(\vec{w}^T\vec{x}_i+b) \right ] L(w,λ,b)=wTw+∑i=1Nλi[1−yi(wTxi+b)]
,将带约束的原问题变为无约束优化问题: { min w ⃗ , b max λ ⃗ L ( w ⃗ , λ ⃗ , b ) s . t . λ i ⩾ 0 \left\{\begin{matrix} \underset{\vec{w},b}{\min} \ \underset{\vec{\lambda}}{\max} \ \mathcal{L} (\vec{w},\vec{\lambda},b)\\ s.t. \lambda_i\geqslant 0 \end{matrix}\right. {w,bmin λmax L(w,λ,b)s.t.λi⩾0. - 若原问题的约束 y i ( w ⃗ T x ⃗ i + b ) ⩾ 1 y_i(\vec{w}^T\vec{x}_i+b )\geqslant 1 yi(wTxi+b)⩾1 不满足,即 1 − y i ( w ⃗ T x ⃗ i + b ) > 0 1-y_i(\vec{w}^T\vec{x}_i+b )> 0 1−yi(wTxi+b)>0,则 max λ ⃗ L ( w ⃗ , λ ⃗ , b ) → ∞ \underset{\vec{\lambda}}{\max} \ \mathcal{L}(\vec{w},\vec{\lambda},b)\rightarrow \infty λmax L(w,λ,b)→∞,反之若都满足,则 max λ ⃗ L ( w ⃗ , λ ⃗ , b ) = w ⃗ T w ⃗ \underset{\vec{\lambda}}{\max} \ \mathcal{L}(\vec{w},\vec{\lambda},b)=\vec{w}^T\vec{w} λmax L(w,λ,b)=wTw,因此优化目标其实是 { min w ⃗ ( ∞ , w ⃗ T w ⃗ ) s . t . λ i ⩾ 0 \left\{\begin{matrix} \underset{\vec{w}}{\min} (\infty ,\vec{w}^T\vec{w})\\ s.t. \lambda_i\geqslant 0 \end{matrix}\right. {wmin(∞,wTw)s.t.λi⩾0,因此这个优化目标函数为了取到 min w ⃗ ( ∞ , w ⃗ T w ⃗ ) = w ⃗ T w ⃗ \underset{\vec{w}}{\min} (\infty ,\vec{w}^T\vec{w})=\vec{w}^T\vec{w} wmin(∞,wTw)=wTw,会调整 w ⃗ \vec{w} w 使得 y i ( w ⃗ T x ⃗ i + b ) ⩾ 1 y_i(\vec{w}^T\vec{x}_i+b )\geqslant 1 yi(wTxi+b)⩾1 对所有 x ⃗ ^ i \hat{\vec{x}}_i x^i 都满足,由此原问题的约束成立。
- 而此时 L ( w ⃗ , λ ⃗ , b ) = w ⃗ T w ⃗ + ∑ i = 1 N λ i [ 1 − y i ( w ⃗ T x ⃗ i + b ) ] = w ⃗ T w ⃗ \mathcal{L} (\vec{w},\vec{\lambda},b)=\vec{w}^T\vec{w}+\sum_{i=1}^N\lambda_i\left [ 1-y_i(\vec{w}^T\vec{x}_i+b) \right ]=\vec{w}^T\vec{w} L(w,λ,b)=wTw+∑i=1Nλi[1−yi(wTxi+b)]=wTw,因此对任意 i i i,有 λ i [ 1 − y i ( w ⃗ T x ⃗ i + b ) ] = 0 \lambda_i\left [ 1-y_i(\vec{w}^T\vec{x}_i+b) \right ]=0 λi[1−yi(wTxi+b)]=0,则 λ i = 0 \lambda_i=0 λi=0 或 1 − y i ( w ⃗ T x ⃗ i + b ) = 0 1-y_i(\vec{w}^T\vec{x}_i+b) =0 1−yi(wTxi+b)=0,由于绝大多数情况,只有两个点离超平面最近(存在更多点距离超平面也是0的理论可能,但实际数据中几乎不存在),即 1 − y i ( w ⃗ T x ⃗ i + b ) = 0 1-y_i(\vec{w}^T\vec{x}_i+b) =0 1−yi(wTxi+b)=0,其他情况都是 λ i = 0 \lambda_i=0 λi=0(但这里不能直接带入 λ i = 0 \lambda_i=0 λi=0,因为这个是目标函数为了达到优化而隐含的约束,如果直接带入则变成了优化之间的已知约束,问题会变得无法求解)。
- 这两个距离最近的样本我们称其为 x ⃗ m \vec{x}_m xm( y m = 1 y_m=1 ym=1)和 x ⃗ n \vec{x}_n xn( y n = − 1 y_n=-1 yn=−1),这两个向量被称为支持向量。
变为对偶问题:
- 弱对偶关系: min max F ⩾ max min F \min \ \max F \geqslant \max \ \min F min maxF⩾max minF(宁做凤尾,不做鸡头),当中间取等号时变为强对偶关系,而线性约束的二次优化问题天然满足强对偶性(此处不做数学证明) { max λ ⃗ min w ⃗ , b £ ( w ⃗ , λ ⃗ , b ) s . t . λ i ⩾ 0 \left\{\begin{matrix} \ \underset{\vec{\lambda}}{\max} \ \underset{\vec{w},b}{\min} \ \pounds (\vec{w},\vec{\lambda},b)\\ s.t. \lambda_i\geqslant 0 \end{matrix}\right. { λmax w,bmin £(w,λ,b)s.t.λi⩾0.
- 因此这里可以将优化目标变为 { max λ ⃗ min w ⃗ , b £ ( w ⃗ , λ ⃗ , b ) s.t. λ i ⩾ 0 \left\{\begin{matrix} \ \underset{\vec{\lambda}}{\max} \ \underset{\vec{w},b}{\min} \ \pounds (\vec{w},\vec{\lambda},b)\\ \textbf{s.t.} \lambda_i\geqslant 0 \end{matrix}\right. { λmax w,bmin £(w,λ,b)s.t.λi⩾0。
求偏导得到结果:
- ∂ L ∂ b = − ∑ i = 1 N λ i y i = 0 \frac{\partial \mathcal{L}}{\partial b}=-\sum_{i=1}^N\lambda_iy_i=0 ∂b∂L=−∑i=1Nλiyi=0。
- ∂ L ∂ w ⃗ = 2 w ⃗ − ∑ i = 1 N λ i y i x ⃗ i = 0 ⇒ w ⃗ ∗ = 1 2 ∑ i = 1 N λ i y i x ⃗ i \frac{\partial \mathcal{L} }{\partial \vec{w}}=2\vec{w}-\sum_{i=1}^N\lambda_iy_i\vec{x}_i=0\Rightarrow\vec{w}^*= \frac{1}{2}\sum_{i=1}^N\lambda_iy_i\vec{x}_i ∂w∂L=2w−∑i=1Nλiyixi=0⇒w∗=21∑i=1Nλiyixi.
- 则 L ( w ⃗ , λ ⃗ , b ) = 1 4 ∑ i = 1 N ∑ j = 1 N λ i λ j y i y j ( x ⃗ i T x ⃗ i ) − 1 2 ∑ i = 1 N ∑ j = 1 N λ i λ j y i y j ( x ⃗ i T x ⃗ i ) + ∑ i = 1 N λ i = − 1 4 ∑ i = 1 N ∑ j = 1 N λ i λ j y i y j ( x ⃗ i T x ⃗ i ) + ∑ i = 1 N λ i . (6.3) \begin{aligned} \mathcal{L} (\vec{w},\vec{\lambda},b)&=\frac{1}{4}\sum_{i=1}^N\sum_{j=1}^N\lambda_i\lambda_jy_iy_j(\vec{x}_i^T\vec{x}_i )-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\lambda_i\lambda_jy_iy_j(\vec{x}_i^T\vec{x}_i )+\sum_{i=1}^N\lambda_i\\ &=-\frac{1}{4}\sum_{i=1}^N\sum_{j=1}^N\lambda_i\lambda_jy_iy_j(\vec{x}_i^T\vec{x}_i )+\sum_{i=1}^N\lambda_i . \tag{6.3}\end{aligned} L(w,λ,b)=41i=1∑Nj=1∑Nλiλjyiyj(xiTxi)−21i=1∑Nj=1∑Nλiλjyiyj(xiTxi)+i=1∑Nλi=−41i=1∑Nj=1∑Nλiλjyiyj(xiTxi)+i=1∑Nλi.(6.3)
因为对 { max λ ⃗ min w ⃗ , b L ( w ⃗ , λ ⃗ , b ) s.t. λ i ⩾ 0 \left\{\begin{matrix} \ \underset{\vec{\lambda}}{\max} \ \underset{\vec{w},b}{\min} \ \mathcal{L} (\vec{w},\vec{\lambda},b)\\ \textbf{s.t.} \lambda_i\geqslant 0 \end{matrix}\right. { λmax w,bmin L(w,λ,b)s.t.λi⩾0 的优化必须使 λ ⃗ \vec{\lambda} λ 和 w ⃗ \vec{w} w 满足:只有两个点 x ⃗ m \vec{x}_m xm 和 x ⃗ n \vec{x}_n xn 离超平面最近,即 1 − y i ( w ⃗ T x ⃗ i + b ) = 0 1-y_i(\vec{w}^T\vec{x}_i+b) =0 1−yi(wTxi+b)=0,其他情况都是 λ i = 0 \lambda_i=0 λi=0,将这个条件带入 ∑ i = 1 N λ i y i = 0 \sum_{i=1}^N\lambda_iy_i=0 ∑i=1Nλiyi=0 可得: λ m = λ n , λ i ≠ m , n = 0 \lambda_m=\lambda_n,\ \ \lambda_{i\neq m,n}=0 λm=λn, λi=m,n=0。
带入目标函数得 L ( w ⃗ , λ ⃗ , b ) = − 1 4 ( λ m 2 ( x ⃗ m T x ⃗ m ) + λ n 2 ( x ⃗ n T x ⃗ n ) − 2 λ m λ n ( x ⃗ m T x ⃗ n ) ) + λ m + λ n = − 1 4 λ m 2 ∥ x ⃗ m − x ⃗ n ∥ + 2 λ m \mathcal{L}(\vec{w},\vec{\lambda},b)=-\frac{1}{4}\left ( \lambda_m^2(\vec{x}_m^T\vec{x}_m )+\lambda_n^2(\vec{x}_n^T\vec{x}_n )-2\lambda_m\lambda_n(\vec{x}_m^T\vec{x}_n ) \right )+\lambda_m+\lambda_n=-\frac{1}{4}\lambda_m^2\left \|\vec{x}_m-\vec{x}_n \right \|+2\lambda_m L(w,λ,b)=−41(λm2(xmTxm)+λn2(xnTxn)−2λmλn(xmTxn))+λm+λn=−41λm2∥xm−xn∥+2λm,对其求偏导: ∂ L ∂ λ m = − 1 2 λ m ∥ x ⃗ m − x ⃗ n ∥ + 2 = 0 ⇒ λ m = 4 ∥ x ⃗ m − x ⃗ n ∥ \frac{\partial \mathcal{L} }{\partial \lambda_m}=-\frac{1}{2}\lambda_m\left \| \vec{x}_m-\vec{x}_n \right \|+2=0\Rightarrow \lambda_m=\frac{4}{\left \| \vec{x}_m-\vec{x}_n \right \|} ∂λm∂L=−21λm∥xm−xn∥+2=0⇒λm=∥xm−xn∥4,带入原式得 L ( w ⃗ , λ ⃗ , b ) = − 1 4 λ m 2 ∥ x ⃗ m − x ⃗ n ∥ + 2 λ m = 4 ∥ x ⃗ m − x ⃗ n ∥ \begin{aligned} \mathcal{L} (\vec{w},\vec{\lambda},b)=-\frac{1}{4}\lambda_m^2\left \|\vec{x}_m-\vec{x}_n \right \|+2\lambda_m=\frac{4}{\left \| \vec{x}_m-\vec{x}_n \right \|}\end{aligned} L(w,λ,b)=−41λm2∥xm−xn∥+2λm=∥xm−xn∥4,因此 max L ( w ⃗ , λ ⃗ , b ) = min ∥ x ⃗ m − x ⃗ n ∥ \max \mathcal{L} (\vec{w},\vec{\lambda},b)=\min\left \| \vec{x}_m-\vec{x}_n \right \| maxL(w,λ,b)=min∥xm−xn∥,找到两个类中,间距最小的两个样本,计算其欧氏距离可以算得 λ ⃗ \vec{\lambda} λ。
再带入 w ⃗ ∗ = ∑ i = 1 N λ i y i x ⃗ i = λ m ( x ⃗ m − x ⃗ n ) \vec{w}^*= \sum_{i=1}^N\lambda_iy_i\vec{x}_i=\lambda_m(\vec{x}_m-\vec{x}_n) w∗=∑i=1Nλiyixi=λm(xm−xn), b ∗ = y m − λ m x ⃗ m T ( x ⃗ m − x ⃗ n ) b^*=y_m-\lambda_m\vec{x}_m^T(\vec{x}_m-\vec{x}_n) b∗=ym−λmxmT(xm−xn) 即可得到分类边界。
6.3. 软间隔SVM
6.3.1. 引入软间隔的思想
硬间隔SVM假设所有样本都可以被完美分类,但实际情况很难做到,因此需要允许一些错误,但又要尽可能控制错误,便有了软间隔SVM的思想。
相比于硬间隔,软间隔SVM取消了约束 s.t. y i ( w ⃗ T x ⃗ i + b ) ⩾ 1 \textbf{s.t.}\ y_i(\vec{w}^T\vec{x}_i +b)\geqslant 1 s.t. yi(wTxi+b)⩾1,而是采用一个损失函数来代替,即设定一组参数 ξ ⃗ = { ξ 1 , ξ 2 , ⋯ , ξ N } , ξ i ⩾ 0 \vec{\xi}=\{ \xi_1, \xi_2, \cdots, \xi_N\}, \ \xi_i \geqslant 0 ξ={ξ1,ξ2,⋯,ξN}, ξi⩾0,目标函数变为 { min w ⃗ , b , ξ ⃗ w ⃗ T w ⃗ + C ∑ i = 1 N ξ i s.t. y i ( w ⃗ T x ⃗ i + b ) ⩾ 1 − ξ i , ξ i ⩾ 0 \left\{\begin{matrix} \underset{\vec{w}, b, \vec{\xi}}{\min}\ \vec{w}^T\vec{w}+C\sum_{i=1}^N\xi_i\\ \textbf{s.t.} \ y_i(\vec{w}^T\vec{x}_i+b)\geqslant 1-\xi_i, \ \xi_i\geqslant 0 \end{matrix}\right. {w,b,ξmin wTw+C∑i=1Nξis.t. yi(wTxi+b)⩾1−ξi, ξi⩾0
通过这个目标函数,原本间隔外的点( y i ( w ⃗ T x ⃗ i + b ) ⩾ 1 y_i(\vec{w}^T\vec{x}_i+b)\geqslant 1 yi(wTxi+b)⩾1)的参数 ξ i \xi_i ξi 会被优化到0,而间隔内的点无论是否可以被分类正确,都可以尽可能使其向两边分散。
C C C 是一个乘法因子,可以作为模型超参数,其作用有点像正则化, C C C 的值越大, ξ ⃗ \vec{\xi} ξ 被惩罚得越厉害,间隔小的点越少。
6.3.2. 软间隔SVM的求解
前面的部分和硬间隔相同,化为无约束目标函数和对偶优化问题,分别对 w ⃗ \vec{w} w 和 b b b 求偏导后,最终目标函数化简如下: { min λ ⃗ 1 4 ∑ i = 1 N ∑ j = 1 N λ i λ j y i y j ( x ⃗ i T x ⃗ i ) − ∑ i = 1 N λ i s . t . 0 ⩽ λ i ⩽ C , ∑ i = 1 N λ i y i = 0 \left\{\begin{matrix} \ \underset{\vec{\lambda}}{\min} \ \frac{1}{4}\sum_{i=1}^N\sum_{j=1}^N\lambda_i\lambda_jy_iy_j(\vec{x}_i^T\vec{x}_i )-\sum_{i=1}^N\lambda_i\\ s.t. \ 0\leqslant \lambda_i\leqslant C ,\ \sum_{i=1}^N\lambda_iy_i=0\end{matrix}\right. { λmin 41∑i=1N∑j=1Nλiλjyiyj(xiTxi)−∑i=1Nλis.t. 0⩽λi⩽C, ∑i=1Nλiyi=0, w ⃗ ∗ = 1 2 ∑ i = 1 N λ i y i x ⃗ i \vec{w}^*= \frac{1}{2}\sum_{i=1}^N\lambda_iy_i\vec{x}_i w∗=21∑i=1Nλiyixi.
同样先求得 λ ⃗ \vec{\lambda} λ 后(这里需要用到SMO迭代求解算法,过于复杂,后补),即可得到超平面。