統計學習方法 李航---第8章 提高方法

第8章提高方法

提高(boosting)方法是一種經常使用的統計學習方法,應用普遍且有效。在分 類問題中,它經過改變訓練樣本的權重,學習多個分類器,並將這些分類器進行 線性組合,提升分類的性能。
基本思想:對於分類問題而言,給定一個訓練樣本集,求比較粗糙的分類規則(弱分類 器)要比求精確的分類規則(強分類器)容易得多。提高方法就是從弱學習算法 出發,反覆學習,獲得一系列弱分類器(又稱爲基本分類器),而後組合這些弱 分類器,構成一個強分類器。大多數的提高方法都是改變訓練數據的機率分佈(訓 練數據的權值分佈),針對不一樣的訓練數據分佈調用弱學習算法學習一系列弱分 類器。

8.1 提高方法AdaBoost(AdaptiveBoosting)算法

對提高方法來講,有兩個問題須要回答:一是在每一輪如何改變訓練 數據的權值或機率分佈;二是如何將弱分類器組合成一個強分類器。
關於第1個 問題,AdaBoost的作法是,提升那些被前一輪弱分類器錯誤分類樣本的權值,而 下降那些被正確分類樣本的權值。這樣一來,那些沒有獲得正確分類的數據,由 於其權值的加大而受到後輪的弱分類器的更大關注。因而,分類問題被一系列 的弱分類器「分而治之」
至於第2個問題,即弱分類器的組合,AdaBoost採起 加權多數表決的方法。具體地,加大分類偏差率小的弱分類器的權值,使其在表 決中起較大的做用,減少分類偏差率大的弱分類器的權值,使其在表決中起較小 的做用。
  
算法步驟說明:
步驟2 (b) 代表G m(x)在加權的 訓練數據集上的分類偏差率是被 G m (x) 誤分類樣本的權值之和,由此能夠看出數 據權值分佈D m 與基本分類器 G m (x) 的分類偏差率的關係。
步驟2 (c )可知,當e m <=1/2時,a m > =0,而且 a m 隨着 e m 的減少而增大,因此 分類偏差率越小的基本分類器在最終分類器中的做用越大。
(d) 更新訓練數據的權值分佈爲下一輪做準備,式(8.4}能夠寫成
由此可知,被基本分類器 G m (x) 誤分類樣本的權值得以擴大,而被正確分類樣本 的權值卻得以縮小。.兩相比較,誤分類樣本的權值被放大。
不改變所給的訓練數據,而不斷改變 訓練數據權值的分佈,使得訓練數據在基本分類器的學習中起不一樣的做用,這是 AdaBoost的一個特色.
步驟(3)   全部 係數 a m 之和並不爲1。 利用基本分類器的線性組合構建最終 分類器是AdaBoost的另外一特色。

8.2  AdaBoost算法的訓練偏差分析

定理8.1 (AdaBoost的訓練偏差界) AdaBoost算法最終分類器的訓練偏差 界爲
這必定理說明,能夠在每一輪選取適當的 G m 使得Z m 最小,從而使訓練偏差 降低最快。對二類分類問題,有以下結果:
定理8.2(二類分類問題AdaBoost的練偏差界)

這裏,r m =1/2 - e m
 
推論8.1 若是存在r>0,對全部m有 r m >=r,則
這代表在此條件下AdaBoost的訓練偏差是以指數速率降低的。
注意,AdaBoost算法不須要知道下界r 。AdaBoost具備適應性,即它 能適應弱分類器各自的訓練偏差率。
AdaBoost的訓練偏差分析代表,AdaBoost的每次迭代能夠減小它在訓練 數據集上的分類偏差率,這說明了它做爲提高方法的有效性。

8.3  AdaBoost算法的解釋

AdaBoost算法還有另外一個解釋,便可以認爲AdaBoost算法是模型爲加法模型、損失函數爲指數函數、學習算法爲前向分步算法時的二類分類學習方法。

前向分步算法(forward stagewise algorithm)算法

加法模型:

 

其中,b爲基函數,r爲基函數的參數,beta爲基函數的係數
前向分步算法同時求解從m=1到M全部參數的優化問題簡化爲逐次求解各個參數的優化問題.

 


前向分步算法與AdaBoost是等價的。函數

定理8.3  AdaBoost算法是前向分步加法算法的特例。這時,模型是由基本分類器組成的加法模型,損失函數是指數函數。

8.4 提高樹

提高樹是以分類樹或迴歸樹爲基本分類器的提高方法。提高樹被認爲是統計 學習中性能最好的方法之一。
 
 

提高樹模型性能

提高方法實際採用加法模型(即基函數的線性組合)與前向分步算法。以決 策樹爲基函數的提高方法稱爲提高樹(boosting tree)。對分類問題決策樹是二叉 分類樹,對迴歸問題決策樹是二叉迴歸樹。
基本分類器x<v或 x>v,能夠看做是由一個根結點直接鏈接兩個葉結點的簡單決策樹,即所謂的 策樹樁(decision stump)。
提高樹模型能夠表示爲決策樹的加法模型:
其中,T表示決策樹,theta爲決策樹的參數,M爲樹的個數。

提高樹算法學習

提高樹算法採用前向分步算法。首先肯定初始提高樹f0(x)=0,第m步的模型是

其中,fm-1(x)爲當前模型,經過經驗風險極小化肯定下一棵決策樹的參數。

不一樣問題的提高樹學習算法主要區別在於使用的損失函數 不一樣。包括用平方偏差損失函數的迴歸問題,用指數損失函數的分類問題,以及 用通常損失函數的通常決策問題。
對於二類分類問題,提高樹算法只需將AdaBoost算法8.1中的基本分類器限 製爲二類分類樹便可,是AdaBoost算法的特殊狀況。

迴歸問題的提高樹算法優化

 

當採用平方偏差損失函數時,
在前向分步算法的第m步,損失變爲,
其中 是當前模型擬合數據的殘差(residual)。
因此 對迴歸問題的提高樹算法來講,求解 經驗風險極小化的問題 只需簡單地擬合當前模型的殘差

 

梯度提高算法spa

 提高樹利用加法模型與前向分步算法實現學習的優化過程。當損失函數是平 方損失和指數損失函數時。每一步優化是很簡單的。但對通常損失函數而言,往 往每一步優化並不那麼容易。針對這一問題,Freidmao提出了梯度提高(gradient  boosting)算法。這是利用最速降低法的近似方法,其關鍵是利用損失函數的負 梯度在當前模型的值
做爲迴歸問題提高樹算法中的殘差的近似值,擬合一個迴歸樹。
算法第1步初始化,估計使損失函數極小化的常數值,它是隻有一個根結點 的樹,即 x>c 和 x<c;
第2 (a)步計算損失函數的負梯度在當前模型的值,將它做爲殘差的估計。對 於平方損失函數,它就是一般所說的殘差;對於通常損失函數,它就是殘差的近 似值。
第2 (b)步估計迴歸樹葉結點區域,以擬合殘差的近似值
第2 (c)步利用線 性搜索估計葉結點區域的值,使損失函數極小化
第2 (d)步更新迴歸樹。
第3步 獲得輸出的最終模型。
 
 



相關文章
相關標籤/搜索