今天给大家介绍一下信息检索(Information Retrieval)中常用的评价指标,这些指标用来评价一个信息检索算法的效果好坏。通常来说,搜索结果是一个排序的列表,那我们如何去评价一个搜索结果的好坏呢?从直觉上说,如果搜索出来的结果和搜索意图很吻合,那么就是一个好的搜索结果。那么如何去试题准确性?下面介绍几个指标:

1. Precision

这个就是普通的准确率啦,比如搜索结果有1000个页面,里面有600个hit,即600个和搜索意图吻合,这里所谓的“和搜索意图吻合”是通过ground truth来判断的。这种情况下,Precision就是600/1000=0.6,即:


其中hit是搜索结果中,命中ground truth的页面个数,即和搜索意图吻合的个数,TotalSearchResult是搜索结果中的页面总数。


2. Recall

Recall就是召回率,可以理解成查全率,假设与“Kenney Qin”相关的页面事实上有1000个,但搜索“Kenney Qin”出来的结果页面中,有300个与之相关,那么召回率就是300/1000=0.3,其定义如下:


其中hit是搜索结果中,命中ground truth的页面个数,即和搜索意图吻合的个数, 是整个文档集中与搜索词相关的页面总数,可以看到,Recall的值与搜索结果中的页面数是无关的。


3. F1 Score

刚才说的Precision和Recall分别度量了搜索结果的“查准率”和“查全率”,如果想综合考虑“查准率”和“查全率”呢?那么F1 Score就是这样一个指标,它的定义如下:



4. P@K

一般来说,搜索结果前几项的准确性比较重要,假设说,搜索出来的前几条结果就是和搜索词不相关的,即使后面的结果都是相关的,那么这个信息检索系统也是不能令人满意的。大家可以想象一下,在搜索引擎中搜索“CSDN”,如果搜索结果中,前几个页面和CSDN毫无关系,大家是不是会觉得这个搜索引擎太弱了?因此,需要一些指标来度量前几个结果的准确率,P@K就是这样一种指标,它的意思就是Precisionat top-K,就是前搜索结果前K个的准确率,通过K比较小,因为就是要度量搜索结果前几条的准确率,如P@5,P@10。写成公式就是下面这样:

就是前K个中hit的个数,除以K。


5. nDCG (Normailzed Discounted Cumulative Gain)

先回忆一下P@K,在P@K中,只要在前K中的hit个数相同,算出的P@K都是一样的,比如算P@5时,第1,2个hit,第3,4,5个不hit,则P@5=0.4,如果第1,2,3个不hit,第4,5个hit,算出来也一样是0.4,但是,前一个的效果明显要好于后一个,因此需要一个position-sensitive的度量指标,nDCG就是这样一个指标,它的定义如下:


其中Z是normalized factor,它的值为n个结果全部hit的时候,后面那堆求和的值,也就是n个结果时,所以nDCG是已经归一化至0到1之间了。