1. Learning to Rank (LTR) 简介
![19cab0a9-4e37-eb11-8da9-e4434bdf6706.png](http://p03.5ceimg.com/content/19cab0a9-4e37-eb11-8da9-e4434bdf6706.png)
LTR是一种机器学习算法,所以和所有机器学习算法一样,在应用的过程中需要先经过训练(training)阶段,再到应用(Prediction)阶段。
LTR任务在一个query中包含特征数据以及标签(相关度数据)
1.1 LTR与一般机器学习算法
LTR与常见机器学习算法也有不一样的地方:
- 从上图来看,而对于LTR任务来说,在评价之前多了一个ranking部分。
一般的机器学习算法不包括ranking 。 - 评价指标不可直接优化,这与分类任务有点类似,但并不一样。
回归任务的评价指标:RMSE等可以直接反应模型对数据拟合的好坏。
分类任务的评价:acc,recall,precision等需要通过预测结果是否正确重新计算。
排序任务可以类比为回归任务,直接拟合; 但对于相关度(2,1,0)来说,模型预测为(10,1,0)却比(1,2,0)拥有更大的损失,但前者是一种更好的结果。
也可以类比为分类任务;但排序中的各类别(2,1,0)之间并非完全独立,类别1与类别2的距离应该比类别0到类别2的距离更近。
1.2 LTR的优化方法
代理损失函数
各种回归、分类的任务的损失函数,也可以应用到排序中。
作为回归任务,可以直接用RMSE作为目标。catboost的benchmark中,RMSE获得非常不错的效果。
类比分类任务,可以做一些改动,比如DLCM中的 attention Rank
其中当
排序算子
既然由于排序的存在使得排序指标不可直接优化,那何不想办法将此算子换成一种可导的算法?
代表作softRank,