• 【笔记】浅谈支持向量机(SVM)


    SVM支持向量机

    支持向量机的思想原理

    使用支持向量机的思想,既可以解决回归问题,又可以解决分类问题

    那么支持向量机的思想是什么?

    已经知道逻辑回归这种算法的本质就是在一个平面中寻找决策边界,而分类算法则是认为在这个边界的一侧属于一类,另一侧属于另一类,但是是要边界唯一

    对于边界不唯一的问题,可称为不适定问题,逻辑回归解决此类问题的方法就设定一个概率函数,根据概率函数建模,然后最小化损失函数,从而得出决策边界,损失函数完全是由训练数据集决定的

    PS:有的时候得出来的决策边界的划分可能泛化能力并不好,如果想要得到一个泛化能力好的决策边界,其特点就是离这条直线最近的点,让这个线尽可能的离这些点远,即在分类出来类别的同时,又与样本点尽可能的远

    支持向量机的解决方式有所不同,在找到一个泛化能力好的决策边界以后,按照最近的点进行划线,在这两条线之间,不会存在任何的数据点,即寻找一个最优的决策边界,其距离两个类别的最近的样本最远,其中最近的点称为支持向量,最佳的决策向量就是由这两条向量决定的线的中间区域决定的,即中间的线

    支持向量机要做的事情就是最大化两条线之间的距离(margin),从这个解决方法和这个思路来看,解决的是线性可分问题,线性可分问题即对于样本点来说,存在一根直线(高维来说就是存在一个超平面),可以将这些点划分出来,这样才有这个margin,这就是Hard margin SVM

    很明显通常情况下,很多数据是线性不可分的,可以对其进行改进,得到soft margin SVM,就可以进行求解了

    那么如何最大化margin呢,首先需要将margin给表达出来,得出数学公式以及函数,然后找到其中的一组取值,然后最大化margin

    SVM的最优化问题

    很明显,如果说线和线之间的距离是margin的话,设线与最佳的决策边界距离为d,这样就得到margin为两倍的d,这样只要得到了d的表达式就可以得到其最大值,就可以得到margin的最大值

    解析几何中点到直线的距离求解公式可以很清楚的表示出来,设(x,y)为点,直线为AX+BY+C=0,其距离就可以表示为

    将其扩展到n维的空间中,(可以参考这里)其中将截距表示为b

    根据上述的式子可以得到距离为(其中w的模为每一维度的平方的和的开方)

    这样对于SVM来说,假设这个决策边界为n维空间的直线表达式,又最近的样本点的距离为d,这就说明样本点到直线的距离要大于等于d才行,那么就可以得到(设置一类叫1,一类叫-1)

    这就可以变形为

    由于分子是一个数,那么就可以将分子消除以后得到

    这样就可以得到表达这三条直线的公式

    可以将式子化成一个式子

    那么对于任何支持向量x,最大化d就是最大化距离,即

    也就是对w的模的最小值进行求解,为了方便操作求导,可以设置为

    这样就变成了在原先式子的条件下,来最小化上式,这就变成了一个有条件的最优化问题,这就是Hard margin SVM的思路以及方法,但是很多时候是不好用的,此时可能就需要修改,使用soft margin SVM

    soft margin SVM

    对于hard margin SVM来说,当两个类别的样本距离很近的时候,这样求出来的决策边界虽然是正确的分类,但是其泛化能力是很值得怀疑的

    基于模型的目的就是泛化能力高,那么就可以思考一个机制,对于SVM来说,决策边界要有一定的容错能力,在一些情况下需要对一些数据进行错误分类来换取泛化能力的提升,对于线性不可分的问题就可以使用这种想法机制来求解,这就是soft margin SVM

    对于soft margin SVM来说,需要允许SVM犯一些错误,可以将之前的条件修改成,其中减去的项要大于等于0

    也就是说,在三条线之间再添加上虚线,可以允许有一些点在支持向量的直线和虚线之间,这条虚线公式可以写为

    那么怎么才能有一定的容错空间但是容错空间又不能太大呢,其实只要将最小化的方程修改一下即可(加上所有的eta加起来的和,为了平衡两部分的比例,添加上一个系数用来衡量,C越大,SVM的容错空间越小)

    上面的操作可以说是在soft margin SVM中加入了L1正则这种方式,可以理解为增加的值本身是一个正则化项,其是为了避免训练出来的模型向极端方向发展

    增加正则化项的本质就是让模型针对训练数据集有更高的容错能力,拥有了容错能力以后,可以使模型对训练数据集中的极端数据不敏感,使用这种方式使泛化能力得到提升

    有L1正则项,自然有L2正则项,增加L2正则的表达式区别就在于增加的eta的和的形式

    以上就是SVM的原理和两种思路方式以及求解方法

  • 相关阅读:
    基本数据类型与其包装类型
    String与常量池(JDK1.8)
    数据库知识归纳(面试向)
    HashMap、ConcurrentHashMap以及HashTable(面试向)
    Java多线程基础(面试向)
    Java的类加载
    Sql语句的一些事(二)
    RUBY惯用方法(转)
    Ruby中区分运行来源的方法(转)
    ruby安装devkit
  • 原文地址:https://www.cnblogs.com/jokingremarks/p/14337197.html
Copyright © 2020-2023  润新知