algorithm - 如何计算多标签分配的分类任务的成功率

标签 algorithm statistics reporting machine-learning classification

在我的问题中可以观察到 N 个不同的类,我的任务是检测哪些类发生在时间 t(T 帧)。我创建了大小为 NxT 的 actualLabelspredictedLabels 二进制矩阵。我观察了数据并手动填充了 actualLabelsactualLabels(n,t) 如果时间 t 的实例涉及第 n 个类,则为 1,否则为 0。这是我的基本事实数据。然后,我对数据运行我的算法并预测观察到的类别。标签会自动找到并存储在 predictedLabels 中。

我的问题是如何使用这些矩阵计算成功值?有没有流行的方法来做到这一点?

示例:假设有 4 个类并且 T=5。让数据成为

actualLabels    = 0 0 0 0 1
                  1 1 0 1 0
                  0 1 0 0 1
                  0 0 0 0 1

predictedLabels = 0 0 0 0 1
                  0 0 1 1 0
                  0 1 0 0 0
                  0 1 0 0 0

似乎不可能从多类分配中计算出传统的混淆矩阵。相反,我计算了每对的距离。因为我有二进制向量要比较,汉明距离似乎很好(类似于编辑距离)。现在的问题是我可以报告预测标签向量和实际标签向量之间的距离,但不能报告成功百分比。

混淆矩阵传达了大量信息。我希望看到一个类似的表格,它可以帮助我了解哪里出现了很多错误、整体成功等等。

详细信息:我有一些 wav 数据,我想进行复音音高跟踪。在每个时间段,可以有任意数量的音符一起演奏,形成我想要预测的标签。

注:some metrics用于维基百科中的多标签分类。我很乐意学习任何其他指标或图表。

最佳答案

要衡量成功,您需要对其进行定义。选择您愿意接受的误差容限(可能为零),并计算有多少预测(具有汉明距离)低于它以获得您的百分比。

如果您的训练矩阵是稀疏的(大部分为零),这可能是一种误导性度量,因为始终预测零矩阵的模型会表现良好。在这里你可能想看看precision and recall .这些形成了一种自然的权衡,因此通常不可能同时最大化两者。要将它们组合成一个指标,请考虑 f-score .同样,如果您的训练数据稀疏,那么简单的准确率可能是最好的。

最后,如果您要测量准确度以便从多个可能的模型中进行选择(称为验证),那么请注意不要在此步骤中重复使用您的训练数据。相反,将您的数据划分为训练数据和 cross-validation data .问题是您的模型已经偏向于训练它们的数据;仅仅因为他们在那个上做得很好并不意味着他们会推广到他们在实际应用程序中可能看到的内容。有关详细信息,请参阅交叉验证 wiki 条目。

关于algorithm - 如何计算多标签分配的分类任务的成功率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8840579/

相关文章:

java - 我的快速排序算法中的 Stackoverflow 错误

python - 在 numpy 数组上应用统计方法 : unexpected results

c# - Azure Web 作业中的 LocalReport 呈现

algorithm - 什么是好的 UDP 超时和重试值?

algorithm - 从 "int"映射到相应的排列值?

r - 在 R 中的 for 循环中绘图

python - 以 CSR/COO 格式为存储在 Pandas DataFrame 中的分类数据的巨大特征向量创建稀疏矩阵

reporting-services - 如何设计好看的报表?

mysql - MySQL中如何计算解析时间?

mysql - 两个整数mysql的汉明距离