1. 概述
在搜索引擎和个性化推进、自然语言处理等很多场景都需要处理排序的问题,最近接触到使用机器学习来排序。我们都知道机器学习经常用于处理分类,回归,聚类问题,使用机器学习来排序,一开始感觉理解起来感觉非常困难。看了几篇文章理解到,这个领域称为Learn to Rank(L2R),研究的人还挺多,大致的思想是将排序问题转化为分类或回归问题,然后使用机器学习的方法优化。强烈建议排序小白先看参考资料1和2,了解机器L2R的基本概念和使用场景。本文根据自己的理解尝试梳理现在使用较多的L2R算法GBrank和LambdaMART。
2. GBrank
GBrank是排名学习中的点对型(pairwise)方法中的一种,它将排序问题转化为回归问题,由于经常结合GBDT算法优化的模型,因此称为GBrank。GBrank模型的难点怎么将排序问题转化为回归问题? 和其它Pairwise方法一样,GBrank需要利用两个想个查询结果之间的相对相关度,就是说对于一个查询,判断两个查询结果中哪一个更相关(好)。将上述描述为gbrank根据训练数据训练出一个函数h(x),对于一个查询q的的查询结果中一对<xi,yi>,如果xi比yi更相关,h(xi)>= h (yi)。代价函数的含义是当h满足给点的偏好数据时,代价为0,否则代价差值的平方。
假设存在训练集:
目标函数:
避免函数h为常数,加入tau,0<= tau <=1:
分别对h(xi),h(yi),负梯度方向为:
当h满足<xi,yi>时,上式都为0,不满足时负梯度分别为:
根据上式,获得每次迭代式更新数据的方式:
GBrank算法步骤:
1.初始化h0为一个常数
2.使用hk-1最为目前近似的h,将数据集S划分为两个部分:
3.使用上面更新数据的方式更新数据,并且根据更新的数据使用GDBT的方式,得到函数gk(x)
4.更新hk(x)
参考资料:
http://www.cnblogs.com/kemaswill/p/3241963.html#3366482
http://www.cnblogs.com/kemaswill/archive/2013/06/01/3109497.html