xgboost模型训练流程及要点 - 静静的白桦林_andy

时间:2024-02-23 09:27:37

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参数,模型不会报错(validate_parameters参数可以设置是否报警),但同时它还是按照

num_boost_round默认的10来进行计算的,这里要注意。

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

 

关于xgboost特征重要性的评估

机器学习中的变量选择--进阶篇

XGBoost python实战

DecisionTreeClassifer和DecisionTreeRegressor重要参数调参注意点

xgboost sklearn接口版用gridsearch来进行调参

当gridsearch遇上xgboost  讲述了不同接口的调用方式,以及sklearn接口用gs调参的过程