内容纲要

欢迎转载,作者:Ling,注明出处:Rank教程: 01-概述

 

本系列教程不会像机器学习,深度学习和强化学习一样,细扣每一个公式,但是会把核心技术都介绍到,主要理解为什么这么做,并且是怎么做到的。

定义:

简单说就是根据用户Query,检索出最相关的结果,并且对结果进行排序,这个排序过程就是Rank过程。它是信息检索(Information Retrieval)和自然语言处理非常核心的一个内容。

下图是比较典型的一个信息检索过程:

RK_01_001

输入一堆文档D,输入用户请求q, 检索系统根据相关性检索出相应文档,最后由Rank对结果进行排序,不同的query会 得到不同的排序结果。

应用举例:

  • 文本检索(Document Retrieval)
  • 实体搜索(Entity Search)
  • QA问答
  • Meta-Search:综合不同搜索的结果,进行排序
  • 个性化搜索
  • 在线广告:广告排序
  • 机器翻译:翻译结果可能不止一个,对其排序

常见方法

Approach

Rank方法发展到现在主要有五大类方法

  • 布尔模型(Boolean Model)
  • 空间向量模型(Vector Space Model)
  • 概率检索模型(Probabilistic Retrieval Model):主要分为二元独立模型,BM25,BM25F
  • 语言模型(Language Model)
  • 机器学习模型(Learning to Rank):主要分为

     

     

    • Rank Creation
    • Rank Aggregation

后面会一一介绍这些模型

常见评价指标

精确率和召回率

RK_01_003

Precision=N/(N + M)

Recall=N/(N+K)

P@n指标:关注搜索结果排名最靠前文档的结果质量

RK_01_004

头十个文档中包含了五个文档,所以精度为0.5

MAP指标(Mean Average Precision)

AP(Average Precision): 针对单个查询

RK_01_005

图中有3个相关文档,排在了第2,4,6位,如上计算

理想情况是1,2,3位

(1/1+2/2+3/3)/3=1

对多组查询,每个查询AP相加求平均值,就是MAP

形式化表示:注意y只有0,1两个取值,表示相关或者不相关

分母是相关文档数目,分子是到某个位置,看看其中相关文档所占数目,累加所有和即可,就是上图的计算方式

RK_01_006

Π是第j个文档在rank中的位置, P(j)表示精度,一直到qi对应的第j个文档di,j的精度

RK_01_007

DCG(Discounted Cumulative Gain)

Notation:

RK_01_008

DCG:

RK_01_009

G(j):

RK_01_010

qi 对应第j个文档的label或者说grade,2的指数幂这么大,就是增益

RK_01_011

Rank越后,对应折扣越小,也就是同一个文档,越往后排,给的分数越低

整体公式:

RK_01_012

如果grade越高的排在越前面,算出来的DCG就越大,增益越大的应尽可能少折扣掉

问题:

 最后得到的DCG是一个一个值,到底多少值是好,多少值是差,很难看出,所以最好正规化一下, 就是除以最好的那个DCG值,得到0-1之间的数,靠近1就是好,靠近0就是差

NDCG(Normalized Discounted Cumulative Gain)

RK_01_013

通过下面例子可以看出这些值是如何计算的:

第一个例子:最佳Ranking各个值的计算方式

第一行是按grades排好序了

第二行是根据第一行计算得出

第三行是1/log(1+1) log底数是2,1/log(2+1), 1/log(3+1)….就是位置+1开log的倒数

第四行是用第二行乘以第三行,累加和

第五行是第四行倒数,因为它是最佳排序,所以直接倒数即可

第六行是第四行乘以第五行

RK_01_014

第二个例子:一般Ranking各个值的计算方式

计算方法如上,但是注意,第五行不是该例子的第四行的倒数,而是上面最佳排序的第四行的倒数

有了以上内容,我们就可以开始学习Rank各种方法了!