PMML简介
PMML全称预言模型标记模型(Predictive Model Markup Language),以XML 为载体呈现数据挖掘模型。PMML 允许您在不同的应用程序之间轻松共享预测分析模型。因此,您可以在一个系统中定型一个模型,在 PMML 中对其进行表达,然后将其移动到另一个系统中,而不需考虑分析和预测过程中的具体实现细节。使得模型的部署摆脱了模型开发和产品整合的束缚。
PMML标准
PMML 标准是数据挖掘过程的一个实例化标准,它按照数据挖掘任务执行过程,有序的定义了数据挖掘不同阶段的相关信息:
- 头信息(Header)
- 数据字典(DataDictionary)
- 挖掘模式(Mining Schema)
- 数据转换(Transformations)
- 模型定义 (Model Definition)
- 评分结果 (Score Result)
头信息(Header)
PMML文件使用头信息作为开始,它主要用于记录产品、版权、模型描述,建模时间等描述性信息。例如:
<Header copyright="Copyright (c) 2017 liaotuo" description="Random Forest Tree Model">
<Extension name="user" value="liaotuo" extender="Rattle/PMML"/>
<Application name="Rattle/PMML" version="1.4"/>
<Timestamp>2017-07-04 16:33:42</Timestamp>
</Header>
其中:
- Header 是标识头信息部分的起始标记
- copyright 包含了所记录模型的版权信息
- description 包含可读的描述性信息
- Application 描述了生成本文件所含模型的软件产品。
- Timestamp 记录了模型创建的时间。
数据字典(DataDictionary)
数据字典定义了所有变量的信息,包括预测变量和目标变量。这些信息包括变量名,量度和类型等。 对于分类变量,可能包含各种不同类型的分类值, 包括有效值 (valid value),遗漏值 (missing value) 和无效值 (invalid value), 它们由 Value 的“property”属性决定;对于连续变量,可以指定一个或多个有效值范围 (Interval)。
<DataDictionary numberOfFields="7">
<DataField dataType="double" displayName="Age" name="Age" optype="continuous"/>
<Interval leftMargin="0" rightMargin="120" closure="closedClosed" />
<DataField dataType="string" displayName="Sex" name="Sex" optype="categorical">
<Value displayValue="F" property="valid" value="F"/>
<Value displayValue="M" property="valid" value="M"/>
</DataField>
<DataField dataType="string" displayName="BP" name="BP" optype="categorical">
<Value displayValue="HIGH" property="valid" value="HIGH"/>
<Value displayValue="LOW" property="valid" value="LOW"/>
<Value displayValue="NORMAL" property="valid" value="NORMAL"/>
<Value displayValue="ABNORMAL" property="invalid" value="ABNORMAL"/>
<Value displayValue="MISSING" property="missing" value="MISSING"/>
</DataField>
<DataField dataType="string" displayName="Cholesterol" name="Cholesterol"
optype="categorical">
<Value displayValue="HIGH" property="valid" value="HIGH"/>
<Value displayValue="NORMAL" property="valid" value="NORMAL"/>
</DataField>
<DataField dataType="double" displayName="Na" name="Na" optype="continuous"/>
<DataField dataType="double"