【原創】機器學習從零開始系列連載(6)—— Additive Tree 模型

Additive Tree 模型

Additive tree models (ATMs)是指基礎模型是樹形結構的一類融合模型,可做分類、回歸,很多經典的模型可以被看做ATM模型,比如Random forest 、Adaboost with trees、GBDT等。

ATM 對N棵決策樹做加權融合,其判別函數為:

RandomForests

Random Forest 屬於bagging類模型,每棵樹會使用各自隨機抽樣樣本和特徵被獨立的訓練。

AdaBoost withtrees

AdaBoost with trees通過訓練多個弱分類器來組合得到一個強分類器,每次迭代會生成一棵高偏差、低方差的樹形弱分類器,每一輪的訓練會更關註上一輪被分類器分錯的樣本,為其加大權重,訓練過程如下:

GradientBoosting Decision Tree

Gradient boosted 是一類boosting的技術,不同於Adaboost加大誤分樣本權重的策略,它每次迭代加的是上一輪梯度更新值:

其訓練過程如下:

GBDT是基礎分類器為決策樹的可做分類和回歸的模型。

目前我認為最好的GBDT的實現是XGBoost:

其回歸過程的示例圖如下,通過對樣本落到每棵樹的葉子節點的權重值做累加來實現回歸(或分類):

Regression Tree Ensemble from chentianqi

其原理推導如下:

對GBDT來說依然避免不了過擬合,所以與傳統機器學習一樣,通過正則化策略可以降低這種風險:

XGBoost源碼在: https://github.com/dmlc中,其包含非常棒的設計思想和實現,建議大家都去學習一下,一起添磚加瓦。原理部分我就不再多寫了,看懂一篇論文即可,但特別需要注意的是文中提到的weighted quantile sketch演算法,它用來解決當樣本集權重分布不一致時如何選擇分裂節點的問題:XGBoost: AScalable Tree Boosting System。

簡單的例子

下面是關於幾個常用機器學習模型的對比,從中能直觀地體會到不同模型的運作區別,數據集採用libsvm作者整理好的fourclass_scale數據集,機器學習工具採用sklearn,程式碼中模型未做任何調參,僅使用默認參數設置。