R语言数据挖掘实践——五个场景全面读懂支持向量机

R语言数据挖掘实践——五个场景全面读懂支持向量机

到目前为止,我们已经学习了随机森林、朴素贝叶斯算法、关联规则、聚类分析等。这里再介绍另外一个重要的机器学习算法——支持向量机模型。

什么是支持向量机?

支持向量机(SVM)是一种有监督学习的算法,它可以用来处理分类和回归的问题。然而,实际应用中,SVM 主要用来处理分类问题。在这个算法中,首先我们将所有点画在一个 n 维空间中(其中 n 代表特征个数)。然后我们通过寻找较好区分两类样本的超平面来对数据进行分类处理。

R语言数据挖掘实践——五个场景全面读懂支持向量机

支持向量是观测值的坐标,支持向量机是隔离两个类别的最佳边界(超平面)。

支持向量机的运行原理

首先,我们已经熟悉了如何利用超平面来区分两个类别的数据。如今急需解决的问题是:“如何找出最佳的超平面?下面分五个场景来讲解。

场景一:我们有三个超平面(A、B 和 C)。现在我们需要的是找出区分星星和圆圈的最佳超平面。

R语言数据挖掘实践——五个场景全面读懂支持向量机

我们需要记住一个识别最佳超平面的经验法则:“选择能更好区分两个类别的超平面。”在这个例子中,超平面“B”是最佳分割平面。

场景二:我们有三个超平面(A、B 和 C),它们都很好地区分两个类别的数据。那么我们要如何选出最佳的超平面呢?

R语言数据挖掘实践——五个场景全面读懂支持向量机

在这里,我们可以通过最大化超平面和其最近的各个类别中数据点的距离来寻找最佳超平面。这个距离我们称之为边际距离。

R语言数据挖掘实践——五个场景全面读懂支持向量机

场景三:利用分类精确度来识别最佳超平面

R语言数据挖掘实践——五个场景全面读懂支持向量机

如果从较大边际距离来看,最佳超平面是B。但是SVM 选择超平面时更看重分类的准确度。在上图中,超平面 B 存在一个错分点而超平面 A 的分类则全部正确。因此,最佳超平面是 A。

场景四:由于存在异常值,我们无法通过一条直线将这两类数据完全区分开来。

R语言数据挖掘实践——五个场景全面读懂支持向量机

上图中,另一端的星星可以被视为异常值。SVM 可以忽略异常值并寻找具有最大边际距离的超平面。

场景五:我们无法通过线性超平面区分这两类数据。

R语言数据挖掘实践——五个场景全面读懂支持向量机

SVM 模型可以非常容易地解决这个问题。通过引入新的变量信息,我们可以很容易解决这个问题。比如我们引入新的变量

z = x^2 + y^2

然后我们对x和z构建散点图:

R语言数据挖掘实践——五个场景全面读懂支持向量机

由于新引入的变量z,是由变量x、变量y的平方和构建的,所以z恒大于零。 原始图中,红圈数据分布在原点附近,它们的 z 值比较小;而星星数据则远离原点区域,它们具有较大的 z 值。

在 SVM 模型中,我们可以很容易地找到分割两类数据的线性超平面。但是另外一个急需解决的问题是:我们应该手动增加变量信息从而获得该线性超平面分割吗?答案是否定的!SVM 模型有一个工具叫做 kernel trick。该函数可以将输入的低维空间信息转化为高维空间信息。在解决非线性分割问题时,我们经常用到这个函数。简单地说,该函数可以转换一些极其复杂的数据,然后根据自己所定义的标签或输出结果寻找区分数据的超平面。

我们可以在原始图中画出最佳超平面:

R语言数据挖掘实践——五个场景全面读懂支持向量机


分享到:


相關文章: