Learning to Rank,即排序學習,簡稱爲 L2R,它是構建排序模型的機器學習方法,在信息檢索、天然語言處理、數據挖掘等場景中具備重要的做用。其達到的效果是:給定一組文檔,對任意查詢請求給出反映文檔相關性的文檔排序。本文簡單介紹一下 L2R 的基本算法及評價指標。html
隨着互聯網的快速發展,L2R 技術也愈來愈受到關注,這是機器學習常見的任務之一。信息檢索時,給定一個查詢目標,咱們須要算出最符合要求的結果並返回,這裏面涉及一些特徵計算、匹配等算法,對於海量的數據,若是僅靠人工來干預其中的一些參數來進行排序的話,是遠遠不能達到要求的,而 L2R 算法就是用來解決這種問題的,L2R 將機器學習的技術很好地應用到了排序中,並提出了一些新的理論和方法,有效解決了排序的問題,並且效率上相比人工干預也有了幾個數量級的飛躍。web
L2R 算法主要包括三種類別:Pointwise、Pairwise、Listwise,下面分別進行介紹。算法
Pointwise 將問題轉化爲多分類或迴歸問題。若是歸結爲多分類問題,對於某個 Query,對文檔與此 Query 的相關程度打標籤,標籤分爲有限的類別,這樣就將問題轉爲多分類問題;若是歸結爲迴歸問題,對於某個 Query,則對文檔與此 Query 的相關程度計算相關度 Score,這樣就將問題歸結爲迴歸問題。機器學習
應用 Pointwise 模型有 Subset Ranking、OC SVM、McRank、Prank 等。函數
特定的 Query,文檔的特徵向量。性能
文檔與 Query 的標籤類別或相關性分數。學習
迴歸 Loss、分類 Loss、有序迴歸 Loss。優化
Pointwise 算法實現簡單,易於理解,但它只對給定 Query 單個文檔的相關度進行建模,僅僅考慮了單個文檔的絕對相關度,Pointwise 只學習到了文檔和 Query 的全局相關性,對排序前後順序有必定的影響。在某一些場景下,排在最前面的幾個文檔對排序結果的影響很是重要,如搜索引擎的第一頁的內容很是重要,而 Pointwise 沒有考慮這方面的影響,不對排序的前後順序優劣作懲罰。搜索引擎
上文提到 Pointwise 方法只考慮了單個文檔和 Query 的絕對相關度,Pairwise 考慮的則是兩個文檔之間的相對相關度,比較不一樣文檔的前後順序。Pairwise 方法是目前比較流行的方法,它將整個排序問題轉爲二元分類問題,即構建的是一個二分類器,對一個文檔對 <Doc1, Doc2> 作二分類,一類是 Doc1 排序前於 Doc2,另外一類則相反,經過兩兩比較,模型能夠學習到不一樣文檔之間的前後順序。spa
應用 Pairwise 的模型有 Ranking SVM、RankBoost、RankNet、GBRank、IR SVM 等。
特定 Query,文檔對 <Doc1, Doc2>。
文檔對偏向得分,{-1, 1}。
Pairwise 分類 Loss。
Pairwise 方法經過考慮兩兩文檔之間的相關度來進行排序,有必定進步。但 Pairwise 使用的是兩文檔之間相關相關度的損失函數,而它和真正衡量排序效果的指標之間存在很大不一樣,甚至多是負相關的,如可能出現 Pairwise Loss 愈來愈低,但 NDCG 分數也愈來愈低的現象。另外此方法只考慮了兩個文檔的前後順序,且沒有考慮文檔在搜索列表中出現的位置,致使最終排序效果並不理想。
Listwise 算法相對於 Pointwise 和 Pairwise 方法來講,它再也不將排序問題轉化爲一個分類問題或者回歸問題,而是直接針對評價指標對文檔的排序結果進行優化,如經常使用的 MAP、NDCG 等。
應用 Listwise 的模型有 ListNet、ListMLE、SVM MAP、AdaRank、SoftRank、LambdaRank、LambdaMART。其中 LambdaMART(對 RankNet 和 LambdaRank 的改進)在 Yahoo Learning to Rank Challenge 表現出最好的性能。
特定Query,文檔集合
全部文檔的打分或者排列順序
評價指標如 NDCG、MAP 等。
因爲此種方法是針對評價指標直接進行優化,因此它每每表現出不錯的效果。
L2R 評價指標主要有 NDCG、MAP、WTA、MRR 等,下面分別簡單介紹一下。
NDCG,全稱爲 Normalized Discounted Cumulative Gain,是一種綜合考慮模型排序結果和真實序列之間的關係的一種指標,也是最經常使用的衡量排序結果的指標,其計算公式以下:
$$ \mathrm{NDCG@K} = \frac{DCG}{iDCG} $$
NDCG 實際上是由 DCG 的值計算出來的,分子爲模型計算出的 DCG 值,分母則爲理想狀況下的 DCG 值,而 DCG 的計算公式以下:
$$ \mathrm{DCG@K} = \sum_{i=1}^{k}{\frac {{2^{r(i)}-1}}{\log_{2}{(i+1)}}} $$
在 DCG 的表達式中,$\sum_{i=1}^{k}$ 是求和累積,${r(i)}$ 表示在模型給出的排序中,排名爲 i 的元素的實際分數,這裏經過 ${2^{r(i)}-1}$ 運算放大了其分數的差別,$\log_{2}{(i+1)}$ 是每一個元素的折價,因爲排序靠前的元素被選取的機率更大,因此這裏可使得排名前面的元素影響權重更大。
MAP,全稱爲 Mean Average Precision,即平均準確率。對於每一個真實相關的文檔,考慮其在模型排序結果中的位置 P,統計該位置以前的文檔集合的分類準確率,取全部這些準確率的平均值。
對於一個 Query,本來有 4 個相關結果,查詢時將 4 個結果都查詢出來了,其 rank 分別爲 1, 2, 4, 7,則 MAP 爲 (1/1 + 2/2 + 3/4 + 4/7)/4 = 0.83。對於另外一個 Query,本來有 5 個相關結果,查詢只有 3 個相關結果,其 rank 分別爲 1, 3, 5,則 MAP 爲 (1/1 + 2/3 + 3/5 + 0 + 0)/5 = 0.45。則 MAP = (0.83 + 0.45)/2 = 0.64。
WTA,全稱 Winners Take All,對於給定的查詢 Query,若是模型返回的結果列表中,第一個文檔是相關的,則 WTA =1, 不然爲 0。
如對於一個 Query,原本有 5 個相關結果,查詢結果中若是第一個結果是相關的,那麼 WTA = 1,若是第一個結果是不相關的,則 WTA = 0。
MRR,全稱 Mean Reciprocal Rank,是把相關文檔在結果中的排序倒數做爲準確度,而後再取平均。
如對於第一個 Query,查詢結果將正確結果排名 rank 爲 3,則其 Reciprocal Rank 爲 1/3,對於第二個 Query,查詢結果將正確結果排名 rank 爲 2,則其 Reciprocal Rank 爲 1/2,對於第三個 Query,查詢結果將正確結果排名 rank 爲 1,則其 Reciprocal Rank 爲 1,則 MRR = (1/3 + 1/2 + 1)/3 = 11/18 = 0.61。