Task3 XGB演算法梳理

2021-09-10 12:42:46 字數 1196 閱讀 7187

參考:

損失函式

傳統gbdt在優化時只用到一階導數資訊,xgboost則對代價函式進行了二階泰勒展開,同時用到了一階和二階導數。順便提一下,xgboost工具支援自定義代價函式,只要函式可一階和二階求導。

**結點演算法

**點選擇的時候也,以目標函式最小化為目標。

正則化

xgboost在代價函式裡加入了正則項,用於控制模型的複雜度,防止過擬合。正則項裡包含了樹的葉子節點個數、每個葉子節點上輸出的score的l2模的平方和。從bias-variance tradeoff角度來講,正則項降低了模型的variance,使學習出來的模型更加簡單,防止過擬合,這也是xgboost優於傳統gbdt的乙個特性。

對缺失值處理

對缺失值的處理。對於特徵的值有缺失的樣本,xgboost可以自動學習出它的**方向。

權重衰減

xgboost在進行完一次迭代後,會將葉子節點的權重乘上該係數,主要是為了削弱每棵樹的影響,讓後面有更大的學習空間。實際應用中,一般把eta設定得小一點,然後迭代次數設定得大一點。(補充:傳統gbdt的實現也有學習速率)。

支援列抽樣

xgboost借鑑了隨機森林的做法,支援列抽樣,不僅能降低過擬合,還能減少計算,這也是xgboost異於傳統gbdt的乙個特性。

支援並行

xgboost的並行不是tree粒度的並行,xgboost也是一次迭代完才能進行下一次迭代的(第t次迭代的代價函式裡包含了前面t-1次迭代的**值)。xgboost的並行是在特徵粒度上的。我們知道,決策樹的學習最耗時的乙個步驟就是對特徵的值進行排序(因為要確定最佳分割點),xgboost在訓練之前,預先對資料進行了排序,然後儲存為block結構,後面的迭代中重複地使用這個結構,大大減小計算量。這個block結構也使得並行成為了可能,在進行節點的**時,需要計算每個特徵的增益,最終選增益最大的那個特徵去做**,那麼各個特徵的增益計算就可以開多執行緒進行。可並行的近似直方圖演算法。樹節點在進行**時,我們需要計算每個特徵的每個分割點對應的增益,即用貪心法列舉所有可能的分割點。當資料無法一次載入記憶體或者在分布式情況下,貪心演算法效率就會變得很低,所以xgboost還提出了一種可並行的近似直方圖演算法,用於高效地生成候選的分割點。

優缺點

應用場景

可以用於分類和回歸問題。在資料探勘等相關競賽以及實際工程中都有應用。

sklearn引數

模型引數

學習任務引數

**主要函式

任務三 XGB演算法梳理

cart樹 cart是決策樹演算法之一,它可用於分類問題也可用於回歸問題。它與id3 c4.5等演算法不同的是,在節點分支的時候,它每次僅分成左 右兩個節點,即它假設決策樹是二叉樹。另外,它在選擇最優分割變數與最優分割點的準則也有所不同 演算法原理 cart樹的生成就是遞迴地構建二叉決策樹的過程。對...

Task2 GBDT演算法梳理

隨機森林是通過減少模型方差提高效能,gbdt是通過減少模型偏差提高效能 gbdt演算法梳理 gbdt演算法梳理 gbdt演算法原理以及例項理解 boosting gradient boosting 提公升方法 2 前向分布演算法和提公升樹 gbdt 主要依據不同的損失函的梯度進行更新,針對回歸與分類...

Task4 LightGBM演算法梳理

lightgbm介紹及引數調優 lightgbm 提公升機器演算法 理論 安裝方法 python lightgbm 中文文件 lightgbm 中文文件 github 下面這個 給出了xgboost和lightgbm之間更加細緻的效能對比,包括了樹的生長方式,lightgbm是直接去選擇獲得最大收益...