WAP(@R)指标

Notes

检索中常用几种评价指标:

WAP(Weighted mean Average Precision)在 [2] 提出,是 mAP 的扩展,支持多值相似度(multi-level similarity),基于 ACG。对于一个长为 n 的检索序列 V,有: W A P ( q , V ) = 1 ∑ p = 1 n s ( q , V p ) ∑ i = 1 n A C G @ i ( q , V ) ⋅ 1 ( s ( q , V i ) > 0 ) WAP(q, V)=\frac{1}{\sum_{p=1}^ns(q,V_p)}\sum_{i=1}^nACG@i(q,V)\cdot1(s(q,V_i)>0) WAP(q,V)=p=1ns(q,Vp)1i=1nACG@i(q,V)1(s(q,Vi)>0) 其中 s ( x , y ) = { 1 , x 与 y 相 似 0 , x 与 y 不 相 似 s(x,y)=\begin{cases}1, & x 与 y 相似 \\ 0, & x与y不相似\end{cases} s(x,y)={1,0,xyxy 即传统 mAP 中用的二值相似度(binary similarity)。算 WAP@k 时,分母可能有两种取法:

  • 前 k 个样本中相似样本数
  • 所有样本中相似样本数

见 [3] 中 About the Denominator 一节。此处暂时(2020.10.30)采用与 [3] 一样的策略,即只算前 k 个,则 W A P @ k ( q , V ) = 1 ∑ p = 1 k s ( q , V p ) ∑ i = 1 k A C G @ i ( q , V ) ⋅ 1 ( s ( q , V i ) > 0 ) WAP@k(q, V)=\frac{1}{\sum_{p=1}^ks(q,V_p)}\sum_{i=1}^kACG@i(q,V)\cdot1(s(q,V_i)>0) WAP@k(q,V)=p=1ks(q,Vp)1i=1kACG@i(q,V)1(s(q,Vi)>0)

Code

# import numpy as np

def WAP(Dist, Rel, k=-1):
    """Weighted mean Average Precision"""
    n, m = Dist.shape
    if (k < 0) or (k > m):
        k = m
    Gain = Rel
    S = (Gain > 0).astype(np.int)
    pos = np.arange(k) + 1
    Rank = np.argsort(Dist)

    _WAP = 0.0
    for s, g, rnk in zip(S, Gain, Rank):
        # n_rel = s.sum()  # 算所有 m 个
        _rnk = rnk[:k]
        s, g = s[_rnk], g[_rnk]
        n_rel = s.sum()  # 只算前 k 个
        if n_rel > 0:
            acg = np.cumsum(g) / pos
            _WAP += (acg * s).sum() / n_rel

    return _WAP / n

References

  1. ACG(@R)指标
  2. Deep Semantic Ranking Based Hashing for Multi-Label Image Retrieval
  3. mAP(@R)计算代码
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值