文章目录
- 1 准确率Mean average precision
- 1.1 定义
- 1.2 计算
- 2 NDCG(Normalized Discounted Cumulative Gain)
- 2.1定义
- 2.2 例子
1 准确率Mean average precision
1.1 定义
Precision at position k (P@k)是一个衡量排名前k位的方法,使用两个级别(相关的和不相关)的相关性判断。公式:
P@k=1k∑j=1krjP@k=\dfrac{1}{k}\sum^{k}_{j=1}r^jP@k=k1∑j=1krj
k是一个截断位置
rj=1r_j=1rj=1,如果第j个位置的文档是相关的。
rj=0r_j=0rj=0,否则。
平均准确率 average precision
AP=1∣D+∣∑j=1NrjP@jAP = \dfrac{1}{|D_+|}\sum^{N}_{j=1}r_j P@jAP=∣D+∣1∑j=1NrjP@j
∣D+∣|D_+|∣D+∣是关于查询的相关文档的数量,也可以认为相当于相当查询的标准答案的相关文档数量。
j是排序后的文档结果。
一般来说会有很多个query参与到训练集中。所以要取平均值: Mean average precision。
这个评价指标是基于二维的:相关、不相关。
1.2 计算
举个例子,现有一个query,与之相关的文档有4——D1,D2,D3,D4,用rank方法检索后,D2,D3,D4的排序分别是1,3,5,D1没有搜索到。也就是说rank后的结果:D2,D5,D3,D6,D4。D5,D6是不相关文档。
那么AP = 14\dfrac{1}{4}41(P@1+P@3+P@5)
P@1=11=1P@1=\dfrac{1}{1}=1P@1=11=1
P@3=23P@3=\dfrac{2}{3}P@3=32,k=3,从1到3,相关文档有2个。
P@5=35P@5=\dfrac{3}{5}P@5=53,k=5,从1到5,相关文档有3个。
那么AP = (1/1 + 2/3 + 3/5)/ 4=0.57
2 NDCG(Normalized Discounted Cumulative Gain)
2.1定义
NDCG(Normalized Discounted Cumulative Gain) 归一化折损累计增益。
NDCG@k=DCG@kIDCG@kNDCG@k=\dfrac{DCG@k}{IDCG@k}NDCG@k=IDCG@kDCG@k
DCG@K=∑j=1kg(rj)d(j)DCG@K=\sum^k_{j=1}g(r_j)d(j)DCG@K=∑j=1kg(rj)d(j), g(rj)=2rj−1g(r_j)=2^{r_j}-1g(rj)=2rj−1,
d(j)=1,2d(j)=1,2d(j)=1,2,j=1,2
d(j)=1log2(j)d(j)=\dfrac{1}{log_2(j)}d(j)=log2(j)1,其他情况
也有一种写法是:DCG@K=∑j=1k2rj−1log2(j+1)DCG@K=\sum^k_{j=1}\dfrac{2^{r_j}-1}{log_2(j+1)}DCG@K=∑j=1klog2(j+1)2rj−1
这个计算公式可以针对多种分类级别。例如rj=3,2,1,0r_j=3,2,1,0rj=3,2,1,0。而且是包含了位置影响因素。相关性高的,排在前面会使得整体NDCG分值变大。
IDCG@k为理想情况下最大的DCG值:
IDCG@k=∑j=1k2ideali−1log2(j+1)IDCG@k=\sum^{k}_{j=1}\dfrac{2^{ideal_i}-1}{log_2(j+1)}IDCG@k=∑j=1klog2(j+1)2ideali−1
2.2 例子
假设对于某一个query,本次搜索召回5个文档,其关联分数分别为 3、2、3、0、1、2。
j | 2rj−12^{r_j}-12rj−1 | log2(j+1)log_2(j+1)log2(j+1) | res |
---|---|---|---|
1 | 3 | 1 | 3 |
2 | 2 | 1.58 | 1.26 |
3 | 3 | 2 | 1.5 |
4 | 0 | 2.32 | 0 |
5 | 1 | 2.58 | 0.38 |
6 | 2 | 2.8 | 0.71 |
所以 DCG = 3+1.26+1.5+0+0.38+0.71 = 6.86
接下来计算IDCG。假设这个query的相关文档有6个,相关性分数为:3、3、3、2、2、1。
j | g(rj)g(r_j)g(rj) | d(j) | res |
---|---|---|---|
1 | 3 | 1 | 3 |
2 | 3 | 1.58 | 1.89 |
3 | 3 | 2 | 1.5 |
4 | 2 | 2.32 | 0.86 |
5 | 2 | 2.58 | 0.77 |
6 | 1 | 2.8 | 0.35 |
所以IDCG = 3+1.89+1.5+0.86+0.77+0.35 = 8.37
最终 NDCG@6 = 6.86/8.37 = 81.96%
参考链接:https://www.cnblogs.com/by-dream/p/9403984.html https://blog.csdn.net/zimohuakai/article/details/6847453
《LETOR: A benchmark collection for research on learning to rank for information retrieval》