pmml_在PMML中表示预测解决方案
pmml
PMML简介
如今,传感器已无处不在,从家庭中的智能仪表到对深水石油钻机等设备和结构的监视。 为了理解从这些传感器收集的所有数据,预测分析需要开放标准,该标准允许系统进行通信,而不会妨碍专有代码和不兼容性。 PMML是用于表示预测分析或数据挖掘模型的标准。 借助PMML,可以在一个系统中构建预测性解决方案,并在另一个系统中部署该解决方案,然后立即将其投入工作。
对于石油和化学工业,预测性维护是一种应用,其中可以对从传感器捕获的原始数据进行预处理,并用于构建预测性解决方案,从而可以在机械故障发生之前对其进行检测。 在墨西哥湾发生悲剧之后,预测分析和开放标准可以为确保安全性和过程可靠性提供另一种工具。
作为表示预测解决方案的事实上的标准,PMML允许以简单的方式将模型和数据转换一起表示。 当用来表示构成预测解决方案的所有计算时,PMML不仅成为数据分析,模型构建和部署系统之间的桥梁,而且还成为公司内部参与分析过程的所有人员和团队之间的桥梁。 这是非常重要的,因为它可用于传播知识和最佳实践以及确保透明度。
预测建模技术
本节重点介绍特定PMML元素涵盖的所有预测建模技术。 尽管每年都会提出无数种不同的技术,但是在成为标准的一部分之前,它们需要得到大量数据挖掘从业人员的证明和采用。 从2009年发布的4.0版开始,PMML为以下建模或统计技术提供了特定元素:
- 关联规则:
AssociationModel
元素 - 集群模型:
ClusteringModel
元素 - 决策树:
TreeModel
元素 - 朴素贝叶斯分类器:
NaïveBayesModel
元素 - 神经网络:
NeuralNetwork
元素 - 回归:
RegressionModel
和GeneralRegressionModel
元素 - 规则集:
RuleSetModel
元素 - 序列:
SequenceModel
元素 - 支持向量机:
SupportVectorMachineModel
元素 - 文本模型:
TextModel
元素 - 时间序列:
TimeSeriesModel
元素
这些技术使您可以从人眼看不到的历史数据中提取模式。 例如, 关联规则经常用于在大规模交易数据中查找产品之间的规则或关系。 当从超市获得销售数据时,关联规则将用于发现购买商品A和B的客户也购买了商品C。关联规则传达的信息可用于推动营销活动以及产品在内部的放置一家商店。
另一方面,顾名思义, 群集模型用于基于预定的相似性度量将数据群集到特定的存储桶中。 聚类模型可以是基于中心的,其中聚类中心是由数据矢量定义的,也可以是基于分布的,其中聚类中心是由统计数据定义的。 当投入使用时,集群模型会将传入的数据分配给中心最近的集群。
另一种称为决策树的常用建模技术实现了一种树状结构,其中数据由一系列决策节点进行分区。 在分类树的情况下,叶节点定义特定的类。 对于需要解释预测性决策依据的应用,决策树是他们的最爱。 developerWorks文章“什么是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>
用于表示输入数据的另一个PMML元素是MiningSchema
。 每当部署模型并使其工作时,此元素都非常重要,因为它定义了DataDictionary
元素中定义的任何原始输入字段丢失或包含无效值时的处理方法。 该元素还允许处理离群值-与给定输入字段关联的极值。
在远离模型构建系统的现实世界中,传感器可能会发生故障,从而提供失真的信息或完全不提供信息。 对于这些情况, MiningSchema
元素提供了要遵循的确切过程,从而大大提高了整体解决方案的稳定性。 清单2显示了场pressure
的MiningSchema
表示形式。
清单2. PMML中的挖掘模式元素
<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。
数据预处理
数据设置完成后,PMML可以定义大量的数据预处理步骤。 为此,它提供了一组用于常见数据转换的元素,以及用于定义算术和逻辑运算的内置函数列表。 数据预处理计算可用于提高原始输入数据的预测能力,或仅用于准备要呈现给模型本身的数据。 例如,许多建模技术仅将数值字段作为输入。 在这种情况下,任何分类输入都需要在使用之前转换为数字输入。
PMML为预处理和数据转换提供了以下元素:
Normalization
:将连续值和离散值映射为数字。Discretization
:将连续值映射为离散值。Value mapping
:将离散值Value mapping
为离散值。Functions
:通过将函数应用于一个或多个参数来得出值。
清单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
分为三类( low
, normal
和high
),它们被分配给名为categorical_pressure
的新派生场。 第一个bin将值最多映射为25到low
。 第二个将大于25且小于或等于50的值映射到normal
。 第三个和最后一个bin将大于50的值映射到high
。
注意, Discretize
元素定义了一组DiscretizeBin
子元素,这些子元素使用Interval
元素的方式与清单1中的DataDictionary
元素相同。 在专用元素内重用通用元素是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
将low
类别和normal
类别分配给组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中神经网络元素的设置。 未显示神经层,神经元和连接权重。 (有关如何表示PMML中的神经层和神经元,请参见文章“什么是PMML?”)。
清单7.在PMML中设置一个神经网络元素
<NeuralNetworkmodelName="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(分类和回归树)训练的。 例如,内置于IBM SPSS Statistics中的树可以从CART中受益,以生成可以轻松导出为PMML文件的决策树。
结论
信息时代给我们带来了福气:从交易和传感器捕获的大量数据的可用性。 这允许构建解决方案,该解决方案能够在恶意活动,故障和事故发生或造成危害之前对其进行预测。 但是,如果您要从这些解决方案中充分受益,则必须将它们与开放标准(例如PMML)配对。 随着应用程序和系统的增长,您必须确保它们说的是相同的语言。 由于PMML用于表示数据转换和模型,因此它成为共享从原始数据到预测的完整预测解决方案的渠道。
翻译自: https://www.ibm.com/developerworks/xml/library/ba-ind-PMML2/index.html
pmml
pmml_在PMML中表示预测解决方案相关推荐
- ICDE-2020 论文简析:空间众包中的预测任务分配 : 一种数据驱动的方法 Predictive Task Assignment in Spatial Crowdsourcing
ICDE-2020 论文简析:空间众包中的预测任务分配:一种数据驱动的方法 Predictive Task Assignment in Spatial Crowdsourcing: A Data-dr ...
- 以太坊智能合约中随机数预测
一.前言 作为首次币发行(ICO)的平台,以太坊已经获得了极大的普及. 但是,它不仅仅用于 ERC20 通证,轮盘,彩票和纸牌游戏都可以使用以太坊区块链实现. 与任何区块链实施一样,以太坊是不可逆的, ...
- 在运筹学中什么样的解决方案是最优的
问题: 1.在运筹学中什么样的解决方案是最优的 2.线性代数解决的是什么问题? 3.运筹学与线性代数的关系? 4.如何使用matlab 解决运筹学中的问题? 转载于:https://www.cnblo ...
- angular蚂蚁_Angular 中后台前端解决方案 - Ng Alain 介绍
背景 之前项目使用过vue.js+iview,习惯了后端开发的我,总觉得使用不习惯,之前分析易企秀前端代码,接触到了angular js,完备的相关功能,类似后端开发的体验,让人耳目一新,全新的ang ...
- 数据分享 | LSTM神经网络架构和原理及其在Python中的预测应用(附视频)
本文约2800字,建议阅读10+分钟 本文与你分享如何使用长短期记忆网络(LSTM)来拟合一个不稳定的时间序列. 长短期记忆网络--通常称为"LSTM"--是一种特殊的RNN递归神 ...
- Session机制详解及分布式中Session共享解决方案
Session机制详解及分布式中Session共享解决方案 参考文章: (1)Session机制详解及分布式中Session共享解决方案 (2)https://www.cnblogs.com/jing ...
- Visual Studio中没有为此解决方案配置选中要生成的项目
Visual Studio中没有为此解决方案配置选中要生成的项目 参考文章: (1)Visual Studio中没有为此解决方案配置选中要生成的项目 (2)https://www.cnblogs.co ...
- Angular 中后台前端解决方案 - Ng Alain 介绍
Angular 中后台前端解决方案 - Ng Alain 介绍 参考文章: (1)Angular 中后台前端解决方案 - Ng Alain 介绍 (2)https://www.cnblogs.com/ ...
- 汇编语言 + Visual Studio 2019——Visual Studio 2019 中汇编语言环境解决方案
基本概念 MASM:Microsoft汇编程序(俗称MASM)是一种工业软件开发工具,已经由主要的操作系统供应商维护和更新了30多年.它从未被软化或折衷为对消费者友好的工具,并且被设计为供专业程序员用 ...
最新文章
- Alibaba Cloud Linux 2.1903 LTS 64位服务器yum源下载404,Alibaba Cloud Linux 2实例中使用docker-ce、epel等YUM源安装软件失败
- C++类的案例(一)
- 列注释_简单5步了解相关矩阵的注释热图
- 搜索引擎学习(三)Lucene查询索引
- gradle 打war 包以及合并jar包
- Halcon中visualize_object_model_3d算子详解
- 程序员面试金典 - 面试题 16.22. 兰顿蚂蚁(deque模拟)
- KTHREAD 线程调度 SDT TEB SEH shellcode中DLL模块机制动态获取 《寒江独钓》内核学习笔记(5)...
- QT谷歌拼音输入法的移植
- charles SSL证书安装
- 【学术相关】有什么事情是你读博以后才知道的?
- Java Message Servicec - ActiveMQ
- 算法练习——在有序序列(r1,r2,...,rn)中,存在序号i(1<=i<=n),使得ri=i。请设计一个分治算法找到这个元素。 要求算法在最坏情况下的时间性能为O(logn))
- 基于PyQt5实现的PDF小工具
- 物联12:发卡器和读卡器
- 安卓4.2.2 修改默认语言为中文
- gadget usb 增加端点
- 戴尔官网BIOS转.bin文件教程
- UNIX网络编程.卷1,套接字联网API(第3版)(中文版)(Stevens经典著作,两位顶级网络编程专家应邀执笔修订)...
- 荣之学:跨境电商国内平台有哪些?
热门文章
- B站 | 我擦!不愧是搞技术的,竟然可以用这种骚操作来提升B站等级~
- Java后端实现弹框
- Linux namespace 原理
- 我们还没有进入元宇宙吗?
- 深入理解List的toArray()方法和toArray(T[] a)方法
- 2019年计算机软件水平考试时间已确定(全年)
- 蓝牙耳机哪种款式对耳朵好?公认佩戴舒适度最高蓝牙耳机
- 【设计模式】桥接模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )
- 高防服务器的作用和用途
- Serv-U-8.0 注册码