1. 程式人生 > >集成學習:隨機森林.GBDT

集成學習:隨機森林.GBDT

一個 邊界 span 基礎上 差異 子節點 png 提升 並行計算

集成學習(Ensemble Learning)

集成學習的思想是將若幹個學習器(分類器&回歸器)組合之後產生一個新學習器.弱分類器(weak learner)指那些分類準確率只稍微好於隨機猜測的分類器(error
rate < 0.5);

集成算法的成功在於保證弱分類器的多樣性(Diversity).而且集成不穩定的算法也能夠得到一個比較明顯的性能提升

常見的集成學習思想有:

Bagging

Boosting

Stacking

Why need Ensemble Learning?

1. 弱分類器間存在一定的差異性,這會導致分類的邊界不同,也就是說可能存在錯誤。那麽將多個弱分類器合並後,就可以得到更加合理的邊界,減少整體的錯誤率,實現更好的效果;

2. 對於數據集過大或者過小,可以分別進行劃分和有放回的操作產生不同的數據子集,然後使用數據子集訓練不同的分類器,最終再合並成為一個大的分類器;

3. 如果數據的劃分邊界過於復雜,使用線性模型很難描述情況,那麽可以訓練多個模型,然後再進行模型的融合;

4. 對於多個異構的特征集的時候,很難進行融合,那麽可以考慮每個數據集構建一個分類模型,然後將多個模型融合。

Bagging方法

Bagging方法又叫做自舉匯聚法(Bootstrap Aggregating),思想是:在原始數據集上通過有放回的抽樣的方式,重新選擇出S個新數據集來分別訓練S個分類器的集成技術。也就是說這些模型的訓練數據中允許存在重復數據。

Bagging方法訓練出來的模型在預測新樣本分類的時候,會使用多數投票或者求均值的方式來統計最終的分類結果。

Bagging方法的弱學習器可以是基本的算法模型,eg: Linear、Ridge、Lasso、Logistic、Softmax、ID3、C4.5、CART、SVM、KNN等

備註:Bagging方式是有放回的抽樣,並且每個子集的樣本數量必須和原始樣本數量一致,但是子集中允許存在重復數據。

隨機森林(Random Forest)

在Bagging策略的基礎上進行修改後的一種算法

  從樣本集中用Bootstrap采樣選出n個樣本;

  從所有屬性中隨機選擇K個屬性,選擇出最佳分割屬性作為節點創建決策樹;

  重復以上兩步m次,即建立m棵決策樹;

  這m個決策樹形成隨機森林,通過投票表決結果決定數據屬於那一類

RF的推廣算法

RF算法在實際應用中具有比較好的特性,應用也比較廣泛,主要應用在:分類、
回歸、特征轉換、異常點檢測等。常見的RF變種算法如下:
  Extra Tree
  Totally Random Trees Embedding(TRTE)
  Isolation Forest

Extra Tree

Extra Tree是RF的一個變種,原理基本和RF一樣,區別如下:

  1. RF會隨機采樣來作為子決策樹的訓練集,而Extra Tree每個子決策樹采用原始數
據集訓練;

  2.RF在選擇劃分特征點的時候會和傳統決策樹一樣,會基於信息增益、信息增益率、
基尼系數、均方差等原則來選擇最優特征值;而Extra Tree會隨機的選擇一個特征值
來劃分決策樹。

Extra Tree因為是隨機選擇特征值的劃分點,這樣會導致決策樹的規模一般大於RF所生成的決策樹。也就是說Extra Tree模型的方差相對於RF進一步減少。在某
些情況下,Extra Tree的泛化能力比RF的強

Totally Random Trees Embedding(TRTE)完全隨機樹嵌入

TRTE是一種非監督的數據轉化方式。將低維的數據集映射到高維,從而讓映射到高維的數據更好的應用於分類回歸模型。

TRTE算法的轉換過程類似RF算法的方法,建立T個決策樹來擬合數據。當決策樹構建完成後,數據集裏的每個數據在T個決策樹中葉子節點的位置就定下來了,將位置信息轉換為向量就完成了特征轉換操作。

Isolation Forest 與世隔絕的森林

IForest是一種異常點檢測算法,使用類似RF的方式來檢測異常點;IForest算法和RF算法的區別在於:

  1. 在隨機采樣的過程中,一般只需要少量數據即可;

  2. 在進行決策樹構建過程中,IForest算法會隨機選擇一個劃分特征,並對劃分特征隨機選擇一個劃分閾值;

  3. IForest算法構建的決策樹一般深度max_depth是比較小的。

區別原因:目的是異常點檢測,所以只要能夠區分異常的即可,不需要大量數據;另外在異常點檢測的過程中,一般不需要太大規模的決策樹。

對於異常點的判斷,則是將測試樣本x擬合到T棵決策樹上。計算在每棵樹上該樣本的葉子節點的深度ht(x)。從而計算出平均深度h(x);然後就可以使用下列公式計算樣本點x的異常概率值,p(x,m)的取值範圍為[0,1],越接近於1,則是異常點的概率越大。

技術分享圖片

RF隨機森林總結

  RF的主要優點:

    1. 訓練可以並行化,對於大規模樣本的訓練具有速度的優勢;

    2. 由於進行隨機選擇決策樹劃分特征列表,這樣在樣本維度比較高的時候,仍然具有比較高的訓練性能;

    3.給出各個特征的重要性列表;

    4. 由於存在隨機抽樣,訓練出來的模型方差小,泛化能力強;

    5. RF實現簡單;

    6. 對於部分特征的缺失不敏感。

  RF的主要缺點:
    1. 在某些噪音比較大的特征上,RF模型容易陷入過擬合;
    2. 取值比較多的劃分特征對RF的決策會產生更大的影響,從而有可能影響模型的效果。

  隨機森林的思考

  在隨機森林的構建過程中,由於各棵樹之間是沒有關系的,相對獨立的;在構建的過程中,構建第m棵子樹的時候,不會考慮前面的m-1棵樹。

  Boosting

    提升學習(Boosting是一種機器學習技術,可以用於回歸和分類的問題,它每一步產生弱預測模型(如決策樹),並加權累加到總模型中;如果每一步的弱預測模型的生成都是依據損失函數的梯度方式的,那麽就稱為梯度提升(Gradientboosting);

    提升技術的意義:如果一個問題存在弱預測模型,那麽可以通過提升技術的辦法得到一個強預測模型;

    常見的模型有:
      Adaboost
      Gradient Boosting(GBT/GBDT/GBRT)

    AdaBoost算法原理

    Adaptive Boosting是一種叠代算法。每輪叠代中會在訓練集上產生一個新的學習器,然後使用該學習器對所有樣本進行預測,以評估每個樣本的重要性(Informative)。換句話來講就是,算法會為每個樣本賦予一個權重,每次用訓練好的學習器標註/預測各個樣本,如果某個樣本點被預測的越正確,則將其權重降低;否則提高樣本的權重。權重越高的樣本在下一個叠代訓練中所占的比重就越大,也就是說越難區分的樣本在訓練過程中會變得越重要;

    整個叠代過程直到錯誤率足夠小或者達到一定的叠代次數為止。

    Adaboost算法

    Adaboost算法將基分類器的線性組合作為強分類器,同時給分類誤差率較小的基本分類器以大的權值,給分類誤差率較大的基分類器以小的權重值;構建的線性組合        為:

技術分享圖片

最終分類器是在線性組合的基礎上進行Sign函數轉換:

技術分享圖片

AdaBoost總結

AdaBoost的優點如下:
  可以處理連續值和離散值;
  模型的魯棒性比較強;
  解釋強,結構簡單。
AdaBoost的缺點如下:
  對異常樣本敏感,異常樣本可能會在叠代過程中獲得較高的權重值,最終影響模型效果

梯度提升叠代決策樹GBDT

GBDT也是Boosting算法的一種,但是和AdaBoost算法不同;區別如下:AdaBoost算法是利用前一輪的弱學習器的誤差來更新樣本權重值,然後一輪一輪的叠代;GBDT也是叠代,但是GBDT要求弱學習器必須是CART模型,而且GBDT在模型訓練的時候,是要求模型預測的樣本損失盡可能的小。

GBDT由三部分構成:DT(Regression Decistion Tree)、GB(Gradient Boosting)和Shrinkage(衰減)

由多棵決策樹組成,所有樹的結果累加起來就是最終結果

叠代決策樹和隨機森林的區別:
  隨機森林使用抽取不同的樣本構建不同的子樹,也就是說第m棵樹的構建和前m-1棵樹的結果是沒有關系的
  叠代決策樹在構建子樹的時候,使用之前子樹構建結果後形成的殘差作為輸入數據構建下一個子樹;然後最終預測的時候按照子樹構建的順序進行預測,並將預測結果相加  

GBDT算法原理

  給定輸入向量X和輸出變量Y組成的若幹訓練樣本(X1,Y1),(X2,Y2)......(Xn,Yn),目標是找到近似函數F(X),使得損失函數L(Y,F(X))的損失值最小。

  L損失函數一般采用最小二乘損失函數或者絕對值損失函數

  

技術分享圖片 GBDT總結   GBDT的優點如下:
    可以處理連續值和離散值;
    在相對少的調參情況下,模型的預測效果也會不錯;
    模型的魯棒性比較強。
  GBDT的缺點如下:
    由於弱學習器之間存在關聯關系,難以並行訓練模型。 Bagging、Boosting的區別 1. 樣本選擇:Bagging算法是有放回的隨機采樣;Boosting算法是每一輪訓練集不變,只是訓練集中的每個樣例在分類器中的權重發生變化,而權重根據上一輪的分類結果進行調整;
2. 樣例權重:Bagging使用隨機抽樣,樣例的權重;Boosting根據錯誤率不斷的調整樣例的權重值,錯誤率越大則權重越大; 3. 預測函數:Bagging所有預測模型的權重相等;Boosting算法對於誤差小的分類器具有更大的權重。
4. 並行計算:Bagging算法可以並行生成各個基模型;Boosting理論上只能順序生產,因為後一個模型需要前一個模型的結果; 5. Bagging是減少模型的variance(方差);Boosting是減少模型的Bias(偏度)。
6. Bagging裏每個分類模型都是強分類器,因為降低的是方差,方差過高需要降低是過擬合;Boosting裏每個分類模型都是弱分類器,因為降低的是偏度,偏度過高是欠擬合。

集成學習:隨機森林.GBDT