赞
踩
1.基本概念解释
1.1 LTR (learning to rank) 意思是 ‘学习排序’,就是排序的机器学习技术
1.2 CTR (click through rate) 意思是‘点击率(预估)’,这个很常见的二分类问题(点击概率0-1)
1.3 pointwise 含义是单点(单文档)角度 pairwise 含义是文档对角度 listwise 含义是(推荐)文档列表角度
2.具体关系讲述
LTR是排序技术,常用语搜索推荐场景,具体如何进行排序的学习,样本如何提取,方案和思路就是上述三个角度。
具体例子,比如query为 ‘1岁男宝奶瓶’,出现各个商家的奶瓶商品信息列表
用户可能会进行后续操作,比如滑动浏览了多少个条目,有哪些点击进入详情页面了,有哪些进入详情页时间较长,有哪些加车,有哪些购买了,诸如此类的后续行为日志。
有了这些可以利用的标注数据,如何进行排序模型的学习?
先不考虑不同动作含义权重不一样,简单点,一个很直观的思路就是直接利用点击进入详情代表用户点击了,曝光未点击为负样本,曝光点击为正样本,然后构建 (query特征 | 商品信息特征 | query-商品匹配(交叉)特征, label) 这样的(x,y)对进行训练,预测得到的yhat代表了点击概率,这就是典型的CTR思路。一言以蔽之,CTR是LTR pointwise的运用。
为何还要有pairwise呢?有些网上的博客文章也没讲特别透彻,个人理解是这样的。对于不同位置的的点击与否,权重是不一样的,比如越高的理论上有所谓的位置偏向,理论上没有点击应该惩罚多一些,相反,位置靠下的点击了鼓励应该多一些,所以可以根据不同位置是否点击进行不同级别的标记,比如 优(位置不好点击了)/良(正常点击)/中(非差情况未点击)/差(位置好没有点击)几个等级的匹配,理论上可以进行不同分值的标记,比如1.0,0.8, 0.2,0等标记让模型去分类(回归)。但是有个问题是人为的标记量化了各个指标的差异,而且难免有误差。另一个更科学的思路是,我不知道良比中好多少,但是我知道良一定是要比中好的,所以,对于各个文档比较是否正确构建损失函数的来进行模型的训练和学习是更加合理科学的选择。
那listwise呢?上面的pairwise一个显著的缺点是复杂度高,理论上C(n,2) = O(n^2)时间复杂度。所以考虑直接以整个文档来构建损失,而不是两两比较各个样本。那如何考虑整个list呢?也是ctr的思路,就是有一个评分函数,但是我不是让它预测概率,我是让它预测各个(query,doc)的分数,这样可以得到这个list的分布,以上面的日志数据标注的list作为参照,可以比较两个list的分布差异,这样来进行模型的训练,直到模型收敛,预测得到排序列表接近于理想的list分布。
据笔者了解和认识,现在大规模的应用中,用于搜索推荐的场景,listwise的lamdamart应用的比较多,其他非query的推荐场景,pointwise的ctr用的更多些。从本质上来讲,三种训练模式都是为了训练一个评估点击概率的函数,只不过训练阶段的损失构建方式不一样而已,而到了线上应用,他们的使用方法是一样的,都是根据评分来排序即可。
另 lamdamart思路比较牛逼的地方在于,它不是传统的优化问题算法思路,即先构建损失函数,求(偏)导梯度下降求最小值。因为梯度下降也是利用梯度(偏导)来进行真正的计算,所谓损失函数不事先定义也可以。它更关注了梯度本身的含义,直接构造了梯度,而且再构造的梯度上加入了不平滑没法直接求梯度的评价指标部分,更加直接的朝着优化方向前进,这个思路值得借鉴学习。
附学习博客链接:
Learning To Rank之LambdaMART的前世今生
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。