隨機森林和GBDT的區別

一,隨機森林

隨機森林是一個用隨機方式建立的,包含多個決策樹的集成分類器。其輸出的類別由各個樹投票而定(如果是迴歸樹則取平均)。假設樣本總數爲n,每個樣本的特徵數爲a,則隨機森林的生成過程如下:

  1. 從原始樣本中採用有放回抽樣的方法選取n個樣本;
  2. 對n個樣本選取a個特徵中的隨機k個,用建立決策樹的方法獲得最佳分割點;
  3. 重複m次,獲得m個決策樹;
  4. 對輸入樣例進行預測時,每個子樹都產生一個結果,採用多數投票機制輸出。

隨機森林的隨機性主要體現在兩個方面:

  1. 數據集的隨機選取:從原始的數據集中採取有放回的抽樣(bagging),構造子數據集,子數據集的數據量是和原始數據集相同的。不同子數據集的元素可以重複,同一個子數據集中的元素也可以重複。
  2. 待選特徵的隨機選取:與數據集的隨機選取類似,隨機森林中的子樹的每一個分裂過程並未用到所有的待選特徵,而是從所有的待選特徵中隨機選取一定的特徵,之後再在隨機選取的特徵中選取最優的特徵。

以上兩個隨機性能夠使得隨機森林中的決策樹都能夠彼此不同,提升系統的多樣性,從而提升分類性能。

隨機森林的優點

  1. 實現簡單,訓練速度快,泛化能力強,可以並行實現,因爲訓練時樹與樹之間是相互獨立的;
  2. 相比單一決策樹,能學習到特徵之間的相互影響,且不容易過擬合;
  3. 能處理高維數據(即特徵很多),並且不用做特徵選擇,因爲特徵子集是隨機選取的;
  4. 對於不平衡的數據集,可以平衡誤差;
  5. 相比SVM,不是很怕特徵缺失,因爲待選特徵也是隨機選取;
  6. 訓練完成後可以給出哪些特徵比較重要。

隨機森林的缺點

  1. 在噪聲過大的分類和迴歸問題還是容易過擬合;
  2. 相比於單一決策樹,它的隨機性讓我們難以對模型進行解釋。

二,GBDT (Gradient Boost Decision Tree 梯度提升決策樹)

GBDT是以決策樹爲基學習器的迭代算法,注意GBDT裏的決策樹都是迴歸樹而不是分類樹。Boost是”提升”的意思,一般Boosting算法都是一個迭代的過程,每一次新的訓練都是爲了改進上一次的結果。
GBDT的核心就在於:每一棵樹學的是之前所有樹結論和的殘差,這個殘差就是一個加預測值後能得真實值的累加量。比如A的真實年齡是18歲,但第一棵樹的預測年齡是12歲,差了6歲,即殘差爲6歲。那麼在第二棵樹裏我們把A的年齡設爲6歲去學習,如果第二棵樹真的能把A分到6歲的葉子節點,那累加兩棵樹的結論就是A的真實年齡;如果第二棵樹的結論是5歲,則A仍然存在1歲的殘差,第三棵樹裏A的年齡就變成1歲,繼續學習。
GBDT優點是適用面廣,離散或連續的數據都可以處理,幾乎可用於所有迴歸問題(線性/非線性),亦可用於二分類問題(設定閾值,大於閾值爲正例,反之爲負例)。缺點是由於弱分類器的串行依賴,導致難以並行訓練數據。

三,隨機森林和GBDT的區別:

  1. 隨機森林採用的bagging思想,而GBDT採用的boosting思想。這兩種方法都是Bootstrap思想的應用,Bootstrap是一種有放回的抽樣方法思想。雖然都是有放回的抽樣,但二者的區別在於:Bagging採用有放回的均勻取樣,而Boosting根據錯誤率來取樣(Boosting初始化時對每一個訓練樣例賦相等的權重1/n,然後用該算法對訓練集訓練t輪,每次訓練後,對訓練失敗的樣例賦以較大的權重),因此Boosting的分類精度要優於Bagging。Bagging的訓練集的選擇是隨機的,各訓練集之間相互獨立,弱分類器可並行,而Boosting的訓練集的選擇與前一輪的學習結果有關,是串行的。
  2. 組成隨機森林的樹可以是分類樹,也可以是迴歸樹;而GBDT只能由迴歸樹組成。
  3. 組成隨機森林的樹可以並行生成;而GBDT只能是串行生成。
  4. 對於最終的輸出結果而言,隨機森林採用多數投票等;而GBDT則是將所有結果累加起來,或者加權累加起來。
  5. 隨機森林對異常值不敏感;GBDT對異常值非常敏感。
  6. 隨機森林對訓練集一視同仁;GBDT是基於權值的弱分類器的集成。
  7. 隨機森林是通過減少模型方差提高性能;GBDT是通過減少模型偏差提高性能。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章