机器学习:SVM学习笔记

                                        机器学习:SVM学习笔记



           svm理论在很早以前就有所接触,只不过感觉掌握不是很透彻,今儿上课老师讲了一次,就重新回顾一下。
       
        早在svm之前,算法的提出都是基于vc维的泛化理论。在增加了vc维的,提升了模型的复杂度,减小了model的泛化能力。为了增强泛化能力,,添加了对权重的惩罚因子,减小了过拟合.但是svm的目标函数和约束条件和以前提出的(例如PLA)却相反,svm用1/2*w^t*w作为目标函数,用y(w^t*x+b)作为约束条件。
      
        svm在应用到高维的时候可以解决线性不可分的情况,但是有时候映射的高维却是无穷大的,这时候svm虽然把数据映射到了高维,但是最终的计算结果却和训练数据的样本个数相关。这又带来一个问题,要是数据有10000个样本,存放的数据至少有3g,那么数据的样本个数再大一点怎么办?这个时候原来的svm在理论上可行,但是在实际的生产集群却用不上啦。哈哈,这就实现现在存在的一个大问题,如何把算法部署实施到大数据平台。

       svm中最终的支持向量的个数也就那几个,也就是拉格朗日乘子法中系数大于0的样本点。但是在分割线上也存在系数等于0,这些点不是支持向量机,这种情况很少碰到而已。也就是说:支持向量机一定在分割超平面上,分割超平面上的点却不一定都是支持向向量机。
   
      具体如下:下图左面的是一个分割超平面,x是平面外的一点,x'是平面上的一点,那么两点之间的距离用x-x'表示。
就是链接两点之间的直线。w代表的是平面的法向量,那么x到平面的距离可以解释为x连接x‘直线在垂直平面上的投影。也就是dist(x,h)。具体的表示为右面的图。

:     

         我们需要计算的就是让距离平面最近的点,使得这个距离最大化。这个距离的表达公式如上所示。但是想想,这个距离是有约束条件的,要表达的距离是离平面最近的点的距离,这些点的表达就是约束条件。平面两端的点,也就是分类正确的点,yn(w^tx+b)>0。大于0,也就表达的是可以是任意的实数。如下图所示:就是要使得分类正确的点中,距离平面最近的点尽最大可能的远离分割超平面。N代表样本点的个数。

       
     既然这个yn(w^tx+b)>0(这个距离表示为函数距离,说白了就是度量两个数的相乘),我们定义这个距离为1.那么为什么可以定义为1呢?本质是这样的,定义成为任何的一个数都可以,只不过在后面的时候会改变优化目标函数的系数而已。这样做的合理性就是,对于表式的两端任意的除以一个数,平面的位置并不会发生任何的变化 ,那么为啥不直接在平面的两端除以m呢?不就变成1了。其实这里写成m也可以,无伤大雅。这样我们的目标函数就变成了

      要是不除以m的化,这里的喜欢系数就是m。我们的目标函数和约束条件就是

    
     约束条件从大于0变成了等于1的解释就是:对于每一分类正确的点,这些点中的函数距离最小是1。注意上面的区别。一个是对于每一个点,一个是最小的函数距离。
     到了这里我们就想啦,这不就是上拉格朗日乘子法吗?但是,你要注意,这里的约束条件不是一个不等式啊,并且那个目标函数也不是凸函数。。。怎么办?那就继续变化吧。

    这个时候,目标函数是凸函数,约束是不等式,好的可以了,直接上拉格朗日.我们来看看PLA和svm的区别在哪里




    上图明显的告诉我们,传统的方法的需求只是使得分类正确,考虑的重点全局的正确性。而这里的svm却考虑的是局部,也就是仅仅会考虑那些距离平面最最近的点分类情况,并不会去考虑那些最远的点,因为他们的地位太低了,没有实质性的贡献。要考虑,就只关心那些容易出错的点。

    

         从上面。我们可以看到,PLA和SVM的约束条件完全相反,PLA的约束条件却成为了SVM的优化目标。从cv维的观点来看,需要尽可能的减小模型的复杂度来提高model的泛化能力。

         
       上面的R的大小代表的是数据的紧凑程度,也就是说r的半径越大,表示数据之间的关联性很低,分母代表的是分类器中支撑点到分割超平面的距离。我们想要的是分子越大,分母越小(数据之间的相关性越紧凑,距离平面的距离越大),这样我们会使得model的VC维降低,模型复杂度越低,泛化能力越高。说到这里,我们可以看出,在提高支撑点到平面的距离的时候,提升了model在训练集上的能力的同时还降低了vc维,多好啊。这就是svm的牛掰之处。还有一个问题就是,如果给出的数据在现有的维不可分呢?那就去高维空间看看。
   
     SVM在高维空间厉害之处就是,可以解决有时候无穷唯的时候的问题。因为最终使用的是样本点的个数。这里主要讨论涉及对偶条件和KKT条件。使用的拉格朗日可以使得有约束条件的问题转化成无约束表达式(左面)


         对偶可以使得在原问题不好解的条件下转化到他的对偶问题,而这里的对偶问题是方便解决的。
      
       如上图所示:红色区域标注的就是svm的原问题,对于任意一个大于0的系数所对应的最大距离中最小的。而这些数据点中有些是分类正确的,有些分类是错误的。对于分类错误的,我们可以认为是不合适的(b,w),不合适的(b,w)使得分类的结果中会存在一些yn(w^t*x+b)<1(分类错误)的情况。也就是说有一部分是大于0,一部分小于0,这里的系数是大于0的,那么我们可以使大于0所对应的系数无穷大,就可以使得最终的结果无穷大。对于合适的(b,w),对于 所有的样本点yn(w^t*x+b)>1,那么括号里面就都是负数,最终的结果是小于等于0。对于上面的两种情况,无穷大和小于等于0来说,只有等于0才能满足min(b,w){....}的条件。也就是说系数,阿尔法只能等于0。这不就代表的是那些不在支撑面上的点吗?最终的的约束提哦啊见就是yn(w^tx+b)-1=0,不就和原函数的约束条件相同了吗?


      上图表示的是对偶问题的转化。我们把原问题转化成为右面的对偶问题。拉格朗日对偶小于等于左面的表达式。对于右面的表达式我们计算的最大值小于左面的最小值,那么什么时候可以取到等号呢?这就引出了QP问题
      QP问题:1)要求目标函数是凸函数  2)要求对偶问题
  
    对上面的表达式进行求偏导数得到:
            和   

   把上面的结果带入原来的表达式:
  


    这里就又引出了KKT条件.最后一个条件之所以是等于0的,是因为在前面我们谈到要去到最小值,这个表达式只能是取0.
    
    
        根据最后的这个条件我们可以计算得到b这个biases。

    

      上面的表达我们可以看出,svm中的超平面本质上是支持向量的线性组合,并且w权重的计算和数据的维没关系,仅仅和样本个数有关。而PLA可以认为是对于容易出错的点进行多次的惩罚和迭代。对于边界上的点才会计算,而对于非边界上的点,根本不会被考虑到,因为他们的权重系数是0.自己感觉SVM的code有很强的理论支撑才造就了如此完美的model,不像deeplearning那样没有理论支撑。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值