xgboost分类_XGBoost(Extreme Gradient Boosting)
一、XGBoost在Ensemble Learning中的位置
機器學習中,有一類算法叫集成學習(Ensemble Learning),所謂集成學習,指將多個分類器的預測結果集成起來,作為最終預測結果,它要求每個分類器具備一定的“準確性”和“差異性”。通俗理解,集成學習的思想就是“三個臭皮匠,頂個諸葛亮”,多個弱分類器聯合起來變成強分類器。集成學習根據分類器之間的依賴關系,劃分為Boosting和Bagging兩大門派,XGBoost(由華盛頓大學的陳天奇等人提出,因XGBoost出眾的訓練速度和準確率,受到廣泛關注和應用)屬于Boosting算法,它是在GBDT基礎上的優化算法,如下圖:
二、XGBoost的基本思想和舉例
XGBoost算法的基本思想跟GBDT類似,不斷地通過特征分裂生長一棵樹,每一輪學習一棵樹,其實就是去擬合上一輪模型的預測值與實際值之間的殘差。當訓練完成,得到k棵樹,如果要預測一個樣本的分數,其實就是根據這個樣本的特征,在每棵樹中落到對應的一個葉子節點,每個葉子節點對應一個分數,最后只需將每棵樹對應的分數加起來就是該樣本的預測值。
未完待續……
三、XGBoost在GBDT基礎上做了哪些優化?
1、導數信息:GBDT只用到一階導數信息,而XGBoost對損失函數做二階泰勒展開,引入一階導數和二階導數。 2、基分類器:GBDT以傳統CART作為基分類器,而XGBoost不僅支持CART決策樹,還支持線性分類器,相當于引入L1和L2正則化項的邏輯回歸(分類問題)和線性回歸(回歸問題)。 3、特征采樣:XGBoost借鑒RF的做法,即類似RandomForestClassifier的max_features,支持列抽樣,不僅能防止過擬合,還能降低計算量。 4、正則項:XGBoost的目標函數加了正則化項控制模型的復雜度,防止模型過擬合。 5、并行化:XGBoost支持并行,不是tree維度上的并行,而是特征維度上的并行,決策樹最耗時的步驟是對特征的值排序,XGBoost在迭代之前,先進行預排序,將每個特征按特征值排好序,存為塊結構,分裂結點時可以采用多線程并行查找每個特征的最佳分割點(計算增益最大的特征進行下一步分裂),極大提升訓練速度。 6、缺失值:當樣本的特征值存在缺失值時,XGBoost能自動學習出它的默認分裂方向。四、兩種方法控制 XGBoost的過擬合(訓練精度高而測試精度低)
方法1:直接控制模型的復雜度(max_depth,min_child_weight,gamma)max_depth:每棵樹的最大深度限制。min_child_weight:子節點的最小權重,如果某個子節點權重小于這個閾值,則不會在分裂。gamma:分裂所帶來的損失最小閾值,大于此值,才會繼續分裂。 方法2:增加隨機性,使訓練對噪聲強健(subsample,colsample_bytree,減小步長eta且增加迭代次數num_round )subsample:用于訓練模型的子樣本占整個樣本集合的比例,能防止過擬合,取值范圍為(0,1].colsample_bytree:訓練每棵樹時用來訓練的特征的比例,類似 RandomForestClassifier 的 max_features,在建立樹時對特征采樣的比例,缺省值為1,取值范圍(0,1].eta:每次迭代完成后更新權重時的步長,越小訓練越慢,缺省值為0.3,取值范圍為[0,1].num_round :總共迭代的次數。五、XGBoost中偏差(Bias)與方差(Variance)的權衡
Bias-Variance是機器學習/統計學中一個重要的概念。當模型變得復雜時(例如樹的深度更深),模型具有更強的擬合訓練數據的能力,產生一個低偏差的模型,但是,復雜的模型容易過擬合,需要更多的數據來擬合。XGBoost中的大部分參數都是關于偏差和方差的權衡,最好的模型應該仔細地將模型復雜性(擬合能力)與其預測能力進行權衡。
六、使用XGBoost的示例代碼
# step1:導入模塊 import xgboost as xgb # step2:讀取數據 dtrain = xgb.DMatrix('demo/data/train.csv') dtest = xgb.DMatrix('demo/data/test.csv') # step3:指定參數 param = {'max_depth':2, 'eta':1, 'silent':1, 'objective':'binary:logistic' } # 二分類的邏輯回歸問題,輸出為概率值。 num_round = 2 # step4:訓練 bst = xgb.train(param, dtrain, num_round) # step5:預測 preds = bst.predict(dtest)參考資料:
XGBoost官網:https://xgboost.apachecn.org/#/
XGBoost20題:https://blog.csdn.net/weixin_38753230/article/details/100571499
XGBoost算法:https://www.cnblogs.com/mantch/p/11164221.html
總結
以上是生活随笔為你收集整理的xgboost分类_XGBoost(Extreme Gradient Boosting)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 线性表、顺序表
- 下一篇: python 微信机器人_Python