码迷,mamicode.com
首页 > 编程语言 > 详细

机器学习之排序

时间:2016-06-01 23:02:52      阅读:1889      评论:0      收藏:0      [点我收藏+]

标签:

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

机器学习之排序

标签:

原文地址:http://www.cnblogs.com/wxquare/p/5531431.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!