AdaRank和AdaBoost

這篇論文的題目是AdaRank: A Boosting Algorithm for InformationRetrieval。作者是微軟亞洲研究院的的徐君和李航。

這篇文章的主要思想就是利用boosting算法的思想在learning to rank裏直接優化評價方法(directoptimization of performance measure).涉及到learning to rankboosting的知識。

先說learning to rank

排序學習,是一種基於supervised learning 的排序方法。傳統的排序方法一般是通過構造一個排序函數(scoring function)來實現,該排序函數可以體現不同的標準,在IR領域一般是按照相關度進行排序。在搜索引擎中,對於一條查詢詞query,搜索引擎將返回一個相關的文檔document 列表,然後根據文檔和查詢詞之間的相關度,對列表中的文檔進行排序,然後返回給用戶。如果傳統的排序模型中參數較多的話,會使得經驗方法調參特別困難。於是引入了機器學習的思想來解決這一問題,於是就有了learning to rank的出現。

再說boosting

起源:

Boosting是一種提高任意給定學習算法準確度的方法。它的思想起源於 Valiant提出的 PAC ( Probably Approxi mately Cor2rect)學習模型。Valiant和 Kearns提出了弱學習和強學習的概念 ,識別錯誤率小於1/2,也即準確率僅比隨機猜測略高的學習算法稱爲弱學習算法;識別準確率很高並能在多項式時間內完成的學習算法稱爲強學習算法。同時 ,Valiant和 Kearns首次提出了 PAC學習模型中弱學習算法和強學習算法的等價性問題,即任意給定僅比隨機猜測略好的弱學習算法 ,是否可以將其提升爲強學習算法 ? 如果二者等價 ,那麼只需找到一個比隨機猜測略好的弱學習算法就可以將其提升爲強學習算法 ,而不必尋找很難獲得的強學習算法。1990年, Schapire最先構造出一種多項式級的算法 ,對該問題做了肯定的證明 ,這就是最初的 Boosting算法。一年後 ,Freund提出了一種效率更高的Boosting算法。但是,這兩種算法存在共同的實踐上的缺陷 ,那就是都要求事先知道弱學習算法學習正確的下限。1995年 , Freund和 schapire改進了Boosting算法 ,提出了 AdaBoost (Adaptive Boosting)算法,該算法效率和 Freund於 1991年提出的 Boosting算法幾乎相同 ,但不需要任何關於弱學習器的先驗知識 ,因而更容易應用到實際問題當中。之後 , Freund和 schapire進一步提出了改變 Boosting投票權重的AdaBoost . M1,AdaBoost . M2等算法 ,在機器學習領域受到了極大的關注。只要理解了AdaBoost的思想也就很容易理解Adarank的思想。

簡單介紹下AdaBoost

AdaBoost是一種迭代算法,其核心思想是針對同一個訓練集訓練不同的分類器,即弱分類器,然後把這些弱分類器集合起來,構造一個更強的最終分類器。算法本身是改變數據分佈實現的,它根據每次訓練集之中的每個樣本的分類是否正確,以及上次的總體分類的準確率,來確定每個樣本的權值。將修改權值的新數據送給下層分類器進行訓練,然後將每次訓練得到的分類器融合起來,作爲最後的決策分類器。

使用AdaBoost分類器可以排除一些不必要的訓練數據特徵,並將關鍵放在關鍵的訓練數據上面

AdaBoost算法的具體描述如下:

假定X表示樣本空間,Y表示樣本類別標識集合,假設是二值分類問題,這裏限定Y={-1,+1}。令S={(Xi,yi)|i=1,2,…,m}爲樣本訓練集,其中Xi∈X,yi∈Y。

1.  ①     始化m個樣本的權值,假設樣本分佈Dt爲均勻分佈:Dt(i)=1/m,Dt(i)表示在第t輪迭代中賦給樣本(xi,yi)的權值

②     令T表示迭代的次數

2.  ③   For t=1 to T d

3.根據樣本分佈Dt訓練分類器ht。

4.用分類器ht對原訓練集S中的所有樣本分類。

5.得到本輪的分類器ht:X →Y,並且有誤差εt=Pri-Di[ht(xi) ≠yi]。

6.令αt=(1/2)ln[(1-εt)/ εt]。

7.更新每個樣本的權值

8.

9.end for

10.      ④     最終的預測輸出爲:



          

其中:


看完AdaBoost,AdaRank還會遠嗎?

AdaRank General FrameWork


下面是本文用到的一些字母符號:


 E表示的評價方法,可以是Map也可以是NDCG,只要取值在[-1,1]之間即可

算法:

1.     初始化,初始化查詢詞的重要性分步。剛開始每個查詢詞的重要性分步都是相同的.

2.      2.訓練弱排序模型。利用當前查詢詞的重要性分步以及指定的評價標準,計算當前弱排序模型的權重,並將其線性的加入到以前的排序模型中。

3.     3.更新每個查詢詞的重要性分步。根據指定的評價標準衡量當前的排序模型對每個查詢詞的排序結果,並由此設置下一輪每個查詢詞的重要性分步,以使下一輪的訓練算法中重點照顧那些困難的查詢詞,即根據指定的評價標準得分不是很高的查詢詞。



AdaRank是基於boosting的算法,與AdaBoost有很多相似,但也有不同最大不同:

更新權重的方法:

AdaBoost是根據當前的權重分步以及當前弱分類器的表現

而AdaRank則是根據當前的權重分步以及到目前爲止構造的弱排序器模型的表現。



既然是基於boosting的算法,因此需要知道弱學習器學習正確率的下限。

本文也給出了證明:


Experiment Results:

弱學習器的構建

可以根據樣本分步進行有放回的抽樣,利用樣本的子集構建。

In thispaper ,choose the feature that has the optimal weighted performance among allof the features:


沒有被選中的features 的權重爲0。

作者對構建弱學習器的解釋:

The construction of weak learner is basedon the re-weighted training data. The learning process is: reweighting thequeries (and documents) with the current model, constructing the weak rankerbased on reweighted queries (also documents), determining the \alpha’s.

In the paper, we used one feature as a weakranker, i.e., given the reweighted queries, we scan all of the features. Foreach feature, we tested the MAP (or NDCG) on the re-weighted training queries,and chose the best one

數據集用的爲:OHUMEd、WSJ、AP and Gov

結果略。

參考:

AdaRank:ABoosting Algorithm for information retrieval

 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章