首页 > 解决方案 > ML.NET - 多类分类得分值

问题描述

我目前有一个项目来获取大量文本并将它们分类为类型。这类似于微软提供的情感样本,除了它是多类而不是二进制。

我的代码工作得很好,随着我们向其中添加数据,它可能会变得更强大。但是,我遇到了一个障碍,我无法确定预测是否直接不知道该选择什么。对于我的项目,不知道答案比弄错更有价值。我不确定这是否是 ML.net 中的一件事。我正在查看文档,我唯一能找到的是预测产生的分值。其中的问题在于我不知道任何分数值的含义。我知道它们是按班级划分的,但是算法之间的数值不同。有人对这些价值观有任何见解吗?或者如果对“不知道”与“猜测”问题有任何建议?

感谢您的时间,谢谢。

标签: ml.net

解决方案


分数很大程度上是特定于学习者的,唯一的要求是它们是单调的(分数越高意味着示例属于该类的可能性越高)。

但在 ML.NET 多类学习者中,它们始终介于 0 和 1 之间,总和为 1。您可以将分数视为“属于该类的预测概率”。

现在到了如何考虑信心的问题。对于二元分类问题,我会有一个标准建议:绘制一条精确召回曲线,然后选择两个阈值,而不是在分数上选择一个阈值:一个给出高精度(可能是低召回)正值的阈值,以及另一个给出高精度可能低召回率的)否定。

所以:

if (score > threshold1)
    return "positive";
else if (score < threshold2)
    return "negative";
else
    return "don't know";

对于多类情况,您可以对每个类独立地使用相同的过程。这样,您将获得每个班级的“是-否-也许”答案。

您将不得不使用这种方法处理多个“是”或其他类型的冲突的可能性,但至少它给出了一个想法。


推荐阅读