学习排序(Learning to Rank)
LTR(Learning torank)学习排序是一种监督学习(SupervisedLearning)的排序方法。LTR已经被广泛应用到文本挖掘的很多领域,比如IR中排序返回的文档,推荐系统中的候选产品、用户排序,机器翻译中排序候选翻译结果等等。IR领域传统的排序方法一般通过构造相关度函数,然后按照相关度进行排序。影响相关度的因素很多,比如上面提到的tf,idf,dl等。有很多经典的模型来完成这一任务,比如VSM,Boolean model,概率模型等。对于传统的排序方法,很难融合多种信息,比如向量空间模型以tf*idf作为权重构建相关度函数,就很难利用其他信息了,并且如果模型中参数比较多,也会使得调参非常困难,而且很可能会出现过拟合现象。于是人们很自然的想到了用机器学习(Machine Learning)来解决这一问题,于是就有了Learning to rank。机器学习方法很容易融合多种特征,而且有成熟深厚的理论基础,参数是通过迭代优化出来的,有一套成熟理论解决稀疏、过拟合等问题。
学习排序系统框架如图2.1所示:
图2.1 排序学习系统框架
对于标注训练集,选定LTR方法,确定损失函数,以最小化损失函数为目标进行优化即可得到排序模型的相关参数,这就是学习过程。预测过程将待预测结果输入学习得到的排序模型中,即可得到结果的相关得分,利用该得分进行排序即可得到待预测结果的最终顺序。
LTR一般说来有三类方法:单文档方法(Pointwise),文档对方法(Pairwise),文档列表方法(Listwise)。
1 Pointwise
Pointwise处理对象是单一文档,将文档转化为特征向量后,主要是将排序问题转化为机器学习中常规的分类或回归问题。我们现以多类分类为例进行举例:表2-1是人工标注的部分训练集合,每个文档采用三个特征:查询与文档的BM25相似度,查询与文档的cosin相似度,以及页面的PageRank值,query与di的相关性是多元的,label分为 5个等级,即{perfect,Excellent,good,fair,bad}。于是,产生了5个具有label的训练实例,然后我们可以使用机器学习的任一种多类分类算法进行学习,比如最大熵,支持向量机等。
文档ID |
查询 |
BM25相似度 |
Cosin相似度 |
PageRank值 |
Label |
1 |
苹果 库克 |
0.15 |
0.13 |
5 |
Bad |
2 |
苹果 IPad |
0.32 |
0.24 |
7 |
good |
3 |
微软 产品 |
0.22 |
0.19 |
2 |
good |
4 |
谷歌 手机 |
0.55 |
0.53 |
3 |
Perfect |
5 |
百度 战略 |
0.35 |
0.28 |
1 |
excellent |
当模型参数学习完毕后,之后就可利用模型进行相关性判断,对新的查询和文档,通过模型的打分函数可以得到一个数值,利用该数值即可对文档进行排序了。
Pointwise完全从单文档的分类角度计算,没有考虑文档之间的相对顺序。而且它假设相关度是查询无关的,只要(query,di)的相关度相同,那么他们就被划分到同一个级别中,属于同一类。然而实际上,相关度的相对性是和查询相关的,比如一个常见的查询它会有很多相关的文档,该查询和它相关性相对靠后的文档的label标注级别时可能会比一个稀有的查询和它为数不多的高度相关文档的label标准级别更高。这样就导致训练样本的不一致,并且对于预测为同一label级别的文档之间也无法相对排序。
Pointwise常用方法有McRank等。
2 pairwise
Pairwise是目前比较流行的方法,相对pointwise他将重点转向文档顺序关系。它主要将排序问题归结为二元分类问题,这时候机器学习的方法就比较多了,比如Boost、SVM、神经网络等。对于同一query的相关文档集中,对任何两个不同label的文档,都可以得到一个训练实例(di,dj),如果di>dj则赋值+1,反之-1,于是我们就得到了二元分类器训练所需的训练样本了,如图2.2所示。测试时,只要对所有pair进行分类就可以得到所有文档的一个偏序关系,从而实现排序。
图2.2 Pairwise排序方法示意
尽管Pairwise对Pointwise做了改进,但该方法还是存在明显的问题:
a.只考虑了两篇文档的相对顺序,没有考虑他们出现在搜索结果列表中的位置。排在前面的文档更为重要,如果出现在前面的文档判断错误,惩罚函数要明显高于排在后面判断错误。因此需要引入位置因素,每个文档对根据其在结果列表中的位置具有不同的权重,越排在前面权重越大,如果排错顺序其受到的惩罚也越大。
b.对于不同的查询相关文档集的数量差异很大,转换为文档对后,有的查询可能只有十几个文档对,而有的查询可能会有数百个对应的文档对,这对学习系统的效果评价带来了偏置。假设查询1对应500个文档对,查询2对应10个文档对,假设机器学习系统对应查询1能够判断正确480个文档对,对应查询2能够判断正确2个。对于总的文档对该系统准确率是(480+2)/(500+10)=95%,但从查询的角度,两个查询对应的准确率分别为:96%和20%,平均为58%,与总的文档对判断准确率相差巨大,这将使得模型偏向于相关文档集大的查询。
Pairwise有很多的实现,比如Ranking SVM,RankNet,Frank,RankBoost等。
3 Listwise
Listwise与上述两种方法不同,它是将每个查询对应的所有搜索结果列表作为一个训练样例。Listwise根据训练样例训练得到最优评分函数F,对应新的查询,评分F对每个文档打分,然后根据得分由高到低排序,即为最终的排序结果。
对应如何训练最优评分函数F,本文介绍一种基于搜索结果排列组合的概率分布情况来训练的方法。如图2-2所示,对应查询Q,假设搜索引擎返回结果A、B、C三个文档,这三篇文档可以产生6中排列方式,对应评分函数F,对三篇文档进行相关度打分,得到F(A)、F(B)、F(C),根据这三个值可以计算6种排列组合情况各自的概率值。对应不同的评分函数F,六种排列的概率分布是不同的。
假设评分函数g是由人工标记得到的标准答案对应的评分函数,它是怎样的我们暂时不清楚,我们试图找到一个评分函数f,使得f产生的打分和人工的打分尽可能相同。假设存在两个其他评分函数h和f,他们的计算方法已知,对应的搜索排列组合概率分布如图所示,通过KL距离可知,f比h更接近于虚拟的最优函数g。训练过程就是在尽可能的函数中寻找最接近虚拟函数g的那个函数,预测时用该评分函数进行打分。
Listwise方法往往更加直接,它专注于自己的目标和任务,直接对文档排序结果进行优化,因此往往效果也是最好的。Listwise常用方法有AdaRank,SoftRank,LambdaMART等。
LTR训练数据的获取
1.人工标注。如果需要大量的训练数据,人工标注不太现实
2.对应搜索引擎来说,可以通过用户点击记录来获取训练数据。对应查询返回的搜索结果,用户会点击其中的某些网页,假设用户优先点击的是和查询更相关的网页。尽管很多时候这种假设并不成立,但实际经验表明这种获取训练数据是可行的。
LTR特征选取
使用LTR时会选取一系列文本特征,利用机器学习方法很好的融合到一个排序模型中,来决定最终结果的顺序,其中每一个特征我们称为一个“feature”。对于一个网页文本,feature所在的文档区域可以包括body域,anchor域,title域,url域,whole document域等。
文档的feature又可以分为两种类型:一是文档本身的特征,比如Pagerank值、内容丰富度、spam值、number of slash、url length、inlink number、outlink number、siterank等。二是Query-Doc的特征:文档对应查询的相关度、每个域的tf、idf值,bool model,vsm,bm25,language model相关度等。
综合上述的文档feature的两种类型和位于文档的不同域,我们可以组合出很多feature,当然有些feature是正相关有些是负相关,这需要我们通过学习过程去选取优化。
相关推荐
Learning to Rank for Information Retrieval(LETOR) 是Microsoft的一个信息检索相关度排序的数据集,有 Supervised ranking Semi-supervised ranking Rank aggregation Listwise ranking 四种setting,提供了...
本书由MSRA刘铁岩所写,介绍了排序学习的一些基本概念以及方法。排序学习指的是使用机器学习的方法来对网页进行排序,书中所讲的内容对于有机器学习背景的同学来说应该还是比较容易的。
利用lightgbm做learning to rank 排序,主要包括: 数据预处理 模型训练 模型决策可视化 预测 ndcg评估 特征重要度 SHAP特征贡献度解释 样本的叶结点输出 (要求安装lightgbm、graphviz、shap等)
刘铁岩 排序 信息检索 很经典的书,找了好久
Learning to Rank的一个方法,把排序问题转换成了一个分类问题,然后用支持向量机(SVM)训练出一个模型来。
Learning to Rank for Information Retrieval and Natural Language Processing全英版,值得推荐系统爱好者啃下来的一本书。
这个论文是本人发表在人工智能国际顶级会议上的论文。主要是研究了如何在多人标注的情况下进行众包排序学习。
排序学习方面的文献,具有很好的参考价值。
学习排名研究了不同的学习排名方法: 基于基本的tf-idf功能,使用线性回归实现了逐点方法的实例。 使用基本的tf-idf功能实现了成对方法的实例,即排序SVM方法。 尝试了更多功能,例如BM25和PageRank。
learning-to-rank:包含prank等排序学习算法
该文档论述了排序算法和推荐系统的评估标准NDCG和MAP的原理和应用
一种基于排序学习的专家查找算法,郑海涛,李琪,专家查找是标识关于某一主题专家的过程。在这篇论文中,我们提出了一种基于排序学习的专家查找方法 (LREF, Learning to Rank for Expert Finding)
Tensorflow implementations of various Learning to Rank (LTR) algorithms.
LTR(Learning to rank)是一种监督学习(Supervised Learning)的排序方法,已经被广泛应用到推荐与搜索等领域。传统的排序方法通过构造相关度函数,按照相关度进行排序。然而,影响相关度的因素很多,比如tf,idf...
Learning to Rank( L2R) 技术是对搜索结果进行排序 , 是近几年的研究热点。 现关于 L2R 中的 PairWise 方法进行研究.分析, PairWise 方法将排序问题转化为二元分类问题, 其缺点是只考虑两篇文档的相对顺序 , ...
我们提出CCRank,这是第一个基于进化算法(EA)进行排名的... 我们通过三个基于EA的学习来实现CCRank,以对算法进行排序以进行演示。 与最新算法相比,基准数据集上的大量实验表明CCRank在效率和准确性方面的性能提升。
当代技术通过简单的试探法或通过对标准回归或分类模型的输出进行排序来执行此排名步骤,已证明在其他领域(例如信息检索)排名不理想。 为了解决这一不足,我们提出了一个框架,通过结合按等级学习算法来增强横截面...
现有的学习排序方法采用有监督的机器学习方法作为核心技术,经典检索模型作为文档特征。 文档功能的质量会严重影响排名模型的有效性。 因此,有必要在排序中生成有效的文档特征以扩展学习的特征空间以进行排序,...
通过回归森林学习对模型(例如LambdaMART,RF,GBDT等)进行排序,以在火炬中训练简单的多层感知器(前馈神经网络)的代码和数据。 该代码是对以下SIGIR论文所做的实验的重新实现: Cohen,D.,Foley,J.,Zamani...