排序一直是信息檢索的核心問題之一,Learning to Rank(簡稱LTR)用機器學習的思想來解決排序問題(關於Learning to Rank的簡介請見個人博文Learning to Rank簡介)。LTR有三種主要的方法:PointWise,PairWise,ListWise。Ranking SVM算法是PointWise方法的一種,由R. Herbrich等人在2000提出, T. Joachims介紹了一種基於用戶Clickthrough數據使用Ranking SVM來進行排序的方法(SIGKDD, 2002)。html
1. Ranking SVM的主要思想算法
Ranking SVM是一種Pointwise的排序算法, 給定查詢q, 文檔d1>d2>d3(亦即文檔d1比文檔d2相關, 文檔d2比文檔d3相關, x1, x2, x3分別是d1, d2, d3的特徵)。爲了使用機器學習的方法進行排序,咱們將排序轉化爲一個分類問題。咱們定義新的訓練樣本, 令x1-x2, x1-x3, x2-x3爲正樣本,令x2-x1, x3-x1, x3-x2爲負樣本, 而後訓練一個二分類器(支持向量機)來對這些新的訓練樣本進行分類,以下圖所示:機器學習
左圖中每一個橢圓表明一個查詢, 橢圓內的點表明那些要計算和該查詢的相關度的文檔, 三角表明很相關, 圓圈表明通常相關, 叉號表明不相關。咱們把左圖中的單個的文檔轉換成右圖中的文檔對(di, dj), 實心方塊表明正樣本, 亦即di>dj, 空心方塊表明負樣本, 亦即di<dj。學習
2. Ranking SVM測試
將排序問題轉化爲分類問題以後, 咱們就可使用經常使用的機器學習方法解決該問題。 Ranking SVM使用SVM來進行分類:搜索引擎
其中w爲參數向量, x爲文檔的特徵,y爲文檔對之間的相對相關性, ξ爲鬆弛變量。spa
3. 使用Clickthrough數據做爲訓練數據code
T. Joachims提出了一種很是巧妙的方法, 來使用Clickthrough數據做爲Ranking SVM的訓練數據。orm
假設給定一個查詢"Support Vector Machine", 搜索引擎的返回結果爲htm
其中1, 3, 7三個結果被用戶點擊過, 其餘的則沒有。由於返回的結果自己是有序的, 用戶更傾向於點擊排在前面的結果, 因此用戶的點擊行爲自己是有偏(Bias)的。爲了從有偏的點擊數據中得到文檔的相關信息, 咱們認爲: 若是一個用戶點擊了a而沒有點擊b, 可是b在排序結果中的位置高於a, 則a>b。
因此上面的用戶點擊行爲意味着: 3>2, 7>2, 7>4, 7>5, 7>6。
4. Ranking SVM的開源實現
H. Joachims的主頁上有Ranking SVM的開源實現。
數據的格式與LIBSVM的輸入格式比較類似, 第一列表明文檔的相關性, 值越大表明越相關, 第二列表明查詢, 後面的表明特徵
3 qid:1 1:1 2:1 3:0 4:0.2 5:0 # 1A 2 qid:1 1:0 2:0 3:1 4:0.1 5:1 # 1B 1 qid:1 1:0 2:1 3:0 4:0.4 5:0 # 1C 1 qid:1 1:0 2:0 3:1 4:0.3 5:0 # 1D 1 qid:2 1:0 2:0 3:1 4:0.2 5:0 # 2A 2 qid:2 1:1 2:0 3:1 4:0.4 5:0 # 2B 1 qid:2 1:0 2:0 3:1 4:0.1 5:0 # 2C 1 qid:2 1:0 2:0 3:1 4:0.2 5:0 # 2D 2 qid:3 1:0 2:0 3:1 4:0.1 5:1 # 3A 3 qid:3 1:1 2:1 3:0 4:0.3 5:0 # 3B 4 qid:3 1:1 2:0 3:0 4:0.4 5:1 # 3C 1 qid:3 1:0 2:1 3:1 4:0.5 5:0 # 3D
訓練模型和對測試數據進行排序的代碼分別爲:
./svm_rank_learn path/to/train path/to/model
./svm_classify path/to/test path/to/model path/to/rank_result
參考文獻:
[1]. R. Herbrich, T. Graepel, and K. Obermayer. Large margin rank boundaries for ordinal regression. In Advances in Large Margin Classifiers, 2000.
[2]. T. Joachims. Optimizing Search Engines using Clickthrough Data. SIGKDD, 2002.
[3]. Hang Li. A Short Introduction to Learning to Rank.
[4]. Tie-yan Liu. Learning to Rank for Information Retrieval.
[5]. Learning to Rank簡介