排序算法-Learn To Rank

简介:

目前广泛使用的一些排序算法,如点击率预估,本质上还是二分类算法,尽管线上效果还不错,但是距离实际需求还有差距:

  • 排序任务关心的是相对顺序正确与否,而不是对“单个物料的点击概率”预测得是否精准。
    在这里插入图片描述

算法:

LambdaMART:组合了 LambdaRank 和 MART(Multiple Additive Regression Trees)。LambdaMART 使用 LambdaRank 里的损失函数和梯度提升决策树来求解 Rank 任务。

评测标准:

D C G p = ∑ i = 1 p r e l i log ⁡ 2 ( i + 1 ) = r e l 1 + ∑ i = 2 p r e l i log ⁡ 2 ( i + 1 ) DCG_{p} =\sum _{i=1}^{p}{\frac {rel_{i}}{\log _{2}(i+1)}}=rel_{1}+\sum _{i=2}^{p}{\frac {rel_{i}}{\log _{2}(i+1)}} DCGp=i=1plog2(i+1)reli=rel1+i=2plog2(i+1)reli
IDCG, 即Ideal DCG, 指系统为某一用户返回的最好结果列表, 即假设返回结果按照相关性排序, 最相关的结果放在最前面, 此序列的DCG为IDCG。

DCG的值介于 (0,IDCG] ,NDCG的值介于(0,1] 。

可以引入业务相关性:DCG of Revenue/GMV
D C G p = ∑ i = 1 p r e v i log ⁡ 2 ( i + 1 ) , r e v i : R e v e n u e / G M V DCG_{p} =\sum _{i=1}^{p}{\frac {rev_{i}}{\log _{2}(i+1)}}, rev_{i}:Revenue/GMV DCGp=i=1plog2(i+1)revi,revi:Revenue/GMV

特征:

训练样本构造:

构建出<q, p, r-score>的数值pair对,q表示用户的查询query,p表示通过q召回的商品product,r-score表示商品p在查询条件q条件下的相关性得分。一般有两种方法,人工标注和线上用户行为日志。

LambdaMART 训练数据的格式:

<target> qid:<qid> <feature>:<value> <feature>:<value> ... <feature>:<value> # <info>

<target> 是相关性得分,<qid> 是每个 query 的序号,<feature> 是特征项的编号,<value> 是对应特征项归一化后的数值,<info> 是注释项,不影响训练结果。

Each row is a query-document pair. The first column is relevance label of this pair, the second column is query id, the following columns are features, and the end of the row is comment about the pair, including id of the document. The larger the relevance label, the more relevant the query-document pair.

人工标注

根据给定的query商品对,人工判断商品和query是否相关以及相关强度。

该强度值可以用数值序列来表示,常见的是5档评分(1:差,2-一般,3-好,4-优秀,5-完美)。人工标注一方面是标注者的主观判断会受其背景、爱好等因素的影响,另一方面,实际查询的的query和相关商品数量比较多,多以全部靠人工标注工作量大,一般很少采用。

用户反馈的行为

如何寻找获取方便且具有代表性的相关性的度量指标是一个很重要的事情。选用用户的点击与购买等行为来代替对商品的相关性及商品优劣的判断,实现低成本的query-product相关性标注。

从用户真实的搜索和点击日志中,挖掘出同一个query下,商品的排序位置和这个位置上的点击数,如query_1有3个排好序的商品a,b,c,但是b得到了更多的点击,那么b的相关性可能更好于a。点击数据隐式地反映了相同query下搜索结果相关性的好坏。

Pair构造

  • 使用点击反馈来形成pair:
    整体统计ctr样本选择:统计同query下,每个商品的点击率,将点击率平滑后,将点击率相差一定以上的商品形成pair。
    ctr单次PV样本选择:计算特征值需要还原到单次PV下具体的用户以及当前环境,购买>点击>无行为,通过统计ctr过滤掉其中的噪音。

  • 使用无点击的数据来形成pair:
    在样本中加入一部分通过原始排序来生成的pair,这样的目的是使排序的参数变化不至于太剧烈,形成一些意想不到的的badcase。样本根据展示日志中原始商品的排序,第1个商品好于第20个商品,第2个商品好于第21个商品,等等。
    按不同比例混合无点击与Ctr样本,比如50%无点击样本。

模型评估

  • 1.线上AB评估
  • 2.离线评估
    离线模拟rank逻辑对pvlog进行重排。
    和线上排序对比计算NDCG收益。
    分析NDCG变差的case。

工具包:

SVM-Rank

RankLib

TensorFlow Ranking

XGboost

XGBoost使用LambdaMART注意问题:
params:

‘objective’: ‘rank:pairwise’
‘eval_metric’: ‘ndcg@10-’

Data:

https://www.microsoft.com/en-us/research/project/letor-learning-rank-information-retrieval/

Reference:

https://blog.csdn.net/starzhou/article/details/51518485

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值