1

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

1 回答 1

0

MiningSchema元素声明必须“导入”哪些字段值才能对模型元素进行评分。此外,如果模型元素表示监督学习模型,它可以声明唯一目标字段的名称:

target:用于监督模型的训练目标的字段。

Augustus 似乎假设MiningSchema元素还必须声明“导出”哪些字段值。但是,PMML 规范不以任何方式支持此假设。该OutputField元素是一个独立的实体,它的存在不需要任何其他元素“确认”。

因此,您应该牢记 JPMML 导出模型。如果您还需要让它们在 Augustus 上可评分,那么您可以考虑使用 JPMML 的访问者 API 临时重新排列它们。

于 2015-12-23T14:01:27.667 回答