多类多标记分类的精确度/召回率

MaV*_*aVe 28 classification machine-learning multilabel-classification precision-recall

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

pho*_*xis 17

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

  • $ N $ 是例子的数量.
  • $ Y_I $ 是真实的标签分配 $ I ^ {个} $ 例..
  • $ X_I $ 是个 $ I ^ {个} $ 例.
  • $ H(X_I)$ 是预测的标签 $ I ^ {个} $ 例.

基于示例

度量以每数据点方式计算.对于每个预测标签,仅计算其得分,然后将这些得分聚合在所有数据点上.

  • 精度= $\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} |} $ ,预测了多少实际标签的比例.分子找到预测矢量中有多少标签与基本事实相同(如上所述),然后找到与实际标签数量的比率,从而得到实际标签的预测部分.

还有其他指标.

基于标签

这里的事情是按标签进行的.对于每个标签,计算度量(例如,精确度,召回),然后聚合这些标签方式度量.因此,在这种情况下,您最终会计算整个数据集上每个标签的精度/召回率,就像对二进制分类一样(因为每个标签都有二进制赋值),然后聚合它.

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

这只是标准多类等价物的扩展.

  • 宏平均 $ \压裂{1} {Q}\{sum_ J = 1} ^ {Q} B(TP_ {Ĵ},{FP_}Ĵ,TN_ {Ĵ},{FN_}Ĵ)$

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

在这里 $ {TP_}Ĵ,FP_ {}Ĵ,TN_ {}Ĵ,FN_ {Ĵ} $ 是真正的积极的,假阳性的,真正的消极和假阴性计数分别只对于 $ J(1){}第$ 标签.

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

你可能有兴趣去看看到了MULT标签指标的代码在这里,该包的一部分mldr[R .您也可能有兴趣研究Java多标签库MULAN.

这是一篇很好的论文,可以进入不同的指标: 多标签学习算法综述


Mar*_*ase 7

答案是你必须为每个类计算精度和召回率,然后将它们平均在一起.例如,如果您对A,B和C类进行分类,则您的精度为:

(precision(A) + precision(B) + precision(C)) / 3
Run Code Online (Sandbox Code Playgroud)

同样召回.

我不是专家,但这是我根据以下来源确定的:

https://list.scms.waikato.ac.nz/pipermail/wekalist/2011-March/051575.html http://stats.stackexchange.com/questions/21551/how-to-compute-precision-recall-for -multiclass,多标签分类

  • 如果您的数据标签数量不平衡,则此平均值可能无法反映实际性能. (5认同)

小智 5

  • 让我们假设我们有一个带有标签A,B和C的3级多分类问题.
  • 首先要做的是生成一个混淆矩阵.请注意,对角线中的值始终为真阳性(TP).
  • 现在,要计算标签A的召回率,您可以从混淆矩阵读取值并计算:

    = TP_A/(TP_A+FN_A)
    = TP_A/(Total gold labels for A)
    
    Run Code Online (Sandbox Code Playgroud)
  • 现在,让我们计算标签A的精度,您可以从混淆矩阵读取值并计算:

    = TP_A/(TP_A+FP_A)
    = TP_A/(Total predicted as A)
    
    Run Code Online (Sandbox Code Playgroud)
  • 您只需对剩余的标签B和C执行相同的操作.这适用于任何多类别分类问题.

以下是完整的文章,讨论如何计算任何多类分类问题的精度和召回率,包括示例.