机器学习之SVM简介
Posted 未央夜色
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习之SVM简介相关的知识,希望对你有一定的参考价值。
综述
在深度学习(2012)出现之前,SVM是ml算法中最优秀的算法。
支持向量机,本质是个分类器。核技巧+间隔最大
当间隔最大的时候,他的泛化能力是最强的,鲁棒性最高。
- 基于最大间隔分割数据。分割的超平面有无数个,找的是最大化的
- 寻找一个能把样本分割开的超平面(分割超平面)Max Margin Hyperplane
- 求解凸二次规划的最优化算法。
- 支持向量:超平面上的那些点(样本)
当样本有多个属性,并且属性之间有影响的时候,svm比较适合
支持向量:和超平面平行的保持一定的函数距离的这两个超平面对应的向量,我们定义为支持向量
支持向量机:寻找支持向量的算法,并利用支持向量来寻找分界线的算法
- 非线性支持向量机
- 线性支持向量机
算法流程
算法的主要过程就是要求解超平面,超平面具有如下性质:
- 把两类数据分隔开
- 距离两个分类之间的距离最大
主要需要考量的是如何让距离最大,这里从向量的角度考虑
这些超平面可以由方程族描述:
两个支持向量之间的距离是
我们要寻找的是间隔最小的,也就是|w|要最大,这样最终转化成一个方程:
就是求解条件极值的方程,一个带有约束条件的最小极值方程。高数里面可以用拉格朗日方法求解
这个方程也就是SVM的基本型
训练集的最大间隔超平面是存在且唯一的。
当样本数据不是线性可分的时候,如何处理?
这里引入核函数的概念
核函数
当样本不是线性可分的时候,需要用到核函数,核函数的目的是将所有的样本转换成可划分的。通过对样本数据的转换,构造出一条直线划分原来的样本。
- 核函数将样本数据变换到更高维度,使得他线性可分。
- 在数学上已经证明了,经过有限次的核函数转换,一定可以处理成线性可分的情况。
- 核函数本质上就是一个映射
最关键的就是找到合适的映射。如何找到?没有系统的方法,需要考量数据格式,业务需要等,经验积累。一般来说,径向基函数/高斯核(rbf)效果大部分情况下还行。核函数也可以自己定义。如果需要具体操作,还需要另寻他法。
核函数是SVM的精华,如何选择合理的核函数,对于SVM的性能有着至关重要的影响。
优化
核函数的选择对于性能的提升有着极为重要的作用。
评价
- SVM可以用于分类和回归
- SVM的复杂度是由支持向量个数的多少决定的,不是由样本个数的多少。寻来的结果完全依赖于支持向量而非所有样本。
- svm是前一个阶段ml的主流,但是由于核函数的选择,一直是个未决问题。经常使用的多核学习本质上是借助了集成学习机制。
进阶
libsvm
核函数的选择
凸优化问题
以上是关于机器学习之SVM简介的主要内容,如果未能解决你的问题,请参考以下文章