機器學習基礎:集成學習方法應用實驗(RF、GBDT)

集成學習正廣泛地被應用於機器學習/數據挖掘的實際項目之中。掌握集成學習方法,瞭解其特性與適用場景,對機器學習理論與實踐的結合幫助甚大。這裏,我們考察集成學習最重要的兩種類型:裝袋(Bagging)與提升(Boosting),從其兩大算法入手:Random Forest、GBDT,基於自己生成的數據集場景和UCI數據集開展實驗,對比分析算法的表現。

基礎簡要回顧

關於集成學習,引用博文筆記︱集成學習Ensemble Learning的描述如下圖:

這裏寫圖片描述

從圖中可以看出,集成學習包括元算法和模型融合兩方面,元算法提供了從個體弱學習器到集成強學習器的實現,模型融合則在強學習器的基礎上,設計結合策略進一步提升性能,元算法按照個體弱學習器之間的依賴關聯關係,又分爲Boosting類算法和Bagging類算法。下面對其中最基礎的幾大算法進行概述。

Bagging

Bagging(裝袋法)基於自助採樣法(bootstrap sampling)來生成訓練數據,通過多輪有放回的對初始訓練集進行隨機採樣,多個訓練集被並行化生成,對應可訓練出多個基學習器,再將這些基學習器結合,構建出強學習器。

因爲是隨機有放回的採樣(自助法),初始訓練集中的樣本既有可能多次出現在某個採樣集中,又有可能不出現,通過統計計算,初始集約有63.2%的樣本出現在訓練集當中,剩下的36.8%樣本可用於模型泛化能力的驗證,這種方法稱爲“包外估計”(out-of-bag-estimation),同時包外樣本還可以用於決策樹的剪枝、神經網絡早停控制等等。

裝袋法的本質是引入了樣本擾動,通過增加樣本隨機性,達到降低方差的效果,這種方法在決策樹、神經網絡等易受樣本擾動影響的模型上效果尤爲明顯。

RF

RF-Random Forest(隨機森林)是Bagging的擴展,主要面向決策樹模型,在Bagging法構造決策樹基學習器的基礎上,對每步劃分時的當前特徵集進行隨機選擇以生成隨機特徵子集,然後再在子集中選擇最優特徵進行劃分,進而訓練出當前的基學習器。

在進行當前節點特徵(假設 d 個)隨機選擇時,子集特徵數目 k 推薦取值 k≈log2(d) 。較小的特徵子集加速了訓練,減小了計算開銷。

隨機森林通過特徵子集的隨機選擇的方式,引入了特徵擾動,在裝袋法的基礎上,這種方法可進一步降低了方差,增強了模型的泛化精度。

AdaBoost

不同與Bagging,Boosting算法是一種串行序列化方法,它的前後兩個基學習器間強關聯,後面學習器的訓練往往建立在前面學習器的訓練結果基礎上。

AdaBoost算法是Boosting算法族的典型代表,它基於“殘差逼近”的思路,採用“重賦權法”,即是根據每個基學習器的結果調整樣本權重,生成新的更加關注於錯誤樣本的數據分佈,然後在新數據分佈上繼續以損失函數最小爲目標訓練新的基學習器。同時根據這些基學習器的訓練誤差,對基學習器賦權,最後採用加權求和得出集成模型。

AdaBoost旨在減小學習的偏差,能夠基於泛化精度很差的學習器個體構建出強集成。

GBDT

GB(Gradient Boosting)可以被看作是AdaBoost的變體,最大不同之處在於GB在迭代優化過程中採用了梯度計算而非加權計算。GB通過在每一步殘差減少的梯度方向上訓練新的基學習器,最後通過集成得到強學習器。

GBDT算法(Gradient Boosting Decision Tree)是一種基於GB框架下的決策樹集成學習算法。基學習器採用的是以最小化平方誤差爲目標的迴歸樹,迭代的過程建立在對“之前殘差的負梯度表示”的迴歸擬合上,最後累加得到整個提升樹。

同其他Boosting算法一樣,GBDT也關注於降低擬合的偏差

分類實驗

這裏我們採用2個sklearn.datasets自帶的UCI數據集進行實驗。兩種算法(RF和GBDT)的實現基於sklearn.ensemble這裏查看完整實驗代碼-GitHub

數據集

2個數據集的簡要信息如下:

# 總類別數 特徵數 樣本數 其他
IRIS-鳶尾花數據集 3 4 150(每類50條樣本) 特徵均爲數值連續型、無缺失值
Breast_Cancer-乳腺癌數據集 2 30 569(正樣本212條,負樣本357條) 特徵均爲數值連續型、無缺失值

加載數據,通過matplotlib繪製出散點圖示意如下:

這裏寫圖片描述

模型訓練測試

基於兩種參數(決策樹深 max_depth、基樹個數 n_estimators)的不同取值下集成學習的性能來進行分析,給出不同參數下測試集準確率組圖如下:

  1. RF模型下 max_depth 參數對準確率的影響:

    這裏寫圖片描述

  2. RF模型下 n_estimators 參數對準確率的影響:

    這裏寫圖片描述

  3. GBDT模型下 max_depth 參數對準確率的影響:

    這裏寫圖片描述

  4. GBDT模型下 n_estimators 參數對準確率的影響:

    這裏寫圖片描述

從上面的系列圖可以看出:

  • 由於數據樣本本身可分性良好,所以兩種集成學習方法均表現出了極好的預測精度;
  • 進一步地,在實驗中我們發現,要達到相同的精度,RF要求的 max_depth 參數要比 GBDT 大,這是由於兩種集成方法的偏差-方差側重不同。
  • 參數 n_estimator 越大,模型精度越高,但是模型訓練耗時也越長,這是顯而易見的;

小結與參考

本文回顧了集成學習的思路,並以RF、GBDT爲典型進行了實驗。由於此處選擇的數據集並沒有太大的規模,且總體來說可分性好,所以實驗結果並沒有明顯地將RF、GBDT等方法的威力反映出來,但是,本文爲兩種算法的調參提供了思路,爲進一步將這些方法用於複雜性問題積累了經驗。

本文涉及到的一些重要參考鏈接如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章