其他分享
首页 > 其他分享> > Learning to Rank(L2R)学习记录

Learning to Rank(L2R)学习记录

作者:互联网

一、什么是排序学习?

Wikipedia的对排序学习的定义如下:
“Learning to rank is the application of machine learning, typically supervised, semi-supervised or reinforcement learning, in the construction of ranking models for information retrieval systems. Training data consists of lists of items with some partial order specified between items in each list. This order is typically induced by giving a numerical or ordinal score or a binary judgment (e.g. “relevant” or “not relevant”) for each item. The ranking model’s purpose is to rank, i.e. produce a permutation of items in new, unseen lists in a way which is “similar” to rankings in the training data in some sense.”

可见,排序是许多信息检索问题(例如文档检索,协作过滤,情感分析和在线广告)的核心部分,其目标是构建一个排序模型用于对列表进行排序。

二、 机器学习排序(MLR)

利用机器学习技术来对搜索结果进行排序,是非常热门的研究领域。将机器学习技术和信息检索技术相互结合的主要原因为:
对简单的基本检索模型来说,对査询和文档的相关性进行排序所考虑的因素并不多,主要是利用词频(TF)、逆文档频率(IDF)和文档长度等几个因子来人工拟合排序公式。而随着搜索引擎的发展,对于某个网页进行排序需要考虑的因素越来越多,比如网页的pageRank值、查询和文档匹配的单词个数、网页URL链接地址长度等都对网页排名产生影响。***而随着影响相关度的因素变多,使用传统排序方法变得困难,人们就想到通过机器学习来解决这一问题。***对于有监督机器学习来说,首先需要大量的训练数据,在此基础上才可能自动学习排序模型,近年来各种真实场景下L2R数据集的发布也促进了这一结合。

三、公开数据集

LETOR, http://research.microsoft.com/en-us/um/beijing/projects/letor/
Microsoft Learning to Rank Dataset, http://research.microsoft.com/en-us/projects/mslr/
Yahoo Learning to Rank Challenge, http://webscope.sandbox.yahoo.com/

四、评价指标

以关键词搜索返回文章列表为例,列表评价指标要解决的挑战有:

1.如何定义文章与关键词之间的相关度,这决定了一篇文章在列表中的位置,相关度越高排序就应该越靠前。
2.当列表中某些文章没有排在正确的位置时候,如何给整个列表打分。举个例子来说,假如对于某个关键词,按照相关性的高低正确排序,文档1、2、3、4、5应该依次排在前5位。现在的挑战就是,如何评估“2,1,3,4,5”和“1,2,5,4,3”这两个列表的优劣呢?

列表排序的评价指标体系总来的来说经历了三个阶段,分别是Precision and Recall、Discounted Cumulative Gain(DCG)和Expected Reciprocal Rank(ERR)。

1.Precision and Recall(P-R)

本评价体系通过准确率(Precision)和召回率(Recall)两个指标来共同衡量列表的排序质量。对于一个请求关键词,所有的文档被标记为相关和不相关两种。

Precision的定义如下:
在这里插入图片描述

Recall的定义如下:

在这里插入图片描述

举个列子来说,对于某个请求关键词,有200篇文章实际相关。某个排序算法只认为100篇文章是相关的,而这100篇文章里面,真正相关的文章只有80篇。按照以上定义:
准确率=80⁄100=0.8
召回率=80⁄200=0.4

2.Discounted Cumulative Gain(DCG)

P-R的有两个明显缺点:
1.所有文章只被分为相关和不相关两档,没有考虑相关性分数。
2.没有考虑位置因素。
DCG解决了这两个问题。对于一个关键词,所有的文档可以分为多个相关性级别,这里以rel1,rel2…来表示。***文章相关性对整个列表评价指标的贡献随着位置的增加而对数衰减,位置越靠后,衰减越严重。***基于DCG评价指标,列表前p个文档的评价指标定义如下:
在这里插入图片描述
对于排序引擎而言,不同请求的结果列表长度往往不相同。当比较不同排序引擎的综合排序性能时,不同长度请求之间的DCG指标的可比性不高。目前在工业界常用的是Normalized DCG(NDCG)(希望把最相关的结果放到排名最靠前的位置,因为大部分用户都是从上往下阅读的,那么最相关的在前面可以最大程度减少用户的阅读时间; 此外还希望整个列表的结果尽可能的和query相关; 第一个条件的满足是首要的,而第二个条件的加入是保证整体结果质量,而这两个条件都体现在了NDCG里面,首先,计算NDCG,需要计算Gain,这个gain即是每条结果的质量的定义,NDCG把所有结果相加最终相加保证,整体质量越高的列表NDCG值越大。同时,Discounted的设计使得越靠前的结果权重越大,这保证了第一条,更相关的排在靠前的结果会有更大的NDCG值。从这两点看,以NDCG为优化目标,保证了搜索引擎在返回结果总体质量好的情况下,把更高质量结果排在更前面。),它假定能够获取到某个请求的前p个位置的完美排序列表,这个完美列表的分值称为Ideal DCG(IDCG),NDCG等于DCG与IDCG比值。所以NDCG是一个在0到1之间的值。
NDCG的定义如下:
在这里插入图片描述
IDCG的定义如下:
在这里插入图片描述
|REL|代表按照相关性排序好的最多到位置p的结果列表。

3.Expected Reciprocal Rank(ERR)

与DCG相比,除了考虑位置衰减和允许多种相关级别(以R1,R2,R3…来表示)以外,ERR更进了一步,还考虑了排在文档之前所有文档的相关性。举个例子来说,文档A非常相关,排在第5位。如果排在前面的4个文档相关度都不高,那么文档A对列表的贡献就很大。反过来,如果前面4个文档相关度很大,已经完全解决了用户的搜索需求,用户根本就不会点击第5个位置的文档,那么文档A对列表的贡献就不大。

ERR的定义如下:
在这里插入图片描述

五、方法

机器学习搜索引擎的架构如图所示:
在这里插入图片描述

1.训练算法

L2R算法主要包括三种类别:单文档方法(PointWise Approach),文档对方法(PairWise Approach)和文档列表方法(ListWise Approach)。

仍然以关键词搜索文章为例,排序学习算法的目标是为给定的关键词对文章列表进行排序。做为类比,假定有一个学者想要对各科学生排名进行预测。各种角色的对应关系如下:
在这里插入图片描述

首先我们要告诉学者每个学生的各种属性,这就像我们要给排序算法输入文档特征。对于目标值,我们却有三种方式来告诉学者:

1.对于每个学科,我们可以告诉学者每个学生的成绩。比较每个学生的成绩,学者当然可以算出每个学生的最终排名。这种训练方法被称为Pointwise。
2.对于每个学科,我们可以告诉学者任意两个学生的相互排名。根据学生之间排名的情况,学者也可以算出每个学生的最终排名。这种训练方法被称为Pairwise。
3.对于每个学科,我们可以直接告诉学者所有学生的整体排名。这种训练方法被称为Listwise。

1.1单文档方法(PointWise Approach)

input: 单个doc和query之间的相关度
model: 打分函数根据query和doc进行打分
回归问题: output:qoc和query之间的得分
分类问题: output:qoc和query之间是否相关
(如果最终预测目标是一个实数值,就是一个回归问题。如果目标是概率预测,这就是一个分类问题,例如CTR预估)
缺点: 1. 没有考虑同一个query之间doc的依赖性。
2.loss 会被多doc的query放大,被长尾的doc放大
优点:速度快,复杂度低
可用的特征:pagerank 得分,query中出现在doc里面的次数

1.2 文档对方法(PairWise Approach)

input: 两个doc和query之间的相关度
model:比较两个doc在query下的先后顺序
output:排序函数给出文档对的计算得分
缺点:只考虑了两个文档的先后顺序,没有考虑文档出现在搜索列表中的位置

1.3 文档列表方法(ListWise Approach)

文档列表方法根据K个训练实例训练得到最优的评分函数F,对于一个新的查询,函数F对每一个文档进行打分,之后按照得分顺序高低排序,就是对应的搜索结果。
input: 所有doc和query组成的特征
output:所有doc的排列
model: 打分函数
Listwise主要有两类:
Measure specific: 损失函数与评估指标相关,比如:L(F(x),y)=exp(-NDCG)
*Non-measure specific:*损失函数与评估指标不是显示相关,考虑了信息检索中的一些独特性基于评价指标

方法总结见https://en.wikipedia.org/wiki/Learning_to_rank#In_information_retrieval中List of methods表格

参考:
https://github.com/cdmaok/cdmaok.github.io/blob/a2ef44a252d143514640df831baa620a30855d8f/_posts/2019-02-11-Learning-to-Rank-Note.md
https://tech.meituan.com/2019/01/17/dianping-search-deeplearning.html
https://blog.csdn.net/anshuai_aw1/article/details/86018105
https://en.wikipedia.org/wiki/Learning_to_rank#In_information_retrieval
https://tech.meituan.com/2018/12/20/head-in-l2r.html

标签:doc,Rank,列表,L2R,文档,Learning,NDCG,query,排序
来源: https://blog.csdn.net/qq_35166730/article/details/112802522