芝麻HTTP: Learning to Rank概述
Learning to Rank,即排序学习,简称为 L2R,它是构建排序模型的机器学习方法,在信息检索、自然语言处理、数据挖掘等场景中具有重要的作用。其达到的效果是:给定一组文档,对任意查询请求给出反映文档相关性的文档排序。本文简单介绍一下 L2R 的基本算法及评价指标。
背景
随着互联网的快速发展,L2R 技术也越来越受到关注,这是机器学习常见的任务之一。信息检索时,给定一个查询目标,我们需要算出最符合要求的结果并返回,这里面涉及一些特征计算、匹配等算法,对于海量的数据,如果仅靠人工来干预其中的一些参数来进行排序的话,是远远不能达到要求的,而 L2R 算法就是用来解决这种问题的,L2R 将机器学习的技术很好地应用到了排序中,并提出了一些新的理论和方法,有效解决了排序的问题,而且效率上相比人工干预也有了几个数量级的飞跃。
L2R 算法
L2R 算法主要包括三种类别:Pointwise、Pairwise、Listwise,下面分别进行介绍。
1. Pointwise
Pointwise 将问题转化为多分类或回归问题。如果归结为多分类问题,对于某个 Query,对文档与此 Query 的相关程度打标签,标签分为有限的类别,这样就将问题转为多分类问题;如果归结为回归问题,对于某个 Query,则对文档与此 Query 的相关程度计算相关度 Score,这样就将问题归结为回归问题。
模型
应用 Pointwise 模型有 Subset Ranking、OC SVM、McRank、Prank 等。
输入
特定的 Query,文档的特征向量。
输出
文档与 Query 的标签类别或相关性分数。
损失函数
回归 Loss、分类 Loss、有序回归 Loss。
优缺点
Pointwise 算法实现简单,易于理解,但它只对给定 Query 单个文档的相关度进行建模,仅仅考虑了单个文档的绝对相关度,Pointwise 只学习到了文档和 Query 的全局相关性,对排序先后顺序有一定的影响。在某一些场景下,排在最前面的几个文档对排序结果的影响非常重要,如搜索引擎的第一页的内容非常重要,而 Pointwise 没有考虑这方面的影响,不对排序的先后顺序优劣做惩罚。
2. Pairwise
上文提到 Pointwise 方法只考虑了单个文档和 Query 的绝对相关度,Pairwise 考虑的则是两个文档之间的相对相关度,比较不同文档的先后顺序。Pairwise 方法是目前比较流行的方法,它将整个排序问题转为二元分类问题,即构建的是一个二分类器,对一个文档对 <Doc1, Doc2> 做二分类,一类是 Doc1 排序前于 Doc2,另一类则相反,通过两两比较,模型可以学习到不同文档之间的先后顺序。
模型
应用 Pairwise 的模型有 Ranking SVM、RankBoost、RankNet、GBRank、IR SVM 等。
输入
特定 Query,文档对 <Doc1, Doc2>。
输出
文档对偏向得分,{-1, 1}。
损失函数
Pairwise 分类 Loss。
优缺点
Pairwise 方法通过考虑两两文档之间的相关度来进行排序,有一定进步。但 Pairwise 使用的是两文档之间相关相关度的损失函数,而它和真正衡量排序效果的指标之间存在很大不同,甚至可能是负相关的,如可能出现 Pairwise Loss 越来越低,但 NDCG 分数也越来越低的现象。另外此方法只考虑了两个文档的先后顺序,且没有考虑文档在搜索列表中出现的位置,导致最终排序效果并不理想。
3. Listwise
Listwise 算法相对于 Pointwise 和 Pairwise 方法来说,它不再将排序问题转化为一个分类问题或者回归问题,而是直接针对评价指标对文档的排序结果进行优化,如常用的 MAP、NDCG 等。
模型
应用 Listwise 的模型有 ListNet、ListMLE、SVM MAP、AdaRank、SoftRank、LambdaRank、LambdaMART。其中 LambdaMART(对 RankNet 和 LambdaRank 的改进)在 Yahoo Learning to Rank Challenge 表现出最好的性能。
输入
特定Query,文档集合
输出
所有文档的打分或者排列顺序
损失函数
评价指标如 NDCG、MAP 等。
优缺点
由于此种方法是针对评价指标直接进行优化,所以它往往表现出不错的效果。
评价指标
L2R 评价指标主要有 NDCG、MAP、WTA、MRR 等,下面分别简单介绍一下。
1. NDCG
NDCG,全称为 Normalized Discounted Cumulative Gain,是一种综合考虑模型排序结果和真实序列之间的关系的一种指标,也是最常用的衡量排序结果的指标,其计算公式如下:
$$ \mathrm{NDCG@K} = \frac{DCG}{iDCG} $$
NDCG 其实是由 DCG 的值计算出来的,分子为模型计算出的 DCG 值,分母则为理想情况下的 DCG 值,而 DCG 的计算公式如下:
$$ \mathrm{DCG@K} = \sum_{i=1}^{k}{\frac {{2^{r(i)}-1}}{\log_{2}{(i+1)}}} $$
在 DCG 的表达式中,$\sum_{i=1}^{k}$ 是求和累积,${r(i)}$ 表示在模型给出的排序中,排名为 i 的元素的实际分数,这里通过 ${2^{r(i)}-1}$ 运算放大了其分数的差异,$\log_{2}{(i+1)}$ 是每个元素的折价,由于排序靠前的元素被选取的概率更大,所以这里可以使得排名前面的元素影响权重更大。
2. MAP
MAP,全称为 Mean Average Precision,即平均准确率。对于每个真实相关的文档,考虑其在模型排序结果中的位置 P,统计该位置之前的文档集合的分类准确率,取所有这些准确率的平均值。
对于一个 Query,原本有 4 个相关结果,查询时将 4 个结果都查询出来了,其 rank 分别为 1, 2, 4, 7,则 MAP 为 (1/1 + 2/2 + 3/4 + 4/7)/4 = 0.83。对于另一个 Query,原本有 5 个相关结果,查询只有 3 个相关结果,其 rank 分别为 1, 3, 5,则 MAP 为 (1/1 + 2/3 + 3/5 + 0 + 0)/5 = 0.45。则 MAP = (0.83 + 0.45)/2 = 0.64。
3. WTA
WTA,全称 Winners Take All,对于给定的查询 Query,如果模型返回的结果列表中,第一个文档是相关的,则 WTA =1, 否则为 0。
如对于一个 Query,本来有 5 个相关结果,查询结果中如果第一个结果是相关的,那么 WTA = 1,如果第一个结果是不相关的,则 WTA = 0。
4. MRR
MRR,全称 Mean Reciprocal Rank,是把相关文档在结果中的排序倒数作为准确度,然后再取平均。
如对于第一个 Query,查询结果将正确结果排名 rank 为 3,则其 Reciprocal Rank 为 1/3,对于第二个 Query,查询结果将正确结果排名 rank 为 2,则其 Reciprocal Rank 为 1/2,对于第三个 Query,查询结果将正确结果排名 rank 为 1,则其 Reciprocal Rank 为 1,则 MRR = (1/3 + 1/2 + 1)/3 = 11/18 = 0.61。
参考资料
- Learning to Rank, Hang Li
- Learning to Rank for Information Retrieval, Tie-Yan Liu
- Learning to rank基本算法小结
- Learning to Rank简介
- 浅谈智能搜索和对话式OS
- Learning to Rank 简介
- NDCG评价标准
芝麻HTTP: Learning to Rank概述的更多相关文章
- Learning to Rank:Point-wise、Pair-wise 和 List-wise区别
机器学习的 ranking 技术——learning2rank,包括 pointwise.pairwise.listwise 三大类型. [Ref-1]给出的: <Point wise rank ...
- Learning to Rank:pointwise, pairwise, listwise 总结
值得看: 刘铁岩老师的<Learning to Rank for Information Retrieval>和李航老师的<Learning to rank for informat ...
- 推荐排序---Learning to Rank:从 pointwise 和 pairwise 到 listwise,经典模型与优缺点
转载:https://blog.csdn.net/lipengcn/article/details/80373744 Ranking 是信息检索领域的基本问题,也是搜索引擎背后的重要组成模块. 本文将 ...
- Learning to rank 介绍
PS:文章主要转载自CSDN大神hguisu的文章"机器学习排序": http://blog.csdn.net/hguisu/article/details/79 ...
- [Machine Learning] Learning to rank算法简介
声明:以下内容根据潘的博客和crackcell's dustbin进行整理,尊重原著,向两位作者致谢! 1 现有的排序模型 排序(Ranking)一直是信息检索的核心研究问题,有大量的成熟的方法,主要 ...
- learning to rank
Learning to Rank入门小结 + 漫谈 Learning to Rank入门小结 Table of Contents 1 前言 2 LTR流程 3 训练数据的获取4 特征抽取 3.1 人工 ...
- Learning to Rank 简介
转自:http://www.cnblogs.com/kemaswill/archive/2013/06/01/3109497.html,感谢分享! 本文将对L2R做一个比较深入的介绍,主要参考了刘铁岩 ...
- 【模式识别】Learning To Rank之RankBoost
RankBoost的思想比較简单,是二元Learning to rank的常规思路:通过构造目标分类器,使得pair之间的对象存在相对大小关系.通俗点说,把对象组成一对对的pair,比方一组排序r1& ...
- Learning To Rank之LambdaMART前世今生
1. 前言 我们知道排序在非常多应用场景中属于一个非常核心的模块.最直接的应用就是搜索引擎.当用户提交一个query.搜索引擎会召回非常多文档,然后依据文档与query以及用户的相关程度对 ...
随机推荐
- ASP.NET MVC 5 ABP DataTables (一)
1)ABP DataTables 应用(一) 2) ABP DataTables 应用(二) JS DataTables 这个组件绑定数据必须要有自己的返回数据格式.但是ABP返回的格式直接绑定是错 ...
- BZOJ 2406: 矩阵 [上下界网络流 二分答案]
2406: 矩阵 题意:自己去看吧,最小化每行每列所有元素与给定矩阵差的和的绝对值中的最大值 又带绝对值又带max不方便直接求 显然可以二分这个最大值 然后判定问题,给定矩阵每行每列的范围和每个元素的 ...
- JavaScript之父谈JavaScript
本文翻译自popularity,为了更好的阅读我把部分内容进行了增删改,如果你英语比较好,建议直接阅读原文,因为这篇文章是我通过google翻译再进行修改的. 貌似(根据一位精神导师的说法)JavaS ...
- ECS的配置与使用
登录阿里云ECS,系统是centos7.2 在linux下通过useradd方式创建新用户,切换到该用户权限,发现-bash-4.2$ . 解决方法:先查看进程,关闭相关进程.然后使用useradd ...
- [Uva10294]Arif in Dhaka
[Uva10294]Arif in Dhaka 标签: 置换 Burnside引理 题目链接 题意 有很多个珠子穿成环形首饰,手镯可以翻转和旋转,项链只能旋转.(翻转过的手镯相同,而项链不同) 有n个 ...
- Jenkins gitlab vue,angular,react 自动化构建【原】
大致思路,(本篇主要讲vue ,当然了 angular react 也是一样配置) ,转发请注明原链接,谢谢 :) 1. 服务器上面配置jenkins (安装配置,不介绍) 2.新建item 自由风格 ...
- Spring中的@scope注解
默认是单例模式,即scope="singleton".另外scope还有prototype.request.session.global session作用域.scope=&quo ...
- 计蒜客的一道题dfs
这是我无聊时在计蒜客发现的一道题. 题意: 蒜头君有一天闲来无事和小萌一起玩游戏,游戏的内容是这样的:他们不知道从哪里找到了N根不同长度的木棍, 看谁能猜出这些木棍一共能拼出多少个不同的不等边三角形. ...
- foo的出现
在计算机程序设计与计算机技术的相关文档中,术语foobar是一个常见的无名氏化名,常被作为“伪变量”使用. 从技术上讲,“foobar”很可能在1960年代至1970年代初通过迪吉多的系统手册传播开来 ...
- Kotlin——基础的函数/方法详解
对于Kotlin中的函数来说,和JavaScript或者Lua这些语言很像,它有着这些语言的特性.但是也与这些语言就着许多不同之处.或许你更了解Java语言,然而对于Java语言来说,它不是不是闭包这 ...