XGBoost算法

2021-01-13 騰訊網

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原理的PPT
    【 圖片來源:https://xgboost.apachecn.org/  所有者:https://xgboost.apachecn.org/ 】內容簡介陳天奇介紹Xgboost原理的PPT,用於學習它在 Gradient Boosting 框架下實現機器學習算法。XGBoost提供並行樹提升(也稱為GBDT,GBM),可以快速準確地解決許多數據科學問題。相同的代碼在主要的分布式環境(Hadoop,SGE,MPI)上運行,並且可以解決數十億個示例之外的問題。
  • XGboost算法在不同作業系統中安裝方法乾貨分享
    安裝Xgboost方法最近小編想安裝一下xgboost軟體包,用pip install xgboost 安裝有問題,今天將對主流作業系統下的安裝方法進行了匯總,用到的時候拿來即用,省事省力,內容包括三大主流作業系統的,其他系統的沒有環境,暫時不列舉。
  • 大戰三回合:XGBoost、LightGBM和Catboost一決高低
    但在大訓練樣本和高維度特徵的數據環境下,GBDT 算法的性能以及準確性卻面臨了極大的挑戰,隨後,2017 年 LightGBM 應勢而生,由微軟開源的一個機器學習框架;同年,俄羅斯的搜索巨頭 Yandex 開源 Catboost 框架。
  • 中信建投證券:xgboost中證500指數增強7月持倉組合發布
    xgboost模型是一種強學習模型,其是由眾多弱學習模型集成,其採用弱學習模型為CART,即分類與回歸樹。該模型重在擬合特徵和標籤間的非線性關係。組成該模型的眾多弱學習器之間的關係是補充彌補的關係,弱學習器的訓練有先後,每個新的弱學習器的學習目標都是之前已訓練好的弱學習器的殘差。
  • XGBoost之切分點算法
    前言上文介紹了XGBoost的算法原理並引出了衡量樹結構好壞的打分函數(目標函數),根據特徵切分點前後的打分函數選擇最佳切分點,但並未對節點的切分算法作詳細的介紹。本文詳細的介紹了XGBoost的切分點算法,內容參考陳天奇博士《XGBoost :A scalable Tree Boosting System》。
  • 從結構到性能,一文概述XGBoost、Light GBM和CatBoost的同與不同
    本文從算法結構差異、每個算法的分類變量時的處理、算法在數據集上的實現等多個方面對 3 種代表性的 boosting 算法 CatBoost、Light GBM 和 XGBoost 進行了對比;雖然本文結論依據於特定的數據集,但通常情況下,XGBoost 都比另外兩個算法慢。
  • 機器學習算法的新女王——XGBoost
    XGBoost是基於決策樹的集成機器學習算法,使用了梯度提升框架。在涉及非結構化數據(圖像、文本等)的預測問題中,人工神經網絡往往優於所有其他算法或框架。然而,當涉及到中小型結構化/表格數據時,基於決策樹的算法被認為是目前同類中最好的。請參閱下表了解這些年來基於樹的算法的發展。
  • XGBoost算法原理小結
    前言XGBoost(eXtreme Gradient Boosting)全名叫極端梯度提升,XGBoost是集成學習方法的王牌,在Kaggle數據挖掘比賽中,大部分獲勝者用了XGBoost,XGBoost在絕大多數的回歸和分類問題上表現的十分頂尖,本文較詳細的介紹了XGBoost的算法原理。
  • XGBoost算法背後的數學:儘可能簡單地解釋XGBoost算法背後的機制
    ——費曼XGBoost是一個很優美的算法,它的過程不乏啟發性。這些通常簡單而美麗的概念在數學術語中消失了。我在理解數學的過程中也遇到過同樣的挑戰,所以我寫這篇文章的目的是鞏固我的理解,同時幫助其他人完成類似的過程。
  • XGBoost 重要關鍵參數及調優步驟
    本篇對XGBoost主要參數進行解釋,方括號內是對應scikit-learn中XGBoost算法模塊的叫法。提升參數雖然有兩種類型的booster,但是我們這裡只介紹tree。因為tree的性能比線性回歸好得多,因此我們很少用線性回歸。
  • 數據挖掘中的利器——XGBoost理論篇
    XGBoost是各種數據挖掘或機器學習算法類比賽中每個團隊都會使用且精度相對最好的算法之一(Deep Learning算法除外)。也就是說,對於剛轉向機器學習領域的同胞們,在掌握數據挖掘的基本常識概念之後,要想在比賽中有所收穫,掌握XGBoost算法也是當務之急。
  • 斯坦福發表NGBoost算法
    Stanford ML Group 最近在他們的論文中發表了一個新算法,其實現被稱為 NGBoost。該算法利用自然梯度將不確定性估計引入到梯度增強中。本文試圖了解這個新算法,並與其他流行的 boosting 算法 LightGBM 和 XGboost 進行比較,以了解它在實踐中是如何工作的。
  • 10大機器學習算法,看懂你就是數據科學家
    正因為如此,數據科學家會掌握幾乎所有的常見算法,並精通其中一門,這樣可以快速適應新領域的問題。今天我們就來聊聊,每一位數據科技家都應該了解的10大機器學習算法。下面是關於普遍機器學習算法和快速資源的風暴之旅,準好了嗎?燒腦挑戰開始: 1. 主成分分析(PCA)/奇異值分解(SVD)PCA是一種非監督學習,用來理解由向量組成的數據集的全局特性的方法。
  • XGBoost缺失值引發的問題及其深度分析|CSDN博文精選
    作者 | 兆軍(美團配送事業部算法平臺團隊技術專家)來源 | 美團技術團隊(*點擊閱讀原文,查看美團技術團隊更多文章)背景XGBoost模型作為機器學習中的一大「殺器」,被廣泛應用於數據科學競賽和工業領域,XGBoost官方也提供了可運行於各種平臺和環境的對應代碼,如適用於Spark分布式訓練的XGBoost on Spark
  • 以XGBoost為代表的集成算法體現的哲學思想與數學技巧
    這是AdaBoost算法的靈魂思想,其背後就是抓住主要矛盾、忽略次要矛盾,在構建下一個分類器時,重點關注前一個分類器分錯的樣本,它與前邊的分類器形成協同作用,擴大正確分類的邊界,減少錯誤分類的範圍,共同提高了分類的能力。
  • 以BBC新聞文章為例:應用XGBoost等算法進行文本分類
    可以把這個數字特徵應用到機器學習算法中。下面以LogisticRegression, RandomForest和XGBoost為例進行操作。對於每一個案例,都應用數據集對模型進行五層/級交叉驗證並試運行。精確度得分將會是五個層級的平均分。Doc2Vec和LogisticRegression管道精確度變得非常低!!再來看其它分類器。