PMML随机森林模型可获取分类概率但无法输出置信度得分问题
核心原因
你的随机森林PMML使用的集成策略默认不支持全局置信度聚合:
- 当前
<Segmentation>标签配置的multipleModelMethod="majorityVote"(多数投票)属于分类结果导向的集成逻辑,PMML 4.3规范中该模式默认仅会对所有子树的probability属性做全局聚合计算,不会自动汇总单棵决策树节点的confidence属性,因此全局Output层直接声明feature="confidence"的输出字段时,引擎无法找到对应计算源,导致无输出。
解决方法
你可以二选一调整配置:
- 调整集成策略
把<Segmentation>的multipleModelMethod属性值改为weightedMajorityVote或者probability,这两种集成模式默认支持confidence特征的全局聚合计算,调整后你现有Output层的置信度输出配置即可正常生效。 - 保留多数投票策略,手动聚合置信度
如果必须使用majorityVote策略,你需要先给每个<Segment>内的<TreeModel>单独添加Output配置,输出对应类别的confidence值,再在全局Output层使用aggregate函数对所有子树的confidence值做平均/求和计算,示例配置如下:
<!-- 单棵TreeModel内部添加Output --> <TreeModel functionName="classification" algorithmName="mtree" missingValueStrategy="lastPrediction" modelName="train"> <Output> <OutputField name="tree_confidence0" feature="confidence" value="0"/> <OutputField name="tree_confidence1" feature="confidence" value="1"/> </Output> <!-- 原有树结构 --> </TreeModel> <!-- 全局Output层聚合 --> <p:Output xmlns:p="http://www.dmg.org/PMML-4_3"> <p:OutputField name="probability1" optype="continuous" datatype="double" feature="probability" value="1"/> <p:OutputField name="probability0" optype="continuous" datatype="double" feature="probability" value="0"/> <p:OutputField name="confidence0" optype="continuous" datatype="double" aggregate="average" field="tree_confidence0"/> <p:OutputField name="confidence1" optype="continuous" datatype="double" aggregate="average" field="tree_confidence1"/> </p:Output>
补充说明
如果调整配置后仍无输出,可以确认你使用的PMML解析引擎是否支持confidence特征的解析,部分轻量PMML运行库仅实现了概率输出能力,未兼容置信度特征的计算逻辑。
内容的提问来源于stack exchange,提问作者kevin5jan
相关产品推荐
相关产品推荐

