基本上按照吴恩达的PDF的思路,参考了西瓜书和一本机器学习实战,感觉吴恩达PDF和西瓜书简直互补。
先梳理一下拉格朗日对偶的数学概念,然后后面思路会顺一些。
拉格朗日对偶
对于优化问题(原问题)
构造拉格朗日函数
定义问题
对于拉格朗日函数LL而言,如果原问题的约束满足,则使得最大化(即θp(w)θp(w)函数)就是让αα和ββ全部为零,这样LL就等于; 如果原问题的约束不满足,则θp(w)θp(w)可以任意地接近正无穷。所以
θp(w)={f(w)+∞约束满足约束不满足θp(w)={f(w)约束满足+∞约束不满足因此最小化θp(w)θp(w)就是在原问题约束下最小化f(w)f(w).
再定义函数
一般情况下总是成立d∗⩽p∗d∗⩽p∗,因为:
对于二元函数f(x,y)f(x,y)总有
maxxminyf(x,y)⩽minymaxxf(x,y)maxxminyf(x,y)⩽minymaxxf(x,y)因为上式等价于说,对于任意s,ts,t有(你的最大值比我最小值还小,那我任何元素都比你更大)minyf(s,y)⩽maxxf(x,t)minyf(s,y)⩽maxxf(x,t)上面这个式子就是:(显然成立)minyf(s,y)⩽f(s,t)⩽maxxf(x,t)minyf(s,y)⩽f(s,t)⩽maxxf(x,t)
但是在满足某些条件的时候p∗=d∗p∗=d∗,条件是:
1 f(w)f(w)是凸函数;2 {gi(w)}{gi(w)}是凸函数;3 {hi(w)}{hi(w)}是仿射函数;4 {gi(w)}{gi(w)}的那个不等式约束取严格小于时,原问题可行域非空
满足上面条件,则一定存在w∗,α∗,β∗w∗,α∗,β∗满足:1 w∗w∗是原问题的解;2 α∗α∗和β∗β∗是对偶问题的解;3 w∗,α∗,β∗w∗,α∗,β∗满足KKT条件。反过来,如果存在w∗,α∗,β∗w∗,α∗,β∗满足KKT条件,则w∗,α∗,β∗w∗,α∗,β∗也一定是原问题和对偶问题的解。
KKT条件是:
∂∂wiL(w∗,α∗,β∗)=0∂∂wiL(w∗,α∗,β∗)=0∂∂βiL(w∗,α∗,β∗)=0∂∂βiL(w∗,α∗,β∗)=0α∗igi(w∗)=0αi∗gi(w∗)=0gi(w∗)⩽0gi(w∗)⩽0αi⩾0αi⩾0
最大间隔分类器
给定训练集(x(i),y(i))(x(i),y(i)),希望寻找超平面wTx+b=0wTx+b=0使得对于所有y(i)=1y(i)=1的样本在超平面上方:wTx(i)+b⩾0wTx(i)+b⩾0,对于所有y(i)=−1y(i)=−1的样本在超平面下方:wTx(i)⩽0wTx(i)⩽0.
为衡量一个样本距离超平面的远近,定义函数间隔为
为解决这个问题,可以定义几何间隔为
最大间隔分类器目的是在特征空间中找到超平面使得正负样本被分到超平面两边且到超平面的距离都最大化。转化为优化问题就是:
为进一步简化这个问题,尝试利用对偶问题来解决。可以验证这个问题满足使得d∗=p∗d∗=p∗的四个条件,因此这个问题的解与其对偶问题的解相同。先不写其对偶问题是什么,先写拉格朗日函数,再利用KKT条件对拉格朗日函数进行化简。
拉格朗日函数为
所以对偶问题是
为求得对偶问题的解,使用SMO算法。对偶问题是一个有约束的最大值问题。SMO算法思想是,选取一个变量更新,使目标函数最大化,同时固定其他变量不变。由于对偶问题中有一个等式约束,不能只更新一个变量而保持约束成立,所以每次选取两个αi,αjαi,αj同时更新使目标函数最大化。
一旦在某次更新中选取了αi,αjαi,αj两个变量,而其余变量固定,那么剩下的就是求新的αi,αjαi,αj值使得拉格朗日函数最大化。这个过程可以做得非常高效:因为约束为αiy(i)+αjy(j)=cαiy(i)+αjy(j)=c,则ajaj可以用aiai表示,从而转化为一个单变量二次优化问题,且约束条件只有一个αi⩾0αi⩾0,这个问题有解析解:全局极值点如果在可行域内则直接取它,如果不在可行域内则取边界点。
每次更新都要选取αi,αjαi,αj,一般的选取策略是,选取的两个αi,αjαi,αj对应的样本间隔应该最大。
如果求得了对偶问题的解,那么直接使用(∗)(∗)式可以非常简单地得到w∗w∗.
剩下的只有bb了,是斜率,控制超平面的摆放角度(斜率),bb控制其摆放的高度(截距)。当最佳的确定了以后,最佳的bb的取值,直觉上应该使得超平面位于两组支持向量确定的两个平行超平面的中间。设最佳为b∗b∗,则对于正样本的支持向量而言w∗Tx+=1−b∗w∗Tx+=1−b∗,对于负样本的支持向量而言w∗Tx−=−1−b∗w∗Tx−=−1−b∗所以b∗=−w∗Tx++w∗Tx−2b∗=−w∗Tx++w∗Tx−2,而x+x+和x−x−可以用mini:y(i)=1w∗Tx(i)mini:y(i)=1w∗Tx(i)和maxi:y(i)=−1w∗Tx(i)maxi:y(i)=−1w∗Tx(i)来表示。所以
既然已经求出ww和,那就可以对输入的新样本进行预测。预测根据的是看wTx+bwTx+b是正是负而归到正类或者负类。为wTx+bwTx+b可以化简,利用(∗)(∗)式
观察KKT条件的最后三行,那里实际上说的是,不等式gi(w)⩽0gi(w)⩽0和不等式αi⩾0αi⩾0总有一个取等号,另一方面,对于非支持向量而言,前者必然不取等号,所以后者一定取等号。换句话说,只有支持向量对应的αiαi才可能非零。于是实际上,上面的式子中的内积,只需要对支持向量计算即可。
核函数
有的问题是线性可分的,有的问题不是线性可分的。前面所有的讨论都是事先假设训练集一定线性可分。如果训练集不是线性可分的,个人感觉上一般来说可以大致分为两种情况。一种是有部分样本类似于乱跑的小噪声,但总体上训练集仍然基本上呈现出线性可分的趋势,这部分可以通过软间隔来解决。另一种是,本来训练集就完全不是线性可分的,但使用非线性的曲线(二维时),或者“超曲面”就可以较好地分割,这就需要使用核函数。
核函数使用的场合,西瓜书上的列举的异或是一个典型,这类问题使用超平面无法分割,但是映射到更高维的特征空间,在高维特征空间中使用超平面却可能实现分割。具体例子就不抄写了。
一般使用ϕ(x)ϕ(x)表示样本xx经过某个从低维到高维的映射操作后的特征向量。预测函数原来是wTx+bwTx+b,现在是wTϕ(x)+bwTϕ(x)+b,其余一切推导可以照旧,得到的对偶问题是
这个函数就叫做核函数。引入这个记号以后,预测函数就变成
有了映射ϕ(⋅)ϕ(⋅)就有核函数k(⋅,⋅)k(⋅,⋅),有核函数计算将会很简便而不用管原来的映射到底是什么。实际任务中,往往事先并不知道怎样的映射才是有效的,也就不知道核函数是怎样的,那么任取一个函数作为核函数可行吗? 不可以。满足Mercer定理的函数才可以取为核函数。
Mercer定理(按照西瓜书的版本):设RnRn为特征空间,k(⋅,⋅)k(⋅,⋅)为定义在Rn×RnRn×Rn上的对称函数,则k(⋅,⋅)k(⋅,⋅)是核函数当且仅当对于任意(样本数量为mm的)训练集,核矩阵
K=[Ki,j]K=[Ki,j]总是半正定的。其中矩阵元Kij=k(x(i),x(j)),i,j=1,⋯,mKij=k(x(i),x(j)),i,j=1,⋯,m.
吴恩达PDF上对此有两点简单的解释,首先内积是可以调换次序的,所以核函数必须是对称的。其次解释了在有限维空间中,矩阵KK的正定性是“函数可以作为核函数”的必要条件(充分性成立但没解释):
设zz是有限维任意向量,则
满足半正定矩阵的定义。
软间隔
如果训练集不是线性可分的,但是排除掉一些少量的样本以后,基本上仍是线性可分的,这时可以使用软间隔。此外,软间隔也可以用于减弱离群点(outliers)的不良影响,例如下面这张图。这张图说的是,由于离群点的影响,如果非要严格地线性分割就会造成间隔很小,影响预测准确性。
软间隔允许一定程度上对训练集分类错误的容忍。使用下面优化问题代替原来的问题:
加入这一个ℓ1ℓ1惩罚项以后,得到的对偶问题只是约束条件稍有不同,求出的w∗w∗和b∗b∗也不同,但预测函数仍然是w∗Tx+b∗w∗Tx+b∗