RankLib

链接

overview

RankLib是一个使用java实现的Learning to rank的算法库,主要实现了以下几种算法:

  1. MART (Multiple Additive Regression Trees, a.k.a. Gradient boosted regression tree
  2. RankNet,pair-wise
  3. RankBoost
  4. AdaRank, list-wise
  5. Coordinate Ascent, list-wise
  6. LambdaMART, list-wise 微软
  7. ListNet, list-wise
  8. Random Forests RankLib同时也实现了信息检索领域的评测函数,MAP,NDCG.

Learn to Rank

链接

LTR 算法通常有三种手段,分别是:Pointwise、Pairwise 和 Listwise。Pointwise 和 Pairwise 类型的 LTR 算法,将排序问题转化为回归、分类或者有序分类问题。Listwise 类型的 LTR 算法则另辟蹊径,将用户查询(Query)所得的结果作为整体,作为训练用的实例(Instance)

pointwise

pairwise

Listwise


LambdaMART

链接

  1. LambdaMART是Learning To Rank的其中一个算法,适用于许多排序场景。它是微软Chris Burges大神的成果,最近几年非常火,屡次现身于各种机器学习大赛中,Yahoo! Learning to Rank Challenge比赛中夺冠队伍用的就是这个模型[1],据说Bing和Facebook使用的也是这个模型。

  2. LambdaMART模型从名字上可以拆分成Lambda和MART两部分,表示底层训练模型用的是MART(Multiple Additive Regression Tree),如果MART看起来比较陌生,那换成GBDT(GradientBoosting Decision Tree)估计大家都很熟悉了,没错,MART就是GBDT。Lambda是MART求解过程使用的梯度,其物理含义是一个待排序的文档下一次迭代应该排序的方向(向上或者向下)和强度。将MART和Lambda组合起来就是我们要介绍的LambdaMART。Lambda就是用户自定义的梯度

  3. lambdaMART优势:

    3.1 适用于排序场景:不是传统的通过分类或者回归的方法求解排序问题,而是直接求解

    3.2 损失函数可导:通过损失函数的转换,将类似于NDCG这种无法求导的IR评价指标转换成可以求导的函数,并且富有了梯度的实际物理意义,数学解释非常漂亮

    3.3 增量学习:由于每次训练可以在已有的模型上继续训练,因此适合于增量学习

    3.4 组合特征:因为采用树模型,因此可以学到不同特征组合情况

    3.5 特征选择:因为是基于MART模型,因此也具有MART的优势,可以学到每个特征的重要性,可以做特征选择

    3.6 适用于正负样本比例失衡的数据:因为模型的训练对象具有不同label的文档pair,而不是预测每个文档的label,因此对正负样本比例失衡不敏感