RankBoost的思想比较简单,是二元Learning to rank的常规思路:通过构造目标分类器,使得pair之间的对象存在相对大小关系。通俗点说,把对象组成一对对的pair,比如一组排序r1>r2>r3>r4,那可以构成pair:(r1,r2)(r1,r3),(r1,r4),(r2,r3)(r3,r4),这样的pair是正值,也就是label是1;而余下的pair如(r2,r1)的值应该是-1或0。这样一个排序问题就被巧妙的转换为了分类问题。近来CV界很多又用这种learning to rank的思想做识别问题(最早应该是这篇《Person Re-Identification by Support Vector Ranking》),也就是把识别转换为排序问题再转换为分类问题。
Pairwise的排序方法主要用RankSVM和RankBoost,这里主要说RankBoost,整体还是一个Boost的框架:
注意其与常规Boost的不同组要是Update的时候,当然数据分布也不同。这里可以看出对于最终的排序值,也就是ranking score,其值是没有实际意义的,相对的顺序才有意义。比如r1和r2最终得分是10分和1分,与r1,r2最终得分是100分和1分的信息量差别并不大,我们能得到的结论都是r1应该排在r2前面。
由于和传统的Boost目标不一样,求解也需要非常巧妙的方法,主要在于定义分类器的Loss函数:

RankBoost是一种二元Learning to rank方法,它将排序问题转化为分类问题。通过对pairwise比较构造目标分类器,调整对象相对大小关系。算法在更新阶段与常规Boost不同,关注的是相对顺序而非具体分数。损失函数的定义和巧妙的优化策略使其能有效解决问题,但内存消耗大是其显著问题。常见应用包括排序和识别问题。
最低0.47元/天 解锁文章
2753





