multi-label learning/classification评价指标

可以分成两类:

  • example-based metrics:对每个 sample 分别测试性能,然后取平均
  • label-based metrics:对每个 class label 测试性能,然后取 macro/micro 平均

这里只列举几个,其余见 [1]。

Notations

h ( ⋅ ) h(\cdot) h():一个 multi-label 分类器(hypothesis)
f ( x , y ) f(x,y) f(x,y):返回样本 x 属于类比 y 的预测概率(confidence)
r a n k f ( x , y ) rank_f(x,y) rankf(x,y):类别 y 是第几位最有可能是 x 所属类别(根据 f ( x , y ) f(x,y) f(x,y) 降序定的排位)
m m m:test set 大小
c c c:class 个数,即 label 空间大小
Y Y Y:样本 x x x 对应的 label 集,可以理解成它的 label 向量
[ ⋅ ] [\cdot] []:真 1 假 0

Example-based

Subset Accuracy

s u b s e t a c c ( h ) = 1 m ∑ i = 1 m [ h ( x i ) = Y i ] subsetacc(h)=\frac{1}{m}\sum^m_{i=1}\left[h(x_i)=Y_i\right] subsetacc(h)=m1i=1m[h(xi)=Yi]
直接从 single label 的 accuracy 推广得到,要所有 labels 都预测对才算对,粒度略粗?。
度量分类完全正确的 sample 比例,值越大越好。

  • 调包:sklearn.metrics.accuracy_score(y_true, y_pred),可以是 multi-hot 式的 indicator 向量表示,也可以是整数序列(对于 single label,一个整数表示一个 sample 的 class id)。

Hamming Loss

h l o s s ( h ) = 1 m ∑ i = 1 m 1 c ∣ h ( x i ) Δ Y i ∣ hloss(h)=\frac{1}{m} \sum_{i=1}^{m} \frac{1}{c}\left|h\left(x_{i}\right) \Delta Y_{i}\right| hloss(h)=m1i=1mc1h(xi)ΔYi
此处 Δ \Delta Δ 表示一种对称的差异度量,例如作差。粒度细了一点。值越小越好。

One Error

o n e − e r r o r ( f ) = 1 m ∑ i = 1 m ( ( arg ⁡ max ⁡ y ∈ Y f ( x i , y ) ) ∉ Y i ) one-error(f)=\frac{1}{m} \sum_{i=1}^{m}\left(\left(\arg \max _{y \in \mathcal{Y}} f\left(x_{i}, y\right)\right) \notin Y_{i}\right) oneerror(f)=m1i=1m((argyYmaxf(xi,y))/Yi)
统计那些排名最高(预测概率最大)的 label 却不在 ground-truth label 集里的 sample 比例。

Precision, Recall, F

P ( h ) = 1 m ∑ i = 1 m ∣ Y i ∩ h ( x i ) ∣ ∣ h ( x i ) ∣ P(h)=\frac{1}{m} \sum_{i=1}^{m} \frac{\left|Y_{i} \cap h\left(x_{i}\right)\right|}{\left|h\left(x_{i}\right)\right|} P(h)=m1i=1mh(xi)Yih(xi)
度量预测的 label 中有几个是对的,查准率。
R ( h ) = 1 m ∑ i = 1 m ∣ Y i ∩ h ( x i ) ∣ ∣ Y i ∣ R(h)=\frac{1}{m} \sum_{i=1}^{m} \frac{\left|Y_{i} \cap h\left(\boldsymbol{x}_{i}\right)\right|}{\left|Y_{i}\right|} R(h)=m1i=1mYiYih(xi)
预测对的 label 占总 ground-truth label 的几成,查全率。
F β ( h ) = ( 1 + β 2 ) ⋅ P ( h ) ⋅ R ( h ) β 2 ⋅ P ( h ) + R ( h ) F^{\beta}(h)=\frac{(1+\beta^2)\cdot P(h)\cdot R(h)}{\beta^2\cdot P(h)+R(h)} Fβ(h)=β2P(h)+R(h)(1+β2)P(h)R(h)
precision 和 recall 的综合,常用 β = 1 \beta=1 β=1,即 F1。

Coverage

c o v e r a g e ( f ) = 1 m ∑ i = 1 m max ⁡ y ∈ Y i rank ⁡ f ( x i , y ) − 1 coverage(f)=\frac{1}{m} \sum_{i=1}^{m} \max _{y \in Y_{i}} \operatorname{rank}_{f}\left(x_{i}, y\right)-1 coverage(f)=m1i=1myYimaxrankf(xi,y)1
按照 rank,想覆盖所有 relevant labels 至少需要多少长度。原文说从第一位开始至少要多少 steps,所要有 -1,差不多意思。

  • 调包:sklearn.metrics.coverage_error(y_true, y_score),其中 y_score 是对每个 label 预测的 confidence,一般就是分类函数的输出。

Ranking Loss

r l o s s ( f ) = 1 m ∑ i = 1 m 1 ∣ Y i ∣ ∣ Y ˉ i ∣ ∣ { ( y ′ , y ′ ′ ) ∣ f ( x i , y ′ ) ≤ f ( x i , y ′ ′ ) , ( y ′ , y ′ ′ ) ∈ Y i × Y ˉ i ) } ∣ rloss(f)= \frac{1}{m} \sum_{i=1}^m \frac{1}{\left|Y_{i}\right|\left|\bar{Y}_{i}\right|} \left| \left\{\left(y^{\prime}, y^{\prime \prime}\right) | f\left(x_{i}, y^{\prime}\right)\right.\right. \left.\left.\leq f\left(x_{i}, y^{\prime \prime}\right),\left(y^{\prime}, y^{\prime \prime}\right) \in Y_{i} \times \bar{Y}_{i}\right)\right\}| rloss(f)=m1i=1mYiYˉi1{(y,y)f(xi,y)f(xi,y),(y,y)Yi×Yˉi)}
统计逆序对:错的 y ′ ′ y^{\prime\prime} y 的 rank 排在对的 y ′ y^{\prime} y 前面。

Average Precision

a v g p r e c ( f ) = 1 m ∑ i = 1 m 1 ∣ Y i ∣ ∑ y ∈ Y i ∣ { y ′ ∣ r a n k f ( x i , y ′ ) ≤ r a n k f ( x i , y ) , y ′ ∈ Y i } ∣ r a n k f ( x i , y ) avgprec(f)=\frac{1}{m}\sum^m_{i=1}\frac{1}{|Y_i|}\sum_{y\in Y_i}\frac{|\{y^{\prime}|rank_f(x_i,y^{\prime})\leq rank_f(x_i,y),y^{\prime}\in Y_i\}|}{rank_f(x_i,y)} avgprec(f)=m1i=1mYi1yYirankf(xi,y){yrankf(xi,y)rankf(xi,y),yYi}
mAP 里的 AP 部分(检索的 mAP 和这个基于排序的分类 mAP 思路一致,只是前者基于距离排,后者基于 confidence 排)。

(sklearn 里有另一个 AP 算法:sklearn.metrics.average_precision_score,计算方法有点不同:各位置 precision 的权重不同。上面那个相当于各个位置的 precision 同权重平均,而这个的权重是对应位置的 recall 值)

Label-based

TP, FP, TN, FN

对于第 j 个 label:
T P j = ∣ { x i ∣ y j ∈ Y i ∧ y j ∈ h ( x i ) , 1 ≤ i ≤ m } ∣ T P_{j}=\left|\left\{x_{i} | y_{j} \in Y_{i} \wedge y_{j} \in h\left(x_{i}\right), 1 \leq i \leq m\right\}\right| TPj={xiyjYiyjh(xi),1im}
true positive,真 label 且被预测为真的数量。
F P j = ∣ { x i ∣ y j ∉ Y i ∧ y j ∈ h ( x i ) , 1 ≤ i ≤ m } ∣ F P_{j}=\left|\left\{x_{i} | y_{j} \notin Y_{i} \wedge y_{j} \in h\left(x_{i}\right), 1 \leq i \leq m\right\}\right| FPj={xiyj/Yiyjh(xi),1im}
false positive,假 label 被预测为真。
T N j = ∣ { x i ∣ y j ∉ Y i ∧ y j ∉ h ( x i ) , 1 ≤ i ≤ m } ∣ T N_{j}=\left|\left\{x_{i} | y_{j} \notin Y_{i} \wedge y_{j} \notin h\left(x_{i}\right), 1 \leq i \leq m\right\}\right| TNj={xiyj/Yiyj/h(xi),1im}
true negative,假 label 被预测为假。
F N j = ∣ { x i ∣ y j ∈ Y i ∧ y j ∉ h ( x i ) , 1 ≤ i ≤ m } ∣ F N_{j}=\left|\left\{x_{i} | y_{j} \in Y_{i} \wedge y_{j} \notin h\left(x_{i}\right), 1 \leq i \leq m\right\}\right| FNj={xiyjYiyj/h(xi),1im}
false negative,真 label 被预测为假。

macro/micro averaging

对某种 metric B(acc、precision、recall、F):
B m a c r o ( h ) = 1 c ∑ j = 1 c B ( T P j , F P j , T N j , F N j ) B_{macro}(h)=\frac{1}{c} \sum_{j=1}^{c} B\left(T P_{j}, F P_{j}, T N_{j}, F N_{j}\right) Bmacro(h)=c1j=1cB(TPj,FPj,TNj,FNj)
B m i c r o ( h ) = B ( ∑ j = 1 c T P j , ∑ j = 1 c F P j , ∑ j = 1 c T N j , ∑ j = 1 c F N j ) B_{micro}(h)=B\left(\sum_{j=1}^{c} TP_{j}, \sum_{j=1}^{c} FP_{j}, \sum_{j=1}^{c} TN_{j}, \sum_{j=1}^{c} FN_{j}\right) Bmicro(h)=B(j=1cTPj,j=1cFPj,j=1cTNj,j=1cFNj)

Accuracy

 Accuracy  ( T P j , F P j , T N j , F N j ) = T P j + T N j T P j + F P j + T N j + F N j \text { Accuracy }\left(T P_{j}, F P_{j}, T N_{j}, F N_{j}\right)=\frac{T P_{j}+T N_{j}}{T P_{j}+F P_{j}+T N_{j}+F N_{j}}  Accuracy (TPj,FPj,TNj,FNj)=TPj+FPj+TNj+FNjTPj+TNj

Precision

Precision ( T P j , F P j , T N j , F N j ) = T P j T P j + F P j \text {Precision}\left(T P_{j}, F P_{j}, T N_{j}, F N_{j}\right)=\frac{T P_{j}}{T P_{j}+F P_{j}} Precision(TPj,FPj,TNj,FNj)=TPj+FPjTPj

Recall

Recall ⁡ ( T P j , F P j , T N j , F N j ) = T P j T P j + F N j \operatorname{Recall}\left(T P_{j}, F P_{j}, T N_{j}, F N_{j}\right)=\frac{T P_{j}}{T P_{j}+F N_{j}} Recall(TPj,FPj,TNj,FNj)=TPj+FNjTPj

F

label-based 的 F:
F β ( T P j , F P j , T N j , F N j ) = ( 1 + β 2 ) ⋅ T P j ( 1 + β 2 ) ⋅ T P j + β 2 ⋅ F N j + F P j F^{\beta}\left(T P_{j}, F P_{j}, T N_{j}, F N_{j}\right)=\frac{\left(1+\beta^{2}\right) \cdot T P_{j}}{\left(1+\beta^{2}\right) \cdot T P_{j}+\beta^{2} \cdot F N_{j}+F P_{j}} Fβ(TPj,FPj,TNj,FNj)=(1+β2)TPj+β2FNj+FPj(1+β2)TPj

References

  1. A Review on Multi-Label Learning Algorithms
  2. Collaboration based Multi-Label Learning
  3. Cmd Markdown 公式指导手册
  4. AveragePrecisionMeter | ML-GCN/util.py
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值