学习排序(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是正相关有些是负相关,这需要我们通过学习过程去选取优化。

转自:http://blog.csdn.net/nanjunxiao/article/details/8976195

Learning to rank的讲解,单文档方法(Pointwise),文档对方法(Pairwise),文档列表方法(Listwise)相关推荐

  1. lightGBM用于排序(Learning to Rank )

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx Learning to Rank 简介 去年实习时,因为项目需要,接触了一下Learning ...

  2. Learning to Rank(LTR)

    Learning to Rank(LTR) 声明: 本文主要参考Learning to Rank 简介.Learning to Rank小结文章. 另参考李航老师A short introductio ...

  3. Learning to Rank(LTR)(转)

    Learning to RankLTR 声明 摘要 背景 排序学习系统框架 排序学习特征选择2 训练数据的获取3 人工标注 搜索日志 公共数据集 训练方法23 单文档方法Pointwise 文档对方法 ...

  4. Learning to Rank 简介

    非常好的一篇总结Learning to Rank的总结文章! 转载自:http://www.cnblogs.com/kemaswill/archive/2013/06/01/3109497.html ...

  5. Learning to Rank(以下简称L2R)

    L2R将机器学习的技术很好的应用到了排序中,并提出了一些新的理论和算法,不仅有效地解决了排序的问题,其中一些算法(比如LambdaRank)的思想非常新颖,可以在其他领域中进行借鉴.鉴于排序在许多领域 ...

  6. 【机器学习】Learning to Rank 简介

    Learning to Rank 简介 去年实习时,因为项目需要,接触了一下Learning to Rank(以下简称L2R),感觉很有意思,也有很大的应用价值.L2R将机器学习的技术很好的应用到了排 ...

  7. 搜索系统中的Learning To Rank模型:GBRank

    搜索系统中的Learning To Rank模型:GBRank FesianXu 20220326 at Baidu Search Team 前言 Learning To Rank(LTR)模型是对搜 ...

  8. Learning to Rank 中Listwise关于ListNet算法讲解及实现

     [学习排序] Learning to Rank 中Listwise关于ListNet算法讲解及实现             版权声明:本文为博主原创文章,转载请注明CSDN博客源地址!共同学习, ...

  9. 匹配网络(Learning to Rank、单双塔模型)

    参考:Learning to Rank Learning to Rank: pointwise.pairwise.listwise LTR(Learning to rank)是一种监督学习(Super ...

最新文章

  1. Spring3.2.8+Mybatis3.2.6 多数据源基于BaseDAO的配置
  2. Python学习笔记010——作用域
  3. k8s 安装redis-operator并以operator方式部署redis-standalone redis-cluster集群完整操作记录
  4. 前端技术分享:算法入门之“二分算法”
  5. 企业级系统架构设计技术与互联网应用技术结合主题一 大规模并发性能问题探讨...
  6. Spring -Bean的作用域
  7. oracle显示linesize,SQL Plus输出结果的格式化(linesize、pagesize)
  8. linux下硬盘安装ubuntu,Ubuntu硬盘安装
  9. mybatis操作mysql的奇淫技巧总结(代码库)
  10. SAP操作手册之 IDOC基础篇
  11. win11字体模糊不清怎么办 windows1字体模糊不清的解决方法
  12. 36D杯CTF Re WP
  13. u盘修复计算机系统,如何使用u盘修复系统
  14. Bais(偏差)与Variance(方差)的区别
  15. css怎么设置图片卷角效果,CSS设计教程:轻松实现卷角效果
  16. 国内外几个主流的CMS系统推荐
  17. 决战职场,教你如何编织人际关系网(一)
  18. Rare-Variant Association Analysis | 罕见变异的关联分析
  19. 建筑施工管理得心应手:智慧工地推动数字城市智能化前进
  20. 乐理基础知识-3.调

热门文章

  1. LeetCode题库第888题 公平的糖果棒交换
  2. K8S——关于K8S控制台的yaml文件编写(基于上一章多节点K8S部署)
  3. OSPF简单多区域及末梢区域配置
  4. 字符串以及内存操作相关函数
  5. 腾讯翻译君在线翻译怎么翻译整个文件_藏语怎么翻译成中文?这两方法非常好用...
  6. linux相对路径列出目录文件,linux – UNIX:列出目录中具有相对路径的文件
  7. python open 相对路径_第十四篇:Python中文件读写
  8. 积分上下限无穷_数学方法的思考和存在无穷多个孪生素数证明的思路
  9. oracle父游标和子游标,诊断Oracle high version count(高版本游标)问题
  10. acrobat 下拉列表 逻辑_记一次 无限列表 滚动优化