Learning to Rank小结

Learning to Rank小结 - Searcher's Log

    Searcher's Log home wiki about
    Learning to Rank小结

    /* -*- author: Tan Menglong; email: tanmenglong_at_gmail; twitter/weibo: @crackcell; 转载请注明出处 -*- */
    Table of Contents

        1 前言
        2 LTR流程
        3 训练数据的获取
            3.1 人工标注
            3.2 搜索日志
            3.3 公共数据集
        4 特征抽取
        5 模型训练
            5.1 训练方法
                5.1.1 Pointwise
                5.1.2 Pairwise
                5.1.3 Listwise
        6 效果评估
            6.1 NDCG(Normalized Discounted Cumulative Gain)
                6.1.1 定义
                6.1.2 描述
            6.2 MAP(Mean Average Precision)
                6.2.1 定义
                6.2.2 描述
        7 参考

    1 前言

    在传统搜索引擎的ranking策略中,一般会包含若干子策略,子策略通过若干种方式组合成更大的策略一起发挥作用。策略的组合方式以及参数一般采取人工或者半人工的方式确定。随着策略的逐步细化,传统的方式变得越来越困难。于是Learning to Rank(LTR)就被引入了进来。LTR的核心是想是用机器学习来解决排序的问题。目前被广泛运用在 信息检索(IR) 、 自然语言处理(NLP) 和 数据挖掘(DM) 中。 LTR是监督的学习。建好模型之后,需要用训练数据集的人工标注结果来训练。
    2 LTR流程

    ./NOTE_a_short_intro_2_ltr-training_process.png [[./NOTE_a_short_intro_2_ltr-training_process.png][./NOTE_a_short_intro_2_ltr-training_process.png]]
    3 训练数据的获取

    有2种获取训练数据的来源:1)人工标注;2)搜索日志。
    3.1 人工标注

    从搜索日志中随机选取一部分Query,让受过专业训练的数据评估员对"Query-Url对"给出相关性判断。常见的是5档的评分:差、一般、好、优秀、完美。以此作为训练数据。 人工标注是标注者的主观判断,会受标注者背景知识等因素的影响。
    3.2 搜索日志

    使用点击日志的偏多。比如,结果ABC分别位于123位,B比A位置低,但却得到了更多的点击,那么B的相关性可能好于A。点击数据隐式反映了同Query下搜索结果之间相关性的相对好坏。在搜索结果中,高位置的结果被点击的概率会大于低位置的结果,这叫做"点击偏见"(Click Bias)。但采取以上的方式,就绕过了这个问题。因为我们只记录发生了"点击倒置"的高低位结果,使用这样的"偏好对"作为训练数据。关于点击数据的使用,后续再单独开帖记录,这里不展开。 在实际应用中,除了点击数据,往往还会使用更多的数据。比如通过session日志,挖掘诸如页面停留时间等维度。 在实际场景中,搜索日志往往含有很多噪音。且只有Top Query(被搜索次数较多的Query)才能产生足够数量能说明问题的搜索日志。
    3.3 公共数据集

    现存一批公开的数据集可以使用

        LETOR, http://research.microsoft.com/en-us/um/beijing/projects/letor/
        Microsoft Learning to Rank Dataset, http://research.microsoft.com/en-us/projects/mslr/
        Yahoo Learning to Rank Challenge, http://webscope.sandbox.yahoo.com/

    4 特征抽取

    搜索引擎会使用一系列特征来决定结果的排序。一个特征称之为一个“feature”。按照我的理解,feature可以分为3大类:

        Doc本身的特征:Pagerank、内容丰富度、是否是spam等
        Query-Doc的特征:文本相关性、Query term在文档中出现的次数等

    此阶段就是要抽取出所有的特征,供后续训练使用。
    5 模型训练
    5.1 训练方法

    LTR的学习方法分为Pointwise、Pairwise和Listwise三类。Pointwise和Pairwise把排序问题转换成 回归 、 分类 或 有序分类 问题。Lisewise把Query下整个搜索结果作为一个训练的实例。3种方法的区别主要体现在损失函数(Loss Function)上。
    5.1.1 Pointwise

    排序问题被转化成单结果的 回归 、 分类 或 有序分类 的问题。

        函数框架
        L(F(x),y)=∑i=1nl(f(xi)−yi)
        小结
        ./NOTE_a_short_intro_2_ltr-pointwise_flow.png

    5.1.2 Pairwise

    排序问题被转化成结果对的 回归 、 分类 或 有序分类 的问题。

        函数框架
        L(F(x),y)=∑i=1n−1∑j=i+1nl(sign(yi−yj),f(xi)−f(xj))
        小结
        ./NOTE_a_short_intro_2_ltr-pairwise_flow.png

    5.1.3 Listwise

        函数框架
        L(F(x),y)=exp(−NDCG)
        小结
        ./NOTE_a_short_intro_2_ltr-listwise_flow.png

    6 效果评估

    对于搜索结果,有多种量化搜索得分的计算方法,这里介绍NDCG和MAP。
    6.1 NDCG(Normalized Discounted Cumulative Gain)
    6.1.1 定义
    NDCG(k)=G−1max,i(k)∑j:πi≦k2yi,j−1log2(1+πi(j))

        计算前k条结果的相关性得分
        i:第i次搜索
        j:第j条结果
        yi,j:第j条结果的相关性标注得分,5档制
        πi(j):这条结果在排序中的位置

    6.1.2 描述

        顾名思义,NDCG的公式由 N、D、C、G 4部分组成。将公式改写成
        NDCG(k)=Gmax,i(k)∑j:πi≦kGi(j)Di(πi(j))
        先看G部分。G是增益函数(Gain),表示第j条结果在被给予评分yi,j之后所贡献的分值增益。定义如下
        Gi(j)=2yi,j−1
        再看D部分。D是位置折算函数(Discounted)。因为不同位置的增益应该是不同的,D函数给结果按照位置赋予一个权重。定于如下
        D(πi(j))=1log2(1+πi(j))
        C部分就是累加(Cumulative),将k条结果的得分加在一起。
        N是归一化因子(Normalized),取值是该位置上G函数理论上取得的最大值的倒数。目的是缩放不同位置上的得分到统一区间。

    6.2 MAP(Mean Average Precision)
    6.2.1 定义
    AP=∑nij=1P(j)yi,j∑nij=1yi,j
    P(j)=∑k:πi(k)≦πi(j)yi,kπi(j)

        MAP中,相关性评分yi,j只有2档:0和1

    6.2.2 描述

        P表示结果j的权重,从位置j开始,相关(标记为1)的结果所在的比例
        AP表示单query下,相关的结果的平均的加权得分
        AP中,只有标记为相关的结果才会参与加权的累加
        AP是单query下的得分,多query的平均AP,就成了MAP

    7 参考

        Hang Li. Learning to Rank for Information Retrieval and Natural Language Processing
        Hang Li. A Short Introduction to Learning to Rank

    Author: Tan Menglong <tanmenglong AT gmail DOT com>

    Date: 2011-12-17 17:11:51 CST

    HTML generated by org-mode 6.33x in emacs 23
原文地址:https://www.cnblogs.com/lexus/p/2728081.html