我的 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>