Learning to rank
排序學習是推薦、搜索、廣告的核心方法。排序結果的好壞很大程度影響用戶體驗、廣告收入等。
排序學習可以理解為機器學習中用戶排序的方法,這里首先推薦一本微軟亞洲研究院劉鐵岩老師關於LTR的著作,Learning to Rank for Information Retrieval,書中對排序學習的各種方法做了很好的闡述和總結。我這里是一個超級精簡版。
排序學習是一個有監督的機器學習過程,對每一個給定的查詢-文檔對,抽取特征,通過日志挖掘或者人工標注的方法獲得真實數據標注。然后通過排序模型,使得輸入能夠和實際的數據相似。
常用的排序學習分為三種類型:PointWise,PairWise和ListWise。
PointWise
單文檔方法的處理對象是單獨的一篇文檔,將文檔轉換為特征向量后,機器學習系統根據從訓練數據中學習到的分類或者回歸函數對文檔打分,打分結果即是搜索結果。下面我們用一個簡單的例子說明這種方法。
圖2是人工標注的訓練集合,在這個例子中,我們對於每個文檔采用了3個特征: 査詢與文檔的Cosme相似性分值、査詢詞的Proximity值及頁面的PageRank數值,而相關性判斷是二元的,即要么相關要么不相關,當然,這里的相關性判斷完全可以按照相關程度擴展為多元的,本例為了方便說明做了簡化。
例子中提供了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個特征值,之后利用學習到的參數組合計算兩者得分,當得分大於設定的閩值,即可判斷文檔是相關文檔,否則判斷為不相關文檔。
PairWise
對於搜索系統來說,系統接收到用戶査詢后,返回相關文檔列表,所以問題的關鍵是確定文檔之間的先后順序關系。單文檔方法完全從單個文檔的分類得分角度計算,沒有考慮文檔之間的順序關系。文檔對方法則將重點轉向量對文檔順序關系是否合理進行判斷。
之所以被稱為文檔對方法,是因為這種機器學習方法的訓練過程和訓練目標,是判斷任意兩個文檔組成的文檔對<D0C1,D0C2>是否滿足順序關系,即判斷是否D0C1應該排在DOC2的前面。圖3展示了一個訓練實例:査詢Q1對應的搜索結果列表如何轉換為文檔對的形式,因為從人工標注的相關性得分可以看出,D0C2得分最高,D0C3次之,D0C1得分最低,於是我們可以按照得分大小順序關系得到3個如圖3所示的文檔對,將每個文檔對的文檔轉換為特征向量后,就形成了一個具體的訓練實例。
圖3 文檔對的方法訓練實例
根據轉換后的訓練實例,就可以利用機器學習方法進行分類函數的學習,具體的學習方法有很多,比如SVM. Boosts、神經網絡等都可以作為具體的學習方法,但是不論具體方法是什么,其學習目標都是一致的,即輸入一個査詢和文檔對<Docl,DOC2>, 機器學習排序能夠判斷這種順序關系是否成立,如果成立,那么在搜索結果中D0C1應該排在D0C2 前面,否則Doe2應該摔在Docl前面,通過這種方式,就完成搜索結果的排序任務。
對於搜索系統來說,系統接收到用戶査詢后,返回相關文檔列表,所以問題的關鍵是確定文檔之間的先后順序關系。單文檔方法完全從單個文檔的分類得分角度計算,沒有考慮文檔之間的順序關系。文檔對方法將排序問題轉化為多個pair的排序問題,比較不同文章的先后順序。
但是文檔對方法也存在如下問題:
-
文檔對方法考慮了兩個文檔對的相對先后順序,卻沒有考慮文檔出現在搜索列表中的位置,排在搜索結果前面的文檔更為重要,如果靠前的文檔出現判斷錯誤,代價明顯高於排在后面的文檔。
-
同時不同的査詢,其相關文檔數量差異很大,所以轉換為文檔對之后, 有的查詢對能有幾百個對應的文檔對,而有的查詢只有十幾個對應的文檔對,這對機器學習系統的效果評價造成困難
常用PairWise實現:
- SVM Rank
- RankNet(2007)
- RankBoost(2003)
ListWise:
單文檔方法將訓練集里每一個文檔當做一個訓練實例,文檔對方法將同一個査詢的搜索結果里任意兩個文檔對作為一個訓練實例,文檔列表方法與上述兩種方法都不同,ListWise方法直接考慮整體序列,針對Ranking評價指標進行優化。比如常用的MAP, NDCG。常用的ListWise方法有:
- LambdaRank
- AdaRank
- SoftRank
- LambdaMART
Learning to rank指標介紹
-
MAP(Mean Average Precision):
假設有兩個主題,主題1有4個相關網頁,主題2有5個相關網頁。某系統對於主題1檢索出4個相關網頁,其rank分別為1, 2, 4, 7;對於主題2檢索出3個相關網頁,其rank分別為1,3,5。對於主題1,平均准確率為(1/1+2/2+3/4+4/7)/4=0.83。對於主題2,平均准確率為(1/1+2/3+3/5+0+0)/5=0.45。則MAP= (0.83+0.45)/2=0.64。 -
NDCG(Normalized Discounted Cumulative Gain):
參考:https://blog.csdn.net/starzhou/article/details/51438140