支持向量机(SVM)
优点: 泛化错误率低,计算开销不大,结果易解释。
缺点: 对参数调节和核函数的选择敏感,原始分类器不加修改仅适用于处理二类问题。
适用数据类型: 数值型和标称型数据。
SVM的一般流程
(1) 收集数据:可以使用任意方法。
(2) 准备数据:需要数值型数据。
(3) 分析数据:有助于可视化分隔超平面。
(4) 训练算法:SVM的大部分时间都源自训练,该过程主要实现两个参数的调优。
(5) 测试算法:十分简单的计算过程就可以实现。
(6) 使用算法:几乎所有分类问题都可以使用SVM,值得一提的是,SVM本身是一个二类
(分类器,对多类问题应用SVM需要对代码做一些修改。)
Platt的SMO算法:
1996年,John Platt发布了一个称为SMO① 的强大算法,用于训练SVM。SMO表示序列最小优 化(Sequential Minimal Optimization)。Platt的SMO算法是将大优化问题分解为多个小优化问题来 求解的。这些小优化问题往往很容易求解,并且对它们进行顺序求解的结果与将它们作为整体来 求解的结果是完全一致的。在结果完全相同的同时,SMO算法的求解时间短很多。
SMO算法的目标是求出一系列alpha和b,一旦求出了这些alpha,就很容易计算出权重向量w 并得到分隔超平面。
SMO算法的工作原理是:每次循环中选择两个alpha进行优化处理。 一旦找到一对合适的 alpha,那么就增大其中一个同时减小另一个。这里所谓的“合适”就是指两个alpha必须要符合 一定的条件,条件之一就是这两个alpha必须要在间隔边界之外,而其第二个条件则是这两个alpha 还没有进行过区间化处理或者不在边界上。
代码编写如下: