机器学习实战05:支持向量机

- 基于最大间隔分隔数据

关于支持向量机
优点:泛化错误率低,计算开销不大,结果易解释。
缺点:对参数调节和核函数的选择敏感,原始分类器不加修改仅适用于处理二类问题。
适用数据类型:数值型和标称型数据。

如果数据点离决策边界越远,那么其最后的预测结果也就越可信。 我们希望找到离分隔超平面最近的点,确保它们离分隔面的距离尽可能远。这里点到分隔面的距离被称为间隔。我们希望间隔尽可能地大,这是因为如果我们犯错或者在有限数据上训练分类器的话,我们希望分 类器尽可能健壮。支持向量就是离分隔超平面最近的那些点。接下来要试着最大化支持向量到分隔面的距离,需要找到此问题的优化求解方法 。

- 寻找最大间距
在这里插入图片描述
约束条件为:
在这里插入图片描述
这里的常数C用于控制“最大化间隔”和“保证大部分点的函数间隔小于1.0”这两个目标的权重。在优化算法的实现代码中,常数C是一个参数,因此我们就可以通过调节该参数得到不同的结果。一旦求出了所有的alpha,那么分隔超平面就可以通过这些alpha来表达。这一结论十分直接, SVM中的主要工作就是求解这些alpha 。

- SMO 高效优化算法

Platt的SMO算法是将大优化问题分解为多个小优化问题来求解的。这些小优化问题往往很容易求解,并且对它们进行顺序求解的结果与将它们作为整体来求解的结果是完全一致的。在结果完全相同的同时, SMO算法的求解时间短很多。

SMO算法的目标是求出一系列alpha和b,一旦求出了这些alpha,就很容易计算出权重向量w并得到分隔超平面。

SMO算法的工作原理是:每次循环中选择两个alpha进行优化处理。一旦找到一对合适的alpha,那么就增大其中一个同时减小另一个。这里所谓的“合适”就是指两个alpha必须要符合一定的条件,条件之一就是这两个alpha必须要在间隔边界之外,而其第二个条件则是这两个alpha还没有进行过区间化处理或者不在边界上。

- 在复杂数据上应用核函数
在这里插入图片描述
前面我们用这类数据来描述非线性可分的情况。显而易见,在该数据中存在某种可以识别的模式。其中一个问题就是,我们能否像线性情况一样,利用强大的工具来捕捉数据中的这种模式?显然,答案是肯定的。接下来,我们就要使用一种称为核函数的工具将数据转换成易于分类器理解的形式,并介绍一种称为径向基函数最流行的核函数,最后,将该核函数应用于我们前面得到的分类器。

在图6-6中,数据点处于一个圆中,人类的大脑能够意识到这一点。然而,对于分类器而言,它只能识别分类器的结果是大于0还是小于0。如果只在x和y轴构成的座标系中插入直线进行分类的话,我们并不会得到理想的结果。我们或许可以对圆中的数据进行某种形式的转换,从而得到某些新的变量来表示数据。在这种表示情况下,我们就更容易得到大于0或者小于0的测试结果。

在这个例子中,我们将数据从一个特征空间转换到另一个特征空间。在新空间下,我们可以很容易利用已有的工具对数据进行处理。数学家们喜欢将这个过程称之为从一个特征空间到另一个特征空间的映射。在通常情况下,这种映射会将低维特征空间映射到高维空间

SVM优化中一个特别好的地方就是,所有的运算都可以写成内积的形式。向量的内积指的是两个向量相乘,之后得到单个标量或者数值。我们可以把内积运算替换成核函数,而不必做简化处理。将内积替换成核函数的方式被称为核技巧或者核“变电”。核函数并不仅仅应用于支持向量机,很多其他的机器学习算法也都用到核函数。

- 径向基核函数

径向基函数是SVM中常用的一个核函数。径向基函数是一个采用向量作为自变量的函数,能够基于向量距离运算输出一个标量。这个距离可以是从<0,0>向量或者其他向量开始计算的距离。径向基函数高斯版本的具体公式为:
在这里插入图片描述

上述高斯核函数将数据从其特征空间映射到更高维的空间,具体来说这里是映射到一个无穷维的空间。 在上面的例子中,数据点基本上都在一个圆内。对于这个例子,我们可以直接检查原始数据,并意识到只要度量数据点到圆心的距离即可。然而,如果碰到了一个不是这种形式的新数据集,那么我们就会陷入困境。在该数据集上,使用高斯核函数可以得到很好的结果。当然,该函数也可以用于许多其他的数据集,并且也能得到低错误率的结果。

- 示例:手写识别问题回顾
尽管之前所使用的kNN方法效果不错,但是需要保留所有的训练样本。而对于支持向量机而言,其需要保留的样本少了很多(即只保留支持向量),但是能获得可比的效果。

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

- 本章小结
支持向量机是一种分类器。之所以称为“机”是因为它会产生一个二值决策结果,即它是一种决策“机”。支持向量机的泛化错误率较低,也就是说它具有良好的学习能力,且学到的结果具有很好的推广性。这些优点使得支持向量机十分流行,有些人认为它是监督学习中最好的定式算法。

核方法或者说核技巧会将数据(有时是非线性数据)从一个低维空间映射到一个高维空间,可以将一个在低维空间中的非线性问题转换成高维空间下的线性问题来求解。核方法不止在SVM中适用,还可以用于其他算法中。而其中的径向基函数是一个常用的度量两个向量距离的核函数。

支持向量机是一个二类分类器。当用其解决多类问题时,则需要额外的方法对其进行扩展。SVM的效果也对优化参数和所用核函数中的参数敏感 。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章