CS Notes
  • CS-Notes文档说明
  • 机器学习
    • 频率派和贝叶斯学派
    • 机器学习中的分类指标
    • 数学基础
    • 数据清洗
    • SVM
    • 线性模型
    • 拉格朗日乘子法和KKT条件
    • 集成学习
    • 贝叶斯分类器
    • 降维和度量学习
    • 决策树
    • 神经网络
    • 神经网络优化器
    • Autoencoders & GANs
    • IoU
    • EM算法
    • ML问题总结
    • 机器学习&深度学习学习资料汇总
    • 如何阅读论文
    • 如何写好一篇论文
  • 语言、算法相关
    • 背包问题 - 01背包&完全背包
    • 平衡二叉树AVL
    • 红黑树RB-Tree
    • STL容器
    • STL 常用算法
    • Markdown总结
    • 问题总结
    • 代码汇总
    • PAT手册
  • MIT 6.828 OS课程
  • ImGui
Powered by GitBook
On this page
  • SVM原理
  • 函数间隔与几何间隔:
  • 参数说明
  • SVM优化问题推导
  • 拉格朗日乘子法和KKT条件
  • SMO算法
  • 更新阈值b
  • 参考文献

Was this helpful?

  1. 机器学习

SVM

SVM原理

首先需要知道支持向量机的分类:

  1. 线性可分支持向量机

    这种向量机是属于最为理想的状态,满足两个条件,线性和可分。

  2. 线性支持向量机

    这种向量机则允许出现一些错误的数据点

  3. 非线性支持向量机

    这种向量机就是能够处理非线性的数据,通过特征映射的方式将非线性的数据信息转化为线性可分的数据,然后再利用向量机进行分类。

简单的理解表现在二维平面上就是线性的分类方式为一条直线,而非线性的分类方式为一条曲线。

函数间隔与几何间隔:

参数说明

线性核:

C参数越来越大,分类的界面越来越窄,表明使用了越来越少的样本来做分类,有可能导致过拟合,但是C值越大,能使得训练精度变高。实际中需要确认想要的目标是训练精度高,还是泛化能力强的问题

高斯核:

γ足够大的话,分界曲面靠近于训练数据,换句话说,总是可以将γ值取得足够大的话,使得它的分类准确度是百分之一百

当γ足够小的时候,高斯核就退化成为了线性核 当γ足够大的时候,高斯核就退化成为了K近邻

SVM优化问题推导

假设在一个平面中,存在两个类别的样本,并且是可分的,那么一定可以找到无数条直线将其分开。存在一条直线可以将其分开,并且这条直线离样本的距离是最大的。

下面我们通过一个实际的表达式来推到到数学上的表达式

假设这条直线为:2x+y−4=02x + y -4 = 02x+y−4=0

那么我们可以写成(2,1)(xy)−4=0(2,1)\begin{pmatrix}x \\ y\end{pmatrix} - 4 = 0(2,1)(xy​)−4=0

即将(2,1)(2, 1)(2,1)作为www,(xy)\begin{pmatrix}x \\ y\end{pmatrix} (xy​)作为xxx,−4-4−4作为bbb,这样分界面就可以写成wTx+b=0w^T x + b = 0wTx+b=0。其中www和xxx为向量,bbb为标量。这里的分界面的表达式代表的就是这条分解的直线,在高维空间中,则称之为超平面。

此时将样本点带入wTx+bw^Tx + bwTx+b中得到的结果如果为正数,样本点就位于直线法线的正向,反之则位于法线的负向。

接下来我们要考虑的是如何衡量样本属于正例还是负例呢?

这里使用的是距离的方式来衡量,回顾下我们计算点到直线的距离计算公式:∣wx+b∣∥w∥\frac{|wx + b|}{\left \| w \right \|}∥w∥∣wx+b∣​,通过这个来衡量样本分界面wTx+b=0w^Tx + b = 0wTx+b=0的距离。

但是这个公式中包含了一个绝对值让人很讨厌,我们要想办法去掉绝对值。

如果该样本属于正例的话,那么wTx+bw^Tx + bwTx+b的结果为一个正数,如果是负例的话,则是一个负数,那么这个时候如果我们给wTx+bw^Tx + bwTx+b乘上标记值yyy,当样本点落在直线上方的时候,距离为正值,对应的标记值yyy为+1,二者相乘为正值。如果样本点位于直线下方,距离为负值,对应的标记值yyy为-1,二者相乘也为正值。那就可以去掉wTx+bw^Tx + bwTx+b的绝对值符号了,结果为y∗(wTx+b)∥w∥ \frac { y*(w^Tx + b)} {\left \| w \right \|} ∥w∥y∗(wTx+b)​, 这就是最终的距离衡量式子。

那么我们要的目标是什么呢?

我们希望的是能够找到一个分割面,二维的话就是一条直线,能够使得样本离这条直线的距离最大。

那么在训练过程中,我们首先需要找到的是离分界面距离最小的那个样本,然后使得这个样本到超平面的距离达到最大,表达成数学式子如下:

arg max⁡w,b {1∥w∥min⁡n yn∗(wTxn+b)} {\underset {w, b}{arg\, \operatorname {max} }}\,\{ \frac { 1} {\left \| w \right \|}{\underset {n} {\operatorname {min} }}\, y_n*(w^Tx_n + b)\}w,bargmax​{∥w∥1​nmin​yn​∗(wTxn​+b)}

因为1∥w∥\frac{1}{\left \| w \right \|}∥w∥1​和n无关,所以提出到外面。

上面的目标函数中:有这一个1∥w∥\frac{1}{\left \| w \right \|}∥w∥1​项,这个∥w∥\left \| w \right \|∥w∥的计算是这样的,假设它为k维,那么∥w∥=w12+w22+w32+...+wk2\left \| w \right \| = \sqrt {w_1^2+w_2^2+w_3^2+...+w_k^2}∥w∥=w12​+w22​+w32​+...+wk2​​再开根号,如果直接用这个来进行优化,实现起来非常复杂,所以需要做一个等价的变化。

比如说刚刚的直线:2x+y−4=02x + y - 4 = 02x+y−4=0,那么我们总是可以计算所有的样本到这条直线的距离,那么必然存在最小距离,我们可以将这个距离进行缩放到1,这个是可以做到的。

原因是这样,假设直线的最小距离算出来为7,那么我们对直线距离计算公式两边同时除以7,那么就可以让距离变为1,那么此时的直线可能转化为 2x+y−44=0\frac{2x + y -4}{4}= 042x+y−4​=0。那么这个时候y∗(wx+b) y*(wx + b)y∗(wx+b)这个项就为1,同时要求所有的样本点的y*(wx + b)计算的结果都要大于等于1。

那么我们就可以令离超平面最近的点的距离为:y∗(wx+b)=1 y*(wx + b)=1y∗(wx+b)=1,这样所有的样本点到超平面的距离都会大于等于1,所以min⁡n yn∗(wxn+b)=1 {\underset {n} {\operatorname {min} }}\, y_n*(wx_n + b) = 1nmin​yn​∗(wxn​+b)=1。

那么目标函数就可以化简为:arg max⁡w 1∥w∣∣s.t.  yn∗(wTxn+b)≥1arg\, {\underset {w}{\operatorname {max} }}\, \frac{1}{\left \|w \right ||}\\ s.t. \ \ y_n*(w^Tx_n + b) \geq 1argwmax​∥w∣∣1​s.t.  yn​∗(wTxn​+b)≥1

此时我们多了一个约束条件,y∗(wx+b) y*(wx + b)y∗(wx+b)大于等于1。

要求1∥w∥\frac{1}{\left \| w \right \|}∥w∥1​最大,那就是要求∥w∥ \left \| w \right \|∥w∥最小,就相当于求12∥w∥2 \frac{1}{2} \left \| w \right \|^221​∥w∥2最小,其中的12\frac{1}{2}21​和平方都是为了后面的求解方便。

最终我们得到SVM的目标函数为:

arg min⁡w 12∥w∥2s.t.  yn∗(wTxn+b)≥1,  n=1,......,Narg\, {\underset {w}{\operatorname {min} }}\, \frac{1}{2} \left \| w \right \|^2\\ s.t. \ \ y_n*(w^Tx_n + b) \geq 1, \ \ n=1, ... ...,Nargwmin​21​∥w∥2s.t.  yn​∗(wTxn​+b)≥1,  n=1,......,N

拉格朗日乘子法和KKT条件

那么现在怎么做呢?带条件的最优化问题,需要用到拉格朗日乘子法。关于拉格朗日乘子法为什么要这么做,参考这里。

引入拉格朗日乘子,将优化函数写成:

L(w,b,α)=12∥w∥2+∑n=1Nαn{1−yn(wTxn+b)}L(w,b, \alpha)=\frac{1}{2} \left \| w \right \|^2 +\sum_{n=1}^N\alpha _n\{1-y_n(w^Tx_n+b)\}L(w,b,α)=21​∥w∥2+n=1∑N​αn​{1−yn​(wTxn​+b)}

然后对www和bbb分别求偏导得到:

∂L(w,b,α)∂w=w−∑n=1Nαnynxn=0∂L(w,b,α)∂b=∑n=1Nαnyn=0\frac{\partial L(w, b, \alpha)}{\partial w}=w-\sum_{n=1}^N\alpha _ny_nx_n=0\\ \frac{\partial L(w, b, \alpha)}{\partial b}=\sum_{n=1}^N\alpha _ny_n=0∂w∂L(w,b,α)​=w−n=1∑N​αn​yn​xn​=0∂b∂L(w,b,α)​=n=1∑N​αn​yn​=0

化简一下可以得到:

w=∑n=1Nαnynxn∑n=1Nαnyn=0w=\sum_{n=1}^N\alpha _ny_nx_n\\ \sum_{n=1}^N\alpha _ny_n=0w=n=1∑N​αn​yn​xn​n=1∑N​αn​yn​=0

将这两个结果带入先前的拉格朗日函数中:

L(w,b,α)=12∥w∥2+∑n=1Nαn{1−yn(wTxn+b)}=12∥w∥2+∑n=1Nαn−∑n=1NαnynwTxn+∑n=1Nαnynb=12∥w∥2+∑n=1Nαn−∑n=1NαnynwTxn=12∑n=1Nαnynxn∑m=1Nαmynxm+∑n=1Nαn−∑n=1Nαnyn(∑m=1Nαmymxm)xn=12∑n=1N∑m=1Nαnαmynynxnxm+∑n=1Nαn−∑n=1N∑m=1Nαnαmynymxnxm=∑n=1Nαn−12∑n=1N∑m=1Nαnαmynynxnxm\begin{aligned} L(w,b,\alpha )&=\frac{1}{2}\Vert w\Vert ^{2} +\sum ^{N}_{n=1} \alpha _{n} \{1-y_{n} (w^{T} x_{n} +b)\}\\ &=\frac{1}{2}\Vert w\Vert ^{2} +\sum ^{N}_{n=1} \alpha _{n} -\sum ^{N}_{n=1} \alpha _{n} y_{n} w^{T} x_{n} +\sum ^{N}_{n=1} \alpha _{n} y_{n} b\\ &=\frac{1}{2}\Vert w\Vert ^{2} +\sum ^{N}_{n=1} \alpha _{n} -\sum ^{N}_{n=1} \alpha _{n} y_{n} w^{T} x_{n}\\ &=\frac{1}{2}\sum ^{N}_{n=1} \alpha _{n} y_{n} x_{n}\sum ^{N}_{m=1} \alpha _{m} y_{n} x_{m} +\sum ^{N}_{n=1} \alpha _{n} -\sum ^{N}_{n=1} \alpha _{n} y_{n}\left(\sum ^{N}_{m=1} \alpha _{m} y_{m} x_{m}\right) x_{n}\\ &=\frac{1}{2}\sum ^{N}_{n=1}\sum ^{N}_{m=1} \alpha _{n} \alpha _{m} y_{n} y_{n} x_{n} x_{m} +\sum ^{N}_{n=1} \alpha _{n} -\sum ^{N}_{n=1}\sum ^{N}_{m=1} \alpha _{n} \alpha _{m} y_{n} y_{m} x_{n} x_{m}\\ &=\sum ^{N}_{n=1} \alpha _{n} -\frac{1}{2}\sum ^{N}_{n=1}\sum ^{N}_{m=1} \alpha _{n} \alpha _{m} y_{n} y_{n} x_{n} x_{m} \end{aligned}L(w,b,α)​=21​∥w∥2+n=1∑N​αn​{1−yn​(wTxn​+b)}=21​∥w∥2+n=1∑N​αn​−n=1∑N​αn​yn​wTxn​+n=1∑N​αn​yn​b=21​∥w∥2+n=1∑N​αn​−n=1∑N​αn​yn​wTxn​=21​n=1∑N​αn​yn​xn​m=1∑N​αm​yn​xm​+n=1∑N​αn​−n=1∑N​αn​yn​(m=1∑N​αm​ym​xm​)xn​=21​n=1∑N​m=1∑N​αn​αm​yn​yn​xn​xm​+n=1∑N​αn​−n=1∑N​m=1∑N​αn​αm​yn​ym​xn​xm​=n=1∑N​αn​−21​n=1∑N​m=1∑N​αn​αm​yn​yn​xn​xm​​

其中限制条件为:

αn≥0, n=1,...,N∑n=1Nαnyn=0\alpha_n\geq0,\ n=1,...,N\\ \sum_{n=1}^N\alpha _ny_n=0 αn​≥0, n=1,...,Nn=1∑N​αn​yn​=0

那么如何高效地解出这个式子呢?需要用到SMO算法,但是在介绍SMO之前,先来看下线性不可分的数据场景下,SVM要怎么处理。

线性支持向量机

若数据线性不可分,或者存在一个样本点使得最终的结果泛化能力降低,那么可以增加松弛因子来解决这个问题。

约束条件则转化为:y∗(wx+b)≥1−ξ y*(wx + b) \geq 1 - \xiy∗(wx+b)≥1−ξ

目标函数则转化为:min 12∥w∥2+C⋅ξmin\ \frac{1}{2}\left \|w\right \|^2 + C\cdot\ximin 21​∥w∥2+C⋅ξ

这里的C为一个超参数,保证》0

实际上最终我们得到的松弛因子就是损失,前面的是1/2 |w| 2是一个L2的正则项

SVM存在的问题:

  1. 训练样本不能太大,否则训练速度很慢

SVM的优点有:

  1. SVM本身基本一定的防止过拟合的能力

SVM可以用来划分多分类吗?

可以,两个方法,一是直接多分类,时间复杂度是K方乘以一个SVM的时间复杂度和1 vs 1的分类器是一样的,二是使用1 vs rest / 1 vs 1

神经网络也可以处理非线性问题,为什么去全连接层换成SVM的效果会更好呢?在这个问题上SVM会有优势吗?

SVM会更好一点,因为它天然地加入了一点防止过拟合的东西,可能会好一些

一个softmax回归就是一个神经网络

为了减轻噪声样本对SVM的影响,那么就把C调小,使得泛化能力提高

SMO算法

我们根据拉格朗日得到的对偶形式如下:

arg max⁡α∑i=1Nαi−12∑i=1N∑j=1Nyiyjαiαj⟨xi,xj⟩s.t.   αi≥0∑i=1Nαiyi=0arg\, {\underset {\alpha}{\operatorname {max}} } \sum_{i=1}^N\alpha_i - \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^Ny_iy_j\alpha_i\alpha_j\langle x_i, x_j\rangle \\ s. t. \ \ \ \alpha_i \geq 0 \\ \sum_{i=1}^N\alpha_iy_i=0argαmax​i=1∑N​αi​−21​i=1∑N​j=1∑N​yi​yj​αi​αj​⟨xi​,xj​⟩s.t.   αi​≥0i=1∑N​αi​yi​=0

需要优化的参数就是α=(α1,α2,...,αN)\alpha = (\alpha_1, \alpha_2, ..., \alpha_N)α=(α1​,α2​,...,αN​),如果直接优化这么多参数的话,会使得计算变得非常复杂,所有我们需要找到其他方法来解决这个问题,这就是SMO算法。

SMO算法的思想是每次只选取一对(αi,αj)(\alpha_i, \alpha_j)(αi​,αj​)进行优化,根据上面的约束条件,其实选定了两个变量,实际上只有一个变量在变化,按照推导来说明。

假设我们现在选择的一对位(α1,α2)(\alpha_1, \alpha_2)(α1​,α2​),那么根据约束条件可以得到如下的等式:

α1y1+α2y2=−∑i=3Nαiyi\alpha_1y_1 + \alpha_2y_2 = -\sum_{i=3}^N\alpha_iy_iα1​y1​+α2​y2​=−i=3∑N​αi​yi​

在进行一个化简,因为每次只优化两个参数,其余的参数都可以看成常量,所以令等式右边为一个常数γ\gammaγ:

α1y1+α2y2=γ\alpha_1y_1 + \alpha_2y_2 = \gammaα1​y1​+α2​y2​=γ

然后我们按照固定的两个参数写出有优化的式子,将其他与α1,α2\alpha_1,\alpha_2α1​,α2​无关的常数项写成C:

W(α) =∑i=1Nαi−12∑i=1N∑j=1Nyiyjαiαj⟨xi,xj⟩W(α1,α2)=α1+α2−12K1,1y12α12−12K2,2y22α22−12K1,2y1y2α1α2 −12K2,1y2y1α2α1−y1α1∑i=3NαiyiKi,1−y2α2∑i=3NαiyiKi,2+C= α1+α2−12K1,1y12α12−12K2,2y22α22−K1,2y1y2α1α2−y1α1∑i=3NαiyiKi,1−y2α2∑i=3NαiyiKi,2+CW(\alpha )\ =\sum ^{N}_{i=1} \alpha _{i} -\frac{1}{2}\sum ^{N}_{i=1}\sum ^{N}_{j=1} y_{i} y_{j} \alpha _{i} \alpha _{j} \langle x_{i} ,x_{j} \rangle \\ W(\alpha _{1} ,\alpha _{2} )=\alpha _{1} +\alpha _{2} -\frac{1}{2} K_{1,1} y^{2}_{1} \alpha ^{2}_{1} -\frac{1}{2} K_{2,2} y^{2}_{2} \alpha ^{2}_{2} -\frac{1}{2} K_{1,2} y_{1} y_{2} \alpha _{1} \alpha _{2} \ -\frac{1}{2} K_{2,1} y_{2} y_{1} \alpha _{2} \alpha _{1}\\ -y_{1} \alpha _{1}\sum ^{N}_{i=3} \alpha _{i} y_{i} K_{i,1} -y_{2} \alpha _{2}\sum ^{N}_{i=3} \alpha _{i} y_{i} K_{i,2} +C\\ =\ \alpha _{1} +\alpha _{2} -\frac{1}{2} K_{1,1} y^{2}_{1} \alpha ^{2}_{1} -\frac{1}{2} K_{2,2} y^{2}_{2} \alpha ^{2}_{2} -K_{1,2} y_{1} y_{2} \alpha _{1} \alpha _{2}\\ -y_{1} \alpha _{1}\sum ^{N}_{i=3} \alpha _{i} y_{i} K_{i,1} -y_{2} \alpha _{2}\sum ^{N}_{i=3} \alpha _{i} y_{i} K_{i,2} +CW(α) =i=1∑N​αi​−21​i=1∑N​j=1∑N​yi​yj​αi​αj​⟨xi​,xj​⟩W(α1​,α2​)=α1​+α2​−21​K1,1​y12​α12​−21​K2,2​y22​α22​−21​K1,2​y1​y2​α1​α2​ −21​K2,1​y2​y1​α2​α1​−y1​α1​i=3∑N​αi​yi​Ki,1​−y2​α2​i=3∑N​αi​yi​Ki,2​+C= α1​+α2​−21​K1,1​y12​α12​−21​K2,2​y22​α22​−K1,2​y1​y2​α1​α2​−y1​α1​i=3∑N​αi​yi​Ki,1​−y2​α2​i=3∑N​αi​yi​Ki,2​+C

于是得到一个二元函数的优化。然后继续化简,由yiyi=1y_iy_i = 1yi​yi​=1,不管是正例负例二者相乘的结果为1,那么这个时候我们可以根据上面推到的式子中共两边同时乘以y2y_2y2​得到:

α1y1y2+α2y2y2=γy2α2=γy2−α1y1y2\alpha_1y_1y_2 + \alpha_2y_2y_2 = \gamma y_2 \\ \alpha_2=\gamma y_2 - \alpha_1y_1y_2 α1​y1​y2​+α2​y2​y2​=γy2​α2​=γy2​−α1​y1​y2​

带入α2\alpha_2α2​ 的表达式,同时,令v1=∑i=3NαiyiKi,1,v2=∑i=3NαiyiKi,2v_1 = \sum_{i=3}^N\alpha_iy_iK_{i,1} , v_2=\sum_{i=3}^N\alpha_iy_iK_{i,2}v1​=∑i=3N​αi​yi​Ki,1​,v2​=∑i=3N​αi​yi​Ki,2​最终的得到:

W(α1,α2)= γy1−α2y1y2+α2−12K1,1y12(γy1−α2y1y2)2−12K2,2y22α22−K1,2y1y2(γy1−α2y1y2)α2−y1(γy1−α2y1y2)∑i=3NαiyiKi,1−y2α2∑i=3NαiyiKi,2+C=γy1−α2y1y2+α2−12K1,1y12(γy1−α2y1y2)2−12K2,2y22α22−K1,2y1y2(γy1−α2y1y2)α2−y1(γy1−α2y1y2)v1−y2α2v2+CW(\alpha _{1} ,\alpha _{2} )=\ \gamma y_{1} -\alpha _{2} y_{1} y_{2} +\alpha _{2} -\frac{1}{2} K_{1,1} y^{2}_{1}( \gamma y_{1} -\alpha _{2} y_{1} y_{2})^{2} -\frac{1}{2} K_{2,2} y^{2}_{2} \alpha ^{2}_{2} -K_{1,2} y_{1} y_{2}( \gamma y_{1} -\alpha _{2} y_{1} y_{2}) \alpha _{2}\\ -y_{1}( \gamma y_{1} -\alpha _{2} y_{1} y_{2})\sum ^{N}_{i=3} \alpha _{i} y_{i} K_{i,1} -y_{2} \alpha _{2}\sum ^{N}_{i=3} \alpha _{i} y_{i} K_{i,2} +C\\ =\gamma y_{1} -\alpha _{2} y_{1} y_{2} +\alpha _{2} -\frac{1}{2} K_{1,1} y^{2}_{1}( \gamma y_{1} -\alpha _{2} y_{1} y_{2})^{2} -\frac{1}{2} K_{2,2} y^{2}_{2} \alpha ^{2}_{2} -K_{1,2} y_{1} y_{2}( \gamma y_{1} -\alpha _{2} y_{1} y_{2}) \alpha _{2}\\ -y_{1}( \gamma y_{1} -\alpha _{2} y_{1} y_{2}) v_{1} -y_{2} \alpha _{2} v_{2} +CW(α1​,α2​)= γy1​−α2​y1​y2​+α2​−21​K1,1​y12​(γy1​−α2​y1​y2​)2−21​K2,2​y22​α22​−K1,2​y1​y2​(γy1​−α2​y1​y2​)α2​−y1​(γy1​−α2​y1​y2​)i=3∑N​αi​yi​Ki,1​−y2​α2​i=3∑N​αi​yi​Ki,2​+C=γy1​−α2​y1​y2​+α2​−21​K1,1​y12​(γy1​−α2​y1​y2​)2−21​K2,2​y22​α22​−K1,2​y1​y2​(γy1​−α2​y1​y2​)α2​−y1​(γy1​−α2​y1​y2​)v1​−y2​α2​v2​+C

然后我们的工作是进行求导:

∂W(α2)∂α2=−y1y2+1−K1,1y12(γy1−α2y1y2)y1y2−K2,2y22α2−K1,2y1y2(γy1−α2y1y2)+K1,2y12y22α2−y12y2v1−y2v2(带入yi2=1化简)=−y1y2+1−K1,1γy2−K1,1γα2−K2,2α2−K1,2γy2+K1,2α2+K1,2α2−y2v1−y2v2(合并同类项规范式子)=−(K1,1+K2,2−2K1,2)α2−K1,2γy2−K1,1γy2−y2(v1−v2)−y1y2+1(这里非常重要,把1作为一个等量代换,1=y22)=−(K1,1+K2,2−2K1,2)α2−K1,2γy2−K1,1γy2−y2(v1−v2)−y1y2+y22=0\begin{aligned} \frac{\partial W(\alpha _{2} )}{\partial \alpha _{2}} & =-y_{1} y_{2} +1-K_{1,1} y^{2}_{1} (\gamma y_{1} -\alpha _{2} y_{1} y_{2} )y_{1} y_{2} -K_{2,2} y^{2}_{2} \alpha _{2} -K_{1,2} y_{1} y_{2} (\gamma y_{1} -\alpha _{2} y_{1} y_{2} )+K_{1,2} y^{2}_{1} y^{2}_{2} \alpha _{2} -y^{2}_{1} y_{2} v_{1} -y_{2} v_{2}\\ & (带入y^{2}_{i} =1化简)\\ & =-y_{1} y_{2} +1-K_{1,1} \gamma y_{2} -K_{1,1} \gamma \alpha _{2} -K_{2,2} \alpha _{2} -K_{1,2} \gamma y_{2} +K_{1,2} \alpha _{2} +K_{1,2} \alpha _{2} -y_{2} v_{1} -y_{2} v_{2}\\ & (合并同类项规范式子)\\ & =-(K_{1,1} +K_{2,2} -2K_{1,2} )\alpha _{2} -K_{1,2} \gamma y_{2} -K_{1,1} \gamma y_{2} -y_{2} (v_{1} -v_{2} )-y_{1} y_{2} +1\\ & (这里非常重要,把1作为一个等量代换,1=y^{2}_{2})\\ & =-(K_{1,1} +K_{2,2} -2K_{1,2} )\alpha _{2} -K_{1,2} \gamma y_{2} -K_{1,1} \gamma y_{2} -y_{2} (v_{1} -v_{2} )-y_{1} y_{2} +y^{2}_{2} = 0 \end{aligned}∂α2​∂W(α2​)​​=−y1​y2​+1−K1,1​y12​(γy1​−α2​y1​y2​)y1​y2​−K2,2​y22​α2​−K1,2​y1​y2​(γy1​−α2​y1​y2​)+K1,2​y12​y22​α2​−y12​y2​v1​−y2​v2​(带入yi2​=1化简)=−y1​y2​+1−K1,1​γy2​−K1,1​γα2​−K2,2​α2​−K1,2​γy2​+K1,2​α2​+K1,2​α2​−y2​v1​−y2​v2​(合并同类项规范式子)=−(K1,1​+K2,2​−2K1,2​)α2​−K1,2​γy2​−K1,1​γy2​−y2​(v1​−v2​)−y1​y2​+1(这里非常重要,把1作为一个等量代换,1=y22​)=−(K1,1​+K2,2​−2K1,2​)α2​−K1,2​γy2​−K1,1​γy2​−y2​(v1​−v2​)−y1​y2​+y22​=0​

接下来继续进行化简,我们知道SVM对数据的预测最终要计算的表达是:f(x)=∑i=1NαiyiK(xi,x)+bf(x)=\sum\limits_{i=1}^N\alpha _iy_iK(x_i, x)+bf(x)=i=1∑N​αi​yi​K(xi​,x)+b,所以我们对v1v_1v1​和v2v_2v2​的值就可以进行一个代换:

v1=∑i=3NαiyiK1,i=f(x1)−α1y1K1,1−α2y2K1,2−bv2=∑i=3NαiyiK2,i=f(x2)−α1y1K2,1−α2y2K2,2−bv1−v2=f(x1)−f(x2)−α1y1(K1,1−K1,2)−α2y2(K1,2−K2,2)(带入α1=(γ−α2y2)y1)=f(x1)−f(x2)−(γ−α2y2)y1y1(K1,1−K1,2)−α2y2(K1,2−K2,2)(其中y1y1=y12=1)=f(x1)−f(x2)−γ(K1,1−K1,2)+α2y2(K1,1−K1,2)−α2y2(K1,2−K2,2)(其中K1,2=K2,1)=f(x1)−f(x2)−γ(K1,1−K1,2)+α2y2(K1,1+K2,2−2K1,2)\begin{aligned} v_{1} &=\sum ^{N}_{i=3} \alpha _{i} y_{i} K_{1,i} =f( x_{1}) -\alpha _{1} y_{1} K_{1,1} -\alpha _{2} y_{2} K_{1,2} -b\\ v_{2} &=\sum ^{N}_{i=3} \alpha _{i} y_{i} K_{2,i} =f( x_{2}) -\alpha _{1} y_{1} K_{2,1} -\alpha _{2} y_{2} K_{2,2} -b\\ v_{1} -v_{2} &=f( x_{1}) -f( x_{2}) -\alpha _{1} y_{1}( K_{1,1} -K_{1,2}) -\alpha _{2} y_{2}( K_{1,2} -K_{2,2})\\ &( 带入\alpha _{1} =( \gamma -\alpha _{2} y_{2}) y_{1})\\ &=f( x_{1}) -f( x_{2}) -( \gamma -\alpha _{2} y_{2}) y_{1} y_{1}( K_{1,1} -K_{1,2}) -\alpha _{2} y_{2}( K_{1,2} -K_{2,2})\\ &( 其中y_{1} y_{1} =y^{2}_{1} =1)\\ &=f( x_{1}) -f( x_{2}) -\gamma ( K_{1,1} -K_{1,2}) +\alpha _{2} y_{2}( K_{1,1} -K_{1,2}) -\alpha _{2} y_{2}( K_{1,2} -K_{2,2})\\ &( 其中K_{1,2} =K_{2,1})\\ &=f( x_{1}) -f( x_{2}) -\gamma ( K_{1,1} -K_{1,2}) +\alpha _{2} y_{2}( K_{1,1} +K_{2,2} -2K_{1,2}) \end{aligned}v1​v2​v1​−v2​​=i=3∑N​αi​yi​K1,i​=f(x1​)−α1​y1​K1,1​−α2​y2​K1,2​−b=i=3∑N​αi​yi​K2,i​=f(x2​)−α1​y1​K2,1​−α2​y2​K2,2​−b=f(x1​)−f(x2​)−α1​y1​(K1,1​−K1,2​)−α2​y2​(K1,2​−K2,2​)(带入α1​=(γ−α2​y2​)y1​)=f(x1​)−f(x2​)−(γ−α2​y2​)y1​y1​(K1,1​−K1,2​)−α2​y2​(K1,2​−K2,2​)(其中y1​y1​=y12​=1)=f(x1​)−f(x2​)−γ(K1,1​−K1,2​)+α2​y2​(K1,1​−K1,2​)−α2​y2​(K1,2​−K2,2​)(其中K1,2​=K2,1​)=f(x1​)−f(x2​)−γ(K1,1​−K1,2​)+α2​y2​(K1,1​+K2,2​−2K1,2​)​

令预测值和真实值的误差为:Ei=f(xi)−yiE_i=f(x_i)-y_iEi​=f(xi​)−yi​,η=K1,1+K2,2−2K1,2\eta=K_{1,1}+K_{2,2}-2K_{1,2}η=K1,1​+K2,2​−2K1,2​,同时带入v1−v2v_1-v_2v1​−v2​,得到:

∂W(α2)∂α2=−ηα2new+K1,2γy2−K1,1γy2−y2[f(x1)−f(x2)−γ(K1,1−K1,2)+α2oldy2η]−y1y2+y22=−ηα2new+K1,2γy2−K1,1γy2−y2[f(x1)−f(x2)]+y2γ(K1,1−K1,2)+α2oldy22η−y1y2+y22=−ηα2new+y2[f(x1)−f(x2)]+α2oldy22η−y1y2+y22=−ηα2new+α2oldη+y2(f(x1)−f(x2)+y2−y1)=−ηα2new+ηα2old+y2(E1−E2)=0\begin{aligned} \frac{\partial W(\alpha _{2} )}{\partial \alpha _{2}}& =-\eta \alpha ^{new}_{2} +K_{1,2} \gamma y_{2} -K_{1,1} \gamma y_{2} -y_{2} [f(x_{1} )-f(x_{2} )-\gamma (K_{1,1} -K_{1,2} )+\alpha ^{old}_{2} y_{2} \eta ]-y_{1} y_{2} +y^{2}_{2}\\ &=-\eta \alpha ^{new}_{2} +K_{1,2} \gamma y_{2} -K_{1,1} \gamma y_{2} -y_{2}[ f(x_{1} )-f(x_{2} )] +y_{2} \gamma (K_{1,1} -K_{1,2} )+\alpha ^{old}_{2} y^{2}_{2} \eta -y_{1} y_{2} +y^{2}_{2}\\ &=-\eta \alpha ^{new}_{2} +y_{2}[ f(x_{1} )-f(x_{2} )] +\alpha ^{old}_{2} y^{2}_{2} \eta -y_{1} y_{2} +y^{2}_{2}\\ &=-\eta \alpha ^{new}_{2} +\alpha ^{old}_{2} \eta +y_{2}\left( f(x_{1} )-f(x_{2} )+y_{2} -y_{1}\right)\\ &=-\eta \alpha ^{new}_{2} +\eta \alpha ^{old}_{2} +y_{2}\left(E_1 - E_2\right) = 0 \end{aligned}∂α2​∂W(α2​)​​=−ηα2new​+K1,2​γy2​−K1,1​γy2​−y2​[f(x1​)−f(x2​)−γ(K1,1​−K1,2​)+α2old​y2​η]−y1​y2​+y22​=−ηα2new​+K1,2​γy2​−K1,1​γy2​−y2​[f(x1​)−f(x2​)]+y2​γ(K1,1​−K1,2​)+α2old​y22​η−y1​y2​+y22​=−ηα2new​+y2​[f(x1​)−f(x2​)]+α2old​y22​η−y1​y2​+y22​=−ηα2new​+α2old​η+y2​(f(x1​)−f(x2​)+y2​−y1​)=−ηα2new​+ηα2old​+y2​(E1​−E2​)=0​

然后我们可以得到的是:

α2new=α2old+y2(E1−E2)η\alpha ^{new}_{2} =\alpha ^{old}_{2} +\frac{y_{2}( E_{1} -E_{2})}{\eta }α2new​=α2old​+ηy2​(E1​−E2​)​

下一步我们要对原始解进行裁剪

为什么需要裁剪呢?是因为我们的计算得到的原始解可能会超出上面的限制条件规定的范围:

α1y1+α2y2=−∑i=3Nαiyi=γ0≤αi≤C\alpha_1y_1 + \alpha_2y_2 = -\sum_{i=3}^N\alpha_iy_i = \gamma\\ 0\leq\alpha_i \leq Cα1​y1​+α2​y2​=−i=3∑N​αi​yi​=γ0≤αi​≤C

左图这边,我们可以的看到,此时y1≠y2y_1\ne y_2y1​=y2​,此时的限制条件就可以写成α1−α2=k\alpha_1-\alpha_2=kα1​−α2​=k,根据kkk的正负可以得到不同的上下界,因此可以写成:

下界:L=max(0,α2old−α1old)L=max(0, \alpha_2^{old}-\alpha_1^{old})L=max(0,α2old​−α1old​)

上界:H=max(C,C+α2old−α1old)H=max(C, C+\alpha_2^{old}-\alpha_1^{old})H=max(C,C+α2old​−α1old​)

同样的根据右图的内容,此时y1=y2y_1= y_2y1​=y2​,此时的限制条件就可以写成α1+α2=k\alpha_1+\alpha_2=kα1​+α2​=k:

下界:L=max(0,α2old+α1old−C)L=max(0, \alpha_2^{old}+\alpha_1^{old}-C)L=max(0,α2old​+α1old​−C)

上界:H=max(C,α2old+α1old)H=max(C, \alpha_2^{old}+\alpha_1^{old})H=max(C,α2old​+α1old​)

根据上面的上下界可以得到:

α2new={Hα2new,unclipped>Hα2new,unclippedL≤α2new, unclipped≤HLα2new,unclipped<L\alpha_{2}^{n e w}=\left\{\begin{array}{ll} H & \alpha_{2}^{\text {new,unclipped}}>H \\ \alpha_{2}^{\text {new,unclipped}} & L \leq \alpha_{2}^{\text {new, unclipped}} \leq H \\ L & \alpha_{2}^{\text {new,unclipped}}<L \end{array}\right.α2new​=⎩⎨⎧​Hα2new,unclipped​L​α2new,unclipped​>HL≤α2new, unclipped​≤Hα2new,unclipped​<L​

然后根据α1oldy1+α2oldy2=α1newy1+α2newy2\alpha_1^{old}y_1+\alpha_2^{old}y_2=\alpha_1^{new}y_1+\alpha_2^{new}y_2α1old​y1​+α2old​y2​=α1new​y1​+α2new​y2​得到:

α1new=α1old+y1y2(α2old−α2new)\alpha_1^{new}=\alpha_1^{old}+y_1y_2(\alpha_2^{old}-\alpha_2^{new})α1new​=α1old​+y1​y2​(α2old​−α2new​)

到这里我们就可以选取一对αi,αj\alpha_i, \alpha_jαi​,αj​进行优化更新了。

更新阈值b

当0<α1new<C0<\alpha _1 ^{new} < C0<α1new​<C,满足y1(wT+b)=1y_1(w^T+b)=1y1​(wT+b)=1,此时我们两边同时乘以y1y_1y1​可以得到∑i=1NαiyiKi,1=y1\sum \limits ^N _{i=1}\alpha_iy_iK_{i,1}=y_1i=1∑N​αi​yi​Ki,1​=y1​进而可以得到b1newb_1^{new}b1new​的值:

b1new=y1−∑i=1NαiyiKi,1−α1newy1K1,1−α2newy2K2,1b_1^{new}=y_1- \sum_{i=1}^N\alpha_iy_iK_{i,1}-\alpha_1^{new}y_1K_{1,1}-\alpha_2^{new}y_2K_{2,1}b1new​=y1​−i=1∑N​αi​yi​Ki,1​−α1new​y1​K1,1​−α2new​y2​K2,1​

其中上式中的前两项可以写成:

y1−∑i=3NαiyiKi,1=−E1+α1old y1K1,1+α2old y2K2,1+bold y_{1}-\sum_{i=3}^{N} \alpha_{i} y_{i} K_{i, 1}=-E_{1}+\alpha_{1}^{\text {old }} y_{1} K_{1,1}+\alpha_{2}^{\text {old }} y_{2} K_{2,1}+b^{\text {old }}y1​−i=3∑N​αi​yi​Ki,1​=−E1​+α1old ​y1​K1,1​+α2old ​y2​K2,1​+bold 

当0<α2new<C0<\alpha_2^{new}<C0<α2new​<C,可以得到:

b2new=−E2−y1K1,2(α1new−α1old)−y2K2,2(α2new−α2old)+boldb_{2}^{\text {new}}=-E_{2}-y_{1} K_{1,2}\left(\alpha_{1}^{\text {new}}-\alpha_{1}^{\text {old}}\right)-y_{2} K_{2,2}\left(\alpha_{2}^{\text {new}}-\alpha_{2}^{\text {old}}\right)+b^{\text {old}}b2new​=−E2​−y1​K1,2​(α1new​−α1old​)−y2​K2,2​(α2new​−α2old​)+bold

当b1b_1b1​和b2b_2b2​都有效的时候他们是相等的,即bnew=b1new=b2newb^{new}=b_1^{new}=b_2^{new}bnew=b1new​=b2new​

当α1,α2\alpha_1, \alpha_2α1​,α2​都在边界上的时候,且L≠HL\ne HL=H时,b1,b2b_1,b_2b1​,b2​之间的值就是和KKT条件一致的阈值。SMO算法选择他们的中点作为新的阈值:

bnew=b1new+b2new2b^{new}=\frac{b_1^{new}+b_2^{new}}{2}bnew=2b1new​+b2new​​

至此,关于SVM所需要的参数我们都可以计算出来了。

参考文献

  • [1]邹博.机器学习升级版.小象学院,2018.

  • [2]秦曾昌.机器学习算法精讲.小象学院,2018.

  • [3]李航.统计学习方法[M].北京:清华大学出版社,2012.

  • [4]化学狗码砖的日常.机器学习算法实践-SVM中的SMO算法.知乎

  • [5]Bishop.Pattern Recognition And Machine Learning,

Previous数据清洗Next线性模型

Last updated 5 years ago

Was this helpful?