在本文中,我们首先介绍这个标准直接支持的预言性建模技术。然而,由于预言性解决方案远不止于它所依赖的统计技术,所以我们接着通过阐述用于表现完整预言性解决方案的数据预处理和 PMML 建模的使用方法来深入分析语言,并介绍其用于处理数据的转换与功能。
现在,传感器正变得无处不在,从智能家用仪表到诸如深水石油钻井设备和构筑物的监控。为了使从这些传感器收集的所有数据发挥作用,预言性分析呼唤开放的标准,这些标准考虑到了实现系统之间不受私有代码和不兼容性阻碍进行畅通通信的条件。PMML 是用于表现预言性分析或数据挖掘模型的标准。通过 PMML,预言性解决方案可以在一个系统上构建,然后部署到另一个位置快速地进行工作。
对于石油和化工行业,预言性维护指的是一个应用程序,它能够对从传感器采集的数据进行预处理,然后将数据用于构建预言性解决方案,这些解决方案能够在出现机械故障之前发现问题。墨西哥湾">漏油事件出现后,预言性分析和开放标准还能够提供另一个保证安全性和处理可靠性的工具。
作为表现预言性解决方案的事实标准,PMML 允许模型和数据转换以同一个简单的方法来表现。当用于表现构成一个预言性解决方案的所有计算时,PMML 不仅是数据分析、模型构建和部署系统之间通信的桥梁,而且还是公司内部与分析过程相关的所有人员和团队之间沟通的桥梁。这是极为重要的,因为它可用于传播知识和最佳实践方法,同时保证透明性。
预言性建模技术
这一节关注于具体的 PMML 元素所涉及的所有预言性建模技术。虽然每年都有无数不同的技术出现,但是它们在成为标准之前需要被广大的数据挖掘社区参与者认同和采纳。PMML 在 2009 年发布了 4.0 版本,它为以下的建模或统计技术规定了具体的元素:
关联规则:AssociationModel 元素 集群模型:ClusteringModel 元素 决策树:TreeModel 元素 Naïve Bayes 分级器:NaïveBayesModel 元素 神经网络:NeuralNetwork 元素 回归:RegressionModel 和 GeneralRegressionModel 元素 规则集:RuleSetModel 元素 序列:SequenceModel 元素 支持矢量机器:SupportVectorMachineModel 元素 内容模型:TextModel 元素 时间序列:TimeSeriesModel 元素
通过这些技术,您能够从历史数据发现对于人来说不是很明显的模式。例如,关联规则 经常用于发现大型交易数据的产品之间的规则或关系。对于超市的销售数据,关联规则将用于发现购买 A 和 B 商品的顾客还会购买 C 商品。然后由关联规则发现的信息就可以驱动市场活动,以及商店内产品的摆放位置。
另一方面,顾名思义,集群模型 会基于预定义的相似性评估将数据聚集到特定的位置。集群模型可以是集中的,这个集群中心是由数据矢量定义的;或者可以是分布式,它的中心是由统计定义的。在实际工作中,集群模型将通过最近的中心把采集的数据分配到集群。
另一个通常使用的建模技术是决策树,它实现了一个类似于树的结构,其中数据是通过一系列的决策节点分割的。叶节点定义了分类树的的特定类。决策树非常适合那些需要解决预言性决策背后的基本原理的应用程序。developerWorks 文章 “What is PMML?” 关注于另一个技术,即神经网络,它提供了一种非线性的发现数据域之间关系的方法。尽管与所使用的建模技术无关,但它的目标很清晰:为了发现数据中的模式,或对尝试预言的输入和输出数据之间的复杂关系进行建模。
预言分析的最新趋势是组合几种统计技术来解决一个问题,也称为模型团体。在这种情况下,每一个模型都会产生一个预言,然后它会被组合到一个总体结果中。古人云,三个臭皮匠,顶一个诸葛亮。这样看来,不同技术是从不同数学概念看待数据的,因此它们的组合可以提升预言的性能。为了避免使用多个技术或模型来解决一个问题,PMML 定义了一个多模型元素 MiningModel。它提供了一系列方法,允许您组合来自不同的模型的输出。常见的例子是多数票决和权重平均。
在 PMML 中处理数据
上面讨论的模型元素就像是锚点,每一个元素都体现 PMML 的一种特定的建模技术。事实上,每一个模型元素都封装了所有属性和详细表现每一种建模技术所需要的子元素,参数以及结构。但是,假如说预言性解决方案的大脑在于它的模型,那么它的眼睛就是传输给模型带有原始及派生输入域的数据。因为 PMML 不仅能够表现大脑,也能够表现眼睛,并且能够实现定义完整预言解决方案所需要的功能。
要实现这个目标,PMML 定义了许多了元素和属性,以及管理它们使用方式的具体顺序。一个 PMML 文件总是以用于数据安装的元素开始的。当数据安装完成后,PMML 考虑到数据预处理步骤的定义,然后是模型本身。让我们查看所有的三个步骤,首先是数据安装。
数据安装
PMML 规定了一系列用于定义所需要的数据域的元素。DataDictionary 元素是用于指定模型所使用的所有输入数据域。清单 1 显示的是 DataDictionary 元素中的一个名为 pressure 数字域的表现形式。注意除了类型信息,它还规定了有效值的区间。在这个例子中,任意小于 0 或大于 100 的值都会被视为无效值。
清单 1. PMML 中的 DataDictionary 元素
<DataDictionary> <DataField name="pressure" dataType="double" optype="continuous" > <Interval closure="closedClosed" leftMargin="0" rightMargin="100" /> </DataField> <!-- Other DataFields --> </MiningSchema>
这个元素对于部署和启动一个模型是非常重要的,因为它规定了处理 DataDictionary 元素所定义的原始输入域缺失或包含无效值的方法。这个元素也规定异常值处理方式 — 一个特定输入域的极限值。
在实际中,在远离模型创建的系统位置,传感器可能会失灵,从而导致收集到失真的信息或者收集不到信息。对于这些情况,MiningSchema 元素提供了缜密的处理过程,从而充分地提升总体解决方案的健壮性。清单 2 显示的是 MiningSchema 表现的 pressure 域。
清单 2. PMML 的 MiningSchema 元素
<MiningSchema> <MiningField name="pressure" usageType="active" missingValueReplacement="35.32" missingValueTreatment="asMean" invalidValueTreatment="asMissing" outliers="asExtremeValues" lowValue="10" highValue="70"/> <!-- Other MiningFields --> </MiningSchema>
在这个例子中,如果输入值丢失,那么它会被替换成值 35.32,这指的是这个域的历史数据的平均值。同时,注意它的任何无效值(小于 0 或大于 100 — 在 清单 1 的 DataDictionary 中定义)都会被视为丢失值。如果遇到小于 10 或大于 70 的有效值,那么它们会被当作极限值,并相应地自动替换成 10 或 70。