整合學習——Xgboost
1 Star2 Stars3 Stars4 Stars5 Stars 給文章打分!
Loading...

一、整合學習

1.1 目標函式

這裡寫圖片描述

1.2 函式最優解

預測過程:
這裡寫圖片描述
這裡寫圖片描述
考慮平方損失:
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

二. Xgboost的優勢:

1、正則化
標準GBM的實現沒有像XGBoost這樣的正則化步驟。正則化對減少過擬合也是有幫助的。
實際上,XGBoost以“正則化提升(regularized boosting)”技術而聞名。
2、並行處理
XGBoost可以實現並行處理,相比GBM有了速度的飛躍。 
LightGBM也是微軟最新推出的一個速度提升的演算法。  
XGBoost也支援Hadoop實現。
3、高度的靈活性
XGBoost 允許使用者定義自定義優化目標和評價標準 。
4、缺失值處理
XGBoost內建處理缺失值的規則。使用者需要提供一個和其它樣本不同的值,然後把它作為一個引數傳進去, 
以此來作為缺失值的取值。 
XGBoost在不同節點遇到缺失值時採用不同的處理方法,並且會學習未來遇到缺失值時的處理方法。
5、剪枝
當分裂時遇到一個負損失時,GBM會停止分裂。因此GBM實際上是一個貪心演算法。
XGBoost會一直分裂到指定的最大深度(max_depth),然後回過頭來剪枝。 
如果某個節點之後不再有正值,它會去除這個分裂。
這種做法的優點,當一個負損失(如-2)後面有個正損失(如 10)的時候,就顯現出來了。 
GBM會在-2處停下來,因為它遇到了一個負值。但是XGBoost會繼續分裂,然後發現這兩個分裂綜合起來會得到 8, 
因此會保留這兩個分裂。
6、內建交叉驗證
XGBoost允許在每一輪boosting迭代中使用交叉驗證。因此,可以方便地獲得最優boosting迭代次數。
而GBM使用網格搜尋,只能檢測有限個值。
7、在已有的模型基礎上繼續
Xgboost可以在上一輪的結果上繼續訓練。
sklearn中的GBM的實現也有這個功能,兩種演算法在這一點上是一致的

三、Xgboost 與 GBDT 的區別與聯絡

Xgboost 是華人大牛陳天奇開發的GB(Gradient Boosting)演算法的高效實現
(CPU的多執行緒平行計算)。https://github.com/dmlc/xgboost
與GBDT的區別:
XGBoost的基學習器 可以是CART(這個時候就是GBDT)也可以是線性分類器
XGBoost 在代價函式中加入了正則項,用於控制模型複雜度。
XGBoost 借鑑了隨機森林的做法,支援特徵抽樣,不僅防止過擬合,還能減少計算
XGBoost 工具支援並行化
-----綜上 XGBoost 的運算速度和精度都會優於GBDT
XGboost 目前 scikit-learn 中沒有實現,自行安裝,通過python呼叫
百度搜尋 xgboost python 安裝
程式碼實現

這裡寫圖片描述
這裡寫圖片描述

相關文章

程式語言 最新文章