机器学习有三大问题,分类、回归和排序。分类和回归之前了解了很多的算法,但排序还没有深入的了解过。

Learning to Rank有很多种典型的应用。包括:

  • document retrieval
  • expert search
  • definition search
  • collaborative filtering
  • question answering
  • keyphrase extraction
  • document summarization
  • machine translation

这一长串下来,想必重要性不言而喻。话不多说,开始正题。

基本定义

了解一个算法,要从它的目标和数据开始。Ranking的基本流程如下:

给定一个query,得到一批文档。优化的目标自然就是相关性越高的文档排在前面越好。那么如何量化这个指标呢?有三种函数可以量化这个指标:

  • DCG(Discount Cumulative Gain)
  • NDCG(Normalized Discount Cumulaive Gain)
  • MAP (Mean Average Precision)

先从DCG开始说,对于查询到的每一个样本来说,标注好的数据中它都会有一个评分,该评分也相当于类别,这个评分越高,表明这个样本越相关。DCG的基本思想就是排名越高的结果越相关那么DCG值就会越大。

DCG的公式表示,对于每次查询得到的结果排列,对于前k个结果中的每一个样本,计算一个总评分,该评分由两项相乘得到,G(j)与相关性有关,相关性越大,G(j)越大,而且是以指数级增长;D(pi(j))则和位置有关,位置越靠前,就越重要,以对数的倒数形式衰减。

NDCG是归一化后的DCG,它表示的是,对DCG进行归一化,使得相关性排序正好从高到低时,值为1。所以在此不赘述了

下面说说MAP,如下:

需要注意的是,MAP中,结果只有相关和不相关两种,即1和0。 
P(j)表示,到位置j时,前j个结果中有多少相关的结果的比率。而AP的定义则表示,所有相关结果位置上的准确率的平均。而MAP则是,所有样本上AP值的平均。

在具体的算法中,上述的指标是无法直接优化的,只能采用各种各样的妥协,比如:

这三种都是1-NDCG的upper bound函数(这里我还没明白)。但这三种则代表了不同类型的妥协,第一种是pointwise的,因为在单个样本上计算损失。第二种是pairwise的,在成对的样本上计算损失。第三种是listwise的,因为直接在list上计算损失。

Pointwise方法

Pointwise方法包括:

  • Subset Ranking
  • McRank
  • Prank
  • OC SVM

以OC SVM为例,她是传统SVM的变形,通过增多偏移量的方式,实现多个分类面,从而达到分类的目的。

以最简单的线性分类器来看,传统的SVM计算分类面的方式是w·x+b,而OC SVM则是有多个b,从而构造了多个平行的分类面,如下所示:

反映在目标函数上就是:

Pairwise方法

pairwise方法包括:

  • Ranking SVM
  • RankBoost
  • RankNet
  • GBRank
  • IR SVM
  • Lambda Rank
  • LambdaMART

Ranking SVM

通过把问题简化,变成判断两个样本先后的二分类问题:

反映在目标函数上就是:

IR SVM

Ranking SVM的简化方法导致该算法具有两个缺点:

  • 没有区分不同相关性文档的重要程度
  • 没有区分不同query间pair对的重要程度

为了解决这两个问题,对Hinge Loss做出了改进,对不同类型的pair进行加权。

反映在目标函数上就是:

加权的两个函数一个用来衡量不同相关性的样例,一个用来衡量不同query的样例。而加权的方法是采用先验方法来做。对于不同相关性的文档,要根据其相关性值来确定函数,对于不同query,根据该query产生的pair对的数目的倒数来加权。

Listwise方法

Listwise方法包括:

  • ListNet
  • ListMLE
  • AdaRank
  • SVM MAP
  • SoftRank

以SVM MAP为例,对于一个query,查询到的样本会形成一个排列,该排列的得分可以用如下函数衡量:

而真正要优化的额函数,如下:

其中,E可以是NDCG或MAP。

对上面的函数进行转化,取它的upper bound。如下:

这里是upper_bound的原因是因为后面那个被乘项要么是负,要么是零。由此,本来该求最小值,也变成了求最大值。

然后还是不能继续优化,所以还得再做两个变换。

  • 将0-1(不等号)函数转化:

  • 因为 

从而,问题就转化成了如下:

这样就变为了可以优化的问题。

未来的研究方向

  • training data creation
  • semi-supervised learning and active learning
  • feature learning
  • scalable and efficient training
  • domain adaption and multi-task learning
  • ranking by ensembel learning
  • global ranking
  • ranking of nodes in a graph

参考文献

[1]. Hang L I. A short introduction to learning to rank[J]. IEICE TRANSACTIONS on Information and Systems, 2011, 94(10): 1854-1862.

from: http://blog.csdn.net/stdcoutzyx/article/details/50879219

Learning to Rank简介相关推荐

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

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

  2. Learning to Rank 简介

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

  3. Learning to Rank 简介(转载)

    Learning to rank(简写 LTR.L2R) 也叫排序学习,指的是机器学习中任何用于排序的技术. 目录 一.LTR引言 1.1 LTR的出现背景 1.2 LTR基本框架 二.训练数据的获取 ...

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

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

  5. Learning to rank 小结

    1.现有排序模型 排序(Ranking)一直是信息检索的核心研究问题,有大量的成熟的方法,主要可以分为以下两类:相关度排序模型和重要性排序模型. 1.1 相关度排序模型(Relevance Ranki ...

  6. Learning to Rank(LTR)

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

  7. Learning to Rank(LTR)(转)

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

  8. 利用lightgbm做learning to rank 排序,解析模型中特征重要度

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

  9. Learning to Rank基于pairwise的算法(一)——Ranking SVM、MHR、IRSVM

    1.概述 对于搜索任务来说,系统接收到用户查询之后,返回相关文档列表.所以问题的关键是确定文档之间的先后顺序,而pairwise则将重点转向对文档关系是否合理的判断. 在pairwise中,排序算法通 ...

最新文章

  1. 北方工业大学计算机科学与技术复试分数线,北方工业大学复试分数线
  2. JSON 序列化和反序列化——JavaScriptSerializer实现
  3. Yunyang tensorflow-yolov3 voc_train.txt以及voc_test.txt引用的路径位置
  4. 统计学习方法第四章课后习题(转载+重新排版+自己解读)
  5. python中list函数中variables变量_如何在Python中使用变量,浅谈,Pytorch,的,Variable,方法...
  6. mysqlfor循环中出错继续_Python学习笔记(循环)
  7. ug添加imachining变量_UG用的不够快?是不是还没建标准库
  8. python求组合数_求组合数的算法_Cppowboy's Blog - SegmentFault 思否
  9. (44)System Verilog 类中变量随机激励约束
  10. skimage io.imread
  11. java学生管理系统(简单版)
  12. 求解幂集问题(c语言+蛮力法)
  13. springboot整合J2cache简单使用
  14. Android编译预制过高版本app导致编译错误解决
  15. 跑步减肥的正确姿势与方法 不再担心女生跑步腿会变粗
  16. Gurub linux windows,windows10安装ubuntu双系统教程(绝对史上最详细)
  17. 帝国 loginjs.php,帝国CMS页面JS调用登录状态loginjs.php中获取会员头像的方法
  18. wps转换成word如何实现?不妨试试这两个小技巧
  19. 亚马逊账号关联的后果是什么
  20. android 尺寸转换工具,Android APP界面标注、尺寸换算和APP标注工具

热门文章

  1. RuoYi后台系统权限管理解析
  2. MAP(Mean Average Precision):
  3. 2015年你必须学习的编程语言和前端框架
  4. 实现主成分分析和白化
  5. 稀疏自编码器符号一览表
  6. Spring-AOP基础知识
  7. Shell-通过shell启动Java类中的main方法 + 通过Shell启动jar包
  8. 学习笔记Spark(一)—— Spark入门
  9. gdb 版本和gcc版本的对应关系_GNU发布GDB新版本 10.1和 mtools 4.0.25
  10. 删除机器人 异星工厂_10个视频,它们是国内智能工厂的标杆