统计学习方法之支持向量机

1.前言

              先来一段废话,赶路的客观请绕过:从小,在我的思想中就有一块荒无人烟的戈壁,好像我是已经穿越到了自己死后的世界。在那里我的意识感觉到了前所未有的恐惧,因为所有的一切都与我无关了,对于这个世界来说我只是一个过客而已。就好像我和那里的大地融为了一体,任岁月从我的身上缓缓的流去。但我明显的知道这并不是最恐怖的事情,最恐怖的是我会完完全全的消失掉,什么地方都没有我了。人不能接受自己的消失是一件很奇怪的事情,因为世界上所有的东西都会消失,但为什么是我们会有这种恐惧的情绪。恐惧其实是一种自我保护机制,应该发生的事情发生了没有什么好恐惧的,只有那些不应该发生的事情才应该引起恐惧。也就是说,从本质上讲人不应该消失,死亡绝对不是生命的一部分。

2.硬间隔最大化

               1.思想:支持向量机是对感知机模型的一种优化,如果对感知机不太了解请戳这里感知机模型。我们都知道感知机模型最终求得的是一个分割超平面,只要能把训练数据完美的分开就好,所以他的损失函数为最小化分错的点到超平面的函数距离;但是在线性可分的情况下,这样的超平面会有无数条,感知机随机的从中取出一条;这样模型对于新数据的泛化能力就有待提高;有什么办法能够找出这无数个超平面中分类能力最好的那一个?看一下我们实际的数据分布情况,新来一个点落入它所属的类区域的边界内的概率远远超过了落入边界外的概率,所以我们从已有的超平面中选择离正负边界最远的超平面,就是这些个超平面中泛化能力最强的一个;这样就把感知机的无数个超平面变成了一个;

              2.几何距离:支持向量机的想法是定义两条分割超平面(图上虚线的部分),来代表类的边界,然后求所有可分割的超平面中离分割超平面距离最大的那个。在感知机中的距离使用的是函数距|Wx+b|,函数距离表达的是一种相对距离,更多体现了不同距离之间的关系,需要一个唯一的全局参考标准。而在支持向量机中我们要求得是到两个分割超平面的距离,所以只能用几何距离(即它们的实际距离)。有点抽象,函数距离就好像是在地图,而超平面就为这张地图提供了比例尺。一张地图里面只能有一个比例尺,否则就会失真。其实几何距离的公式也很简单:|Wx+b|/||W||,函数距离下面除以w的二次范数即可。

              3.损失函数:我们定义离超平面最近的点到超平面的距离为1,可以把这个1理解为我们定义的单位距离,还拿地图打比方,就是我们定义北京到河北(离的最近,勿细究)的距离为单位1,就可以算出来到别的地方的距离,比如到全世界最美丽的城市咸阳的距离为5这样;你不是说不能用函数距离吗?怎么有地图了。因为对于几何距离来说,它的分子就是函数距离。对不起这块写的有点绕。定义完了单位1之后,我们的优化函数也就闪亮登场了。简单解释一下,

                   原本几何距离为:  \frac{yi(wxi+b)}{||w||}(对于分类的点来说yi和wxi+b同号 ,所以相乘可以代替绝对值),因为定义了 wxi+b=1和wxi+b=1,得到优化问题 max \frac{1}{||w||},等同于min ||w||,前面的\frac{1}{2}和后面的2次方是为了求解方便。最优化问题后面的subject to约束条件为所有点到超平面距离大于等于单位距离1

                       min \frac{1}{2} ||w|| ^{2}

                      s.t. yi(wxi+b)-1>=0,i=1,2,3...N

             

                 

                    4.对偶问题

                           1)对偶问题就是对原始问题的一种变换,将问题由不易解决的形式变得容易一些。因为原始问题是一个带约束的函数最优化问题,我们需要一个统一的方法来求解这种问题。恰好拉格朗日函数就可以解决这种问题。

                           2)原始问题如下,原始最优化问题min f(x),有k个不等式约束条件和L个等式约束条件:

                                   

                           3)拉格朗日函数可以将原始问题表述为优化问题和约束条件的统一,简单解释就是 最优化问题+不等式约束表达式+等式约束表达式;其中的α和β为拉格朗日乘子,分别对应不等式约束表达式和等式约束表达式。

                         

                        4) 拉格朗日函数的特性,因为我们要求的就是满足约束条件的解,所以原始问题f(x)就等价于max L(x,α,β),因为原始的优化问题为min f(x),所以转换为拉格朗日函数优化问题就变成了(这也叫做二次规划问题)

            

                            5)对偶函数:原始问题的对偶问题如下。这就是拉格朗日的极大极小值问题。

                             

                           因为计算机中求极大是要命的,为了方便计算,我们将原始的最小最大问题转换为了最大最小问题,那么它们的解释一样的吗?答案是不一样,只有在f(x)和c(x)为凸函数,hj(x)是仿射函数,并且严格满足KKT条件的约束时,他们两个的极值才是相等的。

                           

                           6)因为我们的原始函数f(x)和约束条件都是凸函数,所以很自然的我们引出了KKT条件如下;

                   

                   5.求解对偶问题

                       

                             根据极大极小值问题,我们先对上式求极小值。上式对于w,b求偏导可得如下。我们得到了w和α的关系,将其带入原始中,并且化简。

                 

                           

                               

                            得到了对偶函数极小值化简式,第二步我们来求极大。通过转变符号,我们将求极大值的问题再次变成了求极小值的问题。

                             

                            现在我们只需要求解一个参数α,因为前面已经得到了α和w的关系w = \sum_{i=1}^{m}aixiyi,所以很简单就可以得到w,然后利用KKT条件ai(yi(wx+b)-1)=0,可以得到所有的支持向量,将所有的支持向量x、y带进去求平均得到b的值。最终求得的w,b就是我们的分割超平面;那么现在的问题就只剩求解α了。

                          大神发明了一种叫做SMO的算法,即对于上面的最优化问题。启发式的选择变量α1,α2,每次只优化两个变量然后保持其它的参数不变。这块先不详细解释,改天有时间在加上。

           5.总结

                    SVM硬间隔最大化,就是找到类边界作为支撑超平面。然后使用最优化算法,得到最终的分割超平面。因为算法形式是带约束的最优化问题,所以使用拉格朗日函数将其进行统一,再求其对偶函数将极小极大优化问题转换为极大极小问题,两个问题要有一致的最优解,必须满足KKT条件。然后对的对偶函数进行求解,使用SMO算法求出α,根据α得到w,将满足支持向量 的点带进去求平均得到b,即最终得到了分割超平面 Wx+b=0的表达式。

3.软间隔最大化

           对于实际的数据来说,硬间隔最大化能够找到的支持向量是非常少的。其过分依赖于少数的支持向量,这些点的变动或者异常将会带来很大的影响。所以我们考虑适当的放宽约束条件,增加了惩罚系数C来允许一部分点进入到支持超平面里面来。最优化问题就变成了下面这样。同样适用拉格朗日函数进行对偶转化,然后使用smo求解。

           

4.合页损失

              svm的损失函数被称作合页损失,解释一下就是当点到分割超平面的距离大于1的时候损失为0,小于1的时候取1-y(wx+b)。

                     

函数的表达式如下,只计算距离小于1的损失。

损失函数的表达式就是合页损失加正则项

 

5.多分类

     svm是为了二分类而设计的,如果想用它来进行多分类,有两种思路。第一种,ovr即将当前的类座椅一类,其它所有的类作为一类,训练多个二分类器,最后看哪个类的概率最大;或者是进行ovo,将所有的类两两训练一个分类器,最后采取投票的方式决定应该输出的分类。

6.核函数

     svm可以处理线性可分问题,但是对于很多线性不可分的问题,如何使用svm来求解。

     一种思路是对x进行升维,比如 多项式升维,(x1,x2)可以映射为(x1,x2,x1x1,x2x2,x1x2),将很多低维数据升至高维,往往就会变得线性可分。

   但是是上面的普通升维方式有一个弊端就是会引起维度爆炸,也就是说升维完点的数据太多,计算量太大了。对于svm来说在判别式中我们只需要求xixj的结果即可,不需要知道xi,xj对应的是什么。所以伟大的先辈们就绕开了将原始数据变为多维数据的过程,来直接定义升维后计算的结果,可以在一定程度上避免维度爆炸。主要有下面几种:

         

7.总结

         svm虽然最近几年不是很火,但是有一些思想还是很有用的,而且在很多的面试中也会涉及。本文主要讲了硬间隔最大化、软间隔最大化、核函数、合页损失、多分类这些内容。硬间隔不够实用所以有了软间隔,软间隔不能处理线性不可分所以有了核函数、核函数还处理不了多分类所以有了ovr等这些多分类技巧,合页损失是svm的损失 由[1-y(wx+b)]+ 损失函数得到。关于smo那一块,还有不同核函数之间的区别等,还没有时间整理,需要后续补上。

         我觉得非常厌倦,但是还是得继续努力,如果地球厌倦了奔跑他就能够停下来吗?有很多的事情,我追逐了好久还是没有答案,世界回复我三个冰冷的大字“不可能”。但我知道那只来自于我所知道的世界,并非真实的世界。对于世界我所认识的不到万分之一,那万分之一外的世界之中就有我追寻的答案,就可以帮我实现所谓的这些不可能。听首歌,休息一下吧!估计你也忙了很久,累了。

Tik Tok - Avril Lavigne

猜你喜欢

转载自blog.csdn.net/gaobing1993/article/details/108284158