XGBoost算法

2021-01-07 騰訊網

XGBoost(eXtreme Gradient Boosting)算法近年來在各種比賽中可謂是「香餑餑」,預測性能很好。下面我們就來介紹它的原理。

原理

首先,我們要了解的是,XGBoost是GBDT算法的一種改進。

在進行第k輪的迭代時,GBDT的損失函數可記為L(y,F[k](x))。那麼它在F[k-1](x)處的二階泰勒展開式為

根據前向分布算法,我們有

將上式代入剛才的損失函數,再令a等於一階導,b等於2階導,則損失函數可寫為

其中,a和b分別是

那麼,對於所有的樣本而言,其損失函數為

對上式的優化,可以等價於優化

具體原因我們在介紹AdaBoost算法時已經介紹過,這裡不再贅述。

正則化

為了防止過擬合,我們在優化損失函數時,往往要給其添加一個正則化項。

那麼,添加了正則化項的損失函數為

在上一篇,我們介紹過

而正則化項由如下的公式構成

其中,M是葉子節點的個數,α和β都是正則化項的參數,用來控制模型的複雜度。

將(3)(4)式代入(2)式,可得

要想求得(5)式的最小值,我們需要對c[m]求偏導,即

然後令(6)式為0,可得

接下來,我們再把(7)式反代回(5)式,可以得到損失函數L為

(8)式就是第k輪所得到的損失函數。

回顧整個過程,我們發現,其實XGBoost就是將損失函數進行二階泰勒展開後,求得一個解,然後將其反帶入損失函數。換句話說,就是用這個解來幫助構造其中的決策樹,從而使殘差和最小,模型性能達到最優。

相關焦點

  • 【機器學習】XGBoost算法學習小結
    XGBoost概述    xgboost 是"極端梯度上升"(Extreme Gradient Boosting)的簡稱,是一種現在在數據科學競賽的獲勝方案很流行的算法,它的流行源於在著名的Kaggle數據科學競賽上被稱為"奧託分類"的挑戰。由於
  • 從零解讀 Xgboost 算法 (原理+代碼)
    代碼匯總3.0 xgboost 如何篩選特徵重要程度3.1 xgboost完整訓練代碼xgboost 代碼調參xgboost常規面試題參考連結0.提升樹 首先要明確一點,xgboost 是基於提升樹的。
  • Python XGBoost算法代碼實現和篩選特徵應用
    XGBoost算法的步驟和GB基本相同,都是首先初始化為一個常數,gb是根據一階導數ri,xgboost是根據一階導數gi和二階導數hi,迭代生成基學習器,相加更新學習器。順便提一下,xgboost工具支持自定義代價函數,只要函數可一階和二階求導。 —對損失函數做了改進(泰勒展開,一階信息g和二階信息h,上一章節有做介紹)3.xgboost在代價函數裡加入了正則項,用於控制模型的複雜度。正則項裡包含了樹的葉子節點個數、每個葉子節點上輸出的score的L2模的平方和。
  • 資料|陳天奇介紹Xgboost原理的PPT
    from=leiphonecolumn_res0929【 圖片來源:https://xgboost.apachecn.org/所有者:https://xgboost.apachecn.org/ 】內容簡介陳天奇介紹Xgboost原理的PPT,用於學習xgboost原理。XGBoost是一個優化的分布式梯度增強庫,旨在實現高效,靈活和便攜。
  • 第113天: Python XGBoost 算法項目實戰
    XGBoost高效地實現了GBDT算法並進行了算法和工程上的許多改進,被廣泛應用在Kaggle競賽及其他許多機器學習競賽中並取得了不錯的成績。這一篇最適合剛剛接觸XGBoost的人閱讀,通過一個實戰項目拆解整個XGBoost算法。
  • 資源 | XGBoost 中文文檔開放:上去就是一把梭
    中文文檔地址:http://xgboost.apachecn.org/cn/latest/英文文檔地址:http://xgboost.apachecn.org/en/latest/中文文檔 GitHub 地址:https://github.com/apachecn/xgboost-doc-zh梯度提升樹已經在實踐中證明可以有效地用於分類和回歸任務的預測挖掘
  • 機器學習實戰|GBDT Xgboost LightGBM對比
    import xgboost as xgbimport numpy as npimport time# read data into Xgboost DMatrix formatdtrain = xgb.DMatrix(Xtrain
  • 我的XGBoost學習經歷及動手實踐
    引入基本工具庫:import numpy as npimport pandas as pdimport xgboost as xgbimport matplotlib.pyplot as pltplt.style.use("ggplot")%matplotlib inline2.
  • 數學推導+純Python實現機器學習算法17:XGBoost
    XGBoost與GBDT同出一脈,都屬於boosting集成學習算法,但XGBoost相較於GBDT要青出於藍而勝於藍。     XGBoost的全程為eXtreme Gradient Boosting,即極端梯度提升樹。
  • 大戰三回合:XGBoost、LightGBM和Catboost一決高低
    但在大訓練樣本和高維度特徵的數據環境下,GBDT 算法的性能以及準確性卻面臨了極大的挑戰,隨後,2017 年 LightGBM 應勢而生,由微軟開源的一個機器學習框架;同年,俄羅斯的搜索巨頭 Yandex 開源 Catboost 框架。
  • 機器學習 | 機器學習之XGBoost Part2
    XGB因此引入了模型複雜度來衡量算法的運算效率。因此XGB的目標函數被寫作:傳統損失函數 + 模型複雜度。試試看在其他參數相同的情況下,我們xgboost庫本身和sklearn比起來,效果如何:#默認reg:linearreg = XGBR(n_estimators=180,random_state=420).fit(Xtrain,Ytrain)reg.score(Xtest, Ytest)#sklearn調用方法結果#0.9050526026617368
  • 數學推導 + 純 Python 實現 XGBoost
    XGBoost與GBDT同出一脈,都屬於boosting集成學習算法,但XGBoost相較於GBDT要青出於藍而勝於藍。XGBoost的全程為eXtreme Gradient Boosting,即極端梯度提升樹。
  • SHAP——Xgboost的歸因新境界
    Learning with XGBoosthttps://towardsdatascience.com/interpretable-machine-learning-with-xgboost-9ec80d148d27Understand your dataset with XGBoosthttps://cran.r-project.org/web/packages/xgboost
  • 【機器學習基礎】xgboost系列丨xgboost建樹過程分析及代碼實現
    <<  左右滑動查看更多  >>import xgboost as xgbmodel = xgb.XGBClassifier(n_estimators=2,max_depth=3,learning_rate=0.1,random_state=1,reg_lambda=1,gamma=0,objective='binary:logistic
  • 快速上手:在R中使用XGBoost算法
    2015年8月,Xgboost的R包發布,我們將在本文引用0.4-2版本的xgboost包。在這篇文章中,我講解釋一個簡單的方式來使用xgboost在R中。 因此,下次當你建立一個模型時可以考慮一下這個算法。我確信這是一個令人驚豔和幸福的時刻。什麼是 XGBoost?
  • 學界 | 多 GPU 加速學習,這是一份嶄新的 XGBoost 庫
    XGBoost 是一般化梯度提升算法的實現,它在多核和分布式機器上有著高度優化的實現,且能處理稀疏數據。懷卡託大學和英偉達在這一篇論文中描述了標準 XGBoost 庫的擴展,它支持多 GPU 的執行,並能顯著地減少大規模任務的運行時間。本論文提出的擴展是原版 GPU 加速算法的新進展,它展現出擁有更快速和更高內存效率的策樹算法。
  • 中信建投證券:xgboost中證500指數增強7月持倉組合發布
    xgboost模型是一種強學習模型,其是由眾多弱學習模型集成,其採用弱學習模型為CART,即分類與回歸樹。該模型重在擬合特徵和標籤間的非線性關係。組成該模型的眾多弱學習器之間的關係是補充彌補的關係,弱學習器的訓練有先後,每個新的弱學習器的學習目標都是之前已訓練好的弱學習器的殘差。
  • 100天搞定機器學習|Day61 手算+可視化,終於徹底理解了 XGBoost
    #本文用到的庫import numpy as npimport pandas as pdfrom sklearn.model_selection import train_test_splitfrom sklearn import preprocessingfrom xgboost.sklearn
  • 機器學習算法XGBoost原理和實踐(下)
    機器學習算法XGBoost原理和實踐(上)這篇文章中已經講了xgboost的基本原理,不了解的可以點擊查看,這篇文章將介紹xgboost的實踐,= xgb.DMatrix(X_train, label=y_train)xg_test = xgb.DMatrix(X_test, label=y_test)watchlist = [(xg_train, 'train'), (xg_test, 'test')]
  • XGBoost之切分點算法
    前言上文介紹了XGBoost的算法原理並引出了衡量樹結構好壞的打分函數(目標函數),根據特徵切分點前後的打分函數選擇最佳切分點,但並未對節點的切分算法作詳細的介紹。本文詳細的介紹了XGBoost的切分點算法,內容參考陳天奇博士《XGBoost :A scalable Tree Boosting System》。