支持向量机算法概述
支持向量机(Support Vector Machines,SVM)这个算法的名字很抽象,简单的说,它也是一种分类器。之所以称为“机”是因为它是一种会产生一个二值决策结果的算法,“机”等于“算法”。
支持向量机的泛化错误率较低,也就是说它具有良好的学习能力,且学习到的结果具有很好的推广性,并且基本形式的SVM分类器不加修改即可直接使用。基于这些优点,有人认为它是监督学习中最好的定式算法。
优点:泛化错误率低,计算开销不大,结果易理解。
缺点:对参数调节和核函数的选择敏感,原始分类器不加修改仅适用于处理“二分类”问题。
适用数据类型:数值型和标称型数据。
入门案例
原书中的案例比较晦涩难懂,找到一个“深入浅出”的案例。
工作原理
支持向量机试图通过求解一个二次优化问题来最大化分类间隔(间隔越大说明分类越准确)。应用“序列最小优化算法 ”(Sequential Minimal Optimization,SMO),能够将大优化问题分解为多个小优化问题来求解。这些小优化问题往往很容易求解,并且对它们进行顺序求解的结果与将它们作为整体来求解的结果是完全一致的。在结果完全相同的同时,SMO算法的求解时间短很多。
为便于理解概念,上面的入门案例最开始提供的数据是线性可分的,得到的是“分割直线” 。但在现实中,数据往往是“非线性”可分的,但这类数据中也存在可识别的分类模式。所以SVM还要搭配称为“核函数”(kernel)的工具,它可以将数据从低维空间映射到高维空间,因此可以将一个在低维空间中的非线性问题转换成高维空间下的线性问题来求解。
一般流程
1.收集数据:可以使用任何方法;
2.准备数据:需要数值型数据;
3.分析数据:可视化分隔超平面;
4.训练算法:SVM的大部分时间都源自训练,该过程主要实现两个参数的调优;
5.测试算法:十分简单的计算过程就可以实现;
6.使用算法:几乎所有分类问题都可以使用SVM,值得一提的是,SVM本身是一个二类分类器,地多类问题应用SVM需要对代码做一些修改。
可使用场景
1.图像识别
2.天气预报
......