machine-learning - 多类多标签分类的精度/召回率

标签 machine-learning classification multilabel-classification precision-recall

我想知道如何计算多类多标签分类的精度和召回率测量,即有两个以上标签的分类,以及每个实例可以有多个标签的分类?

最佳答案

对于多标签分类,您有两种方法可以选择 首先考虑以下几点。

  • $n$是示例的数量。
  • $Y_i$$i^{th}$ 的真实标签分配例子..
  • $x_i$$i^{th}$示例。
  • $h(x_i)$$i^{th}$ 的预测标签示例。

基于示例

指标以每个数据点的方式计算。对于每个预测标签,仅计算其分数,然后将这些分数聚合到所有数据点。

  • 精度 = $\frac{1}{n}\sum_{i=1}^{n}\frac{|Y_{i}\cap h(x_{i})|}{|h(x_{i})|}$ ,预测正确的比例有多少。分子找出预测向量中有多少标签与地面实况相同,并且比率计算有多少预测的真实标签实际上在地面实况中。
  • 召回 = $\frac{1}{n}\sum_{i=1}^{n}\frac{|Y_{i}\cap h(x_{i})|}{|Y_{i}|}$ ,预测实际标签数量的比率。分子找出预测向量中有多少标签与真实标签有共同点(如上所述),然后找到与实际标签数量的比率,从而得出预测的实际标签的比例。

还有其他指标。

基于标签

这里的事情是按标签完成的。对于每个标签,计算指标(例如精度、召回率),然后聚合这些标签指标。因此,在这种情况下,您最终会计算整个数据集上每个标签的精度/召回率,就像二元分类一样(因为每个标签都有一个二元分配),然后对其进行聚合。

简单的方法是呈现一般形式。

这只是标准多类等效项的扩展。

  • 宏观平均$\frac{1}{q}\sum_{j=1}^{q}B(TP_{j},FP_{j},TN_{j},FN_{j})$

  • 微平均$B(\sum_{j=1}^{q}TP_{j},\sum_{j=1}^{q}FP_{j},\sum_{j=1}^{q}TN_{j},\sum_{j=1}^{q}FN_{j})$

这里是$TP_{j},FP_{j},TN_{j},FN_{j}$分别是 $j^{th}$ 的真阳性、假阳性、真阴性和假阴性计数标签

这里 $B$ 代表任何基于混淆矩阵的指标。在您的情况下,您将插入标准精度和召回公式。对于宏观平均,您传入每个标签计数,然后求和,对于微观平均,您首先对计数进行平均,然后应用度量函数。

您可能有兴趣查看多标签指标的代码 here ,这是包的一部分 mldrR 。此外,您可能有兴趣查看 Java 多标签库 MULAN .

这是一篇很好的论文,可以了解不同的指标:A Review on Multi-Label Learning Algorithms

关于machine-learning - 多类多标签分类的精度/召回率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9004172/

相关文章:

java - Deeplearning4j 触发管道 : Convert a String type to org. apache.spark.mllib.linalg.VectorUDT

machine-learning - NaiveBayes 分类器 : Do I have to concatenate all files of one class?

machine-learning - SVM 的替代方案

machine-learning - 神经网络的激活函数

python - 使用 sklearn 接口(interface)包裹模型

machine-learning - 在命令行上学习 Weka

machine-learning - 什么是距离敏感数据,它与其他数据有何不同?任何例子都会有帮助

r - R 中的多标签分类

keras - Keras中具有类权重的多标签分类

python - 如何使用 sklearn 的 SGDClassifier 获得前 N 个预测