机器学习之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
- 机器学习之SVM简介
- 机器学习之四:SVM简介
- 机器学习之SVM
- 机器学习之SVM
- 【机器学习】Learning to Rank之Ranking SVM 简介
- 机器学习之SIFT&SVM
- 【机器学习算法】之SVM
- 机器学习之SVM分类
- 机器学习之初识SVM
- 机器学习实战之SVM
- [机器学习之SVM] 线性SVM还是非线性SVM?
- 系统学习机器学习之SVM(一)
- 系统学习机器学习之SVM(二)
- 系统学习机器学习之SVM(四)--SVM算法总结
- 机器学习之支持向量机(svm)
- 机器学习之旅---SVM分类器
- 机器学习算法入门之(四) SVM
- 机器学习之svm---车牌识别
- 2017/04/26 Python学习的一些概念
- Codeforces 472C Design Tutorial: Make It Nondeterministic【贪心】
- 网络编程移动同步
- HashMap与HashSet的高级用法
- 强大的矩阵奇异值分解(SVD)及其应用
- 机器学习之SVM简介
- Verilog个人小结
- Java实现简易Tomcat服务器(清晰易懂)
- 推荐一篇格式比较好看着比较舒服的sed命令介绍
- Axis2 客户端调用 设置超时时间
- 邻接矩阵存储带权值的无向图
- opencv鼠标操作:选择提取任意区域
- 关键字
- plsql中执行SELECT current_date FROM dual,为什么获取的时间不正确?获取的不是我本地的时间