XGBoost原理與例項分析
這幾天一直在研究XGboost的基本原理與程式碼調參,其原理是在GBDT的基礎上進行優化,但也有很多的不同之處;所以自己準備更新兩篇部落格分為XGBoost原理與例項
和XGBoost實戰與調參優化
來鞏固這方面的知識。
一、XGBoost原理分析
在機器學習的問題中,目標函式(objective function)隨處可見,目標函式一般由損失函式+正則化項。
(損失函式):用於描述模型擬合數據的程度;
(正則化項):用於描述模型複雜度的程度。
- 訓練資料的損失函式:
,如:
- Square loss:
- Logistic loss:
- 正則化項:
-
norm:
- ( 正則化是指權值向量 各個元素的平方和然後再求根號;可以防止模型過擬合overfitting)
-
norm:
- ( 正則化是指權值向量 各個元素的絕對值之和;通常能產生稀疏權值矩陣,即產生一個稀疏模型,可以用於特徵選擇,一定程度上也能防止過擬合)
-
norm:
若想對正則化有一個較為清晰的理解,請參考部落格機器學習中正則化項L1和L2的直觀理解
我們訓練的基學習器是CART迴歸樹,因此模型的複雜度與樹的深度、葉子結點的個數、葉子結點的輸出值(XGBoost裡稱為葉子結點的權值)有關。那麼假設我們有
顆樹,那麼模型的輸出值為:
因為每一棵的引數包括它的結構與葉子結點的值,所以我們不妨將每一顆樹
作為引數來進行優化,因此我們可以表示為
,所以我們的目標函式現在可以改寫為:
現在的問題是我們如何訓練目標函式,學習基學習器,當然,XGBoost既然是GBDT的優化,自然大部分的思想是相通的,所以我們也採用前向分佈演算法(additive model),即我們把學習的過程分解為先學習第一顆樹,然後基於學習好的第一顆樹再去學習第二棵樹,以此類推,直到通過第 顆樹來學習第 顆樹為止…