1. 程式人生 > >隨機森林 vs GBDT

隨機森林 vs GBDT

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

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

資料集的隨機選取:從原始的資料集中採取有放回的抽樣(bagging),構造子資料集,子資料集的資料量是和原始資料集相同的。不同子資料集的元素可以重複,同一個子資料集中的元素也可以重複。 待選特徵的隨機選取:與資料集的隨機選取類似,隨機森林中的子樹的每一個分裂過程並未用到所有的待選特徵,而是從所有的待選特徵中隨機選取一定的特徵,之後再在隨機選取的特徵中選取最優的特徵。 以上兩個隨機效能夠使得隨機森林中的決策樹都能夠彼此不同,提升系統的多樣性,從而提升分類效能。

隨機森林的優點:

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

在噪聲過大的分類和迴歸問題還是容易過擬合; 相比於單一決策樹,它的隨機性讓我們難以對模型進行解釋。 二,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的區別: 隨機森林採用的bagging思想,而GBDT採用的boosting思想。這兩種方法都是Bootstrap思想的應用,Bootstrap是一種有放回的抽樣方法思想。雖然都是有放回的抽樣,但二者的區別在於:Bagging採用有放回的均勻取樣,而Boosting根據錯誤率來取樣(Boosting初始化時對每一個訓練樣例賦相等的權重1/n,然後用該演算法對訓練集訓練t輪,每次訓練後,對訓練失敗的樣例賦以較大的權重),因此Boosting的分類精度要優於Bagging。Bagging的訓練集的選擇是隨機的,各訓練集之間相互獨立,弱分類器可並行,而Boosting的訓練集的選擇與前一輪的學習結果有關,是序列的。 組成隨機森林的樹可以是分類樹,也可以是迴歸樹;而GBDT只能由迴歸樹組成。 組成隨機森林的樹可以並行生成;而GBDT只能是序列生成。 對於最終的輸出結果而言,隨機森林採用多數投票等;而GBDT則是將所有結果累加起來,或者加權累加起來。 隨機森林對異常值不敏感;GBDT對異常值非常敏感。 隨機森林對訓練集一視同仁;GBDT是基於權值的弱分類器的整合。 隨機森林是通過減少模型方差提高效能;GBDT是通過減少模型偏差提高效能。 ---------------------