机器学习 [白板推导](五)[支持向量机]
之前的分类算法中,模型致力于寻找一个超平面,可以将训练集中的两类样本分开,但这个超平面理论上存在无数个,它们在训练集上的分类效果可能是相同的,但模型的鲁棒性是不同的,为了寻找最鲁棒的模型,SVM便想要寻找一个所有样本总间隔最大的超平面。 首先定义间隔:假设通过一个超平面 f(x⃗)=sign(w⃗Tx⃗+b)f(\vec{x})=sign\left (\vec{w}^T\vec{x}+b
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⃗)=sign(w⃗Tx⃗+b)f(\vec{x})=sign\left (\vec{w}^T\vec{x}+b \right )f(x)=sign(wTx+b),可以完美拟合训练集所有样本,即对任意样本 iii,都有 yi(w⃗Tx⃗i+b)>0y_i(\vec{w}^T\vec{x}_i+b)>0yi(wTxi+b)>0,则所有样本中最小的间隔为 margin(w⃗)=minw⃗,x⃗i1∥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的优化目标即为最大化这个间隔,使得分类边界具有最高的鲁棒性,即
maxw⃗ margin(w⃗)=maxw⃗ minx⃗i1∥w⃗∥∣w⃗Tx⃗i+b∣=maxw⃗,b 1∥w⃗∥minx⃗i∣w⃗Tx⃗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. 问题化简:
因为 yi∈{−1,1}y_i\in \{-1,1\}yi∈{−1,1},所以可以写作 ∣w⃗Tx⃗i+b∣=yi(w⃗Tx⃗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),因此优化目标可以写作maxw⃗,b margin(w⃗)=maxw⃗,b 1∥w⃗∥minx⃗iyi(w⃗Tx⃗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⃗Tx⃗i+b\vec{w}^T\vec{x}_i+bwTxi+b 我们只关心正负,无所谓值的大小,因此对 yi(w⃗Tx⃗i+b)y_i(\vec{w}^T\vec{x}_i+b)yi(wTxi+b) 我们只关心是否大于0,无所谓值的大小。因此为了简化优化目标,可以令 minw⃗,x⃗i,b yi(w⃗Tx⃗i+b)=1\underset{\vec{w},\vec{x}_i,b}{\min}\ y_i( \vec{w}^T\vec{x}_i+b )=1w,xi,bmin yi(wTxi+b)=1,则优化目标变为
maxw⃗ margin(w⃗)={maxw⃗ 1∥w⃗∥⋅1=minw⃗∥w⃗∥=minw⃗ w⃗Tw⃗s.t. yi(w⃗Tx⃗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⃗Tw⃗+∑i=1Nλi[1−yi(w⃗Tx⃗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)]
,将带约束的原问题变为无约束优化问题:{minw⃗,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. - 若原问题的约束 yi(w⃗Tx⃗i+b)⩾1y_i(\vec{w}^T\vec{x}_i+b )\geqslant 1yi(wTxi+b)⩾1 不满足,即 1−yi(w⃗Tx⃗i+b)>01-y_i(\vec{w}^T\vec{x}_i+b )> 01−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⃗Tw⃗\underset{\vec{\lambda}}{\max} \ \mathcal{L}(\vec{w},\vec{\lambda},b)=\vec{w}^T\vec{w}λmax L(w,λ,b)=wTw,因此优化目标其实是 {minw⃗(∞,w⃗Tw⃗)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,因此这个优化目标函数为了取到 minw⃗(∞,w⃗Tw⃗)=w⃗Tw⃗\underset{\vec{w}}{\min} (\infty ,\vec{w}^T\vec{w})=\vec{w}^T\vec{w}wmin(∞,wTw)=wTw,会调整 w⃗\vec{w}w 使得 yi(w⃗Tx⃗i+b)⩾1y_i(\vec{w}^T\vec{x}_i+b )\geqslant 1yi(wTxi+b)⩾1 对所有 x⃗^i\hat{\vec{x}}_ix^i 都满足,由此原问题的约束成立。
- 而此时 L(w⃗,λ⃗,b)=w⃗Tw⃗+∑i=1Nλi[1−yi(w⃗Tx⃗i+b)]=w⃗Tw⃗\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,因此对任意 iii,有 λi[1−yi(w⃗Tx⃗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−yi(w⃗Tx⃗i+b)=01-y_i(\vec{w}^T\vec{x}_i+b) =01−yi(wTxi+b)=0,由于绝大多数情况,只有两个点离超平面最近(存在更多点距离超平面也是0的理论可能,但实际数据中几乎不存在),即 1−yi(w⃗Tx⃗i+b)=01-y_i(\vec{w}^T\vec{x}_i+b) =01−yi(wTxi+b)=0,其他情况都是λi=0\lambda_i=0λi=0(但这里不能直接带入 λi=0\lambda_i=0λi=0,因为这个是目标函数为了达到优化而隐含的约束,如果直接带入则变成了优化之间的已知约束,问题会变得无法求解)。

- 这两个距离最近的样本我们称其为 x⃗m\vec{x}_mxm(ym=1y_m=1ym=1)和 x⃗n\vec{x}_nxn(yn=−1y_n=-1yn=−1),这两个向量被称为支持向量。
变为对偶问题:
- 弱对偶关系:min maxF⩾max minF\min \ \max F \geqslant \max \ \min Fmin maxF⩾max minF(宁做凤尾,不做鸡头),当中间取等号时变为强对偶关系,而线性约束的二次优化问题天然满足强对偶性(此处不做数学证明){ maxλ⃗ minw⃗,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λ⃗ minw⃗,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=1Nλiyi=0\frac{\partial \mathcal{L}}{\partial b}=-\sum_{i=1}^N\lambda_iy_i=0∂b∂L=−∑i=1Nλiyi=0。
- ∂L∂w⃗=2w⃗−∑i=1Nλiyix⃗i=0⇒w⃗∗=12∑i=1Nλiyix⃗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)=14∑i=1N∑j=1Nλiλjyiyj(x⃗iTx⃗i)−12∑i=1N∑j=1Nλiλjyiyj(x⃗iTx⃗i)+∑i=1Nλi=−14∑i=1N∑j=1Nλiλjyiyj(x⃗iTx⃗i)+∑i=1Nλ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λ⃗ minw⃗,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}_mxm 和 x⃗n\vec{x}_nxn 离超平面最近,即 1−yi(w⃗Tx⃗i+b)=01-y_i(\vec{w}^T\vec{x}_i+b) =01−yi(wTxi+b)=0,其他情况都是 λi=0\lambda_i=0λi=0,将这个条件带入 ∑i=1Nλiyi=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)=−14(λm2(x⃗mTx⃗m)+λn2(x⃗nTx⃗n)−2λmλn(x⃗mTx⃗n))+λm+λn=−14λm2∥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_mL(w,λ,b)=−41(λm2(xmTxm)+λn2(xnTxn)−2λmλn(xmTxn))+λm+λn=−41λm2∥xm−xn∥+2λm,对其求偏导:∂L∂λm=−12λ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)=−14λm2∥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,因此 maxL(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=1Nλiyix⃗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∗=ym−λmx⃗mT(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. yi(w⃗Tx⃗i+b)⩾1\textbf{s.t.}\ y_i(\vec{w}^T\vec{x}_i +b)\geqslant 1s.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,目标函数变为 {minw⃗,b,ξ⃗ w⃗Tw⃗+C∑i=1Nξis.t. yi(w⃗Tx⃗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
通过这个目标函数,原本间隔外的点(yi(w⃗Tx⃗i+b)⩾1y_i(\vec{w}^T\vec{x}_i+b)\geqslant 1yi(wTxi+b)⩾1)的参数 ξi\xi_iξi 会被优化到0,而间隔内的点无论是否可以被分类正确,都可以尽可能使其向两边分散。
CCC 是一个乘法因子,可以作为模型超参数,其作用有点像正则化,CCC 的值越大,ξ⃗\vec{\xi}ξ 被惩罚得越厉害,间隔小的点越少。
6.3.2. 软间隔SVM的求解
前面的部分和硬间隔相同,化为无约束目标函数和对偶优化问题,分别对 w⃗\vec{w}w 和 bbb 求偏导后,最终目标函数化简如下:{ minλ⃗ 14∑i=1N∑j=1Nλiλjyiyj(x⃗iTx⃗i)−∑i=1Nλis.t. 0⩽λi⩽C, ∑i=1Nλiyi=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⃗∗=12∑i=1Nλiyix⃗i\vec{w}^*= \frac{1}{2}\sum_{i=1}^N\lambda_iy_i\vec{x}_iw∗=21∑i=1Nλiyixi.
同样先求得 λ⃗\vec{\lambda}λ 后(这里需要用到SMO迭代求解算法,过于复杂,后补),即可得到超平面。
更多推荐



所有评论(0)