LambdaMART是一种state-of-art的Learning to rank算法,由微软在2010年提出[1]。在工业界,它也被大量运用在各类ranking场景中。LambdaMART可以看做GDBT版本的LambdaRank,而后者又是基于RankNet发展而来的。RankNet最重要的贡献是提出了一种pairwise的用于排序的概率损失函数,而LambdaRank又在损失函数中巧妙的引入了NDCG等ranking metrics来优化排序效果。LambdaMART则是集大成者,它结合了上述两篇文章中提出的Lambda函数以及GDBT这个效果经过实践证明的ensemble算法,在各种排序问题中均能取得不错的效果。下面是目前的一些开源实现:

RankNet

RankNet是2005年微软提出的一种pairwise的Learning to rank算法,它从概率的角度来解决排序问题。RankNet提出了一种pairwise的概率损失函数,并可以应用于任意对参数可导的学习算法。在论文中,RankNet基于神经网络实现,除此之外,GDBT等模型也可以应用该损失函数。

RankNet是一个pairwise的算法,它首先将训练数据中同一Query下的doc两两组成pair,用{Ui,Uj}表示。模型的学习目标是得到一个打分函数f(x),它的输入是某个doc的特征向量x,输出是一个实数,值越高代表该doc的排序位置应该越靠前。也就是说,当f(xi)>f(xj)时,Ui的排序位置应该在Uj之前,用Ui ▷ Uj表示。基于此,我们定义Ui比Uj排序位置更靠前的概率如下,其中,s=f(x).

我们的目标概率(理想情况,预测概率应该尽可能拟合的概率)如下:

为了方便计算,我们令:

这样,根据Ui和Uj的标注得分,就可以计算P‘ij。

有了目标概率和模型预测概率,使用交叉熵损失函数(cross entropy loss function)作为概率损失函数,它衡量了预测概率和目标概率在概率分布上的拟合程度:

求上式关于si的偏导,由于对称性可以得到如下结论:

计算C关于模型参数wk的偏导,并应用gradient descent求解:

总的来说,RankNet从概率角度定义了排序问题的loss function,并通过梯度下降法求解。所以RankNet依赖的模型必须是平滑的,保证梯度是可以计算的。在paper中,作者选择一个两层的神经网络作为排序模型。除此之外,选择GBDT也可以取得不错的效果。

交叉熵

设随机变量X服从的概率分布为p(x),往往p(x)是未知的,我们通过统计方法得到X的近似分布q(x),则随机变量X的交叉熵为:

它衡量了q(x)和p(x)的拟合程度

加速学习算法

在上述的学习过程中,每一对样本{Ui,Uj}都会更新一次参数w,如果采用BP神经网络模型,每一次更新都需要先前向预测,再误差后向反馈,训练过程非常慢。因此,有了下面的加速算法;

对于给定的样本对Ui,Uj,我们有如下推导:

![][07]

这里我们定义:

![][08]

梯度下降量的求解如下:

![][09]

其中,为了计算简便,我们令{i,j}满足Ui>Uj,所以有

![][10]

上两式合并有:

![][12]

其中:

![][11]

这样,我们将每更新一次w,计算一个样本对{Ui,Uj}

改为了计算Ui所能组成的所有样本对。加速算法可以看成是一种mini-batch的梯度下降算法。

LambdaRank

在RankNet中,我们使用了交叉熵概率损失函数,并作为最优化的目标。但对于IR问题,通常选择NDCG、ERR作为评价指标,这两者间存在一定的mismatch。另一方面,NDCG、ERR是非平滑、不连续的,无法求梯度,不能直接运用梯度下降法求解,将其直接作为优化目标是比较困难的。因此,LambdaRank选择了直接定义cost function的梯度来解决上述问题。

LambdaRank是一个经验算法,它直接定义的了损失函数的梯度λ,也就是Lambda梯度。Lambda梯度由两部分相乘得到:(1)RankNet中交叉熵概率损失函数的梯度;(2)交换Ui,Uj位置后IR评价指标Z的差值。具体如下:

![][15]

Z可以是NDCG、ERR、MRR、MAP等IR评价指标

损失函数的梯度代表了文档下一次迭代优化的方向和强度,由于引入了IR评价指标,Lambda梯度更关注位置靠前的优质文档的排序位置的提升。有效的避免了下调位置靠前优质文档的位置这种情况的发生。

LambdaRank相比RankNet的优势在于考虑了评价指标,直接对问题求解,所以效果更好。

LambdaMART

LambdaRank中重新定义了损失函数的梯度,而这个Lambda梯度可以应用于任何使用梯度下降法求解的模型。自然,我们想到了将Lambda梯度和MART结合,这就是LambdaMART。

MART

学习过程

Ranklib

java lambdamart库,LambdaMART笔记相关推荐

  1. java lambdamart库,LambdaMART简介——基于Ranklib源码(一 lambda计算)

    学习Machine Learning,阅读文献,看各种数学公式的推导,其实是一件很枯燥的事情.有的时候即使理解了数学推导过程,也仍然会一知半解,离自己写程序实现,似乎还有一道鸿沟.所幸的是,现在很多主 ...

  2. java lambdamart库,LambdaMART 之 lambda(示例代码)

    LambdaMART 之 lambda 概念 LTR 排序学习主要用于对召回结果的精排,主流使用基于pair(文档对标记)的 LambdaMART 算法,该算法由两部分组成:lambda + MART ...

  3. log4j linux如果日志目录不存在,Java日志库学习笔记

    (未完成,待修改) 一.安装Log4j log4j的库文件可以在官方网站下载: 二.log4j.properties的目录搜索规则 在src/目录下创建一个log4j.properties文件,即LC ...

  4. JAVA学习笔记—JAVA SE(四)JAVA核心库类(下)

    文章目录 四.JAVA核心库类(下) 1. 异常机制和File类 1.1 异常机制 1.1.1 基本概念 1.1.2 异常的分类 1.1.3 异常的避免 1.1.4 异常的捕获 1.1.5 异常的抛出 ...

  5. 编程方法学26:介绍Java标准库

    前言 本笔记是斯坦福公开课,编程方法学的学习笔记. 总体而言,这门课讲了很多很基础的东西,具有很强的通用性. 正文 本次的笔记对应的是第二十六节课,这堂课是来讲Java标准库的知识. 1ACM lib ...

  6. JAVA并发编程实践笔记

    2019独角兽企业重金招聘Python工程师标准>>> JAVA并发编程实践笔记 博客分类: java JAVA并发编程实践笔记 1, 保证线程安全的三种方法:     a, 不要跨 ...

  7. Java核心技术卷一读书笔记

    文章目录 Java核心技术卷一读书笔记 第一章 Java程序设计概述 1.1 关键特性 第二章 Java程序设计环境 2.1 使用命令行工具 第三章 Java的基本查询设计结构 3.1 数据类型 3. ...

  8. 夯实JAVA基础(个人笔记)

    夯实JAVA基础(个人笔记) 一.Java 异常处理 二.泛型 三.集合 四.算法 五.输入与输出(字节流和字符流) 六.并发和多线程 七.网络连接 八.lambda表达式 九.反射 十.Java S ...

  9. Java基础篇 学习笔记

    List item Java基础篇 学习笔记 java基础篇 第1章 计算机.程序和java概述 学习笔记 1.1什么是计算机 简单来说:计算机就是 ' 存储 ' 和 ' 处理 ' 数据的电子设备. ...

最新文章

  1. java 不退出_Java项目不挂断运行,即当账户退出或终端关闭时,程序仍然运行,并附上执行脚本...
  2. AlertDialog创建6种对话框的用法
  3. 1650显卡和1050T显卡差距大吗?
  4. Java项目案例之---定时器的使用
  5. 最好用的OCR实时翻译工具:Bob for Mac
  6. Java程序员不得不会的124道面试题(含答案)
  7. Gifox for Mac 1.6.0 优秀的Gif动画录制工具 破解版下载
  8. 从零开始SpringCloud Alibaba实战(47)——阿里开发手册泰山版学习笔记一 命名风格
  9. 贵州大学计算机学院研究生成绩查询,贵州大学计算机科学与技术学院2008年硕士研究生初试、复试总成绩一览表...
  10. 2020年android studio ------jni常用函数总结
  11. 曾经跨过山和大海的百度AI技术汇,跨进北工大!
  12. Rust 学习3, 枚举,集合
  13. html 水平柱形图,CSS实现柱形图效果的代码示例
  14. 【ansys workbench】3.圆角L型支架的应力结果
  15. MySQL的TRUNCATE()函数
  16. mysql相关的dll_libmySQL.dll,下载,简介,描述,修复,等相关问题一站搞定_DLL之家
  17. hdoj 1878 欧拉回路
  18. 『干货』深度强化学习与自适应在线学习的阿里实践
  19. 如何提出保存PDF指定的几页
  20. rz后远程服务器没反应,“通过jumpserver远程登录linux服务器,rz上传文件速度过慢”问题的解决...

热门文章

  1. Taro 兼容 h5 踩坑指南
  2. 拆解老古董:一台60年代的双矿石收音机
  3. MATLAB 把坐标轴(X Y轴)移到坐标原点
  4. 2022-2028年中国艾灸市场研究及前瞻分析报告
  5. R(2)时间序列分析及应用之TSA安装(R语言)
  6. noip2003侦探推理详解
  7. 省选+NOI 第一部分 动态规划DP
  8. Python爬虫:wallhaven图片爬取
  9. 《爬虫爬 wallhaven.cc壁纸》
  10. 前端开发需要会什么?先掌握这三大核心关键技术