机器学习教程 之 支持向量机:模型篇3–对偶问题的求解: SMO算法

您所在的位置:网站首页 对偶问题的求解思路和方法 机器学习教程 之 支持向量机:模型篇3–对偶问题的求解: SMO算法

机器学习教程 之 支持向量机:模型篇3–对偶问题的求解: SMO算法

2024-07-15 19:44| 来源: 网络整理| 查看: 265

支持向量机是机器学习领域里最强的几种分类器之一,被广泛的运用于各种分类回归问题,如果不考虑集成学习算法以及近几年出现的深度学习算法,支持向量机的性能可以说是在学习领域具有统治地位,在一些中小型的数据集上它的性能甚至能够超过一些深度学习网络。其基本原理相当简单,但是模型的求解和优化却十分复杂,很难描述清楚,这里我会一步一步,尽我所能分章节的将它总结完善

##模型篇 · 支持向量机:模型篇1–支持向量与间隔 · 支持向量机:模型篇2–支持向量的拉格朗日对偶 · 支持向量机:模型篇3–对偶问题的求解: SMO算法 · 支持向量机:模型篇4–核函数与非线性优化 · 支持向量机:模型篇5–向量机的软间隔拓展

##代码篇 · 支持向量机:代码篇1-基于CVXPT优化函数求解 · 支持向量机:代码篇2-基于SMO算法求解

对偶问题的求解: SMO算法

在上一章节中,我们将支持向量机的原始模型转化为了对偶形式。之前有提到,这一转化的重要意义在于提前计算 w w w 并消除了 w w w,将优化函数变为了关于拉格朗日乘子的二次规划问题。对于这一问题,学者们有针对性的提出了很多解法,其中目前被普遍应用的是由Microsoft Research的John C.Platt在1998年发表的论文《Sequential Minimal Optimaization A Fast Algorithm for Training Support Vector Machines》中提出的SMO算法,它成为当时最快的二次规划优化算法,特别是在针对线性SVM和数据稀疏等问题时更表现出强大的性能。 Platt论文中的符号表示与本文有所不同,现在,我们首先会重新列出上一章节中我们得到的优化目标,描述SMO算法的主要思想,再将优化目标转化为Platt论文中的形式,以方便描述,最后给出解决方案

1. 对偶优化目标和SMO算法原理

上一章节中我们得到的对偶优化目标为:

m a x a ∑ i = 1 n a i − 1 2 ∑ i , j = 1 n a i a j y i y j x i T x j max_{a} \sum_{i = 1}^{n}a_{i}- \frac{1}{2} \sum_{i,j = 1}^{n}a_{i}a_{j}y_{i}y_{j}x_{i}^{T}x_{j} maxa​∑i=1n​ai​−21​∑i,j=1n​ai​aj​yi​yj​xiT​xj​ s . t . a i > = 0 , i = 1 , . . . , n s.t. a_{i} >= 0,i= 1,...,n s.t.ai​>=0,i=1,...,n ∑ i = 1 n a i y i = 0 \sum_{i = 1}^{n}a_{i}y_{i} = 0 ∑i=1n​ai​yi​=0 为了求解的完整性,这里我们需要提前对 a i a_{i} ai​ 加上一个关于松弛变量的约束,关于这一约束我们会在之后第五章节的软间隔与正则化中详细描述,读者们不需要过于纠结(加入松弛变量的目的是为了让模型在训练时 不必完全的将两类样本划分开,允许一些离群的样本点出现在向量机所划分的间隔当中,以获得在测试集上更好的划分效果)。加入松弛变量后,模型转化为 m a x a ∑ i = 1 n a i − 1 2 ∑ i , j = 1 n a i a j y i y j x i T x j max_{a} \sum_{i = 1}^{n}a_{i}- \frac{1}{2} \sum_{i,j = 1}^{n}a_{i}a_{j}y_{i}y_{j}x_{i}^{T}x_{j} maxa​∑i=1n​ai​−21​∑i,j=1n​ai​aj​yi​yj​xiT​xj​ s . t . C > = a i > = 0 , i = 1 , . . . , n s.t. C >= a_{i} >= 0,i= 1,...,n s.t.C>=ai​>=0,i=1,...,n ∑ i = 1 n a i y i = 0 \sum_{i = 1}^{n}a_{i}y_{i} = 0 ∑i=1n​ai​yi​=0

现在我们要解决的是调节参数 a 1 , a 2 , . . . , a n {a_{1},a_{2}, ... ,a_{n}} a1​,a2​,...,an​ 以求得优化目标的最大值, x i x_{i} xi​ 和 y i y_{i} yi​ 都是已知数, C C C 由我们预先设定,也是已知数。在SMO算法中,我需要固定住参数 a i a_{i} ai​ 中的除了 a 1 , a 2 a_{1},a_{2} a1​,a2​(这里的 a 1 , a 2 a_{1},a_{2} a1​,a2​只是代表其中的两个,下标不一定是1,2) 的其他所有 a a a,然后在 a 1 a_{1} a1​ 上求极值。那么既然是在 a 1 a_{1} a1​ 上求极值,为什么要保留两个参数变化呢? 这是因为,如果固定住了 a 1 a_{1} a1​ 以外的所有参数,则根据式子 ∑ i = 1 n a i y i = 0 \sum_{i = 1}^{n}a_{i}y_{i} = 0 ∑i=1n​ai​yi​=0 我们可以推出 a 1 a_{1} a1​ 将是个定值,而不再是一个变量。因此,我们需要一次选取两个参数进行优化。比如 a 1 , a 2 a_{1},a_{2} a1​,a2​ ,此时 a 2 a_{2} a2​ 可以由 a 1 a_{1} a1​ 和其它式子表示出来,这样回代到目标函数中,原目标函数就是单一变量 a 1 a_{1} a1​ 的函数了,可解。 SMO算法主要分为两步操作以及循环:

· 使用启发式的方法选取一对 a 1 , a 2 a_{1},a_{2} a1​,a2​ · 固定除了 a 1 , a 2 a_{1},a_{2} a1​,a2​ 外的其它参数,确定使目标函数达到极值的 a 1 a_{1} a1​ ,其中 a 2 a_{2} a2​ 可以由 a 1 a_{1} a1​ 表示 · 重复上述步骤直至算法收敛

这里只是SMO算法的简单描述供读者对SMO有一个大致的把握,关于当中的一些具体细节,我们会在后面详细描述,比如如何进行启发式选取参数、如何更新 a 1 , a 2 a_{1},a_{2} a1​,a2​ 等。不要着急,我们先把目标函数转化为Platt文章中描述的形式。

m i n a 1 2 ∑ i , j = 1 n a i a j y i y j K ( x i , x j ) − ∑ i = 1 n a i min_{a} \frac{1}{2} \sum_{i,j = 1}^{n}a_{i}a_{j}y_{i}y_{j}K(x_{i},x_{j}) - \sum_{i = 1}^{n}a_{i} mina​21​∑i,j=1n​ai​aj​yi​yj​K(xi​,xj​)−∑i=1n​ai​ s . t . C > = a i > = 0 , i = 1 , . . . , n s.t. C >= a_{i} >= 0,i= 1,...,n s.t.C>=ai​>=0,i=1,...,n ∑ i = 1 n a i y i = 0 \sum_{i = 1}^{n}a_{i}y_{i} = 0 ∑i=1n​ai​yi​=0

可以看出其实质并未发生变化,只是将目标函数取负,由求极大,变为了求极小而已,又将目标函数中的 x i T x j x_{i}^{T}x_{j} xiT​xj​记为 K ( x i , x j ) K(x_{i},x_{j}) K(xi​,xj​) 表示内积。还有一点,在Platt的文章中,它将向量机划分的超平面 f ( x ) = w T x + b f(x) = w^{T}x+b f(x)=wTx+b 写成了如下形式

u = w T x − b u = w^{T}x-b u=wTx−b 其实质都是一样的,相应的, w w w 可表示为(上一篇有具体推导) w = ∑ i = 1 n a i y i x i w = \sum_{i = 1}^{n}a_{i}y_{i}x_{i} w=∑i=1n​ai​yi​xi​

2.KKT条件与启发式选取参数

在上一节SMO两个主要步骤中的第一步就是以启发式的方法选取一对 a 1 , a 2 a_{1},a_{2} a1​,a2​,现在我们来结合KKT条件具体说一下这个启发式方法。SMO算法注意到只需选取的 a 1 , a 2 a_{1},a_{2} a1​,a2​ 中有一个不满足 KKT条件,目标函数就会越优,直观来看,**KKT条件违背的程度越大,则变量更新后可能导致的目标函数值优化程度越大。**那么什么是违背KKT条件的 a a a 呢?

在加入了松弛条件C后,我们可以将上一篇博客中提到的KKT重写为

{ C > = a i > = 0 y i u i − 1 > = 0 a i ( y i u i − 1 ) = 0 \left\{\begin{matrix}C>=a_{i} >=0\\y_{i}u_{i}-1 >= 0 \\ a_{i}(y_{i}u_{i}-1) = 0\end{matrix}\right. ⎩⎨⎧​C>=ai​>=0yi​ui​−1>=0ai​(yi​ui​−1)=0​ 对于这三个式子,结合向量机划分超平面的几何意义(下图)我们可以理解为以下几种情况

a i = 0 , y i u i − 1 > = 0 a_{i} = 0 , y_{i}u_{i}-1 >= 0 ai​=0,yi​ui​−1>=0 ,对于这一情况,表明 a i a_{i} ai​ 对应的样本点 ( x i , y i ) (x_{i},y_{i}) (xi​,yi​)是正常分类,即被超平面合理的划分到了两边,同时在间隔之外 C > a i > 0 , y i u i − 1 = 0 C > a_{i} > 0 , y_{i}u_{i}-1 = 0 C>ai​>0,yi​ui​−1=0 ,对于这一情况,表明 a i a_{i} ai​ 对应的样本点 ( x i , y i ) (x_{i},y_{i}) (xi​,yi​)是在分类间隔的边界上,是支持向量 C = a i , y i u i − 1 < = 0 C = a_{i} , y_{i}u_{i}-1 0则是不满足的,而原本 a i = 0 a_{i} = 0 ai​=0 y i u i − 1 = 0 , a i = 0 或 a i = C y_{i}u_{i} - 1 = 0,a_{i}=0或a_{i}=C yi​ui​−1=0,ai​=0或ai​=C则是不满足的,而原本 0 < a i < C 0 < a_{i} < C 0 = 0 C>=a>=0 C>=a>=0 的约束,可以得到 a 1 a_{1} a1​ 的更新公式为: a 1 n e w = a 1 + y 1 ( E 2 − E 1 ) η a_{1}^{new} = a_{1} + \frac{y_{1}(E_{2}-E_{1})}{\eta } a1new​=a1​+ηy1​(E2​−E1​)​ 这里的 E i = u i − y i , η = K ( x 1 , x 1 ) + K ( x 2 , x 2 ) − K ( x 1 , x 2 ) E_{i} = u_{i}-y_{i},\eta = K(x_{1},x_{1})+K(x_{2},x_{2})-K(x_{1},x_{2}) Ei​=ui​−yi​,η=K(x1​,x1​)+K(x2​,x2​)−K(x1​,x2​)

然后再根据 a 1 y 1 + a 2 y 2 = ξ ( 常 数 ) a_{1}y_{1} + a_{2}y_{2} = \xi(常数) a1​y1​+a2​y2​=ξ(常数) 考虑约束 C > = a > = 0 C>=a>=0 C>=a>=0 ,由于支持向量机为二分类问题, y y y的取值可以为 1或者 -1,我们可以将问题分为两种情况即 y 1 , y 2 y_{1},y_{2} y1​,y2​同号和 y 1 , y 2 y_{1},y_{2} y1​,y2​异号,我们以两者异号为例,可以做图如下

这里写图片描述 根据约束, a 1 , a 2 a_{1},a_{2} a1​,a2​既要在矩形方框上,也要在直线上,因此

下界 L = m a x ( 0 , a 2 − a 1 ) L = max(0,a_{2}-a_{1}) L=max(0,a2​−a1​) 上界 H = m i n ( C , C + a 2 − a 1 ) H = min(C,C+a_{2}-a_{1}) H=min(C,C+a2​−a1​)

同理, y 1 , y 2 y_{1},y_{2} y1​,y2​同号时

下界 L = m a x ( 0 , a 2 + a 1 − C ) L = max(0,a_{2}+a_{1}-C) L=max(0,a2​+a1​−C) 上界 H = m i n ( C , a 2 + a 1 ) H = min(C,a_{2}+a_{1}) H=min(C,a2​+a1​)

我们就可以得到 a 1 a_{1} a1​ 的迭代更新解析解为

a 1 n e w , c l i p p e d = { H i f a 1 n e w > = H a 1 n e w i f L < a 1 n e w < H L i f a 1 n e w < = L a_{1}^{new,clipped} = \left\{\begin{matrix}H if a_{1}^{new} >=H\\ a_{1}^{new} if L < a_{1}^{new}


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3