xgboost簡單介紹 xgboost介紹

2021-10-17 02:18:26 字數 1263 閱讀 7151

xgboost是華盛頓大學博士陳天奇創造的乙個梯度提公升(gradient boosting)的開源框架。至今可以算是各種資料比賽中的大殺器,被大家廣泛地運用。接下來,就簡單介紹一下xgboost和普通的gbdt相比,有什麼不同。(何為gradient boosting, gbdt請看我上篇文章)

1. 梯度下降

在gbdt中,我們每次生成下乙個弱學習器,都是把損失函式的梯度作為學習目標,相當於利用梯度下降法進行優化來逼近損失函式的最小值,也就是使得損失函式為0,最終學習器盡可能接近真實結果。

而xgboost中,我們則是把損失函式的二階泰勒展開的差值作為學習目標,相當於利用牛頓法進行優化,來逼近損失函式的最小值,也就是使得損失函式為0。

那為什麼可以這麼逼近呢?這就涉及到泰勒展開:

梯度下降法就是用一階泰勒展開來近似函式:

而牛頓法則是用二階泰勒展開來近似函式:

之後具體的迭代收斂原理請看最優化方法。

2. 正則項

正則項是為了防止模型過擬合。於是,一般的損失函式

就變成了目標函式

。這樣,隨著樹的複雜度增大,對應的目標函式也就變大,這樣就有效防止了過擬合。葉子節點個數(t),葉節點分數(w)

對葉子節點個數進行懲罰,相當於在訓練過程中做了剪枝。

將xgboost的目標函式進行化簡,並把

決策樹和

代入:令 其導數為0,解得每個葉節點的最優**分數為:

代入目標函式,得到最小損失為:

3. 樹節點**方法

精確演算法:遍歷所有特徵的所有可能分割點,來尋找使目標函式最小的分割點。

近似演算法:對於每個特徵,只考察分位點,減少計算複雜度。

而xgboost不是簡單地按照樣本個數進行分位,而是以二階導數值作為權重(weighted quantile sketch),比如:

4. 其他特徵shrinkage(收縮)方法:相當於學習係數eta。對每顆子樹都要乘上該係數,防止過擬合。

行取樣:

缺失值處理:通過列舉所有缺失值在當前節點是進入左子樹,還是進入右子樹更優來決定乙個處理缺失值預設的方向。

xgboost工具支援並行。一般決策樹中,我們需要每次都對特徵的值進行排序,來尋找分割點,極其費時。xgboost中,我們先對每個特徵進行分塊(block)並排序,使得在尋找最佳**點的時候能夠並行化計算。這個結構加速了split finding的過程,只需要在建樹前排序一次,後面節點**時直接根據索引得到梯度資訊。這是xgboost比一般gbdt更快的乙個重要原因。

out-of-core, cache-aware優化記憶體等方法來加速計算。

xgboost簡單介紹 XGBOOST模型介紹

前言 這是機器學習系列的第三篇文章,對於住房租金 比賽的總結這將是最後一篇文章了,比賽持續乙個月自己的總結竟然也用了乙個月,牽強一點來說機器學習也將會是乙個漫長 的道路,後續機器學習的文章大多數以知識科普為主,畢竟自己在機器學習這個領域是個 渣渣,自己學到的新知識點會分享給大家的。前面的文章談了談這...

Xgboost引數介紹

xgboost是boosting演算法的一種,是多個表現一般的學習器結合成的強分類器。在目標函式上,增加了結構風險,也就是正則化項,l1和l2正則,l1是樹葉子節點個數,l2是葉子節點打分的平方 在目標函式的優化上,採用二階泰勒展開,使用了二階導數,然後令偏導等於0,於是就可以計算出每乙個葉子節點的...

mysql的簡單介紹 mysql的簡單介紹

mysql的簡單介紹 資料庫的內部鏈結 1 連線管理器 使用者或應用程式連線 2 分析器 3 快取區4 優化器 優化器執行的結果交由儲存引擎,再轉向物理層 表空間 myisam每個表有三個檔案 frm 表結構 myd 表資料 myi 表索引 innodb 所有表空間再乙個檔案 資料庫失敗的原因 1 ...