排序一直是信息檢索的核心問題之一,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)。
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為文檔對之間的相對相關性, ξ為松弛變量。
3. 使用Clickthrough數據作為訓練數據
T. Joachims提出了一種非常巧妙的方法, 來使用Clickthrough數據作為Ranking SVM的訓練數據。
假設給定一個查詢"Support Vector Machine", 搜索引擎的返回結果為
其中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簡介