xgboost模型訓練流程及要點


1.xgb有多種訓練形式,一種是原生接口形式,一種是sklearn接口形式。

其中原生接口形式可以有xgb.train()和xgb.cv()兩種。前者完成后返回個模型,后者只返回在訓練集和測試集的表現,不返回模型。

sklearn接口形式是xgb.XGBClassifier()(本文僅考慮分類問題),每種形式的模型參數不一樣,具體的參考文檔

2.關於參數的問題要重視

一般分為三類參數

第一類,General parameters,relate to which booster we are using to do boosting, commonly tree or linear model

第二類,Booster parameters,這是模型的參數,平時大家討論的基本都是這一類參數,

比如learning_rate,max_depth,min_child_weight,n_estimators, colsample_bytree等。

第二類,learning task parameters, 這是對訓練過程或目標的參數,大家平時討論的少,比如objective,num_boost_round,

early_stopping等。

3.n_estimators和num_boost_round這兩個參數要着重說一下。

首先說明一下這兩個變量含義一樣,只是出現在不同的接口里。參考這里

 

num_boost_round是在原生接口中出現的參數,num_boost_round默認是10,如果不手工修改,會導致模型訓練不完整,樣本分不開。

出現類似下圖的問題,如果用原生接口訓練模型,即便xgb.train(params, dtrain, evals, obj)的params中你放了n_estimators變量,但

這是原生接口調用,根本沒有n_estimators參數,模型不會報錯(在sklearn接口形式的validate_parameters參數可以設置是否報警),

但同時它還是按照num_boost_round默認的10來進行計算的,這里要注意。

n_estimators是sklearn接口中的參數,如果你放在原生接口(.train)里使用,不管你取什么值,都沒有任何作用。

 4.對於xgb0-1二分類問題,xgb預測的評分有時>1或者<0的情況,這個原因可能是

You have to set the option objective = binary:logistic to get probabilities between 0 and 1, otherwise you only get relative scores.

機器學習中的變量選擇--進階篇

XGBoost python實戰

DecisionTreeClassifer和DecisionTreeRegressor重要參數調參注意點

xgboost sklearn接口版用gridsearch來進行調參

當gridsearch遇上xgboost  講述了不同接口的調用方式,以及sklearn接口用gs調參的過程

機器學習系列(12)-XGBoost參數調優完全指南

disscuss about overfit in xgboost

complete guide to params tuning in xgboost with python code

機器學習筆記:GridSearchCV(網格搜索)

python機器學習筆記:常用評估模型指標的用法這篇文章較多的從理論的角度進行總結,而對具體python實現中sklearn相應函數使用情況介紹的較少

xgboost自定義評價函數(metric)與目標函數

python機器學習|為風控業務定制損失函數與評價函數(XGB/LGB)

xgboost中objective和eval_metrics的區別?

model_selection.GridSearchCV和model_selection.cross_val_score中的scoring參數

關於xgboost特征重要性的評估

score Metrics

 

 我自己的總結:score_metrics(有些地方叫scoring)和objective/loss_function的關系?他們會在什么地方出現?什么樣的模型叫完全一樣的模型?

先回答

第二個問題,score_metrics/scoring和objective都是在模型訓練的時候出現的,更進一步,objective/loss_function是在訓練某一個模型中用到。

score_metrics/scoring是在gridsearchCV中,比較多個模型用到的。如果是僅僅只有一套超參數,那score_metrics/scoring就沒有使用的必要,

即便是有,就和eval_results一樣,是僅僅作為查看結果出現的,並不會影響模型。

第一個,它們的關系就是,objective/loss_function是訓練模型必要的,而score_metrics/scoring是對比多個模型之間(調參)時用到的,它只在gridsearchCV里有。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM