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";
对于多类情况,您可以对每个类独立地使用相同的过程。这样,您将获得每个班级的“是-否-也许”答案。
您将不得不使用这种方法处理多个“是”或其他类型的冲突的可能性,但至少它给出了一个想法。
推荐阅读
- java - 为什么从 Firebase 让 Uid 不起作用?
- swift - 如何更改 CVPixelBuffer 数据格式
- c# - 发布传递空模型值以及如何正确删除或修复它?
- javascript - 由于 angulat6 中的撇号符号而无法显示图像
- java - 如何将android库项目转换为fat jar
- node.js - 使用另一台主机中的副本集连接到 mongodb 集群时出错
- google-maps - 使用电子表格中的 API 密钥进行身份验证
- r - 在 R 中运行样本大小不等的两样本 t.test
- android - Kotlin 不理解 ViewModelProviders.of(activity ?: fragment)
- c# - 无法转换类型 func
布尔