Learning to Rank之Ranking SVM 簡介

  排序一直是信息檢索的核心問題之一,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簡介

相關文章
相關標籤/搜索