# 2 -- Dual Support Vector Machine
上节课我们主要介绍了线性支持向量机(Linear Support Vector Machine)。Linear SVM的目标是找出最“胖”的分割线进行正负类的分离,方法是使用二次规划来求出分类线。本节课将从另一个方面入手,研究对偶支持向量机(Dual Support Vector Machine),尝试从新的角度计算得出分类线,推广SVM的应用范围。
### **Motivation of Dual SVM**
首先,我们回顾一下,对于非线性SVM,我们通常可以使用非线性变换将变量从x域转换到z域中。然后,在z域中,根据上一节课的内容,使用线性SVM解决问题即可。上一节课我们说过,使用SVM得到large-margin,减少了有效的VC Dimension,限制了模型复杂度;另一方面,使用特征转换,目的是让模型更复杂,减小![](https://img.kancloud.cn/1a/7b/1a7b854be0e1a2c00757595948b96a68_25x15.jpg)。所以说,非线性SVM是把这两者目的结合起来,平衡这两者的关系。那么,特征转换下,求解QP问题在z域中的维度设为![](https://img.kancloud.cn/24/66/2466d0b5e92ac36c3835bccfb1c1ba01_40x19.jpg),如果模型越复杂,则![](https://img.kancloud.cn/24/66/2466d0b5e92ac36c3835bccfb1c1ba01_40x19.jpg)越大,相应求解这个QP问题也变得很困难。当![](https://img.kancloud.cn/c9/ed/c9eda98a39228f13bb32152950bf36b7_10x17.jpg)无限大的时候,问题将会变得难以求解,那么有没有什么办法可以解决这个问题呢?一种方法就是使SVM的求解过程不依赖![](https://img.kancloud.cn/c9/ed/c9eda98a39228f13bb32152950bf36b7_10x17.jpg),这就是我们本节课所要讨论的主要内容。
![这里写图片描述](https://img.kancloud.cn/cb/9b/cb9b7ecb8cfa9e10eded2534d88ac3bb_578x219.jpg)
比较一下,我们上一节课所讲的Original SVM二次规划问题的变量个数是![](https://img.kancloud.cn/24/66/2466d0b5e92ac36c3835bccfb1c1ba01_40x19.jpg),有N个限制条件;而本节课,我们把问题转化为对偶问题(’Equivalent’ SVM),同样是二次规划,只不过变量个数变成N个,有N+1个限制条件。这种对偶SVM的好处就是问题只跟N有关,与![](https://img.kancloud.cn/c9/ed/c9eda98a39228f13bb32152950bf36b7_10x17.jpg)无关,这样就不存在上文提到的当![](https://img.kancloud.cn/c9/ed/c9eda98a39228f13bb32152950bf36b7_10x17.jpg)无限大时难以求解的情况。
![这里写图片描述](https://img.kancloud.cn/62/ee/62ee76e5a4ad4bbad66de628e7ca7ae4_562x114.jpg)
如何把问题转化为对偶问题(’Equivalent’ SVM),其中的数学推导非常复杂,本文不做详细数学论证,但是会从概念和原理上进行简单的推导。
还记得我们在《机器学习基石》课程中介绍的Regularization中,在最小化![](https://img.kancloud.cn/1a/7b/1a7b854be0e1a2c00757595948b96a68_25x15.jpg)的过程中,也添加了限制条件:![](https://img.kancloud.cn/9f/23/9f23c7d811876d26cb3739761398ff31_75x19.jpg)。我们的求解方法是引入拉格朗日因子![](https://img.kancloud.cn/99/d3/99d394e7d0b74248114405067e0ffd51_10x12.jpg),将有条件的最小化问题转换为无条件的最小化问题:![](https://img.kancloud.cn/1f/e6/1fe6338ce9e26bb7b3c66ac24176b726_256x37.jpg),最终得到的w的最优化解为:
![](https://img.kancloud.cn/86/0a/860a5c37eecb88419b0b5ac0ed0b297e_160x37.jpg)
所以,在regularization问题中,![](https://img.kancloud.cn/99/d3/99d394e7d0b74248114405067e0ffd51_10x12.jpg)是已知常量,求解过程变得容易。那么,对于dual SVM问题,同样可以引入![](https://img.kancloud.cn/99/d3/99d394e7d0b74248114405067e0ffd51_10x12.jpg),将条件问题转换为非条件问题,只不过![](https://img.kancloud.cn/99/d3/99d394e7d0b74248114405067e0ffd51_10x12.jpg)是未知参数,且个数是N,需要对其进行求解。
![这里写图片描述](https://img.kancloud.cn/79/6b/796b8aee99ffb3a033f6308f0e04c5df_601x303.jpg)
如何将条件问题转换为非条件问题?上一节课我们介绍的SVM中,目标是:![](https://img.kancloud.cn/a6/34/a634056179e81cd951048000a7d43742_88x37.jpg),条件是:![](https://img.kancloud.cn/e8/6d/e86dc21a504398ffa3b117fd57be993f_303x20.jpg)。首先,我们令拉格朗日因子为![](https://img.kancloud.cn/96/42/964237caf2be6185a33aa601075d68fb_19x11.jpg)(区别于regularization),构造一个函数:
![](https://img.kancloud.cn/ea/55/ea558d0fc7a70023dc49922f22267df5_365x54.jpg)
这个函数右边第一项是SVM的目标,第二项是SVM的条件和拉格朗日因子![](https://img.kancloud.cn/96/42/964237caf2be6185a33aa601075d68fb_19x11.jpg)的乘积。我们把这个函数称为拉格朗日函数,其中包含三个参数:b,w,![](https://img.kancloud.cn/96/42/964237caf2be6185a33aa601075d68fb_19x11.jpg)。
![这里写图片描述](https://img.kancloud.cn/19/34/19346d0809789e03e1eaa34e283de52d_578x183.jpg)
下面,我们利用拉格朗日函数,把SVM构造成一个非条件问题:
![这里写图片描述](https://img.kancloud.cn/ca/f6/caf64e8b4973d59c495144b622690a97_584x181.jpg)
该最小化问题中包含了最大化问题,怎么解释呢?首先我们规定拉格朗日因子![](https://img.kancloud.cn/b5/f5/b5f51e0deae07262becef971a1b3e967_54x15.jpg),根据SVM的限定条件可得:![](https://img.kancloud.cn/f7/3a/f73aa4f0c7e9548cf1cf77cc4a0fb677_179x20.jpg),如果没有达到最优解,即有不满足![](https://img.kancloud.cn/f7/3a/f73aa4f0c7e9548cf1cf77cc4a0fb677_179x20.jpg)的情况,因为![](https://img.kancloud.cn/b5/f5/b5f51e0deae07262becef971a1b3e967_54x15.jpg),那么必然有![](https://img.kancloud.cn/f5/22/f522ebd228ab977fed978df5018cdaa5_228x38.jpg)。对于这种大于零的情况,其最大值是无解的。如果对于所有的点,均满足![](https://img.kancloud.cn/f7/3a/f73aa4f0c7e9548cf1cf77cc4a0fb677_179x20.jpg),那么必然有![](https://img.kancloud.cn/38/da/38dae2db4ef4206d14596be0a5fa4ffe_228x38.jpg),则当![](https://img.kancloud.cn/8f/d0/8fd02a864a38b4cadb02151818847428_228x38.jpg)时,其有最大值,最大值就是我们SVM的目标:![](https://img.kancloud.cn/2e/0b/2e0bc9f87024e163c5d5f0e8a1f004ab_47x37.jpg)。因此,这种转化为非条件的SVM构造函数的形式是可行的。
### **Lagrange Dual SVM**
现在,我们已经将SVM问题转化为与拉格朗日因子![](https://img.kancloud.cn/96/42/964237caf2be6185a33aa601075d68fb_19x11.jpg)有关的最大最小值形式。已知![](https://img.kancloud.cn/b5/f5/b5f51e0deae07262becef971a1b3e967_54x15.jpg),那么对于任何固定的![](https://img.kancloud.cn/27/21/2721304880bc953c5150ce330dd39876_16x14.jpg),且![](https://img.kancloud.cn/90/32/90326549e1884e5a3f0560738002fead_54x19.jpg),一定有如下不等式成立:
![这里写图片描述](https://img.kancloud.cn/e4/04/e404b90bb858b441ab88ce097a1827d2_672x117.jpg)
对上述不等式右边取最大值,不等式同样成立:
![这里写图片描述](https://img.kancloud.cn/93/70/9370a241135423682bbb54056c9c0504_644x147.jpg)
上述不等式表明,我们对SVM的min和max做了对调,满足这样的关系,这叫做Lagrange dual problem。不等式右边是SVM问题的下界,我们接下来的目的就是求出这个下界。
已知![](https://img.kancloud.cn/33/5a/335afd255d70f490f73e2c524c6a5b8c_12x15.jpg)是一种弱对偶关系,在二次规划QP问题中,如果满足以下三个条件:
* **函数是凸的(convex primal)**
* **函数有解(feasible primal)**
* **条件是线性的(linear constraints)**
那么,上述不等式关系就变成强对偶关系,![](https://img.kancloud.cn/33/5a/335afd255d70f490f73e2c524c6a5b8c_12x15.jpg)变成=,即一定存在满足条件的解![](https://img.kancloud.cn/b1/79/b1794176b3bd398dcae5bf0baa19356d_61x18.jpg),使等式左边和右边都成立,SVM的解就转化为右边的形式。
经过推导,SVM对偶问题的解已经转化为无条件形式:
![这里写图片描述](https://img.kancloud.cn/12/ab/12ab33342a72a4e34c4127ecbf77b629_650x159.jpg)
其中,上式括号里面的是对拉格朗日函数![](https://img.kancloud.cn/35/8f/358f56dc61167ef25a7324c767ec70a1_74x18.jpg)计算最小值。那么根据梯度下降算法思想:最小值位置满足梯度为零。首先,令![](https://img.kancloud.cn/35/8f/358f56dc61167ef25a7324c767ec70a1_74x18.jpg)对参数b的梯度为零:
![](https://img.kancloud.cn/d4/6c/d46c3e2b8f65f210626cf4867285acc0_227x54.jpg)
也就是说,最优解一定满足![](https://img.kancloud.cn/be/bf/bebf63f273fc57ac9f0b34f71b4663ab_99x54.jpg)。那么,我们把这个条件代入计算max条件中(与![](https://img.kancloud.cn/b5/f5/b5f51e0deae07262becef971a1b3e967_54x15.jpg)同为条件),并进行化简:
![这里写图片描述](https://img.kancloud.cn/14/0a/140a7147179683b3d4266634d12cda03_645x85.jpg)
这样,SVM表达式消去了b,问题化简了一些。然后,再根据最小值思想,令![](https://img.kancloud.cn/35/8f/358f56dc61167ef25a7324c767ec70a1_74x18.jpg)对参数w的梯度为零:
![](https://img.kancloud.cn/3b/3f/3b3f077b55913b7f920a6330797cd2dd_255x54.jpg)
即得到:
![](https://img.kancloud.cn/69/7f/697f3951f299861336f447ed402ba84f_120x54.jpg)
也就是说,最优解一定满足![](https://img.kancloud.cn/69/7f/697f3951f299861336f447ed402ba84f_120x54.jpg)。那么,同样我们把这个条件代入并进行化简:
![这里写图片描述](https://img.kancloud.cn/fb/38/fb38edcf567b9d76754d6da2d0c118bb_642x159.jpg)
这样,SVM表达式消去了w,问题更加简化了。这时候的条件有3个:
* all ![](https://img.kancloud.cn/b5/f5/b5f51e0deae07262becef971a1b3e967_54x15.jpg)
* ![](https://img.kancloud.cn/be/bf/bebf63f273fc57ac9f0b34f71b4663ab_99x54.jpg)
* ![](https://img.kancloud.cn/69/7f/697f3951f299861336f447ed402ba84f_120x54.jpg)
SVM简化为只有![](https://img.kancloud.cn/96/42/964237caf2be6185a33aa601075d68fb_19x11.jpg)的最佳化问题,即计算满足上述三个条件下,函数![](https://img.kancloud.cn/35/2a/352a541bc3bf7b6265f4844e30bff2f8_211x54.jpg)最小值时对应的![](https://img.kancloud.cn/96/42/964237caf2be6185a33aa601075d68fb_19x11.jpg)是多少。
总结一下,SVM最佳化形式转化为只与![](https://img.kancloud.cn/96/42/964237caf2be6185a33aa601075d68fb_19x11.jpg)有关:
![这里写图片描述](https://img.kancloud.cn/d7/11/d711c1d1215fd8b2ead56f8b52e12616_524x81.jpg)
其中,满足最佳化的条件称之为Karush-Kuhn-Tucker(KKT):
![这里写图片描述](https://img.kancloud.cn/96/2c/962c325d798c68c192d5502298f8a79c_697x308.jpg)
在下一部分中,我们将利用KKT条件来计算最优化问题中的![](https://img.kancloud.cn/38/9a/389a9983ea24ad0b3af0559c2aca381b_11x8.gif),进而得到b和w。
### **Solving Dual SVM**
上面我们已经得到了dual SVM的简化版了,接下来,我们继续对它进行一些优化。首先,将max问题转化为min问题,再做一些条件整理和推导,得到:
![这里写图片描述](https://img.kancloud.cn/5f/1d/5f1de7b19c1ce69dca23199adfe09439_684x282.jpg)
显然,这是一个convex的QP问题,且有N个变量![](https://img.kancloud.cn/96/42/964237caf2be6185a33aa601075d68fb_19x11.jpg),限制条件有N+1个。则根据上一节课讲的QP解法,找到Q,p,A,c对应的值,用软件工具包进行求解即可。
![这里写图片描述](https://img.kancloud.cn/47/8f/478f3aaa20f04cc49166d1b5c8816cf3_674x342.jpg)
求解过程很清晰,但是值得注意的是,![](https://img.kancloud.cn/5b/06/5b06daaec74914ea56876d5428c773d7_133x22.jpg),大部分值是非零的,称为dense。当N很大的时候,例如N=30000,那么对应的![](https://img.kancloud.cn/a4/40/a44019d660c0f6396c74f2640a75b215_25x16.jpg)的计算量将会很大,存储空间也很大。所以一般情况下,对dual SVM问题的矩阵![](https://img.kancloud.cn/a4/40/a44019d660c0f6396c74f2640a75b215_25x16.jpg),需要使用一些特殊的方法,这部分内容就不再赘述了。
![这里写图片描述](https://img.kancloud.cn/ed/3e/ed3eda29bb0020d52ac56cf03445708c_582x164.jpg)
得到![](https://img.kancloud.cn/96/42/964237caf2be6185a33aa601075d68fb_19x11.jpg)之后,再根据之前的KKT条件,就可以计算出w和b了。首先利用条件![](https://img.kancloud.cn/1e/d7/1ed7b8d0f93efceb33aedc2a078898ee_120x26.jpg)得到w,然后利用条件![](https://img.kancloud.cn/6a/52/6a527475a5c593024eea5e94ecf5fa8a_200x20.jpg),取任一![](https://img.kancloud.cn/fa/b2/fab23ee6957e727e27bddf8b6405cd76_53x18.jpg)即![](https://img.kancloud.cn/96/42/964237caf2be6185a33aa601075d68fb_19x11.jpg)>0的点,得到![](https://img.kancloud.cn/e2/55/e255015d8c5e78834f68f1a1a2010f11_165x20.jpg),进而求得![](https://img.kancloud.cn/bb/45/bb45fb6266bc7f012a9538e86444be4e_111x20.jpg)。
![这里写图片描述](https://img.kancloud.cn/18/bc/18bc4ae3c463ac15d824fc76aefd2c62_584x337.jpg)
值得注意的是,计算b值,![](https://img.kancloud.cn/96/42/964237caf2be6185a33aa601075d68fb_19x11.jpg)>0时,有![](https://img.kancloud.cn/e3/38/e338226fa144adc373be876bedbf09cd_133x20.jpg)成立。![](https://img.kancloud.cn/e3/38/e338226fa144adc373be876bedbf09cd_133x20.jpg)正好表示的是该点在SVM分类线上,即fat boundary。也就是说,满足![](https://img.kancloud.cn/96/42/964237caf2be6185a33aa601075d68fb_19x11.jpg)>0的点一定落在fat boundary上,这些点就是Support Vector。这是一个非常有趣的特性。
### **Messages behind Dual SVM**
回忆一下,上一节课中,我们把位于分类线边界上的点称为support vector(candidates)。本节课前面介绍了![](https://img.kancloud.cn/96/42/964237caf2be6185a33aa601075d68fb_19x11.jpg)>0的点一定落在分类线边界上,这些点称之为support vector(注意没有candidates)。也就是说分类线上的点不一定都是支持向量,但是满足![](https://img.kancloud.cn/96/42/964237caf2be6185a33aa601075d68fb_19x11.jpg)>0的点,一定是支持向量。
![这里写图片描述](https://img.kancloud.cn/69/d2/69d232aea7161ce802380283001e3eef_578x182.jpg)
SV只由![](https://img.kancloud.cn/96/42/964237caf2be6185a33aa601075d68fb_19x11.jpg)>0的点决定,根据上一部分推导的w和b的计算公式,我们发现,w和b仅由SV即![](https://img.kancloud.cn/96/42/964237caf2be6185a33aa601075d68fb_19x11.jpg)>0的点决定,简化了计算量。这跟我们上一节课介绍的分类线只由“胖”边界上的点所决定是一个道理。也就是说,样本点可以分成两类:一类是support vectors,通过support vectors可以求得fattest hyperplane;另一类不是support vectors,对我们求得fattest hyperplane没有影响。
![这里写图片描述](https://img.kancloud.cn/8d/47/8d47b29b03bc99a3a1db7806d21fc618_579x91.jpg)
回过头来,我们来比较一下SVM和PLA的w公式:
![这里写图片描述](https://img.kancloud.cn/3b/64/3b64a3500c6718a5eb2ef75b0ad01155_562x156.jpg)
我们发现,二者在形式上是相似的。![](https://img.kancloud.cn/d8/da/d8daa4b11517d77897bdfd4347c1125e_46x11.jpg)由fattest hyperplane边界上所有的SV决定,![](https://img.kancloud.cn/16/95/16950346c4f80168326d51a83ae17b29_42x11.jpg)由所有当前分类错误的点决定。![](https://img.kancloud.cn/d8/da/d8daa4b11517d77897bdfd4347c1125e_46x11.jpg)和![](https://img.kancloud.cn/16/95/16950346c4f80168326d51a83ae17b29_42x11.jpg)都是原始数据点![](https://img.kancloud.cn/f5/f8/f5f8a5fbc7323a4eb44909a10c882f0a_34x12.jpg)的线性组合形式,是原始数据的代表。
![这里写图片描述](https://img.kancloud.cn/61/5d/615dd981b61ced706cdc20f51c99f204_584x122.jpg)
总结一下,本节课和上节课主要介绍了两种形式的SVM,一种是Primal Hard-Margin SVM,另一种是Dual Hard_Margin SVM。Primal Hard-Margin SVM有![](https://img.kancloud.cn/24/66/2466d0b5e92ac36c3835bccfb1c1ba01_40x19.jpg)个参数,有N个限制条件。当![](https://img.kancloud.cn/24/66/2466d0b5e92ac36c3835bccfb1c1ba01_40x19.jpg)很大时,求解困难。而Dual Hard_Margin SVM有N个参数,有N+1个限制条件。当数据量N很大时,也同样会增大计算难度。两种形式都能得到w和b,求得fattest hyperplane。通常情况下,如果N不是很大,一般使用Dual SVM来解决问题。
![这里写图片描述](https://img.kancloud.cn/26/86/26861bf33528cb91cbf9fe99b666127f_561x358.jpg)
这节课提出的Dual SVM的目的是为了避免计算过程中对![](https://img.kancloud.cn/c9/ed/c9eda98a39228f13bb32152950bf36b7_10x17.jpg)的依赖,而只与N有关。但是,Dual SVM是否真的消除了对![](https://img.kancloud.cn/c9/ed/c9eda98a39228f13bb32152950bf36b7_10x17.jpg)的依赖呢?其实并没有。因为在计算![](https://img.kancloud.cn/5b/06/5b06daaec74914ea56876d5428c773d7_133x22.jpg)的过程中,由z向量引入了![](https://img.kancloud.cn/c9/ed/c9eda98a39228f13bb32152950bf36b7_10x17.jpg),实际上复杂度已经隐藏在计算过程中了。所以,我们的目标并没有实现。下一节课我们将继续研究探讨如何消除对![](https://img.kancloud.cn/c9/ed/c9eda98a39228f13bb32152950bf36b7_10x17.jpg)的依赖。
![这里写图片描述](https://img.kancloud.cn/e5/64/e5649f3be4052f4c7488ec3b9bb64a71_579x207.jpg)
### **总结**
本节课主要介绍了SVM的另一种形式:Dual SVM。我们这样做的出发点是为了移除计算过程对![](https://img.kancloud.cn/c9/ed/c9eda98a39228f13bb32152950bf36b7_10x17.jpg)的依赖。Dual SVM的推导过程是通过引入拉格朗日因子![](https://img.kancloud.cn/38/9a/389a9983ea24ad0b3af0559c2aca381b_11x8.gif),将SVM转化为新的非条件形式。然后,利用QP,得到最佳解的拉格朗日因子![](https://img.kancloud.cn/38/9a/389a9983ea24ad0b3af0559c2aca381b_11x8.gif)。再通过KKT条件,计算得到对应的w和b。最终求得fattest hyperplane。下一节课,我们将解决Dual SVM计算过程中对![](https://img.kancloud.cn/c9/ed/c9eda98a39228f13bb32152950bf36b7_10x17.jpg)的依赖问题。
**_注明:_**
文章中所有的图片均来自台湾大学林轩田《机器学习技法》课程
- 台湾大学林轩田机器学习笔记
- 机器学习基石
- 1 -- The Learning Problem
- 2 -- Learning to Answer Yes/No
- 3 -- Types of Learning
- 4 -- Feasibility of Learning
- 5 -- Training versus Testing
- 6 -- Theory of Generalization
- 7 -- The VC Dimension
- 8 -- Noise and Error
- 9 -- Linear Regression
- 10 -- Logistic Regression
- 11 -- Linear Models for Classification
- 12 -- Nonlinear Transformation
- 13 -- Hazard of Overfitting
- 14 -- Regularization
- 15 -- Validation
- 16 -- Three Learning Principles
- 机器学习技法
- 1 -- Linear Support Vector Machine
- 2 -- Dual Support Vector Machine
- 3 -- Kernel Support Vector Machine
- 4 -- Soft-Margin Support Vector Machine
- 5 -- Kernel Logistic Regression
- 6 -- Support Vector Regression
- 7 -- Blending and Bagging
- 8 -- Adaptive Boosting
- 9 -- Decision Tree
- 10 -- Random Forest
- 11 -- Gradient Boosted Decision Tree
- 12 -- Neural Network
- 13 -- Deep Learning
- 14 -- Radial Basis Function Network
- 15 -- Matrix Factorization
- 16(完结) -- Finale