机器学习实战 支持向量机

机器学习实战 支持向量机

1.SVM

。SVM有很多实现,但是本章只 关注其中流行的一种实现,即序列最小优化①(Sequential Minimal Optimization,SMO)算法。 在此之后,将介绍如何使用一种称为核函数(kernel)的方式将SVM扩展到更多数据集上。后 会回顾第1章中手写识别的例子,并考察其能否通过SVM来提高识别的效果

2. 基于最大间隔分隔数据

支持向量机
优点:泛化错误率低,计算开销不大,结果易解释。
缺点:对参数调节和核函数的选择敏感,原始分类器不加修改仅适用于处理二类问题。 适用数据类型:数值型和标称型数据。
在这里插入图片描述
上述将数据集分隔开来的直线称为分隔超平面(separating hyperplane)。在上面给出的例子 中,由于数据点都在二维平面上,所以此时分隔超平面就只是一条直线。但是,如果所给的数据 集是三维的,那么此时用来分隔数据的就是一个平面。显而易见,更高维的情况可以依此类推。 如果数据集是1024维的,那么就需要一个1023维的某某对象来对数据进行分隔。这个1023维的某 某对象到底应该叫什么?N1维呢?该对象被称为超平面(hyperplane),也就是分类的决策边界。 分布在超平面一侧的所有数据都属于某个类别,而分布在另一侧的所有数据则属于另一个类别。
支持向量(support vector)就是离分隔超平面近的那些点。接下来要试着大化支持向量 到分隔面的距离,需要找到此问题的优化求解方法。

2 寻找最大间隔

SVM应用的一般框架
SVM的一般流程
(1) 收集数据:可以使用任意方法。
(2) 准备数据:需要数值型数据。
(3) 分析数据:有助于可视化分隔超平面。
(4) 训练算法:SVM的大部分时间都源自训练,该过程主要实现两个参数的调优。
(5) 测试算法:十分简单的计算过程就可以实现。
(6) 使用算法:几乎所有分类问题都可以使用SVM,值得一提的是,SVM本身是一个二类 分类器,对多类问题应用SVM需要对代码做一些修改。

3 利用完整 Platt SMO算法加速优化

在几百个点组成的小规模数据集上,简化版SMO算法的运行是没有什么问题的,但是在更大 的数据集上的运行速度就会变慢。刚才已经讨论了简化版SMO算法,下面我们就讨论完整版的 Platt SMO算法。在这两个版本中,实现alpha的更改和代数运算的优化环节一模一样。在优化过 程中,唯一的不同就是选择alpha的方式。完整版的Platt SMO算法应用了一些能够提速的启发方 法。或许读者已经意识到,上一节的例子在执行时存在一定的时间提升空间。 Platt SMO算法是通过一个外循环来选择第一个alpha值的,并且其选择过程会在两种方式之 间进行交替:一种方式是在所有数据集上进行单遍扫描,另一种方式则是在非边界alpha中实现单用圆圈标记的支持向量 遍扫描。而所谓非边界alpha指的就是那些不等于边界0或C的alpha值。对整个数据集的扫描相当 容易,而实现非边界alpha值的扫描时,首先需要建立这些alpha值的列表,然后再对这个表进行 遍历。同时,该步骤会跳过那些已知的不会改变的alpha值。 在选择第一个alpha值后,算法会通过一个内循环来选择第二个alpha值。在优化过程中,会 通过最大化步长的方式来获得第二个alpha值。在简化版SMO算法中,我们会在选择j之后计算错 误率Ej。但在这里,我们会建立一个全局的缓存用于保存误差值,并从中选择使得步长或者说 Ei-Ej大的alpha值。

4 在复杂数据上应用核函数

我们就要使用一种称为核函数(kernel)的工具将数据转换成易于分类器理解的形式。本节首先解 释核函数的概念,并介绍它们在支持向量机中的使用方法。然后,介绍一种称为径向基函数(radial bias function)的流行的核函数。后,将该核函数应用于我们前面得到的分类器。

5 示例:手写识别问题回顾

基于SVM的数字识别
(1) 收集数据:提供的文本文件。
(2) 准备数据:基于二值图像构造向量。
(3) 分析数据:对图像向量进行目测。
(4) 训练算法:采用两种不同的核函数,并对径向基核函数采用不同的设置来运行SMO算法 。
(5) 测试算法:编写一个函数来测试不同的核函数并计算错误率。 (6) 使用算法

6 本章小结

支持向量机是一种分类器。之所以称为“机”是因为它会产生一个二值决策结果,即它是一种 决策“机”。支持向量机的泛化错误率较低,也就是说它具有良好的学习能力,且学到的结果具有 很好的推广性。这些优点使得支持向量机十分流行,有些人认为它是监督学习中好的定式算法。
核方法不止在SVM 中适用,还可以用于其他算法中。而其中的径向基函数是一个常用的度量两个向量距离的核函数。 支持向量机是一个二类分类器。当用其解决多类问题时,则需要额外的方法对其进行扩展。 SVM的效果也对优化参数和所用核函数中的参数敏感。

发布了11 篇原创文章 · 获赞 0 · 访问量 114

猜你喜欢

转载自blog.csdn.net/weixin_41898948/article/details/103323979