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里有。

 

 

posted on 2020-06-22 16:02  静静的白桦林_andy  阅读(3162)  评论(0编辑  收藏  举报

导航