机器学习排序之Learning to Rank简单介绍
目錄(?)[+]
| PS:文章主要轉(zhuǎn)載自CSDN大神hguisu的文章"機器學(xué)習(xí)排序": |
?????? 從使用的數(shù)據(jù)類型,以及相關(guān)的機器學(xué)習(xí)技術(shù)的觀點來看,互聯(lián)網(wǎng)搜索經(jīng)歷了三代的發(fā)展歷程。
? ? ? ?第一代技術(shù),將互聯(lián)網(wǎng)網(wǎng)頁看作文本,主要采用傳統(tǒng)信息檢索的方法。
? ? ? ?第二代技術(shù),利用互聯(lián)網(wǎng)的超文本結(jié)構(gòu),有效地計算網(wǎng)頁的相關(guān)度與重要度,代表的算法有 PageRank 等。
? ? ? ?第三代技術(shù),有效利用日志數(shù)據(jù)與統(tǒng)計學(xué)習(xí)方法,使網(wǎng)頁相關(guān)度與重要度計算的精度有了進(jìn)一步的提升,代表的方法包括排序?qū)W習(xí)、網(wǎng)頁重要度學(xué)習(xí)、匹配學(xué)習(xí)、話題模型學(xué)習(xí)、查詢語句轉(zhuǎn)化學(xué)習(xí)。
? ? ? ?這里主要介紹機器學(xué)習(xí)排序。
1. 機器學(xué)習(xí)排序(Learning to Rank)
? ? ? ?利用機器學(xué)習(xí)技術(shù)來對搜索結(jié)果進(jìn)行排序,這是最近幾年非常熱門的研究領(lǐng)域。信息檢索領(lǐng)域已經(jīng)發(fā)展了幾十年,為何將機器學(xué)習(xí)技術(shù)和信息檢索技術(shù)相互結(jié)合出現(xiàn)較晚?主要有兩方面的原因。
? ? ? ?一方面是因為:在前面幾節(jié)所述的基本檢索模型可以看出,用來對査詢和文檔的相關(guān)性進(jìn)行排序,所考慮的因素并不多,主要是利用詞頻、逆文檔頻率和文檔長度這幾個因子來人工擬合排序公式。因為考慮因素不多,由人工進(jìn)行公式擬合是完全可行的,此時機器學(xué)習(xí)并不能派上很大用場,因為機器學(xué)習(xí)更適合采用很多特征來進(jìn)行公式擬合,此時若指望人工將幾十種考慮因素擬合出排序公式是不太現(xiàn)實的,而機器學(xué)習(xí)做這種類型的工作則非常合適。隨著搜索引擎的發(fā)展,對于某個網(wǎng)頁進(jìn)行排序需要考慮的因素越來越多,比如網(wǎng)頁的pageRank值、查詢和文檔匹配的單詞個數(shù)、網(wǎng)頁URL鏈接地址長度等都對網(wǎng)頁排名產(chǎn)生影響,Google目前的網(wǎng)頁排序公式考慮200多種因子,此時機器學(xué)習(xí)的作用即可發(fā)揮出來,這是原因之一。
? ? ? 另外一個原因是:對于有監(jiān)督機器學(xué)習(xí)來說,首先需要大量的訓(xùn)練數(shù)據(jù),在此基礎(chǔ)上才可能自動學(xué)習(xí)排序模型,單靠人工標(biāo)注大量的訓(xùn)練數(shù)據(jù)不太現(xiàn)實。對于搜索引擎來說, 盡管無法靠人工來標(biāo)注大量訓(xùn)練數(shù)據(jù),但是用戶點擊記錄是可以當(dāng)做機器學(xué)習(xí)方法訓(xùn)練數(shù)據(jù)的一個替代品,比如用戶發(fā)出一個查詢,搜索引擎返回搜索結(jié)果,用戶會點擊其中某些網(wǎng)頁,可以假設(shè)用戶點擊的網(wǎng)頁是和用戶查詢更加相關(guān)的頁面。盡管這種假設(shè)很多時候并 不成立,但是實際經(jīng)驗表明使用這種點擊數(shù)據(jù)來訓(xùn)練機器學(xué)習(xí)系統(tǒng)確實是可行的。
? ? ? PS:簡言之,上面兩個原因論述了為什么會出現(xiàn)學(xué)習(xí)排序?
? ? ? 傳統(tǒng)的排序方法是通過構(gòu)造一個排序函數(shù)實現(xiàn),在Information Retrieval領(lǐng)域一般按照相關(guān)度進(jìn)行排序。比較典型的是搜索引擎中一條查詢query,將返回一個相關(guān)的文檔document,然后根據(jù)(query,document)之間的相關(guān)度進(jìn)行排序,再返回給用戶。而隨著影響相關(guān)度的因素變多,使用傳統(tǒng)排序方法變得困難,人們就想到通過機器學(xué)習(xí)來解決這一問題,這就導(dǎo)致了LRT的誕生。
2. 機器學(xué)習(xí)的基本思路
? ? ? 傳統(tǒng)的檢索模型靠人工擬合排序公式,并通過不斷的實驗確定最佳的參數(shù)組合,以此來形成相關(guān)性打分函數(shù)。機器學(xué)習(xí)排序與此思路不同,最合理的排序公式由機器自動學(xué)習(xí)獲得,而人則需要給機器學(xué)習(xí)提供訓(xùn)練數(shù)據(jù)。
? ? ? 圖1是利用機器學(xué)習(xí)進(jìn)行排序的基本原理圖。?機器學(xué)習(xí)排序系統(tǒng)由4個步驟組成:人工標(biāo)注訓(xùn)練數(shù)據(jù)、文檔特征抽取、學(xué)習(xí)分類函數(shù)、在實際搜索系統(tǒng)中采用機器學(xué)習(xí)模型。
? ? ??
? 圖1 ?機器學(xué)習(xí)排序原理
?????? 首先,由人工標(biāo)注訓(xùn)練數(shù)據(jù)。也就是說,對于某個查詢Q,人工標(biāo)出哪些文檔是和這個査詢相關(guān)的,同時標(biāo)出相關(guān)程度,相關(guān)程度有時候可以用數(shù)值序列來表示,比如從1分到5分為3個檔次,1代表微弱相關(guān),5代表最相關(guān),其他數(shù)值代表相關(guān)性在兩者之間。對于某個查詢,可能相關(guān)文檔眾多,同時用戶査詢也五花八門,所以全部靠人工標(biāo)注有時候 不太可能。此時,可以利用用戶點擊記錄來模擬這種人工打分機制。
????? 對于機器學(xué)習(xí)來說,輸入是用戶查詢和一系列標(biāo)注好的文檔,機器學(xué)習(xí)系統(tǒng)需要學(xué)習(xí)打分函數(shù),然后按照打分函數(shù)輸出搜索結(jié)果,但是在其內(nèi)部,每個文檔由若干特征構(gòu)成的,即每個文檔進(jìn)入機器學(xué)習(xí)系統(tǒng)之前,首先需要將其轉(zhuǎn)換我餓滴特征向量,比較常用的特征包括:
? ? ? ·查詢詞在文檔中的詞頻信息?
? ? ? ·查詢詞的IDF信息
? ? ? ·文檔長度
? ? ? ·網(wǎng)頁的入鏈數(shù)量
? ? ? ·網(wǎng)頁的出鏈數(shù)量
? ? ? ·網(wǎng)頁的pageRank值
? ? ? ·網(wǎng)頁的URL松度
? ? ? ·査詢詞的Proximity值:即在文檔中多大的窗口內(nèi)可以出現(xiàn)所有査詢詞。
? ? ? ?以上所列只是影響排序的一部分特征,實際上還有很多類似的特征可以作為特征向量中的一維加入。在確定了特征數(shù)量后,即可將文檔轉(zhuǎn)換為特征向量X,前面說過每個文檔會人工標(biāo)出其相關(guān)性得分y。這樣每個文檔會轉(zhuǎn)換為<X,Y>的形式,即特征向量及其對應(yīng)的相關(guān)性得分,這樣就形成了一個具體的訓(xùn)練實例。
?????? 通過多個調(diào)練實例,就可以采用機器學(xué)習(xí)技術(shù)來對系統(tǒng)進(jìn)行訓(xùn)練,訓(xùn)練的結(jié)果往在是一個分類函數(shù)或者回歸函數(shù),在之后的用戶搜索中,就可以用這個分類函數(shù)對文檔進(jìn)行打分,形成搜索結(jié)果。
? ? ? ?從目前的研究方法來說,可以將機器學(xué)習(xí)排序方法分為以下3種:單文檔方法(Pointwise)、文檔對方法(Pairwise)和文檔列表方法(Listwise)。
? ? ? ?PS:Ranking學(xué)習(xí)作為機器學(xué)習(xí)研究的一個新方向,在信息檢索、協(xié)同濾波、專家發(fā)現(xiàn)等領(lǐng)域廣泛應(yīng)用。Ranking學(xué)習(xí)是指通過使用機器學(xué)習(xí)技術(shù)和有標(biāo)簽的數(shù)據(jù)來產(chǎn)生一個ranking模型,它是一種新的學(xué)習(xí),一種介于分類和回歸之間的學(xué)習(xí)。
? ? ? ?Pointwise和Pairwise把排序問題轉(zhuǎn)換成 回歸 、分類或有序分類問題。Listwise把Query下整個搜索結(jié)果作為一個訓(xùn)練的實例。3種方法的區(qū)別主要體現(xiàn)在損失函數(shù)(Loss Function)上:
? ? ? ??Regression: treat relevance degree as real values
? ? ? ??Classification: treat relevance degree as categories
? ? ? ??Pairwise classification: reduce ranking to classifying the order between each pair of documents.
? ? ? ?下面是兩張圖,第一張表示學(xué)習(xí)排序的過程,第二章是基本的實現(xiàn)算法。
3. 單文檔方法(PointWise Approach)
? ? ? ?單文檔方法的處理對象是單獨的一篇文檔,將文檔轉(zhuǎn)換為特征向量后,機器學(xué)習(xí)系統(tǒng)根據(jù)從訓(xùn)練數(shù)據(jù)中學(xué)習(xí)到的分類或者回歸函數(shù)對文檔打分,打分結(jié)果即是搜索結(jié)果。下面我們用一個簡單的例子說明這種方法。?
? ? ? ?圖2是人工標(biāo)注的訓(xùn)練集合,在這個例子中,我們對于每個文檔采用了3個特征: 査詢與文檔的Cosme相似性分值、査詢詞的Proximity值及頁面的PageRank數(shù)值,而相關(guān)性判斷是二元的,即要么相關(guān)要么不相關(guān),當(dāng)然,這里的相關(guān)性判斷完全可以按照相關(guān)程度擴展為多元的,本例為了方便說明做了簡化。
?
圖2 訓(xùn)練數(shù)據(jù)? ? ? ? 例子中提供了5個訓(xùn)練實例,每個訓(xùn)練實例分別標(biāo)出來其對應(yīng)的查詢,3個特征的得分情況及相關(guān)性判斷。對于機器學(xué)習(xí)系統(tǒng)來說,根據(jù)訓(xùn)練數(shù)據(jù),需要如下的線性打分函數(shù):
? ? ? ??Score(Q, D)=a x CS+b x PM+cx PR+d
??????? 這個公式中,cs代表Cosine相似度變徽,PM代表Proximity值變量,PR代表pageRank, 而a、b、c、d則是變量對應(yīng)的參數(shù)。
??????? 如果得分大于設(shè)定閥值,則叫以認(rèn)為是相關(guān)的, 如果小于設(shè)定閩值則可以認(rèn)為不相關(guān)。通過訓(xùn)練實例,可以獲得最優(yōu)的a、b、c、d參數(shù)組合,當(dāng)這些參數(shù)確定后,機器學(xué)習(xí)系統(tǒng)就算學(xué)習(xí)完畢,之后即可利用這個打分函數(shù)進(jìn)行相關(guān)性判斷。對于某個新的查詢Q和文檔D,系統(tǒng)首先獲得其文檔D對應(yīng)的3個特 I特征值,之后利用學(xué)習(xí)到的參數(shù)組合計算兩者得分,當(dāng)?shù)梅执笥谠O(shè)定的閩值,即可判斷文檔是相關(guān)文檔,否則判斷為不相關(guān)文檔。
? ? ? ? PS:而微軟給定的數(shù)據(jù)如下
? ? ? ? ? =============================================================
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 0 qid:1 1:3 2:0 3:2 4:2 ... 135:0 136:0?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2 qid:1 1:3 2:3 3:0 4:0 ... 135:0 136:0?
? ? ? ? ? =============================================================
? ? ? ? 其數(shù)據(jù)格式: label?qid:id ?feaid:feavalue ?feaid:feavalue ...
? ? ? ? 每行表示一個樣本,相同的查詢請求的樣本qid相同,上面就是兩個對qid為“1”的查詢;label表示該樣本和該查詢請求的相關(guān)程度,該label等級劃分方式為?{Perfect, Excellent,Good, Fair, Bad}?共五個類別。
4. 文檔對方法(PairWise Approach)
??????? 對于搜索系統(tǒng)來說,系統(tǒng)接收到用戶査詢后,返回相關(guān)文檔列表,所以問題的關(guān)鍵是確定文檔之間的先后順序關(guān)系。單文檔方法完全從單個文檔的分類得分角度計算,沒有考慮文檔之間的順序關(guān)系。文檔對方法則將重點轉(zhuǎn)向量對文檔順序關(guān)系是否合理進(jìn)行判斷。
??????? 之所以被稱為文檔對方法,是因為這種機器學(xué)習(xí)方法的訓(xùn)練過程和訓(xùn)練目標(biāo),是判斷任意兩個文檔組成的文檔對<D0C1,D0C2>是否滿足順序關(guān)系,即判斷是否D0C1應(yīng)該排在DOC2的前面。圖3展示了一個訓(xùn)練實例:査詢Q1對應(yīng)的搜索結(jié)果列表如何轉(zhuǎn)換為文檔對的形式,因為從人工標(biāo)注的相關(guān)性得分可以看出,D0C2得分最高,D0C3次之,D0C1得分最低,于是我們可以按照得分大小順序關(guān)系得到3個如圖3所示的文檔對,將每個文檔對的文檔轉(zhuǎn)換為特征向量后,就形成了一個具體的訓(xùn)練實例。
? ??
圖3 ?文檔對的方法訓(xùn)練實例
?????? 根據(jù)轉(zhuǎn)換后的訓(xùn)練實例,就可以利用機器學(xué)習(xí)方法進(jìn)行分類函數(shù)的學(xué)習(xí),具體的學(xué)習(xí)方法有很多,比如SVM. Boosts、神經(jīng)網(wǎng)絡(luò)等都可以作為具體的學(xué)習(xí)方法,但是不論具體方法是什么,其學(xué)習(xí)目標(biāo)都是一致的,即輸入- 個査詢和文檔對<Docl,DOC2>, 機器學(xué)習(xí)排序能夠判斷這種順序關(guān)系是否成立,如果成立,那么在搜索結(jié)果中D0C1應(yīng)該排在D0C2 前面,否則Doe2應(yīng)該摔在Docl前面,通過這種方式,就完成搜索結(jié)果的排序任務(wù)。
??????? 盡管文檔對方法相對單文檔方法做出了改進(jìn),但是這種方法也存在兩個明顯的問題:
?????? 一個問題是:文檔對方法只考慮了兩個文檔對的相對先后順序,卻沒有考慮文檔出現(xiàn)在搜索列表中的位置,排在搜索站果前列的文檔更為重要,如果前列文檔出現(xiàn)判斷錯誤,代價明顯高于排在后面的文檔。針對這個問題的改進(jìn)思路是引入代價敏感因素,即每個文檔對根據(jù)其在列表中的順序具有不同的權(quán)重,越是排在前列的權(quán)重越大,即在搜索列表前列如 果排錯順序的話其付出的代價更高?
??????? 另外一個問題是:不同的査詢,其相關(guān)文檔數(shù)量差異很大,所以轉(zhuǎn)換為文檔對之后, 有的查詢對能有幾百個對應(yīng)的文檔對,而有的查詢只有十幾個對應(yīng)的文檔對,這對機器學(xué)習(xí)系統(tǒng)的效果評價造成困難 ?我們設(shè)想有兩個查詢,査詢Q1對應(yīng)500個文文檔對,查詢Q2 對應(yīng)10個文檔對,假設(shè)學(xué)習(xí)系統(tǒng)對于査詢Ql的文檔對能夠判斷正確480個,對于査詢 Q2的義格對能夠判新正確2個,如果從總的文檔對數(shù)量來看,這個學(xué)習(xí)系統(tǒng)的準(zhǔn)確率是 (480+2)/(500+10)=0.95.即95%的準(zhǔn)確率,但是從査詢的角度,兩個査詢對應(yīng)的準(zhǔn)確率 分別為:96%和20%,兩者平均為58%,與純粹從文檔對判斷的準(zhǔn)確率相差甚遠(yuǎn),這對如何繼續(xù)調(diào)優(yōu)機器學(xué)習(xí)系統(tǒng)會帶來困擾。
? ? ? ?PS:Pairwise方法有很多的實現(xiàn),比如SVM Rank(開源), 還有RankNet(C. Burges, et al. ICML 2005), FRank(M.Tsai, T.Liu, et al. SIGIR 2007),RankBoost(Y. Freund, et al. JMLR 2003)等等。
? ? ? ? 你通常會看到微軟數(shù)據(jù)集每個Fold文件夾下有train.txt test.txt vail.text三個文件,它們分別的作用是什么呢?
? ? ? ? 訓(xùn)練集--用于學(xué)習(xí)參數(shù),比如可以訓(xùn)練10個不同階的線性模型,這里得到每個特征值的權(quán)值;驗證集--用來選擇模型,主要考慮的準(zhǔn)則是在新的數(shù)據(jù)上的泛化能力,比如根據(jù)各個模型在驗證集上的權(quán)值,選擇了3階的模型;測試集--測試模型,測試這個被選中的3階模型的表現(xiàn)。
4. 文檔列表方法(ListWise Approach)
????????? 單文檔方法將訓(xùn)練集里每一個文檔當(dāng)做一個訓(xùn)練實例,文檔對方法將同一個査詢的搜索結(jié)果里任意兩個文檔對作為一個訓(xùn)練實例,文檔列表方法與上述兩種表示方式不同,是將每一個查詢對應(yīng)的所有搜索結(jié)果列表整體作為一個訓(xùn)練實例,這也是為何稱之為文檔列表方法的原因。
??????? 文檔列表方法根據(jù)K個訓(xùn)練實例(一個査詢及其對應(yīng)的所有搜索結(jié)果評分作為一個實 例)訓(xùn)練得到最優(yōu)評分函數(shù)F, 對于一個新的用戶査詢,函數(shù)F 對每一個文檔打分,之后按照得分順序由高到低排序,就是對應(yīng)的搜索結(jié)果。 所以關(guān)鍵問題是:拿到訓(xùn)練數(shù)據(jù),如何才能訓(xùn)練得到最優(yōu)的打分函數(shù)?
??????? 這里介紹一種訓(xùn)練方法,它是基于搜索結(jié)果排列組合的概率分布情況來訓(xùn)練的,圖4是這種方式訓(xùn)練過程的圖解示意。
? ? ??
圖4 不同評分函數(shù)的KL距離
? ? ? ? 首先解釋下什么是搜索結(jié)果排列組合的概率分布,我們知道,對于搜索 引擎來說,用戶輸入査詢Q, 搜索引擎返回搜索結(jié)果,我們假設(shè)搜索結(jié)果集合包含A. B 和C 3個文檔,搜索引擎要對搜索結(jié)果排序,而這3個文檔的順序共有6種排列組合方式:
? ? ? ??ABC, ACB, BAG, BCA, CAB和CBA,
? ? ? ? 而每種排列組合都是一種可能的搜索結(jié)果排序方法。
??????? 對于某個評分函數(shù)F來說,對3個搜索結(jié)果文檔的相關(guān)性打分,得到3個不同的相關(guān)度得分F(A)、 F(B)和F(C), 根據(jù)這3個得分就可以計算6種排列組合情況各自的概率值。 不同的評分函數(shù),其6種搜索結(jié)果排列組合的概率分布是不一樣的。
????? 了解了什么是搜索結(jié)果排列組合的概率分布,我們介紹如何根據(jù)訓(xùn)練實例找到最優(yōu)的 評分函數(shù)。圖4展示了一個具體的訓(xùn)練實例,即査詢Q1及其對應(yīng)的3個文檔的得分情況,這個得分是由人工打上去的,所以可以看做是標(biāo)準(zhǔn)答案。可以設(shè)想存在一個最優(yōu)的評分函數(shù)g,對查詢Q1來說,其打分結(jié)果是:A文檔得6分,B文檔得4分,C文檔得3分, 因為得分是人工打的,所以具體這個函數(shù)g是怎樣的我們不清楚,我們的任務(wù)就是找到一 個函數(shù),使得函數(shù)對Ql的搜索結(jié)果打分順序和人工打分順序盡可能相同。既然人工打分 (虛擬的函數(shù)g) 已知,那么我們可以計算函數(shù)g對應(yīng)的搜索結(jié)果排列組合概率分布,其具體分布情況如圖4中間的概率分布所示。假設(shè)存在兩個其他函數(shù)h和f,它們的計算方法已知,對應(yīng)的對3個搜索結(jié)果的打分在圖上可以看到,由打分結(jié)果也可以推出每個函數(shù)對應(yīng)的搜索結(jié)果排列組合概率分布,那么h與f哪個與虛擬的最優(yōu)評分函數(shù)g更接近呢?一般可以用兩個分布概率之間的距離遠(yuǎn)近來度量相似性,KL距離就是一種衡量概率分布差異大小的計算工具,通過分別計算h與g的差異大小及f與g的差異大小,可以看出f比h更接近的最優(yōu)函數(shù)g,那么在這個函數(shù)中,我們應(yīng)該優(yōu)先選f作為將來搜索可用的評分函數(shù),訓(xùn)練過程就是在可能的函數(shù)中尋找最接近虛擬最優(yōu)函數(shù)g的那個函數(shù)作為訓(xùn)練結(jié)果,將來作為在搜索時的評分函數(shù)。
?????? 上述例子只是描述了對于單個訓(xùn)練實例如何通過訓(xùn)練找到最優(yōu)函數(shù),事實上我們有K 個訓(xùn)練實例,雖然如此,其訓(xùn)練過程與上述說明是類似的,可以認(rèn)為存在一個虛擬的最優(yōu) 評分函數(shù)g (實際上是人工打分),訓(xùn)練過程就是在所有訓(xùn)練實例基礎(chǔ)上,探尋所有可能的 候選函數(shù),從中選擇那個KL距離最接近于函數(shù)g的,以此作為實際使用的評分函數(shù)。 經(jīng)驗結(jié)果表明,基于文檔列表方法的機器學(xué)習(xí)排序效果要好于前述兩種方法。
總結(jié)
以上是生活随笔為你收集整理的机器学习排序之Learning to Rank简单介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 工作需求
- 下一篇: 求解LambdaMART的疑惑?