Cart迴歸樹、GBDT、XGBoost
Cart迴歸樹是許多樹模型所用到的基本樹,GBDT是一種整合提升樹,使用加法模型與前向分佈演算法,XGBoost是boosting演算法的一種,這個演算法具有廣泛的應用,能夠對模型的準確率有一個較大的提升。
1.Cart迴歸樹
通過不斷將特徵進行分裂,尋找最優劃分特徵構建樹節點。
![11128682-098cad643eebfd25.png](https://i.iter01.com/images/acf0b04a1cc79ca1aed98e3f9491fdcad321f9771f90a1b98c4d60c769d9b5fa.webp)
對第j個特徵值小於s的劃分為左子樹,大於s的劃分為右子樹。CART樹實質是特徵維度進行劃分,而這種劃分優化是NP難問題,實際中常採用啟發式方法解決。當CART迴歸樹的目標函式採用平方誤差時,目標函式為
![11128682-6c2ce7ece1d63618.png](https://i.iter01.com/images/8c8f72ab824d2c1b2a319f70ac1f233b8b547cd438380d2477f2d844ce40037c.webp)
因此,只要遍歷所有特徵的切分點,就可以找到最優的切分特徵和切分點。
2.梯度提升樹GBDT
採用加法模型與前向分佈演算法,以決策樹為基學習器,多個決策樹整合提升的方法。GBDT的一般模型:
![11128682-7935b0e943455979.png](https://i.iter01.com/images/1e76c650af60a5d8e17835ed0eb9583ed80c85ea6ba0f83b791ed5ba54e72520.webp)
![11128682-6620b64686375767.png](https://i.iter01.com/images/4b759b88b5929cc2daf68a9fdf3bcdde9fd10e172c6e4cc7e8f1bb896bac5f61.webp)
M為樹的個數,T表示決策樹。
- GBDT選取特徵劃分節點的依據不再是熵、資訊增益或是Gini指標等純度指標,二十通過最小化每個節點的損失函式來進行每個節點處的分裂。
- GBDT演算法採用平方誤差作為損失函式,每一棵迴歸書學習之前所有決策樹累加起來的殘差,擬合當前的殘差決策樹,使用加法模型,所有的樹共同決策。
訓練過程
使用前向分佈演算法:
![11128682-0bfd75c9297983c6.png](https://i.iter01.com/images/68854bd923e6701ade97c90d578df26d3e5fd7e95ad62f5a5f1b3a32390f5012.webp)
給定第m-1棵樹的結果fm-1(x),求解第m棵樹的引數估計值:
![11128682-491759b506c029f9.png](https://i.iter01.com/images/71a4e2621db8d61d8020e561b5922f306f433be182b959adee6ad29c5c34f139.webp)
當採用平方誤差損失函式時,損失函式變為:
![11128682-a94c151ee87743bf.png](https://i.iter01.com/images/740aea3a9c6aceecbf409237f4977737beac11751c14ab45ae8169b633197abd.webp)
其中r=y-fm-1(x)是當前模型擬合資料的殘差,因此,求解目標引數值即擬合殘差。
演算法流程
1.初始化決策樹,估計一個使損失函式最小化的常數構建一個只有根節點的樹。
2.不斷提升迭代:
a. 計算當前模型中損失函式的負梯度值,作為殘差的估計值;
b. 估計迴歸樹中葉子節點的區域,擬合殘差的近似值;
c. 利用線性搜尋估計葉子節點的區域的值,使損失函式極小化
d. 更新決策樹
- 經過若干輪的提升迭代,輸出最終模型
3.XGBoost
演算法思想
XGBoost裡,每棵樹是不斷加入,每加一棵樹希望效果能夠得到提升。實質上,每新增一棵樹其實是學習一個新函式去擬合上次預測的殘差,最後預測結果是每棵樹樣本所在的葉子節點的分數之和。
![11128682-c8bd47f1eb497752.png](https://i.iter01.com/images/94d207d25e29ea1ed4f93d50f518ba9d32e7c86bd0402969682aab705338fad9.webp)
fk(xi)是第i個樣本在第k個決策樹上的預測分數。
![11128682-15e816f2dbeaa06d.png](https://i.iter01.com/images/2bf9130f2424b3c639c9d9e395bba852d02c9b74c14f2a0c1140789d599202d6.webp)
如圖所示,f(小孩)=2+0.9=2.9,f(老人)=-1-0.9=-1.9
訓練過程
XGBoost的目標函式:
![11128682-0f4d9f2fd4c745e1.png](https://i.iter01.com/images/8dc4e96f9929d476668b32ee8c2e7cf090ef745e98c0fe5aeb641ff2990c3925.webp)
第一項是Training Loss,即預測值和真實值的差距,第二項是正則化項,防止模型的過擬合。正則化項有兩項:
![11128682-9b920cf1e2f1404d.png](https://i.iter01.com/images/07693018b2a02d8a97bf2cfb87d264ccc7ca5d8fb5a0a81258e0d40bb5a913db.webp)
很明顯,我們的目標是尋找ft最小化目標漢薩胡,XGBoost使用ft在0處的二階泰勒展開式近似,最後簡化的目標函式為:
![11128682-535a94ddcf660214.png](https://i.iter01.com/images/e3732d98b616ee4f1dbd1058ad83285666e520666e1c3570f30bdad7538fb250.webp)
其中,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基礎小白也能懂(附程式碼)模型
- 對比線性迴歸、邏輯迴歸和SVM邏輯迴歸
- python實現線性迴歸之簡單迴歸Python
- 1.4 - logistic迴歸
- 線性迴歸
- 邏輯迴歸邏輯迴歸
- 機器學習——線性迴歸-KNN-決策樹(例項)機器學習KNN
- 機器學習 | 線性迴歸與邏輯迴歸機器學習邏輯迴歸
- 線性迴歸—求解介紹及迴歸擴充套件套件
- 線性迴歸-如何對資料進行迴歸分析
- 迴文樹
- 《機器學習Python實現_09_02_決策樹_CART》機器學習Python
- 無名之人迴歸