[Machine Learning] Learning to rank算法簡介


聲明:以下內容根據潘的博客crackcell's dustbin進行整理,尊重原著,向兩位作者致謝!

1 現有的排序模型

  排序(Ranking)一直是信息檢索的核心研究問題,有大量的成熟的方法,主要可以分為以下兩類:相關度排序模型和重要性排序模型。

1.1 相關度排序模型(Relevance Ranking Model)

  相關度排序模型根據查詢和文檔之間的相似度來對文檔進行排序。常用的模型包括:布爾模型(Boolean Model),向量空間模型(Vector Space Model),隱語義分析(Latent Semantic Analysis),BM25,LMIR模型等等。

1.2 重要性排序模型(Importance Ranking Model)

  重要性排序模型不考慮查詢,而僅僅根據網頁(亦即文檔)之間的圖結構來判斷文檔的權威程度,典型的權威網站包括Google,Yahoo!等。常用的模型包括PageRank,HITS,HillTop,TrustRank等等。

2 前言

  在傳統搜索引擎的ranking策略中,一般會包含若干子策略,子策略通過若干種方式組合成更大的策略一起發揮作用。策略的組合方式以及參數一般采取人工或者半人工的方式確定。隨着策略的逐步細化,傳統的方式變得越來越困難。於是Learning to Rank(LTR)就被引入了進來。LTR的核心是想是用機器學習來解決排序的問題。目前被廣泛運用在 信息檢索(IR) 、 自然語言處理(NLP) 和 數據挖掘(DM) 中。 LTR是監督的學習。建好模型之后,需要用訓練數據集的人工標注結果來訓練。

3 LTR流程

./NOTE_a_short_intro_2_ltr-training_process.png

4 訓練數據的獲取

  有2種獲取訓練數據的來源:1)人工標注;2)搜索日志。

4.1 人工標注

  從搜索日志中隨機選取一部分Query,讓受過專業訓練的數據評估員對"Query-Url對"給出相關性判斷。常見的是5檔的評分:差、一般、好、優秀、完美。以此作為訓練數據。 人工標注是標注者的主觀判斷,會受標注者背景知識等因素的影響。

4.2 搜索日志

  使用點擊日志的偏多。比如,結果ABC分別位於123位,B比A位置低,但卻得到了更多的點擊,那么B的相關性可能好於A。點擊數據隱式反映了同Query下搜索結果之間相關性的相對好壞。在搜索結果中,高位置的結果被點擊的概率會大於低位置的結果,這叫做"點擊偏見"(Click Bias)。但采取以上的方式,就繞過了這個問題。因為我們只記錄發生了"點擊倒置"的高低位結果,使用這樣的"偏好對"作為訓練數據。關於點擊數據的使用,后續再單獨開帖記錄,這里不展開。 在實際應用中,除了點擊數據,往往還會使用更多的數據。比如通過session日志,挖掘諸如頁面停留時間等維度。 在實際場景中,搜索日志往往含有很多噪音。且只有Top Query(被搜索次數較多的Query)才能產生足夠數量能說明問題的搜索日志。

4.3 公共數據集

  現存一批公開的數據集可以使用

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

5 特征抽取

  搜索引擎會使用一系列特征來決定結果的排序。一個特征稱之為一個“feature”。按照我的理解,feature可以分為3大類:

  1. Doc本身的特征:Pagerank、內容豐富度、是否是spam等
  2. Query-Doc的特征:文本相關性、Query term在文檔中出現的次數等

  此階段就是要抽取出所有的特征,供后續訓練使用。

6 模型訓練

6.1 訓練方法

  LTR的學習方法分為Pointwise、Pairwise和Listwise三類。

  Pointwise和Pairwise把排序問題轉換成 回歸 、 分類 或 有序分類 問題。Lisewise把Query下整個搜索結果作為一個訓練的實例。3種方法的區別主要體現在損失函數(Loss Function)上。

6.1.1 Pointwise

  排序問題被轉化成單結果的 回歸 、 分類 或 有序分類 的問題。

  PointWise方法只考慮給定查詢下,單個文檔的絕對相關度,而不考慮其他文檔和給定查詢的相關度。亦即給定查詢q的一個真實文檔序列,我們只需要考慮單個文檔di和該查詢的相關程度ci,亦即輸入數據應該是如下的形式:

  

  • 函數框架
    L(F(x),y)=i=1nl(f(xi)yi)
  • 小結
    ./NOTE_a_short_intro_2_ltr-pointwise_flow.png
  •   Pointwise方法主要包括以下算法:Pranking (NIPS 2002), OAP-BPM (EMCL 2003), Ranking with Large Margin Principles (NIPS 2002), Constraint Ordinal Regression (ICML 2005)。

      Pointwise方法僅僅使用傳統的分類,回歸或者Ordinal Regression方法來對給定查詢下單個文檔的相關度進行建模。這種方法沒有考慮到排序的一些特征,比如文檔之間的排序結果針對的是給定查詢下的文檔集合,而Pointwise方法僅僅考慮單個文檔的絕對相關度;另外,在排序中,排在最前的幾個文檔對排序效果的影響非常重要,Pointwise沒有考慮這方面的影響。

6.1.2 Pairwise

  排序問題被轉化成結果對的 回歸 、 分類 或 有序分類 的問題。

  Pairwise方法考慮給定查詢下,兩個文檔之間的相對相關度。亦即給定查詢q的一個真實文檔序列,我們只需要考慮任意兩個相關度不同的文檔之間的相對相關度:di>dj,或者di<dj。

  

  • 函數框架
    L(F(x),y)=i=1n1j=i+1nl(sign(yiyj),f(xi)f(xj))
  • 小結
    ./NOTE_a_short_intro_2_ltr-pairwise_flow.png

  Pairwise方法主要包括以下幾種算法:Learning to Retrieve Information (SCC 1995), Learning to Order Things (NIPS 1998), Ranking SVM (ICANN 1999), RankBoost (JMLR 2003), LDM (SIGIR 2005), RankNet (ICML 2005), Frank (SIGIR 2007), MHR(SIGIR 2007), Round Robin Ranking (ECML 2003), GBRank (SIGIR 2007), QBRank (NIPS 2007), MPRank (ICML 2007), IRSVM (SIGIR 2006) 。

  相比於Pointwise方法,Pairwise方法通過考慮兩兩文檔之間的相對相關度來進行排序,有一定的進步。但是,Pairwise使用的這種基於兩兩文檔之間相對相關度的損失函數,和真正衡量排序效果的一些指標之間,可能存在很大的不同,有時甚至是負相關,如下圖所示(pairwise的損失函數和NDCG之呈現出負相關性):

  

  另外,有的Pairwise方法沒有考慮到排序結果前幾名對整個排序的重要性,也沒有考慮不同查詢對應的文檔集合的大小對查詢結果的影響(但是有的Pairwise方法對這些進行了改進,比如IR SVM就是對Ranking SVM針對以上缺點進行改進得到的算法)。

6.1.3 Listwise

  與Pointwise和Pairwise方法不同,Listwise方法直接考慮給定查詢下的文檔集合的整體序列,直接優化模型輸出的文檔序列,使得其盡可能接近真實文檔序列。

  • 函數框架
    L(F(x),y)=exp(NDCG)
  • 小結
    ./NOTE_a_short_intro_2_ltr-listwise_flow.png
  • Listwise算法主要包括以下幾種算法:LambdaRank (NIPS 2006), AdaRank (SIGIR 2007), SVM-MAP (SIGIR 2007), SoftRank (LR4IR 2007), GPRank (LR4IR 2007), CCA (SIGIR 2007), RankCosine (IP&M 2007), ListNet (ICML 2007), ListMLE (ICML 2008) 。

      相比於Pointwise和Pairwise方法,Listwise方法直接優化給定查詢下,整個文檔集合的序列,所以比較好的解決了克服了以上算法的缺陷。Listwise方法中的LambdaMART(是對RankNet和LambdaRank的改進)在Yahoo Learning to Rank Challenge表現出最好的性能。

7 效果評估

  對於搜索結果,有多種量化搜索得分的計算方法,這里介紹NDCG和MAP。

7.1 NDCG(Normalized Discounted Cumulative Gain)

7.1.1 定義

  NDCG(k)=G1max,i(k)j:πik2yi,j1log2(1+πi(j))
  • 計算前k條結果的相關性得分
  • i:第i次搜索
  • j:第j條結果
  • yi,j:第j條結果的相關性標注得分,5檔制
  • πi(j):這條結果在排序中的位置

7.1.2 描述

  • 顧名思義,NDCG的公式由 N、D、C、G 4部分組成。將公式改寫成
NDCG(k)=Gmax,i(k)j:πikGi(j)Di(πi(j))
  • 先看G部分。G是增益函數(Gain),表示第j條結果在被給予評分yi,j之后所貢獻的分值增益。定義如下
Gi(j)=2yi,j1
  • 再看D部分。D是位置折算函數(Discounted)。因為不同位置的增益應該是不同的,D函數給結果按照位置賦予一個權重。定於如下
D(πi(j))=1log2(1+πi(j))
  • C部分就是累加(Cumulative),將k條結果的得分加在一起。
  • N是歸一化因子(Normalized),取值是該位置上G函數理論上取得的最大值的倒數。目的是縮放不同位置上的得分到統一區間。

7.2 MAP(Mean Average Precision)

7.2.1 定義

  AP=nij=1P(j)yi,jnij=1yi,j
  P(j)=k:πi(k)πi(j)yi,kπi(j)
  • MAP中,相關性評分yi,j只有2檔:0和1

7.2.2 描述

  • P表示結果j的權重,從位置j開始,相關(標記為1)的結果所在的比例
  • AP表示單query下,相關的結果的平均的加權得分
  • AP中,只有標記為相關的結果才會參與加權的累加
  • AP是單query下的得分,多query的平均AP,就成了MAP

7.3 L2R評價指標匯總

  1) WTA(Winners take all) 對於給定的查詢q,如果模型返回的結果列表中,第一個文檔是相關的,則WTA(q)=1,否則為0.

  2) MRR(Mean Reciprocal Rank) 對於給定查詢q,如果第一個相關的文檔的位置是R(q),則MRR(q)=1/R(q)。

  3) MAP(Mean Average Precision) 對於每個真實相關的文檔d,考慮其在模型排序結果中的位置P(d),統計該位置之前的文檔集合的分類准確率,取所有這些准確率的平均值。

  4) NDCG(Normalized Discounted Cumulative Gain) 是一種綜合考慮模型排序結果和真實序列之間的關系的一種指標,也是最常用的衡量排序結果的指標,詳見Wikipedia

  5) RC(Rank Correlation) 使用相關度來衡量排序結果和真實序列之間的相似度,常用的指標是Kendall's Tau

8 參考內容

  1. Hang Li. Learning to Rank for Information Retrieval and Natural Language Processing
  2. Hang Li. A Short Introduction to Learning to Ran
  3. Learning to Rank 簡介(潘的博客)
  4. Learning to Rank 小結crackcell's dustbin


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM