ML.NET-多类分类得分值

时间:2018-12-13 02:54:41

标签: ml.net

我目前有一个项目,可以处理大量文本并将其分类为类型。这类似于Microsoft提供的情感示例,但其多类而不是二进制。

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

感谢您的时间,谢谢。

1 个答案:

答案 0 :(得分:1)

分数在很大程度上取决于学习者,唯一的要求是分数是单调的(分数越高表示该示例属于该类别的可能性越高。

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

现在是如何考虑信任的问题。对于二元分类问题,我有一个标准建议:绘制一条精确的召回曲线,然后在得分上选择一个阈值,而不是选择两个阈值:一个给出高精度(可能为低召回率)的正数,以及另一个可能会带来较高的准确度,而召回率却很低的负面结果。

所以:

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

对于多类情况,您可以为每个类分别采用相同的过程。这样,您将获得一个针对每个班级的“可能的”答案。

使用这种方法,您将不得不应对多个“是”或其他类型冲突的可能性,但至少可以提供一个思路。