機器學習_學習筆記系列(41):自適應增強決策樹回歸(Adaptive Boosted Decision Tree Regressor)
對於Adaptive Boosted Decision Tree,我們上一回用其來解決二元分類問題,那相對的,ABDT一樣可以拿來解決回歸上的問題。
AdaBoost Decision Tree Regressor
其實對於ABDT回歸,其想法和概念非常像,而這裡我們引用D. L. Shrestha和D. P. Solomatine的論文[1]
Experiments with AdaBoost.RT, an Improved Boosting Scheme for Regression
順帶一提,提出這篇論文的單位是來自TU Delft水利和環境工程學院。
對於這篇論文的演算法,我覺得算是眾多AdaBoost Regression裡面最值觀的一個。在一開始我們一樣有一個資料集總共有N筆資料,輸入資料為x,輸出資料為y。接著我們一樣會有一個權重D,和設定我們的Base Learner以及我們迴圈跑的次數T,也就是Base Learner的數量。而這裡比較特別的是,我們會設定一個參數r,代表我們能夠允許的錯誤率大小。
而整個演算法流程如下
→初始化權重D=1/N
→for迴圈(t=0;t<T;t+=1):
— →把權重、輸入資料x,輸出資料y帶入訓練出一個Base Learner f_t(x)
— →計算每筆資料相對應的錯誤率:
— →計算加權數(n:自己定義的參數,可為1、2、3,而我們只計算大於r的資料):
— →更新權重:
→結合所有Base Learner
接著我們以實際例子來看看,原本如果只用單用Decision Tree來做
可以看到Decision Tree還是有很多地方沒有回歸得很好。那如果我們用AdaBoost Decision Tree
因為我們每次執行完一個迴圈,我們就會把錯誤率大於我們所設定的容忍值的話,下一輪我們就會加重那個地方的權重,所以回歸線會在下一次更貼近那個錯誤點。接下來我們看其效能
我們可以看到,ABDT在訓練集和測試集的表現都比單用DT來得好,所以這即達到了Ensemble Learning的效果。
Python Sample Code:
Github:
Reference:
[1] Shrestha, D. L., & Solomatine, D. P. (2006). Experiments with AdaBoost. RT, an improved boosting scheme for regression. Neural computation, 18(7), 1678–1710.
[2] Drucker, H. (1997, July). Improving regressors using boosting techniques. In ICML (Vol. 97, pp. 107–115).