【发布时间】:2015-12-24 19:35:14
【问题描述】:
我的 PMML 模型中有一些派生字段,我想将其公开为输出字段。并且....我可以让它在 Augustus 和 JPMML 中工作(通过 OpenScoring),但我似乎必须做些不同的事情。我想知道是否有人对他们中的哪个正确有任何看法? PMML 规范似乎并没有 100% 明确这一点。
对于 JPMML,我可以通过引用我想要的派生字段来做到这一点,并且我必须避免将它们作为“预测”包含在 MiningSchema 中。
<MiningSchema>
<MiningField name="foo_input" usageType="active"/>
</MiningSchema>
<Output>
<OutputField name="foo_output" dataType="integer" feature="transformedValue" optype="continuous">
<FieldRef field="foo_derived"/>
</OutputField>
</Output>
但这不适用于奥古斯都。为此,我需要将这些输出声明为 MiningSchema 中的“预测”字段。
<MiningSchema>
<MiningField name="foo_input" usageType="active"/>
<MiningField name="foo_output" usageType="predicted"/>
</MiningSchema>
<Output>
<OutputField name="foo_output" dataType="integer" feature="transformedValue" optype="continuous">
<FieldRef field="foo_derived"/>
</OutputField>
</Output>
所以我必须根据我期望的目标评分环境生成不同的 PMML……这听起来不太好。但是哪一个做得对呢?或者有没有其他更便携的表达方式?
在上述所有片段中,foo_derived 只是基于 foo_input 输入值的派生字段。无论是局部转换还是全局转换,似乎都没有任何区别。
<DerivedField name="foo_derived" dataType="integer" optype="continuous">
<Apply function="+"> <!-- example definition, actual one is a bit more complicated -->
<FieldRef field="foo_input"/>
<Constant dataType="integer">1</Constant>
</Apply>
</DerivedField>
【问题讨论】:
标签: pmml