基于svm算法
‘壹’ 简述svm算法的原理
svm算法是在数据中找出最优间隔平面,如果数据线性不可分,那么可以使用核函数
‘贰’ 分类算法 - SVM算法
SVM的全称是Support Vector Machine,即支持向量机,主要用于解决模式识别领域中的数据分类问题,属于有监督学习算法的一种。SVM要解决的问题可以用一个经典的二分类问题加以描述。如图1所示,红色和蓝色的二维数据点显然是可以被一条直线分开的,在模式识别领域称为线性可分问题。然而将两类数据点分开的直线显然不止一条。图2和3分别给出了A、B两种不同的分类方案,其中黑色实线为分界线,术语称为“决策面”。每个决策面对应了一个线性分类器。虽然在目前的数据上看,这两个分类器的分类结果是一样的,但如果考虑潜在的其他数据,则两者的分类性能是有差别的。
之前在b站看到一个非常好的介绍!!十分推荐, 这是传送门
按照我自己的理解,以二维数据为例,我们喂给模型已经分类好的数据,那么假设有一线条可以将此部分数据正确划分为2大部分,这样可以形成2个等式,即横线两边的数值归类为1或者-1,一般情况下可以求出最大间隔即无数个解,因此需要一个限定条件求出最优的那条线条。限定方式为:无数个解形成一个解的范围,距离边缘相等的那条线条即是最优解。
有时候本来数据的确是可分的,也就是说可以用线性分类SVM的学习方法来求解,但是却因为混入了异常点,导致不能线性可分,比如下图,本来数据是可以按下面的实线来做超平面分离的,可以由于一个橙色和一个蓝色的异常点导致我们没法按照线性分类支持向量机方法来分类。
以上讨论的都是在线性可分情况进行讨论的,但是实际问题中给出的数据并不是都是线性可分的,比如有些数据可能是曲线的。
那么这种非线性可分的数据是否就不能用SVM算法来求解呢?答案是否定的。事实上,对于低维平面内不可分的数据,放在一个高维空间中去就有可能变得可分。以二维平面的数据为例,我们可以通过找到一个映射将二维平面的点放到三维平面之中。理论上任意的数据样本都能够找到一个合适的映射使得这些在低维空间不能划分的样本到高维空间中之后能够线性可分。
当特征变量非常多的时候,在高维空间中计算内积的运算量是非常庞大的。考虑到我们的目的并不是为找到这样一个映射而是为了计算其在高维空间的内积,因此如果我们能够找到计算高维空间下内积的公式,那么就能够避免这样庞大的计算量,我们的问题也就解决了。实际上这就是我们要找的 核函数 ,即两个向量在隐式映射后的空间中的内积。
(1)对于边界清晰的分类问题效果好;
(2)对高维分类问题效果好;
(3)当维度高于样本数的时候,SVM 较为有效;
(4)因为最终只使用训练集中的支持向量,所以节约内存
(1)当数据量较大时,训练时间会较长;
(2)当数据集的噪音过多时,表现不好;
(3)SVM 不直接提供结果的概率估计,它在计算时直接使用 5 倍交叉验证。
(1)LR 与 SVM 都是分类算法;
(2)LR 与 SVM 都是监督学习算法;
(3)LR 与 SVM 都是判别模型;
(4)关于判别模型与生成模型的详细概念与理解,笔者会在下篇博文给出,这里不详述。
(5)如果不考虑核函数,LR 与 SVM 都是线性分类算法,也就是说他们的分类决策面都是线性的
这里需要说明的是,LR 也是可以用核函数的,因在 LR 算法里,每个样本点都必须参与决策面的计算过程,也就是说,如果在 LR 里也运用核函数的原理,那么每个样本点都必须参与核计算,这带来的计算复杂度是相当高的。所以在具体应用时,LR 很少运用核函数机制。
(1)损失函数不同;
(2)SVM 只考虑支持向量,而 LR 考虑全局(即远离的点对边界线的确定也起作用);
(3)在解决非线性问题时,SVM 采用核函数的机制,而 LR 通常不采用核函数的方法;
(4)SVM 的损失函数就自带正则(损失函数中的12||w||2项),这就是为什么 SVM 是结构风险最小化算法的原因,而 LR 必须另外在损失函数上添加正则项;
(5)LR是参数模型,SVM是非参数模型,本质不同。
(6)在训练集较小时,SVM 较适用,而 LR 需要较多的样本。
(1)LR 与线性回归都是广义的线性回归;
(2)线性回归模型的优化目标函数是最小二乘,而 LR 则是似然函数;
(3)线性回归在整个实数域范围内进行预测,敏感度一致,而分类范围,需要在[0,1]。逻辑回归就是一种减小预测范围,将预测值限定为[0,1]间的一种回归模型,因而对于这类问题来说,逻辑回归的鲁棒性比线性回归的要好。
(4)逻辑回归的模型本质上是一个线性回归模型,逻辑回归都是以线性回归为理论支持的。但线性回归模型无法做到 sigmoid 的非线性形式,sigmoid 可以轻松处理 0/1 分类问题。
(5)线性回归主要做预测,LR 主要做分类(如二分类);
‘叁’ SVM算法-推导
第一部分:从几何意义到数学表达
第三部分:SMO
求解第二部分最后推导出的最小化问题,每次固定两个lambda,由于有最后一个条件限制:lambdai*yi + lambdaj yj = const,labmdai可以用lambdaj表达出来,最小化函数是一个抛物线,开口朝上,求导,令导数为0,获得没有限制的最优化问题,由于lambdai >= 0(第1个限制条件),做一个clipping,获得在限制条件下的lambdai最优解,然后也能求得lambdaj,就完成了一次lambdai和lambdaj的更新迭代。
一般取最违反KKT条件的lambdai和lambdaj来做更新。
svm软间隔
svm的核函数选择
一般选择高斯核函数,线性核函数是高斯核函数的一个特例;在特定的参数下,sigmoid核函数和高斯核函数具有类似的作用;相比于多项式核函数,高斯核函数的参数更少,更好调,当然,如果能把多项式核函数的参数调好,有可能会获得更好的效果。对于特征数量非常大的情况,会更倾向于使用线性核函数。
为什么要转化为对偶问题?
高斯核函数无限维的理解
‘肆’ SVM几种核函数的对比分析以及SVM算法的优缺点
SVM核函数的作用
SVM核函数是用来解决数据线性不可分而提出的,把数据从源空间映射到目标空间(线性可分空间)。
SVM中核函数的种类
1、线性核
优点:
方案首选,奥卡姆剃刀定律
简单,可以求解较快一个QP问题
可解释性强:可以轻易知道哪些feature是重要的
可解决非线性问题
可通过主观设置幂数来实现总结的预判
对于大数量级的幂数,不太适用
比较多的参数要选择
可以映射到无限维
决策边界更为多样
只有一个参数,相比多项式核容易选择
可解释性差(无限多维的转换,无法算w)
计算速度比较慢(解一个对偶问题)
容易过拟合(参数选不好时容易overfitting)
特征维数高选择线性核
样本数量可观、特征少选择高斯核(非线性核)
样本数量非常多选择线性核(避免造成庞大的计算量)
限制:只能解决线性可分问题
2、多项式核
基本原理:依靠升维使得原本线性不可分的数据线性可分;
升维的意义:使得原本线性不可分的数据线性可分;
优点:
缺点:
通常只用在已经大概知道一个比较小的幂数的情况
3、高斯核
优点:
缺点:
4、Sigmoid核
采用Sigmoid函数作为核函数时,支持向量机实现的就是一种多层感知器神经网络,应用SVM方法,隐含层节点数目(它确定神经网络的结构)、隐含层节点对输入节点的权值都是在设计(训练)的过程中自动确定的。而且支持向量机的理论基础决定了它最终求得的是全局最优值而不是局部最小值,也保证了它对于未知样本的良好泛化能力而不会出现过学习现象。
在实战中更多的是:
SVM的优缺点
1、SVM算法对大规模训练样本难以实施
SVM的空间消耗主要是存储训练样本和核矩阵,由于SVM是借助二次规划来求解支持向量,而求解二次规划将涉及m阶矩阵的计算(m为样本的个数),当m数目很大时该矩阵的存储和计算将耗费大量的机器内存和运算时间。针对以上问题的主要改进有有J.Platt的SMO算法、T.Joachims的SVM、C.J.C.Burges等的PCGC、张学工的CSVM以及O.L.Mangasarian等的SOR算法。如果数据量很大,SVM的训练时间就会比较长,如垃圾邮件的分类检测,没有使用SVM分类器,而是使用了简单的naive bayes分类器,或者是使用逻辑回归模型分类。
2、用SVM解决多分类问题存在困难
经典的支持向量机算法只给出了二类分类的算法,而在数据挖掘的实际应用中,一般要解决多类的分类问题。可以通过多个二类支持向量机的组合来解决。主要有一对多组合模式、一对一组合模式和SVM决策树;再就是通过构造多个分类器的组合来解决。主要原理是克服SVM固有的缺点,结合其他算法的优势,解决多类问题的分类精度。如:与粗集理论结合,形成一种优势互补的多类问题的组合分类器。
3、对缺失数据敏感,对参数和核函数的选择敏感
支持向量机性能的优劣主要取决于核函数的选取,所以对于一个实际问题而言,如何根据实际的数据模型选择合适的核函数从而构造SVM算法。目前比较成熟的核函数及其参数的选择都是人为的,根据经验来选取的,带有一定的随意性.在不同的问题领域,核函数应当具有不同的形式和参数,所以在选取时候应该将领域知识引入进来,但是目前还没有好的方法来解决核函数的选取问题。
‘伍’ svm算法是什么
SVM算法中文翻译为支持向量机,它的英文全称是Support Vector Machine。
之所以叫作支持向量机,是因为该算法最终训练出来的模型,由一些支持向量决定。所谓的支持向量,也就是能够决定最终模型的向量。SVM算法最初是用来解决二分类问题的,而在这个基础上进行扩展,也能够处理多分类问题以及回归问题。
SVM算法的历史
早在1963 年,着名的前苏联统计学家弗拉基米尔·瓦普尼克在读博士期间,就和他的同事阿列克谢·切尔沃宁基斯共同提出了支持向量机的概念。
但由于当时的国际环境影响,他们用俄文发表的论文,并没有受到国际学术界的关注。直到 20 世纪 90 年代,瓦普尼克随着移民潮来到美国,而后又发表了SVM 理论。此后,SVM 算法才受到应有的重视。如今,SVM 算法被称为最好的监督学习算法之一。
‘陆’ svm算法是什么
SVM(Support Vector Machine)中文名为支持向量机,是常见的一种判别方法。
支持向量机(Support Vector Machine, SVM)是一类按监督学习(supervised learning)方式对数据进行二元分类的广义线性分类器(generalized linear classifier),其决策边界是对学习样本求解的最大边距超平面(maximum-margin hyperplane)。
数值求解特点:
SVM的求解可以使用二次凸优化问题的数值方法,例如内点法和序列最小优化算法,在拥有充足学习样本时也可使用随机梯度下降。
在二次凸优化问题中,SMO的每步迭代都严格地优化了SVM的对偶问题,且迭代会在有限步后收敛于全局极大值。SMO算法的迭代速度与所选取乘子对KKT条件的偏离程度有关,因此SMO通常采用启发式方法选取拉格朗日乘子。
在每次迭代时,SGD首先判定约束条件,若该样本不满足约束条件,则SGD按学习速率最小化结构风险;若该样本满足约束条件,为SVM的支持向量,则SGD根据正则化系数平衡经验风险和结构风险,即SGD的迭代保持了SVM的稀疏性。
‘柒’ svm在多类分类算法中的分析和应用
SVM是Support Vector Machine 的缩写,翻译过来就是支持向量机,属于一种机器学习算法,类似于人工神经网络,但是分类的效果好于神经网络,而且算法固定,不会出现网络输出不收敛或者随机性较大的情况。
svm本身是一个二元分类器,你要进行多元分类,必须构造多分类算法,常见的是 一对一 和 一对多 算法。网上关于支持向量机的论文很多,常用的计算工具有基于 MATLAB 的 OSU-SVM 工具包 和 LS-SVM 工具包,效果都还不错。
‘捌’ 机器学习算法中的SVM和聚类算法
1.机器学习算法——SVM
这种算法就是支持向量机,而支持向量机算法是诞生于统计学习界,这也是机器学习中的经典算法,而支持向量机算法从某种意义上来说是逻辑回归算法的强化,这就是通过给予逻辑回归算法更严格的优化条件,支持向量机算法可以获得比逻辑回归更好的分类界线。不过如果通过跟高斯核的结合,支持向量机可以表达出非常复杂的分类界线,从而达成很好的的分类效果。核事实上就是一种特殊的函数,最典型的特征就是可以将低维的空间映射到高维的空间。
2.机器学习算法——聚类算法
前面的算法中的一个显着特征就是训练数据中包含了标签,训练出的模型可以对其他未知数据预测标签。在下面的算法中,训练数据都是不含标签的,而算法的目的则是通过训练,推测出这些数据的标签。这类算法有一个统称,即无监督算法。无监督算法中最典型的代表就是聚类算法。而聚类算法中最典型的代表就是K-Means算法。这一算法被广大朋友所应用。
想要学习了解更多机器学习的知识,推荐CDA数据分析师课程。“CDA 数据分析师”具体指在互联网、金融、零售、咨询、电信、医疗、旅游等行业专门 从事数据的采集、清洗、处理、分析并能制作业务报告、提供决策的新型数据分析人才,推动科技创新进步,助力经济持续发展。点击预约免费试听课。
‘玖’ svm算法是什么
SVM(Support Vector Machine)中文名为支持向量机,是常见的一种判别方法。
支持向量机(Support Vector Machine, SVM)是一类按监督学习(supervised learning)方式对数据进行二元分类的广义线性分类器(generalized linear classifier),其决策边界是对学习样本求解的最大边距超平面(maximum-margin hyperplane)。
数值求解特点:
SVM的求解可以使用二次凸优化问题的数值方法,例如内点法和序列最小优化算法,在拥有充足学习样本时也可使用随机梯度下降。
在二次凸优化问题中,SMO的每步迭代都严格地优化了SVM的对偶问题,且迭代会在有限步后收敛于全局极大值。SMO算法的迭代速度与所选取乘子对KKT条件的偏离程度有关,因此SMO通常采用启发式方法选取拉格朗日乘子。
在每次迭代时,SGD首先判定约束条件,若该样本不满足约束条件,则SGD按学习速率最小化结构风险;若该样本满足约束条件,为SVM的支持向量,则SGD根据正则化系数平衡经验风险和结构风险,即SGD的迭代保持了SVM的稀疏性。
‘拾’ SVM算法原理
一、决策面方程
以二维空间为例,二维空间中任意一条直线方程可以写为
我们将其向量化,可以得到
设用向量w代表矩阵a1和a2,用向量x代表矩阵x1和x2,标量γ代表b,则方程可化表示为
从方程可知,一个n维空间的超平面在二维空间上的表现,可以是一条直线,或者一个曲线(二维空间中只能看到这个n维超平面穿过而无法看到其模样), 超平面方程即是我们的决策面方程
二、函数间隔和几何间隔
在SVM监督学习中,我们规定标签数据为+1和-1两个值,这么做的目的, 可以计算出任意一个样本点在超平面方程上的表现结果的符号,与标签符号是否一致来判断分类的正确性 ,为此我们可以引入函数间隔的概念
但是当我们成比例的缩放w和γ,函数间隔的值也将成比例的变化,可是超平面的位置并没有发生任何变化,所以函数间隔并不是我们想要的分类间隔,为此,我们需要引入几何间隔的概念
还是以二维空间出发,任意一点到直线的距离可以写成
我们将其拓展到n维空间,直线方程即是我们的超平面方程,则n维空间中任何一点到超平面的距离可以写成
为此,我们引入几何间隔概念,其中||w||表示向量w的二范数
从几何间隔可以看出,就算等比例缩放w和γ,由于除上了||w||使得几何间隔的值不会改变,它只随着超平面位置的变化而变化,因此, 我们要寻找的分类间隔是几何间隔
三、不等式约束条件
SVM算法的目的是找到一个将分类效果达到最合理化的超平面,这个超平面即是分类器 。而评估分类器的好坏的标准就是分类间隔的大小
我们定义分类间隔的距离为d,好的分类器应该让所有样本点到决策面的几何间隔都大于等于d
化简上式,不等式两边同时除以d可得
由于||w||和d都是标量,可定义
则上式可化简为
在不等式两边同时乘以yi,即将两个式子化简为一个式子(这里体现了正是因为标签数据为+1和-1,才方便将约束条件变成一个约束方程)
这个约束方程的意义 即是任何样本点到超平面(分类器)的几何间隔都大于等于分类间隔
四、SVM最优化模型的数学描述
评估分类器的优劣是分类间隔的大小,且对于任意样本点都满足约束方程
由约束方程可知,当样本点落在支持向量边界上有如下关系
则分类间隔d可以表示为支持向量点到超平面的几何间隔
要让任何样本点都在d之外,即求分类间隔d的最大值,则目标函数可以写成
为了方便在后续最优化处理中对目标函数的求导,我们将目标函数做等效变化
由目标函数是二次的,而约束条件是线性的,则 SVM的数学模型即是:不等式约束条件下的二次型函数优化 ,而求解这一类优化问题,接下来我们需要构造 拉格朗乘子函数
五、引入拉格朗函数
目标函数是求解在约束条件g(x)下的二次型函数f(x)的最小值,直观上我们希望构造一个函数L(x),使得L(x)在f(x)的可行解区域内的求出的值和f(x)求出的值完全一样,而在f(x)的可行解区域外,L(x)的值又接近无穷大,这么做的目的,使得我们可以用一个函数L(x)来等效表示原问题的g(x)和f(x)
拉格朗函数的目的,就是将约束条件融合到目标函数中,构造一个新函数来表示目标函数,将有约束的优化问题转化为无约束的优化问题
下面,我们构造拉格朗函数来表示目标函数
其中αi是拉格朗日乘子,每一个约束条件对应一个拉格朗日乘子,其中αi大于等于0
则原优化问题可以转化为
讨论如下条件(1)(2):
(1) 当样本点不满足约束条件时,即说明在 可行解区域外
此时将αi置为正无穷大,那么θ(w)显然也是正无穷大
(2) 当样本点满足约束条件时,即说明在 可行解区域内
此时θ(w)的最小值就是原目标函数,于是综上所述,引入拉格朗乘子函数后,可以得到新的目标函数
我们用p*表示优化目标函数后的最优解,且与最初的目标函数等价
观察新的目标函数,如果直接求偏导数求解,那么一上来将面对w和b两个未知参数,而αi又是不等式约束,求解过程将非常复杂。换一个角度思考,如果将max和min的位置对调,变成如下新的目标函数
上式变化使用了 拉格朗日函数的对偶性,交换后的新问题即是原目标函数的对偶问题 ,我们用d*来表示对偶目标函数的最优解,可见d*的求导过程比p*相对容易,且d*<=p*,而当满足下列条件时,d*= p*
因为目标函数本身已经是一个凸函数,而优化问题又是求解最小值,所以目标函数的最优化问题就是凸优化问题,则接下来就要重点讨论KKT条件
六、KKT条件的描述
一个最优化模型能够表示成下列标准形式
其中f(x)是需要最小化的函数,h(x)是等式约束,g(x)是不等式约束,m和n分别是等式约束和不等式约束的数量
KKT条件即是规定f(x)的 最优值 必须满足以下(1)(2)(3)条件, 只有满足KKT条件,目标函数的最优化问题依然可以用拉格朗日乘子法解决
很明显,我们需要优化的目标函数属于带有不等式约束函数g(x),所以条件二显然满足,下面我们来分析条件一和条件三的理论
七、目标函数的等高线与约束条件的最优值分析(条件一)
对于KKT条件一的分析,我们假设目标函数是f(x1,x2)的二元函数,它的图像在三维空间里是一个曲面,准确的来说是一个凸曲面
其中g(x1,x2)是约束方程,要求目标函数f(x1,x2)的最小值,即转化为 求g(x1,x2)=c这条曲线上的一点,使得f(x1,x2)取得最小值,换个比喻,就是在山上(目标函数曲面)寻找一条山路(约束条件曲线)的最低点
我们画出目标函数的等高线,来分析目标函数最优值和约束条件的关系
对于研究目标函数z=f(x1,x2),当z取不同的值,即将曲线z投影在(x1,x2)组成的空间中(这里指的是二维空间),也就是曲面的等高线,上图中d1和d2即是两条目标函数的等高线,可以看出,当约束函数g(x1,x2)与目标函数的等高线有共同的交点, 即证明这组值同时满足在目标函数的可行域中,也符合约束条件的约束关系
如果等高线与g(x1,x2) 相交 ,则是一组目标函数的解,但是这个解一定不是最优解, 因为相交意味着肯定存在其它等高线在该条等高线的内部或者外部 ,可能会使得新的等高线与g(x1,x2)的交点更大或者更小,这就意味着只有当等高线与g(x1,x2) 相切 ,才可能得到最优解(切线可能多条)
所以最优解必须满足: 目标函数的负梯度方向与约束函数的梯度方向一致
而上式恒成立的条件就是: 拉格朗日乘子α >= 0 ,且这个式子就是目标函数对各个参数求偏导数的结果,即KKT的第一个条件:目标函数对各个参数的导数为0
八、分类讨论约束条件和拉格朗日乘子的组合(条件三)
对于KKT条件三,可以看出,因为所有的约束函数gi(x)<=0,所有的拉格朗日乘子αi>=0,要使得求和后结果为0,要么某个约束函数gi(x)=0,要么其对应的αi=0
从一个案例出发来分析KKT条件三的逻辑,假设目标函数和约束函数是
将不等式约束构造出拉格朗日函数,并分别对x1和x2求偏导数
而KKT的条件三要求最优解满足 ∑α*g(x) = 0,在这个案例里α和g(x)只有一个,结合条件一,可以得到
根据之前的分析,最优值满足条件三的话,要么α=0,要么g(x)=0
(i):如果α=0,则x1=1,x2=-2,代入g(x1,x2) =10-1-10*(-2)=29>0,发现这组解违背了约束函数g(x)<0,则舍弃这组解
(ii): 如果g(x1,x2)=0,则代入x1和x2的表达式到g(x)中,解出α=58/101>0,发现这组解不违背约束函数,则代入α解出x1=130/101,x2=88/101,则这组解有可能是最优解
综上(i)(ii)讨论,目标函数的最优值符合KKT条件三,也说明了 满足强对偶条件的优化问题的最优值必须满足KKT条件
九、求解对偶问题
上面分析了目标函数满足凸优化和KKT条件,则问题转化为求解原问题的对偶问题(即p*=d*)
根据对偶问题描述,先要求内侧w和b关于L(w,b,α)的最小化值,即求L对w和b的偏导数
将w和b的偏导数带入拉格朗函数化简得
整理一下最终化简结果为
从上述结果可以看出,样本的x和y是已知的,此时的 L(w,b,α)函数只有一个变量,即αi
我们归纳一下现在的目标函数为
现在目标函数变成了如上形式,其中αi>=0,这里隐含着一个假设,即数据100%线性可分,但是现实生活中,数据往往是不会那么规则的线性化,为此我们需要引入松弛变量
十、引入松弛变量
由于现实世界中的数据都是带有噪音的,也就是数据可能出偏离其正常的位置很远,而出现这种极端现象后往往会影响超平面的选择,也许将无法构造出将数据彻底分开的超平面出来
所以对于处理这种情况, SVM需要允许(妥协)出某些噪音很大的数据点能够偏离超平面,即允许其出现在超平面的错误的一侧 ,为此我们引入松弛变量C,这样我们的目标函数又变为
接下来为了研究讨论αi的取值范围,我们加上一个负号将目标函数等价转化为
十一、讨论拉格朗乘子的取值意义和其值域
回顾一下最初的约束条件为
设ui为该约束条件,可以归纳出αi关于约束函数的取值意义
αi只有满足上述3种情况,才能求出最优解,所以 当αi与约束条件ui冲突的时候,需要更新这些αi ,这也就是满足目标函数的第一个约束限制,即0<=αi<=C
而同时目标函数还受到第二个约束条件的限制,即
所以不能只更新一个αi因子,需要同时再次更新第二个αj因子,也就是 α因子总是成对的更新(αi对总是和αj配对),一增一减,此消彼长,才能保证加权和为0的约束 ,同时这也就是下面提及SMO算法的思想和多元函数化简为二元函数,在从二元函数化简为一元函数的难点
根据这个约束和α因子需要成对更新,假设我们选取的两个拉格朗乘子为α1和α2,则更新之前是old,更新之后是new,且更新前后需要满足和为0的约束
两个因子同时更新显然非常困难,所以需要先求出第一个αj的解,再用αj的解去表示更新第二个αi的解 ,后文的SMO算法会阐述这一点。因此需要先确定αj的取值范围,假设L和H分别为它的下界和上界,结合目标函数的约束限制来综合讨论L和H的取值关系
(i):当y1和y2异号时,可以得到
移项可得a2 = a1 - A,此时α的取值范围如下图所示
所以此时α的上下界H和L为
(ii):当y1和y2同号时,可以得到
移项可得a2 = -a1 + A,此时α的取值范围如下图所示
所以此时α的上下界H和L为
综上(i)(ii)的讨论,通过y1和y2的异号或者同号,可以推导出α更新后的上下界分别为
这个公式显得非常的重要,它将α因子限制在有效的矩形范围内,在SMO算法中,当我们更新完α后,由于α可能会被更新得很大或很小,因此需要经过裁剪来保证α的在约束条件内
12、SMO算法的思想
回顾之前第九,第十,第十一步的分析,目标函数为
目标函数只包含n个变量α的 多元函数 ,且带有两个约束条件,我们的 目的是求出目标函数的最小值,即找到一组α的组合,使得目标函数取得最小值
由第十一步的分析,我们需要不断更新这n个α因子,通过迭代来逼近函数达到最小值,但是如果一次性更新n个参数,将会有n!种组合,那么时间复杂度将会非常高,为此我们首先想到 坐标上升(下降)法
来通过一个例子来说明坐标上升法的思路
可知案例中要求一个三元函数的最大值, 算法的思想是每次迭代时只更新一个维度,通过多次迭代直到收敛来优化函数的最值 ,求出三个变量的偏导数推出其关系
通过迭代即就可以求出其最值
SMO算法借鉴了坐标上升(下降)法的思想来优化α因子组合,但是由于目标函数的第二个约束条件有加权和为0的限制,导致每次迭代时候不能只更新一个因子αi,必须同时更新与之配对的另一个因子αj,此消彼长才能保证加权和为0(第十一步中已提及)
所以SMO算法思想是将原始问题中,求解n个参数的二次规划问题,分解成了多个子二次规划问题来分别求解,每一个子问题只需要求解2个参数,即将多元函数推导为二元函数,再将二元函数推导为一元函数
13、多元函数推导为二元函数
目标函数是关于α的N元函数,通过SMO的算法思想,假设每次迭代更新,选取一对α1和α2的组合,其余的乘子不变, 首先需要将α1和α2从目标函数中分离出来 ,也就是将多元函数推导为二元函数
从N元函数中分离出α1和α2因子
由于上式推导结果过于复杂,我们定义2个表达式来表示上式常量部分,用来简化上式
又由于单独存下的常数项对以后的求导没有贡献,所以我们提出单独的常数项定义为Constant
带入vi和Constant表达式,则结果化简为
至此,我们将 多元函数推导为含有α1和α2变量的二元函数 ,接下来将这个二元函数推导为一元函数
14、二元函数推导为一元函数
我们需要推导出α1和α2的关系,然后用α2来表示α1带入二元函数,就可以推导出关于α2的一元函数了
由目标函数的第二个约束条件
同理根据SMO算法思想,从约束条件中分离出α1和α2
将等式两边同时乘以y1,可推导出α1和α2的关系
同理,我们定义两个表达式r和s来表示上式的常量部分,用来简化上式关系
带入r和s后,α1和α2的关系推导为
下面将α1带入我们的二元函数中,可得
至此, 我们将二元函数推导为只含有一个变量α2的一元函数 ,接下来终于可以对目标函数求导了
15、求解一元函数的偏导数,推导出第一个拉格朗乘子的递推关系
我们对一元函数求α2的偏导数为0
带入s=y1*y2和y2*y2=1,整理上式可求出α2