Rank教程: 01-概述
欢迎转载,作者:Ling,注明出处:Rank教程: 01-概述
本系列教程不会像机器学习,深度学习和强化学习一样,细扣每一个公式,但是会把核心技术都介绍到,主要理解为什么这么做,并且是怎么做到的。
定义:
简单说就是根据用户Query,检索出最相关的结果,并且对结果进行排序,这个排序过程就是Rank过程。它是信息检索(Information Retrieval)和自然语言处理非常核心的一个内容。
下图是比较典型的一个信息检索过程:
输入一堆文档D,输入用户请求q, 检索系统根据相关性检索出相应文档,最后由Rank对结果进行排序,不同的query会 得到不同的排序结果。
应用举例:
- 文本检索(Document Retrieval)
- 实体搜索(Entity Search)
- QA问答
- Meta-Search:综合不同搜索的结果,进行排序
- 个性化搜索
- 在线广告:广告排序
- 机器翻译:翻译结果可能不止一个,对其排序
常见方法
Rank方法发展到现在主要有五大类方法:
- 布尔模型(Boolean Model)
- 空间向量模型(Vector Space Model)
- 概率检索模型(Probabilistic Retrieval Model):主要分为二元独立模型,BM25,BM25F
- 语言模型(Language Model)
-
机器学习模型(Learning to Rank):主要分为
- Rank Creation
- Rank Aggregation
后面会一一介绍这些模型
常见评价指标
精确率和召回率:
Precision=N/(N + M)
Recall=N/(N+K)
P@n指标:关注搜索结果排名最靠前文档的结果质量
头十个文档中包含了五个文档,所以精度为0.5
MAP指标(Mean Average Precision)
AP(Average Precision): 针对单个查询
图中有3个相关文档,排在了第2,4,6位,如上计算
理想情况是1,2,3位
(1/1+2/2+3/3)/3=1
对多组查询,每个查询AP相加求平均值,就是MAP
形式化表示:注意y只有0,1两个取值,表示相关或者不相关
分母是相关文档数目,分子是到某个位置,看看其中相关文档所占数目,累加所有和即可,就是上图的计算方式
Π是第j个文档在rank中的位置, P(j)表示精度,一直到qi对应的第j个文档di,j的精度
DCG(Discounted Cumulative Gain)
Notation:
DCG:
G(j):
qi 对应第j个文档的label或者说grade,2的指数幂这么大,就是增益
Rank越后,对应折扣越小,也就是同一个文档,越往后排,给的分数越低
整体公式:
如果grade越高的排在越前面,算出来的DCG就越大,增益越大的应尽可能少折扣掉
问题:
最后得到的DCG是一个一个值,到底多少值是好,多少值是差,很难看出,所以最好正规化一下, 就是除以最好的那个DCG值,得到0-1之间的数,靠近1就是好,靠近0就是差
NDCG(Normalized Discounted Cumulative Gain)
通过下面例子可以看出这些值是如何计算的:
第一个例子:最佳Ranking各个值的计算方式
第一行是按grades排好序了
第二行是根据第一行计算得出
第三行是1/log(1+1) log底数是2,1/log(2+1), 1/log(3+1)….就是位置+1开log的倒数
第四行是用第二行乘以第三行,累加和
第五行是第四行倒数,因为它是最佳排序,所以直接倒数即可
第六行是第四行乘以第五行
第二个例子:一般Ranking各个值的计算方式
计算方法如上,但是注意,第五行不是该例子的第四行的倒数,而是上面最佳排序的第四行的倒数
有了以上内容,我们就可以开始学习Rank各种方法了!
留言