2021-02-10 Xgboost超参调整

2021-02-10  本文已影响0人  春生阁

引言:

在前期数据分析和特征处理过程中,采用逻辑回归可以得到较为稳定的模型(详见 数据分析思路和代码实现)。但考虑到对变量分箱方法影响效果,其次变量未必都是线性化(采用WOE替换可以消化),最后线性模型的上限未知。在决策树的升级版本Xgboost,在Kaggle比赛中曾经屡战奇功的模型工具提上议程。

Xgboost是以树的形式进行计算,比较容易过拟合,而且除了像线性模型一些比较好用的参数可以调整之外,树木的个数、叶子节点、树深度、学习率等等都会影响模型的最终效果,听起来就超级复杂,就称它们为超参吧。

sklearn中有GridSearchCV来实现逐步调参测试最佳效果,就因为又困难(理论)又简单(代码),从而让自己没有前行,期望寻找到自己的搜索方式。

基础环境

恰巧前两天MacBook Pro主板出现问题,修理主板后Python环境重新更新,更新的过程记录下:

机器配置:MacBook Pro(13-inch,2019,1.4 GHz 四核 Intel Core i5)
系统配置:macOS Big Sur 版本 11.2
目标:搭建基础xgboost环境
步骤:

  1. 安装Anaconda
    1.1. 考虑到Python虚拟环境配置较为麻烦,用Anaconda安装和资料方便且打包,对用户友好这一点还是很吸引人
    1.2. 下载地址:anaconda,当前选择版本Anaconda Navigator 1.10.0
  2. 安装JupyterLab
    2.1. 默认Anaconda安装后,已有jupyterlab,版本2.2.6
    2.2. 额外升级版本(pip install jupyterlab==3),版本3.0.7
    2.3. 相关文档:jupyterlab
  3. 安装sklearn
    3.1. 基础包-sklearn:pip3 install scikit-learn,版本0.24.1
  4. 安装xgboost
    4.1. 基础包-xgboost:pip3 install xgboost,版本 1.3.3
    4.2. 安装mac安装环境-brew:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    4.2.1. 在我的环境中无法访问地址,从而从github下载包手工安装:
    4.2.2. git clone https://github.com/Homebrew/install.git
    4.2.3. cd install
    4.2.4. /bin/bash install.sh
    4.3. 安装依赖包-libomp:brew install libomp
  5. 测试验证
    5.1. 在conda环境中执行 python
    5.2. import xgboost


    安装成功后验证

参数调整方案

  1. 单参逐步调整:
    1.1. n_estimators > learning_rate > max_depth > min_child_weight > gamma > subsample > colsample_bytree > reg_lambda/reg_alpha
  2. 组合式参数调整:
    2.1. 存在 n_estimators / max_depth 有明显的相关性好像影响
  3. 其他解决方案:

参数调整结论

Q&A

  1. xgboost提供的n_estimators,通过fit后的模型是否会继承,如何产生效果?(参数early_stopping_rounds存在更好结果的可能性)
n_estinators
early_stopping_rounds 100 120
None Train: 0.9699
Test : 0.5917
Train: 0.9794
Test : 0.5920
30 Train: 0.7865
Test : 0.5963
Train: 0.7865
Test : 0.5963
  1. xgboost提供DMatrix数据结构,是否能提高性能,提高程度如何?

参数含义说明(注明自我理解)

\color{rgb(255,0,0)}{}

上一篇 下一篇

猜你喜欢

热点阅读