数据科学简介:通过对数据分类进行预测(二)大数据应用

来源:互联网 / 作者:SKY / 2018-04-16 18:11 / 点击:
机器学习已成功应用于许多预测和分类问题,包括航班晚点、信用评分和股票价格。在这里,我将探讨两种重要算法:概率神经网络和基于密度的聚类 (DBSCAN)。

你可以从原始数据提取出的一种关键价值是,能够构建一个可用于预测或分类的模型。应用此模型,您可以将观察值转换为具有明显价值的预测或分类。本教程延续了第 1 部分:“数据、结构和数据科学管道”中引入的原则,探讨两种使用监督学习和无监督学习的分类方法(一种预测形式)。

分类是机器学习算法的一种常见应用。您可以使用监督学习来实现预测和分类,使用以前的观察值构建一个模型,以便根据未见过的观察值来预测结果。也可以使用无监督学习来实现这一过程,将观察值聚类到集合中,以便根据与新观察值最接近的集群来预测它们的行为。

机器学习已成功应用于许多预测和分类问题,包括航班晚点、信用评分和股票价格。在这里,我将探讨两种重要算法:概率神经网络和基于密度的聚类 (DBSCAN)。

概率神经网络

概率神经网络 (PNN) 是 1966 年创建的,类似于我在“神经网络深入剖析”中讨论的反向传播(back-propagation)神经网络。二者都是多层的前馈神经网络,但 PNN 不依靠误差反向传播,它采用了一种不同的训练方法。您可以使用 PNN 执行模式识别、聚类、分类,以及预测。

PNN 架构

PNN 是一种监督学习方法,依赖于一个包含标签(用于标识每个观察值的类)的训练集。PNN 由 4 层组成,如下所示。

图 1. PNN 架构

数据科学简介:通过对数据分类进行预测(二)

输入层 (input layer) 代表输入矢量,具有一个包含问题的特征数量的维度。模式层 (pattern layer) 也称为隐藏层,由训练数据集中每个观察值对应的神经元组成。模式神经元计算离训练样本(由神经元表示)的欧氏距离,并将该距离表示为该类的特征矢量图心的输入特征矢量。汇总层 (summation layer) 包含该数据集表示的每个类所对应的神经元。顾名思义,汇总层中的神经元会计算出它们所代表的特定类的模式层神经元的输出之和(其中包括一个基于该类的观察值数量的平均值)。最后,输出层,也称为决策层 (decision layer),实现了一种赢家通吃的方法:它识别汇总层中具有最大值的类神经元。然后,这个类表示了所预测的输入矢量的类。

PNN 算法

您很快就会在一段代码中看到,训练和使用 PNN 的算法很简单。不需要训练,因为计算一个预测值只需迭代整个数据集来计算汇总层中的神经元。与之相反,在传统的反向传播中,会在训练每个观察值之后调整权重值。因此,反向传播网络使用起来可能更快,但花费的训练时间可能更长(根据一个关于数据集大小的函数)。

该流程从一个示例特征矢量(表示您希望预测其类的观察值)和包含带标签观察值的数据集开始。对于汇总层中的每个神经元(表示一个类),可以迭代该数据集,并计算该类的示例特征矢量和每个数据集观察值的平方和,然后应用一个平滑系数。当利用数据集中表示的(该类的)观察值计算了所有汇总神经元后,会通过赢者通吃的方法选择最大的值。这个类表示了该示例的预测类。

PNN 实现

可以在 GitHub 上找到这个 PNN 的完整实现。清单 1 提供了分类器函数,该函数接受一个示例观察值并返回它应该属于的类(预测结果)。正如前面所讨论的,此代码从汇总层开始,使用示例观察值来计算该类中包含的数据集观察值的汇总神经元。然后将汇总神经元传递给一个名为 winner_takes_all 的函数,该函数只确定哪个神经元具有最大值(赢者)。

清单 1. PNN 分类器的 C 代码

数据科学简介:通过对数据分类进行预测(二)

在我为 PNN 提供一些数据用于预测时,您就可以看到它的实际效果。在本例中,我返回到我的动物园数据集,其中包含一组基于动物特征(毛发、羽毛、产卵情况、空气传播等)的动物。我将构造一些样本观察值,以查看该算法对类(哺乳动物、昆虫、两栖动物等)的预测结果。清单 2 提供了该数据集的元数据(特征矢量描述和类描述)。

清单 2. 动物园数据集元数据

数据科学简介:通过对数据分类进行预测(二)

清单 3 给出了示例特征矢量的样本代码,以及用于演示使用 PNN 分类器的类预测结果的输出。此输出表明,一种有牙齿的跳蚤仍是昆虫;一种有毛发的掠食动物是哺乳动物;一种水生的、产卵的、有 6 条腿的动物是无脊椎动物。

清单 3. 特征矢量和预测示例

数据科学简介:通过对数据分类进行预测(二)

基于数据的聚类

DBSCAN 创建于 1996 年,是一种可自动确定自然集群数量的简单聚类方法。该方法能够以可靠方式处理异常样本(DBSCAN 称之为噪声)。可以在“用于数据分类的无监督学习”中进一步了解聚类算法。DBSCAN 最初被定义为用在数据库中,因识别(大小和形状)不规则的集群而闻名,而且适用于 k-均值无法顺利实现聚类的数据。

DBSCAN 是无监督的,它尝试使用数据的隐藏特征来提供数据结构。它使用了两个参数:最少的点数和 epsilon 距离。

DBSCAN 算法

DBSCAN 处理一个多维空间中的点。每个点由一个特征矢量表示,而且给定了两个矢量,您可以使用一个指标来计算它们之间的距离(比如欧氏距离)。

该算法从一个点开始,您可以识别离原始点给定距离(称为 epsilon 距离)内的邻近点数量。如果邻近点数量满足或超出了阈值(称为最少点数或 MINPTS),则将这个点称为核心点,并将它与一个新集群相关联。否则,会将这个点标为噪声。对于每个邻近点(称为密度可达点),只要它继续满足条件(离此点 epsilon 距离内的 MINPTS 点),就继续执行此操作并对它执行聚类。如果您到达一个没有密度可达点的点,那么可以将该点包含在集群中,但不使用超过此点的点来合并新点。

任何不满足条件(epsilon 距离内的 MINPTS)的点都被定义为噪声,但是,如果发现它们是一个集群中另一个点的密度可达点,那么最终可以将它们移动到该集群中。

阅读延展

1
3