如何解读ML.NET多分类任务中模型预测输出的得分数组
ML.NET多分类得分数组解读及置信度获取方法
- ML.NET多分类模型返回的得分数组,长度与你定义的错误类型总数完全一致,数组每个位置的数值对应同索引类别的预测得分,模型最终输出的预测类别,就是得分最高的位置对应的错误类型。
举个例子,如果你预设的错误类型顺序为["runtime", "compile", "dependency"],那么数组下标0对应runtime类得分、下标1对应compile类得分、下标2对应dependency类得分,你提到的Object reference not set to an instance of an object被识别为runtime错误,就说明该样本的得分数组中下标0的数值最高。 - 绝大多数ML.NET内置多分类训练器(比如SdcaMaximumEntropy、OneVersusAll封装训练器)的输出得分,本身就是经过Softmax转换的概率值,范围在0到1之间,所有位置得分总和为1,直接取预测类别对应的得分,就是该结果的置信度。比如上述示例中如果runtime对应的得分为0.91,那么该预测结果的置信度就是91%。
- 如果你使用的是未开启概率输出的自定义训练器,得分为原始决策值,可以手动做Softmax转换得到归一化置信度,转换公式为:
类别i的置信度 =exp(score[i]) / sum(exp(score[j]) for j in 0..类别总数-1)
转换后的数值同样符合0-1区间的概率属性,可直接作为置信度使用。 - 你可以通过训练阶段
MapValueToKey转换输出列的KeyValues属性,拿到类别和数组索引的对应关系,避免索引匹配错误。
内容的提问来源于stack exchange,提问作者rajesh_zero
相关产品推荐
相关产品推荐

