機器學習_學習筆記系列(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).

--

--

劉智皓 (Chih-Hao Liu)
劉智皓 (Chih-Hao Liu)

Written by 劉智皓 (Chih-Hao Liu)

豬屎屋AI RD,熱愛AI研究、LLM/SD模型、RAG應用、CUDA/HIP加速運算、訓練推論加速,同時也是5G技術愛好者,研讀過3GPP/ETSI/O-RAN Spec和O-RAN/ONAP/OAI開源軟體。

No responses yet