机器学习之SVM简介

来源:互联网 发布:2级钢筋弯勾 算法 编辑:程序博客网 时间:2024/06/04 17:58

综述

在深度学习(2012)出现之前,SVM是ml算法中最优秀的算法。
支持向量机,本质是个分类器。核技巧+间隔最大
当间隔最大的时候,他的泛化能力是最强的,鲁棒性最高。

  • 基于最大间隔分割数据。分割的超平面有无数个,找的是最大化的
  • 寻找一个能把样本分割开的超平面(分割超平面)Max Margin Hyperplane
  • 求解凸二次规划的最优化算法。
  • 支持向量:超平面上的那些点(样本)
    当样本有多个属性,并且属性之间有影响的时候,svm比较适合

支持向量:和超平面平行的保持一定的函数距离的这两个超平面对应的向量,我们定义为支持向量
支持向量机:寻找支持向量的算法,并利用支持向量来寻找分界线的算法

  • 非线性支持向量机
  • 线性支持向量机

算法流程

算法的主要过程就是要求解超平面,超平面具有如下性质:

  • 把两类数据分隔开
  • 距离两个分类之间的距离最大

主要需要考量的是如何让距离最大,这里从向量的角度考虑
这些超平面可以由方程族描述:
这里写图片描述
这里写图片描述

两个支持向量之间的距离是
这里写图片描述
我们要寻找的是间隔最小的,也就是|w|要最大,这样最终转化成一个方程:
这里写图片描述
就是求解条件极值的方程,一个带有约束条件的最小极值方程。高数里面可以用拉格朗日方法求解
这个方程也就是SVM的基本型

训练集的最大间隔超平面是存在且唯一的。

当样本数据不是线性可分的时候,如何处理?
这里引入核函数的概念

核函数

当样本不是线性可分的时候,需要用到核函数,核函数的目的是将所有的样本转换成可划分的。通过对样本数据的转换,构造出一条直线划分原来的样本。

  • 核函数将样本数据变换到更高维度,使得他线性可分。
  • 在数学上已经证明了,经过有限次的核函数转换,一定可以处理成线性可分的情况。
  • 核函数本质上就是一个映射

最关键的就是找到合适的映射。如何找到?没有系统的方法,需要考量数据格式,业务需要等,经验积累。一般来说,径向基函数/高斯核(rbf)效果大部分情况下还行。核函数也可以自己定义。如果需要具体操作,还需要另寻他法。

核函数是SVM的精华,如何选择合理的核函数,对于SVM的性能有着至关重要的影响。

优化

核函数的选择对于性能的提升有着极为重要的作用。

评价

  • SVM可以用于分类和回归
  • SVM的复杂度是由支持向量个数的多少决定的,不是由样本个数的多少。寻来的结果完全依赖于支持向量而非所有样本。
  • svm是前一个阶段ml的主流,但是由于核函数的选择,一直是个未决问题。经常使用的多核学习本质上是借助了集成学习机制。

进阶

libsvm
核函数的选择
凸优化问题

0 0
原创粉丝点击