为什么要调参
步骤,大家都熟;模型,大家都懂;方法,大家都会
所以,调参很重要!一套不同的参数,最后的结果可能千差万别
什么是XGBoost
eXtreme Gradient Boosting,Gradient Boosting算法的一种升级版
安装:https://xgboost.readthedocs.io/en/latest/build.html
以mac os为例,找一个地方,例如桌面上
- 编译:
- git clone --recursive https://github.com/dmlc/xgboost
- cd xgboost
- cp make/minimum.mk ./config.mk
- make -j4
- 系统级别安装:
- cd python-package
- sudo python setup.py install
- 删除安装文件
XGBoost的参数
- General Parameters:
- booster:所使用的模型,gbtree或gblinear
- silent:1则不打印提示信息,0则打印,默认为0
- nthread:所使用的线程数量,默认为最大可用数量
- Booster Parameters(gbtree):
- eta:学习率,默认初始化为0.3,经多轮迭代后一般衰减到0.01至0.2
- min_child_weight:每个子节点所需的最小权重和,默认为1
- max_depth:树的最大深度,默认为6,一般为3至10
- max_leaf_nodes:叶结点最大数量,默认为2^6
- gamma:拆分节点时所需的最小损失衰减,默认为0
- max_delta_step:默认为0
- subsample:每棵树采样的样本数量比例,默认为1,一般取0.5至1
- colsample_bytree:每棵树采样的特征数量比例,默认为1,一般取0.5至1
- colsample_bylevel:默认为1
- lambda:L2正则化项,默认为1
- alpha:L1正则化项,默认为1
- scale_pos_weight:加快收敛速度,默认为1
- Learning Task Parameters:
- objective:目标函数,默认为reg:linear,还可取binary:logistic、multi:softmax、multi:softprob
- eval_metric:误差函数,回归默认为rmse,分类默认为error,其他可取值包括rmse、mae、logloss、merror、mlogloss、auc
- seed:随机数种子,默认为0
来一个XGBoost调参实例