极限多标签分类-评价指标
References:
http://manikvarma.org/downloads/XC/XMLRepository.html
https://blog.csdn.net/minfanphd/article/details/126737848?spm=1001.2014.3001.5502
https://en.wikipedia.org/wiki/Discounted_cumulative_gain
什么是极限多标签分类 (eXtreme multi-label Classification (XC))?
标签数非常多(Million),典型的就是BoW数据标签。
极限多标签分类的典型应用:Image Caption(头大)。不过在Image Caption里面,Word之间存在序关系。XC可以看成是Image Caption的一个关键阶段,它能够选出与当前Image最相关的BoW。
(上述都是靠过往经验吹的,近期没调研)。
先来看一下评价指标:
由于标签数非常多,且GroundTruth又非常小,因此通常意义上的分类精度、召回(多标签分类用macro或者micro的acc或者recall)等指标不work。
这些评价指标通常考虑了head/tail labels,也就是高频标签和低频标签;以及reciprocal pairs(互惠对)去除?
互惠对似乎?是指彼此相关的标签对,比如针对一个数据点,如果预测了标签A,如果标签B和A相关,那可以自然预测B。
为了避免这种trival prediction, reciprocal pairs应该被去除。
(1) Top-
k
k
k Performance:
(Precision@
k
)
P
@
k
:
=
1
k
∑
l
∈
rank
k
(
y
^
)
y
l
\text{(Precision@$k$)}\text{P}@k := \frac{1}{k}\sum_{l \in \text{rank}_k (\hat{\mathbf{y}})} \mathbf{y}_l
(Precision@k)P@k:=k1l∈rankk(y^)∑yl
(Discounted Cumulative Gain (贴现累积收益))DCG
@
k
:
=
∑
l
∈
rank
k
(
y
^
)
y
l
log
(
l
+
1
)
\text{(Discounted Cumulative Gain (贴现累积收益))} \text{DCG}@k := \sum_{l \in \text{rank}_k(\hat{\mathbf{y}})} \frac{\mathbf{y}_l}{\log(l+1)}
(Discounted Cumulative Gain (贴现累积收益))DCG@k:=l∈rankk(y^)∑log(l+1)yl
(Normalized DCG)nDCG
@
k
:
=
DCG@
k
∑
l
=
1
min
(
k
,
∣
∣
y
∣
∣
0
)
1
log
(
l
+
1
)
\text{(Normalized DCG)} \text{nDCG}@k := \frac{\text{DCG@$k$}}{\sum_{l=1}^{\min(k,||\mathbf{y}||_0)} \frac{1}{\log(l+1)}}
(Normalized DCG)nDCG@k:=∑l=1min(k,∣∣y∣∣0)log(l+1)1DCG@k
rank
k
(
y
)
\text{rank}_k(\mathbf{y})
rankk(y)为逆序排列
y
\mathbf{y}
y的前k个下标。Note: DCG公式里的分母实际上不是l,而是from 1 to k.
靠后的标签按照对数比例地减小,说白了就是加权。至于为什么用log?两个事实:1. 平滑缩减; 2. Wang等人提供了理论支撑说明了log缩减方式的合理性。The authors show that for every pair of substantially different ranking functions, the nDCG can decide which one is better in a consistent manner. (看不懂,暂时不管)
(2) Top- k k k Propensity-score:
有些数据集包含一些频度很高的标签(通常称之为head labels),可以通过简单地重复预测头部标签来实现高的
P
@
k
\text{P}@k
P@k。Propensity-score可以检查这种微不足道的行为。
(
Propensity-score Precision
)
PSP
@
k
:
=
1
k
∑
l
∈
rank
k
(
y
^
)
y
l
p
l
(\text{Propensity-score Precision}) \text{ PSP}@k := \frac{1}{k} \sum_{l\in \text{rank}_k(\hat{\mathbf{y}})} \frac{\mathbf{y}_l}{p_l}
(Propensity-score Precision) PSP@k:=k1l∈rankk(y^)∑plyl
PSDCG
@
k
:
=
∑
l
∈
rank
k
(
y
^
)
y
l
p
l
log
(
l
+
1
)
\text{PSDCG}@k := \sum_{l \in \text{rank}_k(\hat{\mathbf{y}})} \frac{\mathbf{y}_l}{p_l\log(l+1)}
PSDCG@k:=l∈rankk(y^)∑pllog(l+1)yl
PSnDCG
@
k
:
=
PSDCG@
k
∑
l
=
1
k
1
log
(
l
+
1
)
\text{PSnDCG}@k := \frac{\text{PSDCG@$k$}}{\sum_{l=1}^{k} \frac{1}{\log(l+1)}}
PSnDCG@k:=∑l=1klog(l+1)1PSDCG@k
其中
p
l
p_l
pl为标签
l
l
l的propensity-score,使得这种度量在missing label方面无偏差(unbiased)。
Propensity-score强调在tail labels上的表现,而对预测head labels提供微弱的奖励。