Learning to rank學(xué)習(xí)基礎(chǔ)

Learning to rank(簡寫 LTR、L2R) 也叫排序?qū)W習(xí),指的是機(jī)器學(xué)習(xí)中任何用于排序的技術(shù)。

為什么要用LTR

傳統(tǒng)的檢索模型靠人工擬合排序公式,并通過不斷的實(shí)驗(yàn)確定最佳的參數(shù)組合,以此來形成相關(guān)性打分。這種方式非常簡單高效,應(yīng)該范圍也很廣,比如簡單的博客排序、論壇的QA排序等.但是也同時(shí)存在較大的問題:

  1. 手動(dòng)調(diào)參工作量太大
  2. 可能會(huì)過擬合
  3. 如果模型參數(shù)很多,手動(dòng)調(diào)參的可用性就很低了~

LTR與此思路不同,最合理的排序公式由機(jī)器學(xué)習(xí)算法來確定,而人則需要給機(jī)器學(xué)習(xí)提供訓(xùn)練數(shù)據(jù),他的優(yōu)勢有:

  1. 可以自動(dòng)調(diào)節(jié)參數(shù)
  2. 可以融合多方面觀點(diǎn)的(evidences)的數(shù)據(jù)
  3. 避免過擬合(通過正則項(xiàng))

LTR基本框架

LTR的核心還是機(jī)器學(xué)習(xí),只是目標(biāo)不僅僅是簡單的分類或者回歸了,最主要的是產(chǎn)出文檔的排序結(jié)果,它通常的工作框架如下:

所描述的步驟為:訓(xùn)練數(shù)據(jù)獲取->特征提取->模型訓(xùn)練->測試數(shù)據(jù)預(yù)測->效果評(píng)估

訓(xùn)練數(shù)據(jù)的獲取

人工標(biāo)注

人工標(biāo)注的數(shù)據(jù)主要有以下幾大類型:

  • 單點(diǎn)標(biāo)注

    • 對(duì)于每個(gè)查詢文檔打上絕對(duì)標(biāo)簽

    • 二元標(biāo)注:相關(guān) vs 不相關(guān)

    • 五級(jí)標(biāo)注:完美(Perfect),出色(Excellent),好(Good),一般(Fair),差(Bad) ,一般后面兩檔屬于不相關(guān)

      好處:標(biāo)注的量少O(n)
      壞處:難標(biāo)。。。不好統(tǒng)一

  • 兩兩標(biāo)注

    • 對(duì)于一個(gè)查詢Query,要標(biāo)注文檔d1比文檔d2是否更加相關(guān) (q,d1)?(q,d2)?

      好處:標(biāo)注起來比較方便
      壞處:標(biāo)注量大 估計(jì)得有O(n^2)

  • 列表標(biāo)注

    • 對(duì)于一個(gè)查詢Query,將人工理想的排序整個(gè)兒標(biāo)好

      好處: 相對(duì)于上面兩種,標(biāo)的效果會(huì)很好
      壞處: 這個(gè)工作量也太大了…-_-||

日志抽取

當(dāng)搜索引擎搭建起來之后用戶的點(diǎn)擊數(shù)據(jù)就變得非常好使。

比如,結(jié)果ABC分別位于123位,B比A位置低,但卻得到了更多的點(diǎn)擊,那么B的相關(guān)性可能好于A.

這種點(diǎn)擊數(shù)據(jù)隱含了Query到文檔的相關(guān)性好壞。所以一般會(huì)使用點(diǎn)擊倒置的高低位結(jié)果作為訓(xùn)練數(shù)據(jù).

但是他也是存在問題的:

  • 用戶總是習(xí)慣于從上到下瀏覽搜索結(jié)果
  • 用戶點(diǎn)擊有比較大的噪聲
  • 一般頭查詢(head query)才存在用戶點(diǎn)擊

這里的日志提取可以參考Learning to rank在淘寶的應(yīng)用,干貨!!!

特征提取

檢索系統(tǒng)會(huì)使用一系列特征來表示一次查詢,通過模型之后最終決定文檔的排序順序,這里用q來表示查詢,d表示查詢的文檔,occur?term共現(xiàn)的詞,則提取的特征主要有以下三大類:

  • occur?term特征
    • 共現(xiàn)在查詢中的出現(xiàn)次數(shù)、比率等
  • occur?term的特征
    • 共現(xiàn)在文檔中的出現(xiàn)次數(shù)、比率等
    • 共現(xiàn)詞與文檔的相關(guān)性特征:BM25系列
  • 自身特征
    • PageRank
    • Spam信息
    • Quality質(zhì)量分
    • 行為分,ctr停留時(shí)間二跳率等..

模型訓(xùn)練

LTR的模型主要有單文檔方法(Pointwise Approach)、文檔對(duì)方法(Pairwise Approach)和列表方法(Listwise Approach)三大類,下面是實(shí)現(xiàn)他們的各種算法:

Pointwise Approach

Pointwise的處理對(duì)象是單獨(dú)的一篇文檔,將文檔轉(zhuǎn)換為特征向量之后,機(jī)器學(xué)習(xí)模型根據(jù)從訓(xùn)練數(shù)據(jù)中學(xué)習(xí)到的分類或者回歸函數(shù)對(duì)文檔打分,打分的結(jié)果就是搜索的結(jié)果.

其實(shí)就是將文檔排序轉(zhuǎn)為了文檔的回歸、分類和有序分類問題,其函數(shù)的框架為:

L(F(X),y)=∑i=1nl(f(xi)?yi)

輸入:

  • 單個(gè)文檔查詢對(duì):(xi,yi)
  • 完全忽略上下文的關(guān)系
  • 將標(biāo)注轉(zhuǎn)為數(shù)字,比如Perfect->5, Excellent->4, Good->3, Fair->2, Bad->1

輸出:

  • 排序函數(shù),對(duì)于給定查詢文檔對(duì),能夠計(jì)算出得分(score)

關(guān)于Pointwise下的三個(gè)分支,這張圖解釋的很好:

其主要區(qū)別就是loss function不同,也就是最后的結(jié)果目標(biāo)不一樣:

  • Classification:輸入的是5檔類別(作為離散),最后通過分類模型輸測試數(shù)據(jù)的各個(gè)檔位檔位的概率,然后進(jìn)行加權(quán)成一個(gè)實(shí)數(shù)值
  • Regression:輸入的是5檔或者2檔(作為連續(xù)),最后通過回歸模型輸出測試數(shù)據(jù)的一個(gè)相關(guān)性實(shí)數(shù)(就是回歸)
  • Ordinal Classification:輸入的檔位是有序的,比如像上面一樣輸入5檔,但是他們的權(quán)重不一樣,可能權(quán)重最高檔位的分類(二分類),再進(jìn)行次高檔位的分詞,依次下去(McRank的paper有講)

實(shí)現(xiàn)Pointwise方法的主要算法有:

  • Classification
    • Discriminative model for IR (SIGIR 2004)
    • McRank (NIPS 2007)
  • Regression
    • Least Square Retrieval Function (TOIS 1989)
    • Regression Tree for Ordinal Class Prediction (Fundamenta Informaticae, 2000)
    • Subset Ranking using Regression (COLT 2006)
  • Ordinal Classification
    • Pranking (NIPS 2002)
    • OAP-BPM (EMCL 2003)
    • Ranking with Large Margin Principles (NIPS 2002)
    • Constraint Ordinal Regression (ICML 2005)

優(yōu)點(diǎn):

  • 速度快,復(fù)雜度低.

缺點(diǎn):

  • 效果一般
  • 沒有考慮到文檔之間的相對(duì)關(guān)系
  • 忽略了文檔相關(guān)度與查詢的關(guān)聯(lián),比如Top Query排在后面的相關(guān)性比Tial Query排在前面的都要高,導(dǎo)致訓(xùn)練樣本不一致

Pairwise Approach

對(duì)于搜索任務(wù)來說,系統(tǒng)接收到用戶查詢后,返回相關(guān)文檔列表,所以問題的關(guān)鍵是確定文檔之間的先后相對(duì)順序關(guān)系,
而Pairwise則將重點(diǎn)轉(zhuǎn)向?qū)ξ臋n關(guān)系是否合理的判斷.

Pairwise主要是講排序問題轉(zhuǎn)為了文檔對(duì)順序的判斷
以下圖為例:


對(duì)于查詢Q1進(jìn)行人工標(biāo)注之后,Doc2=5的分?jǐn)?shù)最高,其次是Doc3為4分,最差的是Doc1為3分,將此轉(zhuǎn)為相對(duì)關(guān)系之后有:Doc2>Doc1、Doc2>Doc3、Doc3>Doc1,而根據(jù)這個(gè)順序關(guān)系逆向也可以得到相關(guān)性的排序順序,所以排序問題可以很自然的轉(zhuǎn)為任意兩個(gè)文檔關(guān)系的判斷,而任意兩個(gè)文檔順序的判斷就稱為了一個(gè)很熟悉的分類問題.
Pairwise的函數(shù)框架為:

L(F(x),y)=∑i=1n?1∑j=i+1n(sign(yi?yj),f(xi)?f(xj))

輸入:

  • 同一查詢的一對(duì)文檔(xi,xj,sign(yi?yj))
  • 標(biāo)注兩個(gè)文檔的相對(duì)關(guān)系,如果文檔xi比xj更加相關(guān),則sign(yi?yj))=1
  • 分布保留同一查詢下的文檔間關(guān)系

輸出:

  • 排序函數(shù)給出文檔對(duì)的計(jì)算得分

關(guān)于Pairwise最終的算分,其實(shí)分類和回歸都可以實(shí)現(xiàn):

實(shí)現(xiàn)Pairwise Approach方法的主要算法有:

  • 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)
  • GBRank (SIGIR 2007)
  • QBRank (NIPS 2007)
  • MPRank (ICML 2007)
  • IRSVM (SIGIR 2006)
  • LambdaRank (NIPS 2006)

雖然Pairwise方法對(duì)Pointwise方法做了改進(jìn),但是也明顯存在兩個(gè)問題:

  1. 只考慮了兩個(gè)文檔的先后順序,沒有考慮文檔出現(xiàn)在搜索列表中的位置
  2. 不同的查詢,其相關(guān)文檔數(shù)量差異很大,轉(zhuǎn)換為文檔對(duì)之后,有的查詢可能有幾百對(duì)文檔,有的可能只有幾十個(gè),最終對(duì)機(jī)器學(xué)習(xí)的效果評(píng)價(jià)造成困難

Listwise Approach

與Pointwise和Pairwise不同,Listwise是將一個(gè)查詢對(duì)應(yīng)的所有搜索結(jié)果列表作為一個(gè)訓(xùn)練實(shí)例,因此也稱為文檔列方法.

文檔列方法根據(jù)K個(gè)訓(xùn)練實(shí)例訓(xùn)練得到最優(yōu)的評(píng)分函數(shù),對(duì)于一個(gè)新的查詢,函數(shù)F對(duì)每一個(gè)文檔進(jìn)行打分,之后按照得分順序高低排序,就是對(duì)應(yīng)的搜索結(jié)果.
Listwise主要有兩類:

  • Measure specific:損失函數(shù)與評(píng)估指標(biāo)相關(guān),比如:L(F(x),y)=exp(?NDCG)
  • Non-measure specific:損失函數(shù)與評(píng)估指標(biāo)不是顯示相關(guān),考慮了信息檢索中的一些獨(dú)特性質(zhì)

實(shí)現(xiàn)Listwise的算法主要有:

  • Measure-specific
    • AdaRank (SIGIR 2007)
    • SVM-MAP (SIGIR 2007)
    • SoftRank (LR4IR 2007)
    • RankGP (LR4IR 2007)
    • LambdaMART (inf.retr 2010)
  • Non-measure specific
    • ListNet (ICML 2007)
    • ListMLE (ICML 2008)
    • BoltzRank (ICML 2009)

實(shí)驗(yàn)表明 一般Listwise要好于前兩種排序算法,但是其復(fù)雜度是在太高了

方法對(duì)比

pointwise pairwise listwise
輸入信息的完整度 不完全 部分完全 完全
輸入 (x,y) (x1,x2,y) (x1,x2…xn,π)
輸出 f(x) f(x) f(x)
樣本復(fù)雜度 O(n) O(n^2) O(n!)
表現(xiàn)

評(píng)估指標(biāo)

MAP

MAP(Mean Average Precision)表示文檔在排序中的平均精度均值,是用于衡量個(gè)query查詢見過的平均精度值AP,
系統(tǒng)檢索出來的相關(guān)文檔越靠前(rank 越高),MAP就可能越高。如果系統(tǒng)沒有返回相關(guān)文檔,則準(zhǔn)確率默認(rèn)為0。

所以對(duì)于計(jì)算AP的值就是關(guān)鍵了,MAP對(duì)文檔只分為兩檔:相關(guān)與不相關(guān),則AP表示為

AP=∑ni:relvancePi/Rin

其中Pi表示所有召回文檔中相關(guān)文檔的相對(duì)次序,Ri表示所有被召回的相關(guān)文檔中在所有文檔中的次序

比如在某個(gè)query得到的排序中:


則他的相對(duì)順序的表格為:

O X O O O O X X X O
相關(guān)文檔次序 1 2 3 4 5 6
所有召回文檔次序 1 2 3 4 5 6 7 8 9 10
Precision 1/1 2/3 3/4 4/5 5/6 6/10

最終計(jì)算的AP=(1/1+2/3+3/4+4/5+5/6+6/10)/6=0.78

NDCG

NDCG表示表示歸一化折損累積增益,主要是衡量實(shí)際相關(guān)性越高的文檔排在越前面,它的全稱是Normalized Discounted Cumulative Gain,也正好代表了4個(gè)部分的含義:

  • Gain:表示增益,一般相關(guān)性越高,增益值也是越大

Gi=2yi?1

> 其中yi表示文檔相關(guān)性檔位,一般檔位越高,相關(guān)性越大
  • Discounted:一般認(rèn)為排序位置 帶來的權(quán)重不同,所以會(huì)有一個(gè)折損因子

DGi=2yi?1log(1+i)

> 其中i為文檔的排序位置,從1開始
  • Cumulative:表示在一次query查詢中所有的增益累加

DCG=∑i=1n2yi?1log(1+i)

  • Normalized:為歸一化,因?yàn)樵诓煌牟樵冎锌赡?code>DCG的值波動(dòng)較大,這里計(jì)算各個(gè)query最理想的排序的DCG值作為歸一化因子,也稱為IDCG

NDCG=1IDCG?∑i=1n2yi?1log(1+i)

NDCG的可使用性更加廣泛了,但是還是存在以下三點(diǎn)限制:

  1. NDCG并沒有對(duì)不相關(guān)文檔進(jìn)行懲罰
  2. NDCG對(duì)一些缺失的完成結(jié)果也沒有進(jìn)行懲罰
  3. NDCG也不是用檔位大家都相等的情況(比如每頁里面的doc相關(guān)性都是差不多的)

公開數(shù)據(jù)集

  1. http://research.microsoft.com/en-us/um/beijing/projects/letor/
  2. http://research.microsoft.com/en-us/projects/mslr/
  3. http://webscope.sandbox.yahoo.com/

總結(jié)

在玩搜索引擎時(shí)敲定特征分的權(quán)重是非常疼的一件事兒,而LTR正好幫你定分,LTR的三種實(shí)現(xiàn)方法其實(shí)各有優(yōu)劣:

  1. 難點(diǎn)主要在訓(xùn)練樣本的構(gòu)建(人工或者挖日志),另外就是訓(xùn)練復(fù)雜
  2. 雖說Listwise效果最好,但是天下武功唯快不破,看看這篇文章http://www.cnblogs.com/zjgtan/p/3652689.html體驗(yàn)下
  3. 在工業(yè)界用的比較多的應(yīng)該還是Pairwise,因?yàn)樗麡?gòu)建訓(xùn)練樣本相對(duì)方便,并且復(fù)雜度也還可以,所以Rank SVM就很火啊_

參考

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,527評(píng)論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,687評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,640評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,957評(píng)論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,682評(píng)論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,011評(píng)論 1 329
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,009評(píng)論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,183評(píng)論 0 290
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,714評(píng)論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,435評(píng)論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,665評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,148評(píng)論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,838評(píng)論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,251評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,588評(píng)論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,379評(píng)論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,627評(píng)論 2 380

推薦閱讀更多精彩內(nèi)容

  • L2R將機(jī)器學(xué)習(xí)的技術(shù)很好的應(yīng)用到了排序中,并提出了一些新的理論和算法,不僅有效地解決了排序的問題,其中一些算法(...
    Yespon閱讀 1,881評(píng)論 0 2
  • LTR 算法通常有三種手段,分別是:Pointwise、Pairwise 和 Listwise。Pointwise...
    全剛閱讀 2,991評(píng)論 1 2
  • 最近工作中需要調(diào)研一下搜索排序相關(guān)的方法,這里寫一篇水文,總結(jié)一下幾天下來的調(diào)研成果。包括 Learning to...
    y_felix閱讀 12,631評(píng)論 3 16
  • 前面的文章主要從理論的角度介紹了自然語言人機(jī)對(duì)話系統(tǒng)所可能涉及到的多個(gè)領(lǐng)域的經(jīng)典模型和基礎(chǔ)知識(shí)。這篇文章,甚至之后...
    我偏笑_NSNirvana閱讀 14,003評(píng)論 2 64
  • 這個(gè)系列的第六個(gè)主題,主要談一些搜索引擎相關(guān)的常見技術(shù)。 1995年是搜索引擎商業(yè)公司發(fā)展的重要起點(diǎn),《淺談推薦系...
    我偏笑_NSNirvana閱讀 6,695評(píng)論 3 24