机器学习——一步一步理解支持向量机

曾经觉得支持向量机很难,那是因为在推导的时候自己不理解的地方就跳过去了,一步一步去理解,会发现SVM也不难。记录博客之前,推荐一个博客,大神写的太好了。

https://blog.csdn.net/macyang/article/details/38782399

通常我们接触一个东西都是从表面上去理解,也就是通俗理解,后面就会涉及到数学推导,我写的在第二层数学推导居多,上诉大牛从三个层面去展示,可读性强。

SVM处理3种数据:(1)线性可分(2)近似线性可分(3)线性不可分

应对的策略:(1)最优硬间隔(2)最优软间隔(3)高斯核映射为高纬线性

所以SVM基础是线性可分的模型,通过线性可分还能推导出高斯核,与(3)完美遥相呼应,软间隔推导和硬间隔很像,所以会了(1),软间隔也会。以下介绍思路按着三个部分来。(3)对于初学者有个疑惑,为什么高纬一定是线性的?解决了这个困惑就比较好理解。所以重点是(1)部分,这里包括拉格朗日、KKT、对偶优化等重点。

1 线性可分SVM

问题引入:按照机器学习三个基本要素是:模型、策略和计算方法。而SVM的前提就是线性可分,所以我们能够找到一个分类超平面去分割数据(超平面:因为平面一般是指二维,但很多时候是多维的,所以取名叫超平面),超平面可表示为:

\omega x+b=0

这个超平面不唯一。为了让模型的泛化能力强,我们需要找最佳的超平面。这里选择的标准就是间隔最大化的超平面,此时的超平面唯一。那如何优化这个间隔最大问题呢?优化之前需要知道这个间隔如何定义。

间隔,一般理解是点到超平面的距离,但为了优化,引入函数间隔与几何间隔(几何间隔和间隔公式上前者分母是参数的L2范数,后者是L1范数)。函数间隔为:

\widehat{\gamma }_{i}=y_{i}(\omega x_{i}+b)

函数间隔有个问题:如果将w和b等比例缩放,超平面没变,但是函数间隔也会成比例缩放。为了解决这个问题,增加一个约束,如规范化,让w 的L2范数为1,使得间隔不变。这时函数间隔就是几何间隔:

\gamma _{i}=\frac{y_{i}(\omega x_{i}+b)}{||\omega||}

定义几何间隔的最小值为\gamma

\gamma =min_{T} \gamma_{i}

要让SVM模型更好,那就希望\gamma越大越好,于是这个问题可以表述为下面的约束最优化问题:

max_{(\omega ,b)} \gamma

s.t. yi(\frac{\omega xi }{||\omega||}+\frac{b}{||\omega||})\geq \gamma

根据几何间隔和函数间隔的关系,这个问题也可以写成:

max_{(\omega ,b)}\frac{ \widehat{\gamma}}{ \left \| \omega \right \|}

s.t. yi (\omega xi + b)\geq \widehat{\gamma}

由于\widehat{\gamma}不影响最优化问题的解,所以可取为1(也很好理解,就不赘述了)。

又因为max_{(\omega ,b)}\frac{ 1}{ \left \| \omega \right \|}等价于min_{(\omega ,b)} \frac{1}{2}\left \| \omega \right \|^{2}

优化问题可重新写成:

min_{(\omega ,b)} \frac{1}{2}\left \| \omega \right \|^{2}

s.t. yi (\omega xi + b)\geq 1

嗯... ....这是个凸二次规划问题,那什么是凸优化问题呢?凸优化指约束最优化,带约束的,一般形式为:

min_{(\omega)} f(\omega )

s.t. g_{i}(\omega ) \leq 0,i=1,...,k

s.t. h_{i}(\omega ) = 0 ,i=1,...,l

如没有约束,求最小值就求导导数为0,但有约束,不能求导,怎么求解这种带约束的优化问题?此时我们引入拉格朗日函数,它的作用就是把约束条件和优化问题整合成一个式子方便求最优解。定义优化问题的拉格朗日函数:

L(\omega ,b,\alpha )=\frac{1}{2}\left \| \omega \right \|^{2}+\sum_{i=1}^{N}\alpha_{i}(1-yi(\omega xi +b))

\alpha_{i}\geq 0,称为拉格朗日乘子。

将约束添加进等式中,优化问题就变成如下问题(为什么会是极小极大,因为max_{\alpha}L(\omega ,b,\alpha )等价于\frac{1}{2}\left \| \omega \right \|^{2},具体证明就不写了,可以看李航的《统计学习》附录C):

min_{\omega,b}max_{\alpha}L(\omega ,b,\alpha )

这个是拉格朗日优化。根据拉格朗日对偶性,这个极小极大问题的对偶问题是极大极小问题(极小极大为什么没有极大极小解起来容易?):

max_{\alpha}min_{\omega,b}L(\omega ,b,\alpha )

min_{\omega,b}max_{\alpha}L(\omega ,b,\alpha )\geq max_{\alpha}min_{\omega,b}L(\omega ,b,\alpha )(这么理解,假设100个人根据分数分班,前50名在好班,后50名在差班。前者相当于好班的倒数第一,后者就是差班第一 )

嗯,那什么时候相等呢?满足KKT7个条件,李航老师的附录里面描述的很详细,还是写一下吧~L(\omega^{*} ,\alpha^{*},\beta ^{*} ),带“*”表示这个是原始约束问题的最优解,当满足以下(SVM没有等式约束,不用考虑β,以下是含等式约束的格式);

(1)\frac{\partial L(\omega^{*} ,\alpha^{*},\beta ^{*} )}{ \partial \omega }=0

(2)\frac{\partial L(\omega^{*} ,\alpha^{*},\beta ^{*} )}{ \partial \beta }=0

(3)\frac{\partial L(\omega^{*} ,\alpha^{*},\beta ^{*} )}{ \partial \alpha }=0

(4)\alpha_{i}^{*} g_{i}(\omega ^{*})=0,i=1,..,k

(5)g_{i}(\omega ^{*}) \leq 0,i=1,..,k

(6)\alpha_{i}^{*} \geq 0,i=1,..,k

(7)h_{i}(\omega^{*} ) = 0 ,i=1,...,l

而在SVM中是满足的((1-3)是我们要求的这个目标,我们求极值就是求它导数为0的时候的极值,(5)和(7)原始问题自带的约束,(6)拉格朗日的定义,(4)如果不满足,则L为正无穷,那就不等价与原始问题了)

所以,原始问题的优化等价于它的拉格朗日表达式的优化,也等价于它的拉格朗日的对偶优化。求解对偶优化:

step1:先求极小值,对w和b求导,然后带进公式消除w和b,只留变量α。求导容易,带入有点复杂,但不要跳过。

求导结果:

\frac{\partial L(\omega ,b ,\alpha)}{ \partial \omega }=0,\frac{\partial L(\omega ,b ,\alpha)}{ \partial b }=0

\omega =\sum_{i=1}^{N}\alpha _{i}y_{i}x_{i}

\sum_{i=1}^{N}\alpha _{i}y_{i}=0

带入L(\omega ,b,\alpha )=\frac{1}{2}\left \| \omega \right \|^{2}+\sum_{i=1}^{N}\alpha_{i}(1-yi(\omega xi +b))消除w和b:

这里需要说明一点,w是矩阵,xi也是矩阵,α和y是数,w*xi正规写法是\omega ^{T}xi,w的L2范数是内积,即\left \| \omega \right \|^{2}=\omega^{T}\omega

L(\omega ,b,\alpha )=\frac{1}{2}(\sum_{i=1}^{N}\alpha _{i}x_{i}y_{i})^{T}(\sum_{i=1}^{N}\alpha _{i}x_{i}y_{i}) -\sum_{i=1}^{N}\alpha _{i}x_{i}y_{i}(\sum_{i=1}^{N}\alpha _{i}x_{i}y_{i})^{T} +\sum_{i=1}^{N}\alpha _{i} +b\sum_{i=1}^{N}\alpha _{i}y_{i}

L(\omega ,b,\alpha )=-\frac{1}{2}(\sum_{i=1}^{N}\alpha _{i}x_{i}y_{i})^{T}(\sum_{i=1}^{N}\alpha _{i}x_{i}y_{i}) +\sum_{i=1}^{N}\alpha _{i}

数的转置还是自己,所以上述写为:

L(\omega ,b,\alpha )=\sum_{i=1}^{N}\alpha _{i}-\frac{1}{2} \sum_{i=1}^{N}\sum_{j=1}^{N}\alpha _{i}\alpha _{j}y _{i}y _{j}x_{i}^{T}x_{j}

别忘了约束条件:

\sum_{i=1}^{N}\alpha _{i}y_{i}=0

\alpha _{i}\geq 0

step2:现在式子是关于α的函数,如何求极大值?用的是最小序列优化SMO,SMO下文补充,求的极大值下的\alpha ^{*},再反过来求解w*和b*

\omega^{*}=\sum_{i=1}^{N}\alpha _{i}^{*}y_{i}x_{i}

b^{*}= \frac{max_{i:yi=-1}\omega ^{*T}xi+min_{i:yi=1}\omega ^{*T}xi}{2}(负样本距离最近的点和正样本距离最近的点,二者之间的距离之和,也可通过公式求解,但这样解泛化性能更好)

2 线性支持SVM和软间隔最大化

就是大体是能线性可分的,就是会有一些异常点分不了。针对这种情况,引入软间隔,也就是允许部分数据分类错误。我们假设每一个数据都给定一个松弛变量:

yi (\omega xi + b)\geq 1-\xi _{i}

松弛变量允许数据不是严格大于等于1的,但同时希望这样的数据越少越好,于是优化问题变为:

min_{\omega,b,\xi} \frac{1}{2}\left \| \omega \right \|^{2}+C\sum_{i=1}^{N}\xi _{i}

s.t. yi(\omega xi+b)\geq 1-\xi _{i},i=1,...,N

s.t. \xi _{i}\geq 0,i=1,...,N

C>0,称为惩罚参数,C越大对误分类的惩罚加大。

跟原来一样的求解,发现对偶问题的优化呢,就只改变了α的约束条件,其它不变:

L(\omega ,b,\alpha )=\sum_{i=1}^{N}\alpha _{i}-\frac{1}{2} \sum_{i=1}^{N}\sum_{j=1}^{N}\alpha _{i}\alpha _{j}y _{i}y _{j}x_{i}^{T}x_{j}

\sum_{i=1}^{N}\alpha _{i}y_{i}=0

0\leq \alpha _{i}\leq C

3 非线性SVM和核函数

为什么投影到高纬就能是线性的呢?什么是线性?就是最高次幂是1。非线性呢?表达式中最高次幂不是1。这样啊,那我能不能把你这个最高次幂不是1的变量用新的变量代替呢?比如我用x_{new} = x_{old}^{2}

假设y=ax_{1}^{2}+bx_{2}^{2}+ax_{1}x_{2}非线性吧?那我变为y=aX_{1}+bX_{2}+aX_{3}不就变成线性了吗?只不过特征空间变了,由{x1,x2}变成{X1,X2,X3},但没关系,我们知道他们的映射关系。

所以呢,对于非线性,要想用SVM思路就是:

先把原始低维空间转换成高纬空间——>在高纬线性可分空间,就是我们说的第一种情况:寻找最优间隔,对偶优化等步骤

可以!但有个问题,对偶优化的解有一个x的内积操作x_{i}^{T}x_{j}。低纬的话,一般这个输入特征纬度就比较大,上千是很经常的,把这个1000个变量变成高纬,那用多少个变量表示呢?大概是1000^2,这就很受限制了,有的时候高维特征是无穷维的。

我们假设低纬-->高维映射关系是φ(x):X-->H

会经历\phi (x_{i})^{T}\phi (x_{j}),因为\phi (x_{i})有可能是无穷维的,所以不好解,那如果存在某个函数K使得:

K(x,z)=\phi (x)\cdot \phi (z)

即,我在低纬空间求内积,在经过K映射,结果就等价于低纬映射到高维空间,在高维空间求内积呢?

答案是存在的。则

L(\omega ,b,\alpha )=\sum_{i=1}^{N}\alpha _{i}-\frac{1}{2} \sum_{i=1}^{N}\sum_{j=1}^{N}\alpha _{i}\alpha _{j}y _{i}y _{j}\phi(x_{i})^{T}\phi(x_{j})

可写成:

L(\omega ,b,\alpha )=\sum_{i=1}^{N}\alpha _{i}-\frac{1}{2} \sum_{i=1}^{N}\sum_{j=1}^{N}\alpha _{i}\alpha _{j}y _{i}y _{j}K(x_{i},x_{j})

也就是说,在核函数K(x,z)给定的条件下,我们可以利用解线性分类问题的方法求解非线性分类问题。学习是隐式地在特征空间进行,不需要显示的定义特征空间和映射函数,这样的技巧称为核技巧。

常用核函数:

1多项式核函数

2 高斯核函数

3 字符串核函数

4 番外SMO最小序列优化(后补)

求解最优解α时,因为变量很多,不太可能多每个αi求偏导,SMO的思路就是拿出2个αi和αj,其它的固定,然后优化这2个变量,然后再优化其它两个α。

思路就是把原问题不断分解为子问题并对子问题求解。具体看看实现过程:

min( \frac{1}{2} \sum_{i=1}^{N}\sum_{j=1}^{N}\alpha _{i}\alpha _{j}y _{i}y _{j}x_{i}^{T}x_{j}-\sum_{i=1}^{N}\alpha _{i})

s.t.\sum_{i=1}^{N}\alpha _{i}y_{i}=0

0\leq \alpha _{i}\leq C

挑选α1和α2:

min_{\alpha _{1},\alpha _{1}}( \frac{1}{2} \sum_{i=3}^{N}\sum_{j=3}^{N}\alpha _{i}\alpha _{j}y _{i}y _{j}x_{i}^{T}x_{j}-\sum_{i=3}^{N}\alpha _{i})

猜你喜欢

转载自blog.csdn.net/woshicao11/article/details/81478615
今日推荐