我的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>
答案 0 :(得分:0)
MiningSchema
element声明必须“导入”哪个字段值才能对模型元素进行评分。此外,如果模型元素表示监督学习模型,它可以声明唯一目标字段的名称:
target
:用于监督模型的训练目标的字段。
Augustus似乎假设MiningSchema
元素还必须声明哪些字段值是“导出的”。但是,PMML规范不以任何方式支持此假设。 OutputField
元素是一个独立的实体,其存在不需要被任何其他元素“确认”。
因此,您应该考虑使用JPMML导出模型。如果你还需要在Augustus上对它们进行评分,那么你可以考虑使用JPMML的访问者API暂时重新排列它们。