出力フィールドとして公開したい 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_builtは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>