今天来看一下西瓜书第六章——支持向量机。

文章目录

  • 定义
  • 对偶问题
  • 核函数
  • 软间隔和正则化
  • 支持向量回归

定义

SVM 就是一种二分类模型,他的基本模型是的定义在特征空间上的间隔(margin)最大的线性分类器,SVM 的学习策略就是找到间隔最大化的超平面。

我们来看这张图:

在这个二分类的图中,直觉告诉我们 H3H_3H3​ 的泛化能力最好。对于 H1H_1H1​ 来说,他不能把类别分开,这个分类器肯定是不行的。而 H2H_2H2​ 可以,但是分割线与最近的数据点只有很小的间隔,一旦新数据有一定偏差,就会分类错误,也就是说他的泛化能力弱。

给定数据集:
D={(x1,y1),⋯,(xm,ym)},yi∈{−1,+1}\begin{aligned} D=\left \{ (x_1,y_1),\cdots,(x_m,y_m) \right \},\text{ }y_i \in \left \{ -1,+1 \right \} \end{aligned} D={(x1​,y1​),⋯,(xm​,ym​)}, yi​∈{−1,+1}​

对于支持向量机来说,若数据点是 ppp 维向量,则可以用 p−1p-1p−1 维的超平面来分开这些数据点。往往这样的超平面有很多,我们要找的就是最佳超平面,即以最大间隔把两个类分开的超平面。SVM 可以帮我们做到。

在样本空间中,划分超平面可通过如下线性方程来表示:

wTx+b=0w^Tx+b=0 wTx+b=0

其中 w=(w1;⋯;wp)w=(w_1;\cdots;w_p)w=(w1​;⋯;wp​) 为超平面的法向量,bbb 为偏移量。

样本空间中任意点到超平面的距离为:

r=∣wTx+b∣∣∣w∣∣r=\frac{|w^Tx+b|}{||w||} r=∣∣w∣∣∣wTx+b∣​

其中 ∣∣w∣∣=w12+⋯+wp2||w||=\sqrt{w_1^2+\cdots+w_p^2}∣∣w∣∣=w12​+⋯+wp2​​

现在假设我们有 wTx+b=0w^Tx+b=0wTx+b=0 该线性方程来划分两类数据,也就是说,当 yi=+1y_i=+1yi​=+1 时,有 wTxi+b>0w^Tx_i+b>0wTxi​+b>0;当 yi=−1y_i=-1yi​=−1 时,有 wTxi+b<0w^Tx_i+b<0wTxi​+b<0。

那我们想求得 margin 最大的分界线(两条线),现在令:

{wTxi+b≥+1,yi=+1wTxi+b≤−1,yi=−1\begin{cases} w^Tx_i+b\ge+1,&y_i=+1\\\\ w^Tx_i+b\le-1,&y_i=-1 \end{cases} ⎩⎪⎨⎪⎧​wTxi​+b≥+1,wTxi​+b≤−1,​yi​=+1yi​=−1​

于是可以得到:yi(wTxi+b)≥1y_i(w^Tx_i+b)\ge 1yi​(wTxi​+b)≥1,我们称为函数间隔

为什么以 +−1+-1+−1 来区分两类数据?原因是只要给定一个数 ξ\xiξ,以 +−ξ+-\xi+−ξ 划分即可,只是改变了 www 和 bbb 而已,并不会影响求解的过程。

有了上述两条边界超平面后,我们称在边界上的点为支持向量,如下图所示。很显然,两个异类支持向量的间隔(margin)为:

γ=2∣∣w∣∣\gamma=\frac{2}{||w||} γ=∣∣w∣∣2​

我们的目标是使 margin 最大,这样,模型的泛化能力更强。于是有:

max⁡w,b2∣∣w∣∣s.t.yi(wTxi+b)≥1,i=1,2,⋯,m\max_{w,b} \frac{2}{||w||}\\\\ s.t. \text{ } y_i(w^Tx_i+b)\ge1,i=1,2,\cdots,m w,bmax​∣∣w∣∣2​s.t. yi​(wTxi​+b)≥1,i=1,2,⋯,m

为了方便求解,我们将上述目标重写一下,有:

min⁡w,b∣∣w∣∣22s.t.yi(wTxi+b)≥1,i=1,2,⋯,m\min_{w,b} \frac{||w||^2}{2}\\\\ s.t. \text{ } y_i(w^Tx_i+b)\ge1,i=1,2,\cdots,m w,bmin​2∣∣w∣∣2​s.t. yi​(wTxi​+b)≥1,i=1,2,⋯,m

以上就是 SVM 损失函数的最初形态。

在决定最佳超平面时只有支持向量起作用,而其他数据点并不起作用。也就是说非支持向量的移动并不会影响最优超平面的产生。

对偶问题

我们希望通过上述的单目标规划求解得到参数 (w,b)(w,b)(w,b),虽然可以用优化包求解,但是考虑到对偶问题更易求解,由下文知对偶问题只需优化一个变量 α\alphaα 且约束条件更简单。且能更加自然地引入核函数,进而推广到非线性问题。

因此,我们用拉格朗日乘数法进行求解,首先构造拉格朗日函数,对 ∀αi≥0\forall \alpha_i \ge 0∀αi​≥0,有以下式子:

L(w,b,α)=12∣∣w∣∣2+∑i=1mαi(1−yi(wTxi+b))L(w,b,\alpha)=\frac{1}{2}||w||^2+\sum_{i=1}^{m}\alpha_i (1-y_i(w^Tx_i+b)) L(w,b,α)=21​∣∣w∣∣2+i=1∑m​αi​(1−yi​(wTxi​+b))

注意到当 1−yi(wTxi+b)>01-y_i(w^Tx_i+b)> 01−yi​(wTxi​+b)>0,即属于不可行解时,有:

max⁡αL(w,b,α)=+∞\max_{\alpha} L(w,b,\alpha)=+\infty αmax​L(w,b,α)=+∞

最后是收敛不了的,也可以看到拉格朗日函数构造的巧妙。

而当 1−yi(wTxi+b)≤01-y_i(w^Tx_i+b)\le 01−yi​(wTxi​+b)≤0,即属于可行解时,有:

max⁡αL(w,b,α)=12∣∣w∣∣2\max_{\alpha} L(w,b,\alpha)=\frac{1}{2}||w||^2 αmax​L(w,b,α)=21​∣∣w∣∣2

也就是说,下面两个问题是等价的。
min⁡w,bmax⁡αL(w,b,α)≡min⁡w,b∣∣w∣∣22\min_{w,b}\max_{\alpha} L(w,b,\alpha)\equiv \min_{w,b} \frac{||w||^2}{2} w,bmin​αmax​L(w,b,α)≡w,bmin​2∣∣w∣∣2​

根据拉格朗日对偶性,因为这里是强对偶问题(硬间隔问题),因此有:

max⁡αmin⁡w,bL(w,b,α)≡min⁡w,bmax⁡αL(w,b,α)≡min⁡w,b∣∣w∣∣22\max_{\alpha}\min_{w,b} L(w,b,\alpha) \equiv \min_{w,b}\max_{\alpha} L(w,b,\alpha) \equiv \min_{w,b} \frac{||w||^2}{2} αmax​w,bmin​L(w,b,α)≡w,bmin​αmax​L(w,b,α)≡w,bmin​2∣∣w∣∣2​

令 ∂L(w,b,α)∂w,∂L(w,b,α)∂b\frac{\partial L(w,b,\alpha)}{\partial w},\frac{\partial L(w,b,\alpha)}{\partial b}∂w∂L(w,b,α)​,∂b∂L(w,b,α)​ 为 000。于是有:

{w=∑i=1mαiyixi0=∑i=1mαiyi\begin{cases} w=\sum_{i=1}^{m}\alpha_iy_ix_i\\\\ 0=\sum_{i=1}^{m}\alpha_iy_i \end{cases} ⎩⎪⎨⎪⎧​w=∑i=1m​αi​yi​xi​0=∑i=1m​αi​yi​​

将上述结果带入 max⁡αmin⁡w,bL(w,b,α)\max_{\alpha}\min_{w,b} L(w,b,\alpha)maxα​minw,b​L(w,b,α) 后,有:

max⁡α∑i=1mαi−12∑i=1m∑j=1mαiαjyiyjxiTxj\max_\alpha \sum_{i=1}^{m}\alpha_i-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i \alpha_j y_i y_j x_i^T x_j αmax​i=1∑m​αi​−21​i=1∑m​j=1∑m​αi​αj​yi​yj​xiT​xj​

原问题的对偶问题为:

max⁡α∑i=1mαi−12∑i=1m∑j=1mαiαjyiyjxiTxjs.t.{∑i=1mαiyi=0αi≥0,i=1,2,⋯,m\begin{aligned} &\max_\alpha \sum_{i=1}^{m}\alpha_i-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i \alpha_j y_i y_j x_i^T x_j\\\\ &s.t. \begin{cases} \text{ } \sum_{i=1}^{m} \alpha_iy_i=0\\\\ \alpha_i\ge0,\text{ } i=1,2,\cdots,m \end{cases} \end{aligned} ​αmax​i=1∑m​αi​−21​i=1∑m​j=1∑m​αi​αj​yi​yj​xiT​xj​s.t.⎩⎪⎨⎪⎧​ ∑i=1m​αi​yi​=0αi​≥0, i=1,2,⋯,m​​

人们往往用序列最小优化(SMO)算法进行求解对偶问题。

假设已经求得未知数 α\alphaα,我们记为 α^\hat{\alpha}α^,就可以得出

w^=∑i=1mα^iyixi\hat{w}=\sum_{i=1}^{m}\hat{\alpha}_iy_ix_iw^=i=1∑m​α^i​yi​xi​

实际上,上述过程要满足 KKTKKTKKT 条件:

{αi≥0yi(wTxi+b)−1≥0αi(yi(wTxi+b)−1)=0\begin{cases} \alpha_i\ge0\\\\ y_i(w^Tx_i+b)-1\ge0\\\\ \alpha_i(y_i(w^Tx_i+b)-1)=0 \end{cases} ⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧​αi​≥0yi​(wTxi​+b)−1≥0αi​(yi​(wTxi​+b)−1)=0​

当然,前两个条件是显然成立的。再来看第三个条件,有两种情况:

当 αi=0\alpha_i=0αi​=0,即该样本点不是支持向量,对模型没有作用。
当 yi(wTxi+b)−1=0y_i(w^Tx_i+b)-1=0yi​(wTxi​+b)−1=0,即该样本点位于最大间隔边界上,是一个支持向量。

也应证了前面说的 SVM 只与支持向量有关,与非支持向量无关。

并且我们可以知道 ∃αj>0\exists \alpha_j>0∃αj​>0(若 ∀αj=0\forall \alpha_j=0∀αj​=0(都是非支持向量),那么 w=0w=0w=0,即 max⁡αL(w,b,α)=+∞\max_{\alpha} L(w,b,\alpha)=+\inftymaxα​L(w,b,α)=+∞,此时无解!!!),于是 ∃j\exists j∃j,使得 yj(wTxj+b)−1=0y_j(w^Tx_j+b)-1=0yj​(wTxj​+b)−1=0(任意一个支持向量),此时,可以求得 b^\hat{b}b^,如下:

b^=1yj−w^Txj=1yj−∑i=1mα^iyixiTxj\begin{aligned} \hat{b}&=\frac{1}{y_j}-\hat{w}^Tx_j\\ &=\frac{1}{y_j}-\sum_{i=1}^{m}\hat{\alpha}_iy_ix_i^Tx_j \end{aligned} b^​=yj​1​−w^Txj​=yj​1​−i=1∑m​α^i​yi​xiT​xj​​

那么,我们求得的模型为:

f(x)=sign(w^Tx+b^)=sign(∑i=1mα^iyixiTx+1yj−∑i=1mα^iyixjTxi)\begin{aligned} f(x)&=sign(\hat{w}^Tx+\hat{b})\\ &=sign(\sum_{i=1}^{m}\hat{\alpha}_iy_ix_i^Tx+\frac{1}{y_j}-\sum_{i=1}^{m}\hat{\alpha}_iy_ix_j^Tx_i) \end{aligned} f(x)​=sign(w^Tx+b^)=sign(i=1∑m​α^i​yi​xiT​x+yj​1​−i=1∑m​α^i​yi​xjT​xi​)​

间隔最大超平面为:

∑i=1mα^iyixiTx+1yj−∑i=1mα^iyixjTxi=0\sum_{i=1}^{m}\hat{\alpha}_iy_ix_i^Tx+\frac{1}{y_j}-\sum_{i=1}^{m}\hat{\alpha}_iy_ix_j^Tx_i=0 i=1∑m​α^i​yi​xiT​x+yj​1​−i=1∑m​α^i​yi​xjT​xi​=0

核函数

当数据不是线性可分的时候,如下图,我们需要将数据进行升维。

为了能够找出非线性数据的线性决策边界,我们需要将数据 xxx 非线性变换映射到高维空间 ϕ(x)\phi(x)ϕ(x) 中。ϕ\phiϕ 是一个映射函数,线性 SVM 的原理可以被很容易推广到非线性情况下,其推导过程和逻辑都与线性 SVM 一样,只不过在定义决策边界之前,我们必须先对数据进行升维度,即将原始的 xxx 转换成 ϕ(x)\phi(x)ϕ(x)。

和硬间隔的求解类似,模型为 f(x)=wTϕ(x)+bf(x)=w^T\phi(x)+bf(x)=wTϕ(x)+b。

目标与约束如下:

min⁡w,b12∣∣w∣∣2s.t.yi(wTϕ(xi)+b)≥1,i=1,2,⋯,m\min_{w,b} \text{ } \frac{1}{2}||w||^2\\\\ s.t. \text{ } y_i(w^T\phi(x_i)+b)\ge1 ,\text{ }i=1,2,\cdots,m w,bmin​ 21​∣∣w∣∣2s.t. yi​(wTϕ(xi​)+b)≥1, i=1,2,⋯,m

其对偶问题为:

max⁡a∑i=1mαi−12∑i=1m∑j=1mαiαjyiyjϕT(xi)ϕ(xj)s.t.{∑i=1mαiyi=0αi≥0,i=1,2,⋯,m\begin{aligned} &\max_a \sum_{i=1}^{m}\alpha_i -\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i \alpha_j y_i y_j \phi^T(x_i)\phi(x_j)\\\\ &s.t. \begin{cases} \text{ } \sum_{i=1}^{m} \alpha_i y_i=0\\\\ \alpha_i\ge0,\text{ } i=1,2,\cdots,m \end{cases} \end{aligned} ​amax​i=1∑m​αi​−21​i=1∑m​j=1∑m​αi​αj​yi​yj​ϕT(xi​)ϕ(xj​)s.t.⎩⎪⎨⎪⎧​ ∑i=1m​αi​yi​=0αi​≥0, i=1,2,⋯,m​​

而考虑到映射高维空间的 ϕT(xi)ϕ(xj)\phi^T(x_i)\phi(x_j)ϕT(xi​)ϕ(xj​) 作內积的计算比较困难,因此,设计一个核函数在原来的空间计算替换。

κ(xi,xj)=<ϕ(xi),ϕ(xj)>=ϕT(xi)ϕ(xj)\kappa(x_i,x_j)=<\phi(x_i),\phi(x_j)>=\phi^T(x_i)\phi(x_j) κ(xi​,xj​)=<ϕ(xi​),ϕ(xj​)>=ϕT(xi​)ϕ(xj​)

那么对偶问题重写如下:

max⁡a∑i=1mαi−12∑i=1m∑j=1mαiαjyiyjκ(xi,xj)s.t.{∑i=1mαiyi=0αi≥0,i=1,2,⋯,m\begin{aligned} &\max_a \sum_{i=1}^{m}\alpha_i -\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i \alpha_j y_i y_j \kappa(x_i,x_j)\\\\ &s.t. \begin{cases} \text{ } \sum_{i=1}^{m} \alpha_i y_i=0\\\\ \alpha_i\ge0,\text{ } i=1,2,\cdots,m \end{cases} \end{aligned} ​amax​i=1∑m​αi​−21​i=1∑m​j=1∑m​αi​αj​yi​yj​κ(xi​,xj​)s.t.⎩⎪⎨⎪⎧​ ∑i=1m​αi​yi​=0αi​≥0, i=1,2,⋯,m​​

求解得到模型为:
f(x)=sign(w^Tϕ(x)+b^)=sign(∑i=1mα^iyiϕT(xi)ϕ(x)+1yj−∑i=1mα^iyiϕT(xj)ϕ(xi))=sign(∑i=1mα^iyiκ(xi,x)+1yj−∑i=1mα^iyiκ(xj,xi))\begin{aligned} f(x)&=sign(\hat{w}^T\phi(x)+\hat{b})\\ &=sign(\sum_{i=1}^{m}\hat{\alpha}_i y_i \phi^T(x_i)\phi(x)+\frac{1}{y_j}-\sum_{i=1}^{m}\hat{\alpha}_i y_i \phi^T(x_j)\phi(x_i))\\ &=sign(\sum_{i=1}^{m}\hat{\alpha}_i y_i \kappa(x_i,x)+\frac{1}{y_j}-\sum_{i=1}^{m}\hat{\alpha}_i y_i \kappa(x_j,x_i)) \end{aligned} f(x)​=sign(w^Tϕ(x)+b^)=sign(i=1∑m​α^i​yi​ϕT(xi​)ϕ(x)+yj​1​−i=1∑m​α^i​yi​ϕT(xj​)ϕ(xi​))=sign(i=1∑m​α^i​yi​κ(xi​,x)+yj​1​−i=1∑m​α^i​yi​κ(xj​,xi​))​

间隔最大超平面为:

∑i=1mα^iyiκ(xi,x)+b^)+1yj−∑i=1mα^iyiκ(xj,xi)=0\sum_{i=1}^{m}\hat{\alpha}_i y_i \kappa(x_i,x)+\hat{b})+\frac{1}{y_j}-\sum_{i=1}^{m}\hat{\alpha}_i y_i \kappa(x_j,x_i)=0 i=1∑m​α^i​yi​κ(xi​,x)+b^)+yj​1​−i=1∑m​α^i​yi​κ(xj​,xi​)=0

这里 κ(⋅,⋅)\kappa(·,·)κ(⋅,⋅) 是核函数。

常用的核函数如下:

名称 表达式 参数
线性核 κ(xi,xj)=xiTxj\kappa(x_i,x_j)=x_i^Tx_jκ(xi​,xj​)=xiT​xj​
多项式核 κ(xi,xj)=(xiTxj)d\kappa(x_i,x_j)=(x_i^Tx_j)^dκ(xi​,xj​)=(xiT​xj​)d d≥1d\ge1d≥1为多项式的次数
高斯核 κ(xi,xj)=exp⁡(−∣xi−xj∣22σ2)\kappa(x_i,x_j)=\exp(-\frac{|x_i-x_j|^2}{2\sigma^2})κ(xi​,xj​)=exp(−2σ2∣xi​−xj​∣2​) σ>0\sigma>0σ>0为高斯核的带宽
拉普拉斯核 κ(xi,xj)=exp⁡(−∣xi−xj∣2σ)\kappa(x_i,x_j)=\exp(-\frac{ | x_i-x_j|^2}{\sigma})κ(xi​,xj​)=exp(−σ∣xi​−xj​∣2​) σ>0\sigma>0σ>0
SigmoidSigmoidSigmoid核 κ(xi,xj)=tanh(βxiTxj+θ)\kappa(x_i,x_j)=tanh(\beta x_i^Tx_j+\theta)κ(xi​,xj​)=tanh(βxiT​xj​+θ) tanhtanhtanh为双曲正切函数,β>0\beta>0β>0,θ<0\theta<0θ<0

软间隔和正则化

在前面介绍中,我们假定训练数据是严格线性可分的,即存在一个超平面能完全将两类数据分开。但是现实任务这个假设往往不成立,例如下图所示的数据。

那我们允许小部分数据不满足以下条件:

yi(wTxi+b)≥1y_i(w^Tx_i+b)\ge1 yi​(wTxi​+b)≥1

为了使不满足上述条件的样本点尽可能少,我们需要在优化的目标函数新增一个对这些点的惩罚项。最常用的是 hinge 损失:

ℓhinge(z)=max(0,1−z)\ell_{hinge}(z)=max(0,1-z) ℓhinge​(z)=max(0,1−z)

即若样本点满足约束条件损失就是 000, 否则损失就是 1−z1-z1−z,则优化目标为:

min⁡w,b12∣∣w∣∣2+C∑i=1mmax(0,1−yi(wTxi+b))\min_{w,b} \text{ } \frac{1}{2}||w||^2+C\sum_{i=1}^{m}max(0,1-y_i(w^Tx_i+b)) w,bmin​ 21​∣∣w∣∣2+Ci=1∑m​max(0,1−yi​(wTxi​+b))

其中 CCC 称为惩罚参数,CCC 越小时对误分类惩罚越小,越大时对误分类惩罚越大,当 CCC 取正无穷时就变成了硬间隔优化。实际应用时我们要合理选取 CCC,CCC 越小越容易欠拟合,CCC 越大越容易过拟合(margin越小)

引入松弛变量 ξi≥0\xi_i\ge0ξi​≥0,将目标重写为:

min⁡w,b,ξi12∣∣w∣∣2+C∑i=1mξis.t.{yi(wTxi+b)≥1−ξiξi≥0i=1,2,⋯,m\begin{aligned} &\min_{w,b,\xi_i} \text{ } \frac{1}{2}||w||^2+C\sum_{i=1}^{m}\xi_i\\\\ &s.t. \begin{cases} y_i(w^Tx_i+b)\ge1-\xi_i\\\\ \xi_i\ge0 \text{ } i=1,2,\cdots,m \end{cases} \end{aligned} ​w,b,ξi​min​ 21​∣∣w∣∣2+Ci=1∑m​ξi​s.t.⎩⎪⎨⎪⎧​yi​(wTxi​+b)≥1−ξi​ξi​≥0 i=1,2,⋯,m​​

与前面一样,通过拉格朗日乘数法进行求解,构造拉格朗日函数,对 ∀αi≥0,μi≥0\forall \alpha_i \ge 0, \mu_i\ge0∀αi​≥0,μi​≥0,有以下式子:

L(w,b,α,ξ,μ)=12∣∣w∣∣2+C∑i=1mξi+∑i=1mαi(1−ξi−yi(wTxi+b))−∑i=1mμiξiL(w,b,\alpha,\xi,\mu)=\frac{1}{2}||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 L(w,b,α,ξ,μ)=21​∣∣w∣∣2+Ci=1∑m​ξi​+i=1∑m​αi​(1−ξi​−yi​(wTxi​+b))−i=1∑m​μi​ξi​

令 ∂L(w,b,α,ξ,μ)∂w,∂L(w,b,α,ξ,μ)∂b,∂L(w,b,α,ξ,μ)∂ξi\frac{\partial L(w,b,\alpha,\xi,\mu)}{\partial w},\frac{\partial L(w,b,\alpha,\xi,\mu)}{\partial b},\frac{\partial L(w,b,\alpha,\xi,\mu)}{\partial \xi_i}∂w∂L(w,b,α,ξ,μ)​,∂b∂L(w,b,α,ξ,μ)​,∂ξi​∂L(w,b,α,ξ,μ)​ 为 000。于是有:

{w=∑i=1mαiyixi0=∑i=1mαiyiC=αi+μi\begin{cases} w=\sum_{i=1}^{m}\alpha_iy_ix_i\\\\ 0=\sum_{i=1}^{m}\alpha_iy_i\\\\ C=\alpha_i+\mu_i \end{cases} ⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧​w=∑i=1m​αi​yi​xi​0=∑i=1m​αi​yi​C=αi​+μi​​

将上述结果带入拉格朗日函数即可得到对偶问题为:

max⁡α∑i=1mαi−12∑i=1m∑j=1mαiαjyiyjxiTxjs.t.{∑i=1mαiyi=00≤αi≤C,i=1,2,⋯,m\begin{aligned} &\max_\alpha \text{ } \sum_{i=1}^{m}\alpha_i-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i \alpha_j y_i y_j x_i^Tx_j\\\\ &s.t. \begin{cases} \sum_{i=1}^{m}\alpha_iy_i=0\\\\ 0\le \alpha_i \le C,\text{ } i=1,2,\cdots,m \end{cases} \end{aligned} ​αmax​ i=1∑m​αi​−21​i=1∑m​j=1∑m​αi​αj​yi​yj​xiT​xj​s.t.⎩⎪⎨⎪⎧​∑i=1m​αi​yi​=00≤αi​≤C, i=1,2,⋯,m​​

上述过程 KKTKKTKKT 条件为:

{αi≥0,μi≥0yi(wTxi+b)−1+ξi≥0αi(yi(wTxi+b)−1+ξi)=0ξi≥0,μiξi=0\begin{cases} \alpha_i \ge0,\mu_i \ge0\\\\ y_i(w^Tx_i+b)-1+\xi_i\ge0\\\\ \alpha_i(y_i(w^Tx_i+b)-1+\xi_i)=0\\\\ \xi_i \ge0,\mu_i\xi_i=0 \end{cases} ⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧​αi​≥0,μi​≥0yi​(wTxi​+b)−1+ξi​≥0αi​(yi​(wTxi​+b)−1+ξi​)=0ξi​≥0,μi​ξi​=0​

与前面一样,用 SMO 求解即可。

支持向量回归

前面介绍完了分类,这里介绍回归问题,我们称为支持向量回归(SVR)

给定样本 D={(x1,y1),⋯,(xm,ym)}D=\left \{ (x_1,y_1),\cdots,(x_m,y_m) \right \}D={(x1​,y1​),⋯,(xm​,ym​)},yi∈Ry_i\in Ryi​∈R,我们希望学得一个回归模型,使 f(x)f(x)f(x) 与 yyy 尽可能接近。

SVR 假设 f(x)f(x)f(x) 与 yyy 最多有 ε\varepsilonε 的偏差,这相当于以 f(x)f(x)f(x) 为中心,构建了一个宽度为 2ε2\varepsilon2ε 的间隔带,若训练样本落入此间隔带,则认为是被预测正确的。

于是,SVR 问题为:

min⁡w,b12∣∣w∣∣2+C∑i=1mℓε(f(xi)−yi)\min_{w,b} \text{ } \frac{1}{2}||w||^2+C\sum_{i=1}^{m}\ell_\varepsilon (f(x_i)-y_i) w,bmin​ 21​∣∣w∣∣2+Ci=1∑m​ℓε​(f(xi​)−yi​)

其中 CCC 为正则化常数,ℓε\ell_\varepsilonℓε​ 为损失函数:

ℓε(z){0,if∣z∣≤ε∣z∣−ε,otherwise\ell_\varepsilon(z) \begin{cases} 0, & if |z|\le \varepsilon\\\\ |z|-\varepsilon,&otherwise \end{cases} ℓε​(z)⎩⎪⎨⎪⎧​0,∣z∣−ε,​if∣z∣≤εotherwise​

引入松弛变量 ξi\xi_iξi​ 和 ξ^i\hat{\xi}_iξ^​i​,可将原问题转化为:

min⁡w,b,ξi,ξ^i12∣∣w∣∣2+C∑i=1m(ξi+ξ^i)s.t.{f(xi)−yi≤ε+ξiyi−f(xi)≤ε+ξ^iξi≥0,ξ^i≥0,i=1,2,⋯,m\begin{aligned} &\min_{w,b,\xi_i,\hat{\xi}_i} \text{ } \frac{1}{2}||w||^2 + C\sum_{i=1}^{m}(\xi_i+\hat{\xi}_i)\\\\ &s.t. \begin{cases} f(x_i)-y_i\le \varepsilon+\xi_i\\\\ y_i-f(x_i)\le \varepsilon+\hat{\xi}_i\\\\ \xi_i \ge0,\hat{\xi}_i\ge0,\text{ } i=1,2,\cdots,m \end{cases} \end{aligned} ​w,b,ξi​,ξ^​i​min​ 21​∣∣w∣∣2+Ci=1∑m​(ξi​+ξ^​i​)s.t.⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧​f(xi​)−yi​≤ε+ξi​yi​−f(xi​)≤ε+ξ^​i​ξi​≥0,ξ^​i​≥0, i=1,2,⋯,m​​

类似的,设拉格朗日函数为:

L(w,b,α,α^,ξ,ξ^,μ,μ^)=12∣∣w∣∣2+C∑i=1m(ξi+ξ^i)−∑i=1mμiξi−∑i=1mμ^iξ^i+∑i=1mαi(f(xi)−yi−ε−ξi)+∑i=1mα^i(yi−f(xi)−ε−ξ^i)\begin{aligned} L(w,b,\alpha,\hat{\alpha},\xi,\hat{\xi},\mu,\hat{\mu})&=\frac{1}{2}||w||^2+C\sum_{i=1}^{m}(\xi_i+\hat{\xi}_i)-\sum_{i=1}^{m}\mu_i \xi_i-\sum_{i=1}^{m}\hat{\mu}_i\hat{\xi}_i\\\\ &+\sum_{i=1}^{m}\alpha_i(f(x_i)-y_i-\varepsilon-\xi_i)+\sum_{i=1}^{m}\hat{\alpha}_i(y_i-f(x_i)-\varepsilon-\hat{\xi}_i) \end{aligned} L(w,b,α,α^,ξ,ξ^​,μ,μ^​)​=21​∣∣w∣∣2+Ci=1∑m​(ξi​+ξ^​i​)−i=1∑m​μi​ξi​−i=1∑m​μ^​i​ξ^​i​+i=1∑m​αi​(f(xi​)−yi​−ε−ξi​)+i=1∑m​α^i​(yi​−f(xi​)−ε−ξ^​i​)​

对上述函数的 w,b,ξi,ξ^iw,b,\xi_i,\hat{\xi}_iw,b,ξi​,ξ^​i​ 分别求偏导后,置为 000 得到:

{w=∑i=1m(α^i−αi)xi0=∑i=1m(α^i−αi)C=αi+μiC=α^i+μ^i\begin{cases} w=\sum_{i=1}^{m}(\hat{\alpha}_i-\alpha_i)x_i\\\\ 0=\sum_{i=1}^{m}(\hat{\alpha}_i-\alpha_i)\\\\ C=\alpha_i+\mu_i\\\\ C=\hat{\alpha}_i+\hat{\mu}_i \end{cases} ⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧​w=∑i=1m​(α^i​−αi​)xi​0=∑i=1m​(α^i​−αi​)C=αi​+μi​C=α^i​+μ^​i​​

将上述结果带入拉格朗日函数,得到 SVR 对偶问题为:

max⁡α,α^∑i=1myi(α^i−αi)−ε(α^i+αi)−12∑i=1m∑j=1m(α^i−αi)(α^j−αj)xiTxjs.t.{∑i=1m(α^i−αi)=00≤αi,α^i≤C\begin{aligned} \max_{\alpha,\hat{\alpha}} \text{ } &\sum_{i=1}^{m}y_i(\hat{\alpha}_i-\alpha_i)-\varepsilon(\hat{\alpha}_i+\alpha_i)\\ &-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}(\hat{\alpha}_i-\alpha_i)(\hat{\alpha}_j-\alpha_j)x_i^Tx_j\\\\ &s.t. \begin{cases} \sum_{i=1}^{m}(\hat{\alpha}_i-\alpha_i)=0\\\\ 0\le \alpha_i,\hat{\alpha}_i \le C \end{cases} \end{aligned} α,α^max​ ​i=1∑m​yi​(α^i​−αi​)−ε(α^i​+αi​)−21​i=1∑m​j=1∑m​(α^i​−αi​)(α^j​−αj​)xiT​xj​s.t.⎩⎪⎨⎪⎧​∑i=1m​(α^i​−αi​)=00≤αi​,α^i​≤C​​

上述过程需满足 KKTKKTKKT 条件:

{αi(f(xi)−yi−ε−ξi)=0α^i(yi−f(xi)−ε−ξ^i)=0αiα^i=0.ξiξi^=0(C−αi)ξi=0,(C−α^iξ^i)=0\begin{cases} \alpha_i(f(x_i)-y_i-\varepsilon-\xi_i)=0\\\\ \hat{\alpha}_i(y_i-f(x_i)-\varepsilon-\hat{\xi}_i)=0\\\\ \alpha_i\hat{\alpha}_i=0.\xi_i\hat{\xi_i}=0\\\\ (C-\alpha_i)\xi_i=0,(C-\hat{\alpha}_i\hat{\xi}_i)=0 \end{cases} ⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧​αi​(f(xi​)−yi​−ε−ξi​)=0α^i​(yi​−f(xi​)−ε−ξ^​i​)=0αi​α^i​=0.ξi​ξi​^​=0(C−αi​)ξi​=0,(C−α^i​ξ^​i​)=0​

前两个条件可以看出只要样本 (xi,yi)(x_i,y_i)(xi​,yi​) 落入 2ε2\varepsilon2ε 的间隔带中(即 αi或α^i可以取非零值\alpha_i \text{或} \hat{\alpha}_i \text{可以取非零值}αi​或α^i​可以取非零值)

相应的,SVR 的解为:

f(x)=∑i=1m(α^i−αi)xiTx+bf(x)=\sum_{i=1}^{m}(\hat{\alpha}_i-\alpha_i)x_i^Tx+b f(x)=i=1∑m​(α^i​−αi​)xiT​x+b

而在第四个条件下,若得到了 αi\alpha_iαi​,则 ξi=0\xi_i=0ξi​=0,又有 0<αi<C0<\alpha_i<C0<αi​<C,此时可以得到 bbb 为:

b=yi+ε−∑j=1m(α^j−αj)xjTxib=y_i+\varepsilon-\sum_{j=1}^{m}(\hat{\alpha}_j -\alpha_j)x_j^Tx_i b=yi​+ε−j=1∑m​(α^j​−αj​)xjT​xi​

如果需要将原空间的数据 xxx 映射到 ϕ(x)\phi(x)ϕ(x) 的高维空间中,则模型为:

f(x)=∑i=1m(αi^−αi)κ(x,xi)+bf(x)=\sum_{i=1}^{m}(\hat{\alpha_i}-\alpha_i)\kappa(x,x_i)+b f(x)=i=1∑m​(αi​^​−αi​)κ(x,xi​)+b

其中 κ(xi,xj)=ϕT(xi)ϕ(xj)\kappa(x_i,x_j)=\phi^T(x_i)\phi(x_j)κ(xi​,xj​)=ϕT(xi​)ϕ(xj​) 为核函数。

那么,以上就是 SVM 和 SVR 的原理部分了,这个模型对二分类来说还是不错的。刚接触该模型确实还是有点难的,需要时间慢慢去磨。

参考资料

[1] 周志华.机器学习[M].北京:清华大学出版社,2020.

支持向量机(SVM)原理及公式推导相关推荐

  1. SVM原理及公式推导

    SVM原理及公式推导 1. SVM总结 支持向量机(SVM)是一类按监督学习方式对数据进行二元分类的广义线性分类器,其决策边界是对学习样本求解的最大边距超平面,可以将问题化为一个求解凸二次规划的问题. ...

  2. 统计学习方法|支持向量机(SVM)原理剖析及实现

    欢迎直接到我的博客查看最近文章:www.pkudodo.com.更新会比较快,评论回复我也能比较快看见,排版也会更好一点. 原始blog链接: http://www.pkudodo.com/2018/ ...

  3. 机器学习:支持向量机SVM原理与理解

    引言 --"举牌子:Support Vector Machines " 一直在犹豫要不要写SVM,因为网上已经有很多详细的SVM原理的解释甚至详细推导,而这东西又庞大复杂,想了解的 ...

  4. 支持向量机SVM原理解析

    支持向量机(SVM) 支持向量机(support vector machine,SVM)使用训练集中的一个子集来表示决策边界,边界用于样本分类,这个子集称作支持向量(support vector). ...

  5. 支持向量机SVM原理及代码推导

    导包并创建数据 #导包 import numpy as np import matplotlib.pyplot as plt from sklearn.svm import SVC from mpl_ ...

  6. 支持向量机SVM原理(一)

    1 简介 支持向量机基本上是最好的有监督学习算法了.最开始接触SVM是去年暑假的时候,老师要求交<统计学习理论>的报告,那时去网上下了一份入门教程,里面讲的很通俗,当时只是大致了解了一些相 ...

  7. 支持向量机SVM原理

    1 简介 支持向量机基本上是最好的有监督学习算法了.最开始接触SVM是去年暑假的时候,老师要求交<统计学习理论>的报告,那时去网上下了一份入门教程,里面讲的很通俗,当时只是大致了解了一些相 ...

  8. 机器学习-分类之支持向量机(SVM)原理及实战

    支持向量机(SVM) 简介 支持向量机(Support Vector Machine,SVM),是常见的一种判别方法.在机器学习领域,是一个监督学习模型,通常用来进行模式识别.分类及回归分析.与其他算 ...

  9. 支持向量机——SVM原理

    SVM--Support Vector Machine 5.11 update:拉格朗日对偶问题的推导 5.15 update:SMO算法推导 5.17 update:sklearn实现 文章目录 S ...

  10. SVM原理及公式推导、相互配合的MATLAB工具箱--LIBSVM、FarutoUltimate、gatbx-master的下载、安装、编译|学习使用SVM的保姆级一条龙服务

    1.SVM算法原理 支持向量机(support vector machines,SVM)是一种有监督的机器学习算法,适合中小型数据样本.非线性.高维的分类问题. (这一部分公式太多,直接发word截图 ...

最新文章

  1. 下一代防火墙的5个优点
  2. 数据结构于算法—线性表
  3. IE浏览器error:Promise未定义
  4. go和python组合开发_混合Python和Go
  5. 【Python】from __future__ import absolute_import的作用
  6. JavaWeb学习总结(三):Tomcat服务器学习和使用(二)
  7. SpringCloud Eureka服务治理
  8. [android] 手机卫士设置向导页面
  9. 做测试开发半年涨薪20W入职名企大厂,这位90后凭什么?
  10. 12.高性能MySQL --- 高可用性
  11. 【协作通信】基于matlab协作通信仿真【含Matlab源码 1006期】
  12. Fiddler中文乱码解决方法
  13. python语言实现读取菜谱_通过Python语言实现美团美食商家数据抓取
  14. java筆試題,Java筆試題及答案
  15. 手机变php,poscms手机网站切换
  16. 浏览器环境 兼容运行ES6语法
  17. python文件重命名
  18. Python 文件与数据格式化
  19. Manifest基本
  20. 关注楼主 初级通信工程师证书考了有用吗?要不要直接跳考中级?

热门文章

  1. 【花雕体验】01上手行空板
  2. 《跑跑卡丁车》S2赛季开启:通行证奖励却要等到9月6号?
  3. 左耳听风 第二十九周
  4. 动态规划9:马尔可夫决策过程
  5. git clone: error:RPC failed;result=18,HTTP code = 200 MiB | 2.00 KiB/s解决办法
  6. Windows服务启动失败
  7. ubuntu设置网卡速率
  8. 通俗理解什么是ngram
  9. 互联网+智能垃圾分类回收系统解决方案
  10. 整体家装背后的“暴利” 五金橱柜最为突出