Cart迴歸樹、GBDT、XGBoost
Cart迴歸樹是許多樹模型所用到的基本樹,GBDT是一種整合提升樹,使用加法模型與前向分佈演算法,XGBoost是boosting演算法的一種,這個演算法具有廣泛的應用,能夠對模型的準確率有一個較大的提升。
1.Cart迴歸樹
通過不斷將特徵進行分裂,尋找最優劃分特徵構建樹節點。
對第j個特徵值小於s的劃分為左子樹,大於s的劃分為右子樹。CART樹實質是特徵維度進行劃分,而這種劃分優化是NP難問題,實際中常採用啟發式方法解決。當CART迴歸樹的目標函式採用平方誤差時,目標函式為
因此,只要遍歷所有特徵的切分點,就可以找到最優的切分特徵和切分點。
2.梯度提升樹GBDT
採用加法模型與前向分佈演算法,以決策樹為基學習器,多個決策樹整合提升的方法。GBDT的一般模型:
M為樹的個數,T表示決策樹。
- GBDT選取特徵劃分節點的依據不再是熵、資訊增益或是Gini指標等純度指標,二十通過最小化每個節點的損失函式來進行每個節點處的分裂。
- GBDT演算法採用平方誤差作為損失函式,每一棵迴歸書學習之前所有決策樹累加起來的殘差,擬合當前的殘差決策樹,使用加法模型,所有的樹共同決策。
訓練過程
使用前向分佈演算法:
給定第m-1棵樹的結果fm-1(x),求解第m棵樹的引數估計值:
當採用平方誤差損失函式時,損失函式變為:
其中r=y-fm-1(x)是當前模型擬合資料的殘差,因此,求解目標引數值即擬合殘差。
演算法流程
1.初始化決策樹,估計一個使損失函式最小化的常數構建一個只有根節點的樹。
2.不斷提升迭代:
a. 計算當前模型中損失函式的負梯度值,作為殘差的估計值;
b. 估計迴歸樹中葉子節點的區域,擬合殘差的近似值;
c. 利用線性搜尋估計葉子節點的區域的值,使損失函式極小化
d. 更新決策樹
- 經過若干輪的提升迭代,輸出最終模型
3.XGBoost
演算法思想
XGBoost裡,每棵樹是不斷加入,每加一棵樹希望效果能夠得到提升。實質上,每新增一棵樹其實是學習一個新函式去擬合上次預測的殘差,最後預測結果是每棵樹樣本所在的葉子節點的分數之和。
fk(xi)是第i個樣本在第k個決策樹上的預測分數。
如圖所示,f(小孩)=2+0.9=2.9,f(老人)=-1-0.9=-1.9
訓練過程
XGBoost的目標函式:
第一項是Training Loss,即預測值和真實值的差距,第二項是正則化項,防止模型的過擬合。正則化項有兩項:
很明顯,我們的目標是尋找ft最小化目標漢薩胡,XGBoost使用ft在0處的二階泰勒展開式近似,最後簡化的目標函式為:
其中,gi和hi都是通過前一個樣本的梯度資料計算而來。
分裂節點
基於特徵空間分裂節點是一個NP難問題,因此XGBoost使用了貪婪演算法,遍歷所有特徵劃分點,使用目標函式值作為評價函式,同時為了限制樹的增長過深,還新增了閾值,只有當增益大於該閾值才進行分裂。
防止過擬合
此外,XGBoost為了防止過擬合提出了兩種方法。
- 在每次迭代中給葉子節點的分數呈上一個縮減權重,使得每一棵樹的影響力不會太大,留下更大的空間給後面生成樹去優化模型
- 按層進行特徵取樣,類似於隨機森林,選擇分裂特徵點時,隨機選擇部分特徵。
XGBoost的優點
1.防止過擬合
2.目標函式的優化使用了待求函式的二階導數
3.支援並行化,樹與樹之間雖然是序列的,但同層節點可以並行,訓練速度塊。
4.新增了對稀疏資料的處理。
XGBoost和隨機森林的區別
XGBoost是逐個新增樹,逐個提升,是一種Boosting演算法,每一次樹的新增必然會提升預測結果,最終得到最精確的預測結果。
隨機森林是隨機生成多個樹,多個樹共同進行決策,是一種Bagging演算法。
相關文章
- ML《整合學習(四)Boosting之迴歸樹、提升樹和GBDT》
- 機器學習之分類迴歸樹(python實現CART)機器學習Python
- GBDT、XGBoost、LightGBM比較
- 【機器學習基礎】CART--分類迴歸樹完全解讀機器學習
- 迴歸樹
- 通用機器學習演算法:線性迴歸+決策樹+Xgboost機器學習演算法
- RF、GBDT、XGboost特徵選擇方法特徵
- 迴歸樹(Regression Tree)
- 演算法金 | 決策樹、隨機森林、bagging、boosting、Adaboost、GBDT、XGBoost 演算法大全演算法隨機森林
- 機器學習-樹迴歸機器學習
- 迴歸問題知識樹
- ML《決策樹(三)CART》
- [機器學習 ]RandomForest、GBDT、XGBoost、lightGBM 原理與區別機器學習randomREST
- 今日面試題分享:請問(決策樹、Random Forest、Booting、Adaboot)GBDT和XGBoost的區別是什麼?...面試題randomRESTboot
- 迴歸樹(Regression Trees)模型的優缺點模型
- 《機器學習Python實現_10_10_整合學習_xgboost_原理介紹及迴歸樹的簡單實現》機器學習Python
- 決策樹模型(4)Cart演算法模型演算法
- 線性迴歸——lasso迴歸和嶺迴歸(ridge regression)
- 樹迴歸|理論與演算法實現演算法
- 迴歸
- 線性迴歸與邏輯迴歸邏輯迴歸
- 從提升樹到 XGBoost, 原理簡介
- 對梯度提升樹GBDT最通俗的介紹梯度
- 淺談樹模型與整合學習-從決策樹到GBDT模型
- 大規模GBDT系統應用場景及效果對比(LightGBM,XgBoost,DimBoost等)
- 迴歸樹模型 0基礎小白也能懂(附程式碼)模型
- python實現線性迴歸之簡單迴歸Python
- 對比線性迴歸、邏輯迴歸和SVM邏輯迴歸
- 線性迴歸
- 1.4 - logistic迴歸
- 邏輯迴歸邏輯迴歸
- 機器學習——線性迴歸-KNN-決策樹(例項)機器學習KNN
- 機器學習 | 線性迴歸與邏輯迴歸機器學習邏輯迴歸
- 線性迴歸-如何對資料進行迴歸分析
- 線性迴歸—求解介紹及迴歸擴充套件套件
- 迴文樹
- 《機器學習Python實現_09_02_決策樹_CART》機器學習Python
- 迴歸分析類別