1. 程式人生 > >整合學習(Ensemble Learning)綜述

整合學習(Ensemble Learning)綜述

整合學習簡單理解就是指採用多個分類器對資料集進行預測,從而提高整體分類器的泛化能力。
整合學習有兩個流派,一個是boosting派系,它的特點是各個弱學習器之間有依賴關係另一種是bagging流派,它的特點是各個弱學習器之間沒有依賴關係,可以並行擬合

1. Bagging

Bagging演算法(Bootstrap aggregating,引導聚集演算法),又稱裝袋演算法,是機器學習領域的一種整合學習演算法。

演算法思想:
  1. For t = 1, 2, …, T Do
  2. 從資料集S中取樣(放回選樣)
  3. 訓練得到模型Ht
  4. 對未知樣本X分類時,每個模型Ht都得出一個分類,得票最高
    的即為未知樣本X的分類;
    對於數值類的迴歸預測問題,通常使用的結合策略是平均法,也就是說,對於若干和弱學習器的輸出進行平均得到最終的預測輸出。

1.1隨機森林

隨機森林是一個包含多個決策樹的分類器,並且其輸出的類別是由個別樹輸出的類別的眾數而定。 Leo Breiman和Adele Cutler發展出推論出隨機森林的演算法

演算法思想:
  1. N來表示訓練用例(樣本)的個數,M表示特徵數目。
  2. 輸入特徵數目m,用於確定決策樹上一個節點的決策結果;其中m應遠小於M
  3. N個訓練用例(樣本)中以有放回抽樣的方式,取樣N次,形成一個訓練集(即bootstrap取樣),並用未抽到的用例(樣本)作預測,評估其誤差。
  4. 對於每一個節點,隨機選擇m個特徵,決策樹上每個節點的決定都是基於這些特徵確定的。根據這m個特徵,計算其最佳的分裂方式。
  5. 每棵樹都會完整成長而不會剪枝(Pruning,這有可能在建完一棵正常樹狀分類器後會被採用)

2.Boosting

2.1 Adaboost

AdaBoost,是英文”Adaptive Boosting”(自適應增強)的縮寫。AdaBoost方法的自適應在於:前一個分類器分錯的樣本會被用來訓練下一個分類器。AdaBoost方法對於噪聲資料和異常資料很敏感。但在一些問題中,AdaBoost方法相對於大多數其它學習演算法而言,不會很容易出現過擬合現象。AdaBoost方法中使用的分類器可能很弱(比如出現很大錯誤率),但只要它的分類效果比隨機好一點(比如兩類問題分類錯誤率略小於0.5),就能夠改善最終得到的模型。而錯誤率高於隨機分類器的弱分類器也是有用的,因為在最終得到的多個分類器的線性組合中,可以給它們賦予負係數

,同樣也能提升分類效果。
AdaBoost方法是一種迭代演算法,在每一輪中加入一個新的弱分類器,直到達到某個預定的足夠小的錯誤率。每一個訓練樣本都被賦予一個權重,表明它被某個分類器選入訓練集的概率。如果某個樣本點已經被準確地分類,那麼在構造下一個訓練集中,它被選中的概率就被降低;相反,如果某個樣本點沒有被準確地分類,那麼它的權重就得到提高。通過這樣的方式,AdaBoost方法能“聚焦於”那些較難分(更富資訊)的樣本上

步驟:

假設有n個樣本,D:{(x1,y1),(x2,y2),...,(xn,yn)}, x是特徵向量, y{1,1}是標籤
1. 初始化樣本 D:{(x1,y1),(x2,y2),...,(xn,yn)}, xkmax(最大迴圈次數),樣本分佈Wk(i)=1/ni=1,...,n
2. k=0
3. do kk+1
4. 訓練使用按照Wk(i)取樣的D的弱分類器Ck
5. Ek ←計算弱分類器Ck的訓練誤差, 如果Ek>0.5, 則continue
6. αk12ln1EkEk, 這裡αk就是該分類器的權重
7. 改變樣本的分佈,提高錯分樣本的概率,降低正確分類樣本的概率