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