Boosting原理及其應用


一、背景
故事:
   某男到醫院就診,醫生親切地問了一些該男的症狀,最后得出結論:“醫生說我懷孕了。。。”
血淋淋的故事告訴我們:
    需要一個好的診斷器:根據病人的一系列症狀,得出病人患的是什么病。
 
實際上,這是一個分類問題。
 
分類問題很常見:
1) 博客男女
2) OCR
3) 情感分類
4) 查詢意圖識別
5) 排序學習
6) 等等
 
文本分類算法:
1) Nave Bayes
2) Decision Tree
3) KNN
4) ANN
5) SVM
6) ME
7) ...
 
然而,事實是殘酷的。直接尋找一個強分類器很困難。
 
弱 + … + 弱 ≈ 強
- 古語有雲:三個臭皮匠,頂個諸葛亮。
- Finding many rough rules of thumb can be a lot easier and more effective than finding a single, highly prediction rule.
 
啟發:
    整合多個弱分類器,成為一個強大的分類器。這時候,集合分類器(Boosting, Bagging等)出現了。
 
二、Boosting原理
1. Boosting由來
Kearns & Valiant (1984) 
PAC學習模型
提出問題:
1) 強學習算法:存在一個多項式時間的學習算法以識別一組概念,且識別的正確率很高。
2) 弱學習算法:識別一組概念的正確率僅比隨機猜測略好。
3) 弱學習器與強學習器的等價問題。如果兩者等價,只需找到一個比隨機猜測略好的學習算法,就可以將其提升為強學習算法。
 
Kearns & Valiant (1989)
證明了弱學習器和強學習器的等價問題。
 
Schapire (1989)
第一個提出了一個可證明的多項式時間的Boosting算法。
 
Schapire, etc. (1993)
第一次把Boosting算法思想用於實際應用:OCR。
 
Freund & Schapire (1995)
AdaBoost算法。
 
2. Boosting思想
基本思想:
1) 先賦予每個訓練樣本相同的概率。
2) 然后進行T次迭代,每次迭代后,對分類錯誤的樣本加大權重(重采樣),使得在下一次的迭代中更加關注這些樣本。
 
示例:
 
3. AdaBoost算法及分析
1) Base Setting
二元分類問題
訓練數據:
(x1, y1), …, (xm, ym)
where xi∈X, yi∈Y={-1, +1}
Dt(i): 樣本xi 在第t次迭代的權重
D1(i)=1/m
ht(X):弱學習器Ct訓練得到的判別函數
ht:X->{-1, +1}
εt:ht(X)的錯誤率
 
2) 基本思路
a) 訓練一系列弱學習器h1, h2, …, hT。
b) 在訓練過程中,注重那些分類錯誤的樣本。
c) 把訓練出來的一系列弱學習器組合起來,每個弱學習器ht(X)都有一個相應的權重α t:
 
3)AdaBoost算法
弱學習器Ct的權重αt由第t次迭代決定
 
訓練樣本的分布權重Dt (i)在每一次迭代都會更新
 
弱學習器Ct的選擇:
    如果某次迭代的訓練誤差大於1/2,則拋棄,算法停止
 
算法在每次迭代都會更新樣本的分布權重,在下一次迭代前會進行一次訓練樣本的重采樣。
 
如何進行重采樣?
    可根據概率分布Dt(i)來采樣。“輪盤賭”算法是其中一種比較簡單、高效的方法。
 
“輪盤賭”算法
使用一個[0~1]隨機數生成器
舉例:如果隨機數生成器生成0.525,則恭喜你,獲得“康師傅冰紅茶”一瓶;若生成0.91,則能獲得寶馬一部。
 
4) AdaBoost特性分析
特性1:
    訓練誤差的上界,隨着迭代次數的增加,會逐漸下降。
 
特性2:
    AdaBoost算法即使訓練次數很多,也不會出現過度擬合(over fitting)的問題。
 
三、應用
1. 文本分類
給定某篇文檔,判別其所屬類別
文檔可能是某些網頁,也可能是短文本(query,微博等)
應用很廣
 
AdaBoost (weak learner: NB, C4.5等)
 
 
2. 排序學習
1) 排序問題
2) 排序模型
 
3) 根據訓練樣本的形式及損失函數分類:
a) Pointwise approach
Prank
McRank
b) Pairwise approach
RankBoost
Ranking SVM
RankNet
c) Listwise approach
ListNet
ListMLE
 
4) RankBoost算法
 
參考文獻
[1] Richard O. Duda, etc. Pattern Classification.
[2] Bing Liu. Web Data Mining.
[3] Tom M. Mitchell. Machine Learning.
[4] Yoav Freund, Robert E. Schapire. A short Introduction to Boosting.
[5] Dong Lehong. Survey of Boosting.
[6] Li Hang. Learning to Rank.
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM