一、RP

R(recall)表示召回率、查全率,指查询返回结果中相关文档占所有相关文档的比例;P(precision)表示准确率、精度,指查询返回结果中相关文档占所有查询结果文档的比例;

则 PR 曲线呈现出负相关的下降趋势;
一般来说,recall
和 precision
反映了模型性能的两个方面,单一依靠某个指标并不能较为全面的评价一个模型的性能。
此时引入 F-Score/F-measure 作为综合指标,平衡
recall 和 precision 的影响,较为全面的评价一个模型。
其中,F1-Score 表示准确率和召回率一样重要;F2-Score
表示召回率比准确率重要一倍;F0.5-Score 表示准确率比召回率重要一倍。

二、MAP

对 PR 曲线进行积分求曲线下方的面积,就是 AP(Average
Precision),即
其中,p 表示 precision,r 表示 recall,p 是一个以 r 为参数的函数,AP
的计算是对排序位置敏感的,相关文档排序的位置越靠前,检索出相关的文档越多,AP 值越大。
近似计算约等于 AAP(Aproximate Average Precision):

其中,N 代表所有相关文档的总数,p(k) 表示能检索出 k 个相关文档时的 precision 值,而
△r(k) 则表示检索相关文档个数从 k-1 变化到 k 时(通过调整阈值)recall 值的变化情况。

rel(k) 表示第 k
个文档是否相关,若相关则为1,否则为0,则可以简化公式为:
其中,N
表示相关文档总数,position(i) 表示第 i 个相关文档在检索结果列表中的位置。

MAP(Mean Average
Precision)即多个查询的平均正确率(AP)的均值,从整体上反映模型的检索性能。

下面举一个例子来说明上述公式的计算:
查询 query1 对应总共有4个相关文档,查询 query2
对应总共有5个相关文档。当通过模型执行查询1、2时,分别检索出4个相关文档(Rank=1、2、4、7)和3个相关文档(Rank=1、3、5)。
则 query1AP=(1/1+2/2+3/4+4/7)/4=0.83,query2AP=(1/1+2/3+3/5+0+0)/5=0.45,最后
MAP=(0.83+0.45)/2=0.64。

三、NDCG

1、CG(Cumulative Gain)累计效益

其中
k 表示 k 个文档组成的集合,rel 表示第 i 个文档的相关度,例如相关度分为以下几个等级:
Relevance Rating Value
Perfect 5
Excellent 4
Good 3
Fair 2
Simple 1
Bad 0

2、DCG(Discounted Cumulative Gain)

在 CG 的计算中没有考虑到位置信息,例如检索到三个文档的相关度依次为(3,-1,1)和(-1,1,3),根据
CG 的计算公式得出的排名是相同的,但是显然前者的排序好一些。
所以需要在 CG 计算的基础上加入位置信息的计算,现假设根据位置的递增,对应的价值递减,为
1/log2(i+1),其中
log2(i+1)
为折扣因子;
另一种增加相关度影响比重的 DCG 计算公式:

3、IDCG(ideal DCG)

理想情况下,按照相关度从大到小排序,然后计算 DCG 可以取得最大值情况。
其中 |REL| 表示文档按照相关度从大到小排序,取前 k 个文档组成的集合。

4、NDCG(Normalized
DCG)

由于每个查询所能检索到的结果文档集合长度不一致,k 值的不同会影响 DCG
的计算结果。所以不能简单的对不同查询的 DCG 结果进行平均,需要先归一化处理。
NDCG 就是利用 IDCG 进行归一化处理,表示当前的 DCG 与理想情况下的 IDCG
相差多大:
这样每个查询的 NDCG 均在 0-1 范围内,不同查询之间就可以进行比较,求取多个查询的平均
NDCG。

5、例子

通过一个计算示例来说明上面的公式,例如现在有一个 query={abc},返回下图左列的 Ranked
List,当假设用户的选择与排序结果无关,则根据相关度生成的累计增益如下图所示:

URL rel Gain(2reli-1) Cumulative Gain
#1 http://abc.go.com 5 31 31
#2 http://www.abctech.com 2 3 34=31+3
#3 http://abcnews.go.com/sections/ 4 15 49=31+3+15
#4 http://www.abc.net.au/ 4 15 64=31+3+15+15
#5 http://abcnews.com/ 4 15 79=31+3+15+15+15
#6 ... ... ... ...
现在考虑搜索结果排在前面的用户会优先选择,引入一个折算因子(discounting
factor):1/(log(i+1)/log2) = log2/log(i+1)。

URL rel Gain(2reli-1) Cumulative
Gain
DCG
#1 http://abc.go.com 5 31 31 31=31×1
#2 http://www.abctech.com 2 3 34=31+3 32.9=31+3×0.63
#3 http://abcnews.go.com/sections/ 4 15 49=31+3+15 40.4=32.9+15×0.50
#4 http://www.abc.net.au/ 4 15 64=31+3+15+15 46.9=40.4+15×0.43
#5 http://abcnews.com/ 4 15 79=31+3+15+15+15 52.7=46.9+15×0.39
#6 ... ... ... ... ...

而理想的情况,根据相关度 rel 递减排序后计算 DCG:


URL rel Gain(2reli-1) IDCG(Max
DCG)
#1 http://abc.go.com 5 31 31=31×1
#3 http://abcnews.go.com/sections/ 4 15 40.5=31+15×0.63
#4 http://www.abc.net.au/ 4 15 48.0=40.5+15×0.5
#5 http://abcnews.com/ 4 15 54.5=48.0+15×0.43
#7 http://abc.org/ 4 15 60.4=54.5+15×0.39
#9 ... ... ... ...

所以最终得出 NDCG 结果:


URL rel Gain(2reli-1) Cumulative
Gain
DCG IDCG(Max DCG) NDCG
#1 http://abc.go.com 5 31 31 31=31×1 31=31×1 1=31/31
#2 http://www.abctech.com 2 3 34=31+3 32.9=31+3×0.63 40.5=31+15×0.63 0.81=32.9/40.5
#3 http://abcnews.go.com/sections/ 4 15 49=31+3+15 40.4=32.9+15×0.50 48.0=40.5+15×0.5 0.84=40.4/48.0
#4 http://www.abc.net.au/ 4 15 64=31+3+15+15 46.9=40.4+15×0.43 54.5=48.0+15×0.43 0.86=46.9/54.5
#5 http://abcnews.com/ 4 15 79=31+3+15+15+15 52.7=46.9+15×0.39 60.4=54.5+15×0.39 0.87=52.7/60.4
#6 ... ... ... ... ... ...

四、ERR

1、RR(reciprocal rank)

倒数排名,指检索结果中第一个相关文档的排名的倒数。

2、MRR(mean reciprocal
rank)

多个查询的倒数排名的均值,公式如下:
rank表示第
i 个查询的第一个相关文档的排名。

3、Cascade Model(瀑布模型)

点击模型中的瀑布模型,考虑到在同一个检索结果列表中各文档之间的位置依赖关系,假设用户从上至下查看,如果遇到某一检索结果项满意并进行点击,则操作结束;否则跳过该项继续往后查看。第
i 个位置的文档项被点击的概率为:
其中 ri 表示第
i 个文档被点击的概率,前 i-1 个文档则没有被点击,概率均为 1-rj

4、ERR(Expected reciprocal rank)

预期的倒数排名,表示用户的需求被满足时停止的位置的倒数的期望,与 RR
计算第一个相关文档的位置倒数不同。
首先用户在位置 r 处停止的概率 PPr 计算公式如下:
其中 Ri 是关于文档相关度等级的函数,现假设该函数为:
当文档是不相关的(g=0),则用户检索到相关文档的概率为0;而当文档极其相关(g=4,如果相关度划分5个等级)时,用户检索到相关文档的概率接近于1。上面公式中的
g 表示文档的相关度,参考 NDCG 中的 rel。
更通用一点来讲,ERR
不一定是计算用户需求满足时停止的位置的倒数的期望,它可以是基于位置的函数 φ(r)
,只要满足 φ(0)=1,且随着 r→∞,φ(r)→0。
ERR 的计算公式如下:
可以看出,当 φ(r)=1/r
时就是 ERR,当 φ(r)=1/log2(r+1) 就是DCG。

参考链接:



by. Memento



















[LTR] 信息检索评价指标(RP/MAP/DCG/NDCG/RR/ERR)的更多相关文章

  1. Kendall’s tau-b,pearson、spearman三种相关性的区别(有空整理信息检索评价指标)

    同样可参考: http://blog.csdn.net/wsywl/article/details/5889419 http://wenku.baidu.com/link?url=pEBtVQFzTx ...

  2. [Scala] 实现 NDCG

    一.关于 NDCG [LTR] 信息检索评价指标(RP/MAP/DCG/NDCG/RR/ERR) 二.代码实现 1.训练数据的加载解析 import scala.io.Source /* * 训练行数 ...

  3. Learning To Rank之LambdaMART前世今生

    1.       前言 我们知道排序在非常多应用场景中属于一个非常核心的模块.最直接的应用就是搜索引擎.当用户提交一个query.搜索引擎会召回非常多文档,然后依据文档与query以及用户的相关程度对 ...

  4. [笔记]Learning to Rank算法介绍:RankNet,LambdaRank,LambdaMart

    之前的博客:http://www.cnblogs.com/bentuwuying/p/6681943.html中简单介绍了Learning to Rank的基本原理,也讲到了Learning to R ...

  5. Learning to Rank算法介绍:RankNet,LambdaRank,LambdaMart

    之前的博客:http://www.cnblogs.com/bentuwuying/p/6681943.html中简单介绍了Learning to Rank的基本原理,也讲到了Learning to R ...

  6. 推荐系统排序(Ranking)评价指标

      一.准确率(Precision)和召回率(Recall)  (令R(u)是根据用户在训练集上的行为给用户作出的推荐列表,而T(u)是用户在测试集上的行为列表.) 对用户u推荐N个物品(记为R(u) ...

  7. 百度Map调用

    baiduMap API 根据地址查询经纬度 http://api.map.baidu.com/geocoder?address=要查询的地址&output=json&key=你的ke ...

  8. SPOJ - ADAFIELD ,Set+map,STL不会超时!

    ADAFIELD - Ada and Field 这个题,如果用一个字来形容的话:-----------------------------------------------嗯! 题意:n*m的空白 ...

  9. go语言之进阶篇json解析到map

    1.json解析到map(通过类型断言,找到值和value类型) 示例: package main import ( "encoding/json" "fmt" ...

随机推荐

  1. freemarker报错之十一

    1.错误描述 六月 03, 2014 11:00:35 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template proc ...

  2. C#:几种数据库的大数据批量插入

    在之前只知道SqlServer支持数据批量插入,殊不知道Oracle.SQLite和MySql也是支持的,不过Oracle需要使用Orace.DataAccess驱动,今天就贴出几种数据库的批量插入解 ...

  3. sql一张表中两个字段指向同一个外键

    在项目开发中遇到这么一个例子,首先产品表 tb_product ----------------------------- id    name 1     手机 2    电脑 3     笔记本 ...

  4. freemarker中的split字符串分割(十六)

    1.简易说明 split分割:用来根据另外一个字符串的出现将原字符串分割成字符串序列 2.举例说明 <#--freemarker中的split字符串分割--> <#list &quo ...

  5. JavaScript设计模式(9)-享元模式

    享元模式 1. 介绍 一种优化模式 适合解决因创建大量类似对象而累积性能问题 javaScript 代码可能很快就用光浏览器的内容,通过把大量独立对象转化为少量共享对象,可以降低运行 Web 应用所需 ...

  6. 【CJOJ1167】【洛谷1894】[USACO4.2]完美的牛栏

    题面 Description 农夫约翰上个星期刚刚建好了他的新牛棚,他使用了最新的挤奶技术.不幸的是,由于工程问题,每个牛栏都不一样.第一个星期,农夫约翰随便地让奶牛们进入牛栏,但是问题很快地显露出来 ...

  7. [AH/HNOI2017]单旋

    这道题可以用LCT做,开set,LCT,二叉树 操作1:直接开set,找到它要插入的位置,一定是前驱,后缀中deep最大的(显然手玩) 操作2:set+LCT询问路径,直接手动提上去,因为树的形态不变 ...

  8. 【Spring源码分析】原型Bean实例化过程、byName与byType及FactoryBean获取Bean源码实现

    原型Bean加载过程 之前的文章,分析了非懒加载的单例Bean整个加载过程,除了非懒加载的单例Bean之外,Spring中还有一种Bean就是原型(Prototype)的Bean,看一下定义方式: & ...

  9. 虚拟机安装CentOS6.3及常见问题总结

    学Linux的同学大多数开始是使用的是Ubuntu或者red hat,red hat虽然安装不需要收费,但是服务是收费的,下面我就讲讲怎么用虚拟机安装CentOS6.3,其他Linux的安装可以参考这 ...

  10. 关于Eclipse无法识别手机或者模拟器的解决方案

    Android开发的时候经常会出现eclipse devices中不显示手机或模拟器的情况 网上有很多方法,但是都不实用.这里我提供一种方法: 如果手机连接上了不显示的话首先我们要确定我们手机的驱动是 ...