在 PMML 中表现预言性解决方案

从原始数据转到预测

PMML,即 Predictive Model Markup Language,是用于表现无数预言性建模技术的事实标准,这些技术包括 Association Rules、Cluster Models、Neural Networks 和 Decision Trees。通过这些技术,全球公司能够从数据中发现隐藏的模式,并使用它们预报行为。在本文中,我们首先介绍这个标准直接支持的预言性建模技术。然而,由于预言性解决方案远不止于它所依赖的统计技术,所以我们接着通过阐述用于表现完整预言性解决方案的数据预处理和 PMML 建模的使用方法来深入分析语言,并介绍其用于处理数据的转换与功能。

Alex Guazzelli, 分析副总裁, Zementis, Inc.

Alex Guazzelli 的照片Dr. Alex Guazzelli 是 Zemetis. Inc. 的分析副总裁,他负责开发基于 PMML 决策平台 ADAPA 的核心技术和预言性解决方案。Guazzelli 博士获得了 University of Southern California 的计算机科学博士学位,他最近参与撰写了图书 “ PMML in Action: Unleashing the Power of Open Standards for Data Mining and Predictive Analytic”。



2013 年 2 月 19 日

PMML 简介

现在,传感器正变得无处不在,从智能家用仪表到诸如深水石油钻井设备和构筑物的监控。为了使从这些传感器收集的所有数据发挥作用,预言性分析呼唤开放的标准,这些标准考虑到了实现系统之间不受私有代码和不兼容性阻碍进行畅通通信的条件。PMML 是用于表现预言性分析或数据挖掘模型的标准。通过 PMML,预言性解决方案可以在一个系统上构建,然后部署到另一个位置快速地进行工作。

对于石油和化工行业,预言性维护指的是一个应用程序,它能够对从传感器采集的数据进行预处理,然后将数据用于构建预言性解决方案,这些解决方案能够在出现机械故障之前发现问题。墨西哥湾漏油事件出现后,预言性分析和开放标准还能够提供另一个保证安全性和处理可靠性的工具。

作为表现预言性解决方案的事实标准,PMML 允许模型和数据转换以同一个简单的方法来表现。当用于表现构成一个预言性解决方案的所有计算时,PMML 不仅是数据分析、模型构建和部署系统之间通信的桥梁,而且还是公司内部与分析过程相关的所有人员和团队之间沟通的桥梁。这是极为重要的,因为它可用于传播知识和最佳实践方法,同时保证透明性。


预言性建模技术

这一节关注于具体的 PMML 元素所涉及的所有预言性建模技术。虽然每年都有无数不同的技术出现,但是它们在成为标准之前需要被广大的数据挖掘社区参与者认同和采纳。PMML 在 2009 年发布了 4.0 版本,它为以下的建模或统计技术规定了具体的元素:

  • 关联规则:AssociationModel 元素
  • 集群模型:ClusteringModel 元素
  • 决策树:TreeModel 元素
  • Naïve Bayes 分级器:NaïveBayesModel 元素
  • 神经网络:NeuralNetwork 元素
  • 回归:RegressionModelGeneralRegressionModel 元素
  • 规则集: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 — 在 清单 1DataDictionary 中定义)都会被视为丢失值。如果遇到小于 10 或大于 70 的有效值,那么它们会被当作极限值,并相应地自动替换成 10 或 70。

数据预处理

一旦数据安装完成,PMML 定义了大量的数据预处理步骤。对于这个步骤,它提供了一组通用数据转换元素,以及一组定义算术和逻辑操作的内置函数。数据预处理计算指令是用来提升对原始输入数据的预言性能,或者只是用来准备模型本身所需要的数据。例如,许多建模技术只会接收数字输入域。在这种情况下,任何绝对输入在使用之前都将需要转换成数字输入。

PMML 提供以下的预处理和数据转换元素:

  • 规范化:将连续和离散值映射为数字。
  • 离散化: 将连续值映射为离散值。
  • 值映射: 将离散值映射为离散值。
  • 函数:通过应用一个函数到一个或多个参数而生成一个值。

清单 3 显示的是 PMML 规范化元素 NormContinous

在这个例子中,PMML 将会把输入域 pressure 的值转换为 0 到 1 之间的一个值。注意新的规范化值会被赋值到一个新的域,这是一个名为 normalized_pressure 的派生域。

清单 3. PMML 的规范化
<DerivedField name="normalized_pressure" 
   dataType="double" optype="continuous">
   <NormContinuous field="pressure">
      <LinearNorm norm="0" orig="10"/>
      <LinearNorm norm="1" orig="70"/>
   </NormContinuous>
</DerivedField>

在这个例子中,PMML 将会把输入域 pressure 的值转换成 0 到 1 之间的值。注意这个新的规范化值会进一步赋值到一个新的域,这是一个名为 normalized_pressure 的派生域。

这一类的规范化通常会被应用到用作神经网络模型输入的数据域上。在使用 IBM® SPSS® Statistics 构建您的预言性分析模型时,您可以自动选择将它导出为一个 PMML 文件。如果您在构建一个神经网络模型,这个网络所使用的所有输入域都会被规范化,而生成的 PMML 文件会包含针对所有连续输入域的元素 NormContinuous

清单 4 显示的是 PMML 离散化元素 Discretize

清单 4. PMML 的离散化
<DerivedField name="categorical_pressure" 
   dataType="string" optype="categorical">
   <Discretize field="pressure">
      <DiscretizeBin binValue="low">
         <Interval closure="openClosed" rightMargin="25" />
      </DiscretizeBin>
      <DiscretizeBin binValue="normal">
         <Interval closure="openClosed" 
            leftMargin="25" rightMargin="50" />
      </DiscretizeBin>
      <DiscretizeBin binValue="high">
         <Interval closure="openOpen" leftMargin="50" />
      </DiscretizeBin>
   </Discretize>
</DerivedField>

在这个例子中,数字输入域 pressure 分成了三个类型(lownormalhigh),它们会被赋值到一个名为 categorical_pressure 新派生域。第一类将 25 及以下的值映射为 low。第二类将大于 25 且小于等于 50 的值映射为 normal。最后第三类将大于 50 的值映射为 high

注意元素 Discretize 定义了一组 DiscretizeBin 子元素,它们采用与 清单 1DataDictionary 一样的方式使用 Interval 元素。重用专用元素的一般元素是 PMML 的通用主题。因此,这种语言更具可读性,而且对于分析工具来说,它更容易导出和导入。

清单 5 显示了 PMML 映射元素 MapValues。在这个例子中,上面创建的派生域 categorical_pressure 会作为映射转换的输入域,并创建一个名为 grouped_pressure 的域。这是 PMML 的一个重要的特性,因为它允许从其他派生域创建新的派生域。

清单 5. PMML 中的映射
<DerivedField name="grouped_pressure" 
   dataType="integer" optype="categorical">
   <MapValues outputColumn="group">
      <FieldColumnPair column="C1" field="categorical_pressure" />
      <InlineTable>
         <row>
            <C1>low</C1>
            <group>1</group>
         </row>
         <row>
            <C1>normal</C1>
            <group>1</group>
         </row>
         <row>
            <C1>high</C1>
            <group>2</group>
         </row>
      </InlineTable>
   </MapValues>
</DerivedField>

注意,在这个例子中,MapValues 元素会将输入按类别分组。它可以使用元素 InlineTable 将类别 lownormal 归到第 1 组,而 high 则分到第 2 组。

PMML 还定义了许多内置的算术和逻辑操作,以及一个通用的 IF-THEN-ELSE 操作。通过组合这些操作,它就可以为几乎任意类型的预处理任务实现强大的表现方法(见 清单 6)。

清单 6. IF-THEN-ELSE 操作
IF categorical_pressure = "high"
THEN system_pressure = 0.3 * pressure
ELSE system_pressure = 2 ^ (1 + log (0.34* pressure + 1)

清单 6a 显示了与 清单 6 等同的 PMML 操作。

清单 6a. 在 PMML 中定义一个通用转换
<DerivedField name="system_pressure" 
   dataType="string" optype="categorical">
   <Apply function="if">
      <Apply function="equal">
         <FieldRef field="categorical_pressure" />
         <Constant>high</Constant>
       </Apply>
       <!-- THEN -->
       <Apply function="*">
          <Constant>0.3</Constant>
          <FieldRef field="pressure" />
      </Apply>
      <!-- ELSE -->
      <Apply function="pow">
         <Constant>2</Constant>
         <Apply function="+">
            <Constant>1</Constant>
            <Apply function="log">
               <Apply function="*">
                  <Constant>0.34</Constant>
                  <Apply function="+">
                     <FieldRef field="pressure" />
                     <Constant>1</Constant>
                  </Apply>
               </Apply>
            </Apply>
         </Apply>
      </Apply>
   </Apply>
</DerivedField>

模型表现

一旦数据转换定义完成,我们就可以表现预言解决方案的大脑了,即模型本身。PMML 的每一种建模技术表现方式都是高度依赖于它本身的结构及参数集的。正如之前所描述的,PMML 提供了用于表现预言性分析中最广泛使用的技术的扩展元素列表。

清单 7 中的例子说明了 PMML 中神经网络元素的创建方法。这里没有显示神经层、神经元和连接权重。(阅读文章 “What is PMML?” 了解如何在 PMML 中表现神经层和神经元)。

清单 7. 在 PMML 中创建一个神经网络元素
<NeuralNetwork
   modelName="ElementAnalyzer" 
   functionName="classification" 
   activationFunction="tanh"
   numberOfLayers="2">

NeuralNetwork 元素由四个属性组成。第一个是 modelName, 它用来指定模型名称(非常简单,不是吗?)第二个是 functionName,它用来确定模型的目的,和回归相反,这里指的是类别。第三个是 activationFunction,这是当处理的输入数据为 tanh 时,网络神经元使用的激活操作,在神经网络中经常使用的 S 形操作。最后,第四个属性是 numberOfLayers,它是用来指定网络是定义为两层的,其中包括一个隐藏层,以及一个输出层。注意,不包括输入层。

正如我们看到的,PMML 并不会很复杂。通过了解它的特殊元素,您就能够很好地理解模型的结构,以及它的作用:神经网络是用来区分各种不同元素的。清单 8 显示的是同一个问题的决策树定义。

清单 8. 在 PMML 中创建一个决策树元素
<TreeModel modelName="ElementAnalyzer" algorithmName="CART" 
functionName="classification">

注意,从属性 algorithmName上,您会发现这个特殊的树与 CART(Classification And Regression Tree)有关。例如,在 IBM SPSS Statistics 创建的树通过 CART 可以很容易导出为 PMML 文件的决策树。


结束语

我们面临的信息化时代是前所未有的:事务和传感器带来了大容量的数据,从而促使在问题发生或产生危害之前预测到恶意活动、错误和意外事件的解决方案的出现。 为了充分利用这些解决方案,我们必须对它们使用开放标准,如 PMML。随着应用程序和系统的增多,我们必须保证它们使用相同的语言。同时,随着 PMML 被用来表现数据转换和模型,它也成为了完整预言性解决方案共享的连接原始数据与预测结果的导管。

参考资料

学习

  • What is PMML?(Alex Guazzelli,developerWorks,2010 年 7 月):在这篇 PMML 介绍文章中了解预言分析和开放标准的作用。
  • PMML:阅读 Alex Guazzelli 撰写的关于 PMML 建模技术的 knol。
  • PMML in Action: Unleashing the Power of Open Standards for Data Mining and Predictive Analytics(Alex Guazzelli、Wen-Ching Lin、Tridivesh Jena,CreateSpace,2010 年 5 月):学习如何表现您的预言性模型,同时实践 PMML 的用法。
  • The Data Mining Group (DMG):了解来自这个供应商领导的独立协会的多种资源,该供应商致力于开发数据挖掘标准,如 Predictive Model Markup Language (PMML)。
  • Zementis PMML 资源页面:浏览完整的 PMML 例子,包括 Cluster Models、Decision Tees、Naïve Bayes Classifiers、Neural Network models, Regression Models、scorecards 和 Support Vector Machines。
  • Wikipedia 上的 PMML 页面:浏览 PMML 概述、标准及其他资源的链接。
  • Wikipedia 上的 预言分析页面:阅读统计分析领域中常见的类型、应用程序和统计技术。
  • Wikipedia 上的 数据挖掘页面:访问和阅读更多关于从数据发现模型的过程。
  • 行业库:在 developerWorks Industries 库中阅读技术文章和技巧、教程、标准和 IBM 红皮书。
  • 随时关注 developerWorks 技术活动网络广播
  • 访问 developerWorks Open source 专区获得丰富的 how-to 信息、工具和项目更新以及最受欢迎的文章和教程,帮助您用开放源码技术进行开发,并将它们与 IBM 产品结合使用。

获得产品和技术

  • IBM SPSS Statistics 18(SPSS Statistics 的前身):了解高级统计分析的功能。不管您是初学者还是经验丰富的统计人员,它全面的工具一定能满足您的需要。
  • ADAPA:试用革命性预言分析决策管理平台,它是网站对外提供的一个云计算服务。它提供了一个安全、快速和可扩展环境,您可以将数据挖掘模型和业务逻辑部署到这个环境,并使它实际运行起来。
  • IBM WebSphere Application Server:创建、部署和管理健壮、敏捷和可重用的各种类型的 SOA 业务应用程序和服务,同时减少使用 IBM WebSphere Application Server 部署应用程序基础架构的成本。
  • IBM 产品评估版:下载或 在线试用 IBM SOA Sandbox,并开始使用来自 DB2®、Lotus®、Rational®、Tivoli® 和 WebSphere® 的应用程序开发工具和中间件产品。

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Open source, XML
ArticleID=858501
ArticleTitle=在 PMML 中表现预言性解决方案
publish-date=02192013