【机器学习】GBDT梯度提升算法调参法总结II

对于GBDT的参数调整,上一篇已经通过实例讲明,不过调整参数确实重要,继续总结一下通用套路。

1、相关参数

GBDT算法参数主要分为三个类别: 
1.Tree-Specific Parameters: These affect each individual tree in the model. 
树相关参数,决定每棵树的结构 
2.Boosting Parameters: These affect the boosting operation in the model. 
提升相关参数,影响提升操作
3.Miscellaneous Parameters: Other parameters for overall functioning. 
其他参数*

2、 树相关参数

  1. min_samples_split 
    最小划分样本数目,控制过拟合,但值太高容易欠拟合,交叉验证调整
  2. min_samples_leaf 
    节点最小样本数目,不平衡分类问题需要设置较低的值,防止最小类别落入最大类别区域内
  3. min_weight_fraction_leaf 
    同2相同,只不过换成样本值的百分比,2或3只设置一个就行
  4. max_depth 
    树的最大深度,控制过拟合,通过交叉验证调参
  5. max_leaf_nodes 
    最大叶子数目,二叉树与4中树的深度相关(2的n次方),如果这个值设置了,GBDT会忽略4
  6. max_features 
    划分节点考虑的最大特征数目,优先选总数目的平方根,但也要检查是否达到总数目30%-40%的范围内 
    太高容易导致过拟合

3、boosting相关参数

  1. learning_rate 
    学习率控制树估计值变化的幅度,较小的值泛化的更好(老师推荐最好小于0.1), 但需要计算更多的树,计算代价较大
  2. n_estimators 
    树的数目,交叉验证调参
  3. subsample 
    每棵树考虑样本的数目,值稍微小于1就可以降低方差,模型会更稳健,一般来说0.8就可以,不过也可以调整的更好

4、其他参数损失函数、random-status等,详见sklearn库

5、参数调整的通用方法

学习率和树的数目是需要权衡的参数,一般来说学习率较低时还都不错,我们只需要训练足够多的树。但是对于特定学习率,树的数目很高时,可能导致过拟合,如果调低学习率增加树,又会引起计算时间的增长。 
因此可采用如下调整方式: 
1.选择相对较高的学习率, 一般默认0.1即可,不过有时根据问题不同可能选择0.05-0.2 
2.选择对应该学习率的最优的树数目,要考虑运行效率,因为后面还要测试其他参数 
3.调整生成树对应参数 
4.调低学习率,增加树的数目,来得到更稳健的模型。

初始值设置 
调参之前,通常可以采用如下初始值: 
min_samples_split=3, 通常选择样本总数目的0.5%-1% 
min_samples_leaf=5 ;max_depth=5, 通常选择选择3-8 ;max_features=’sqrt’ 
subsample=0.8,通常选择该初始值

选择设定的初始学习率时最优树数目 

采用以上初始值,从20-200范围内用函数GridSearchCV搜索最优树数目,如果得到的树数目过少,可以适当降低学习率,再gridsearch下如果很高的话,就要考虑调高学习率,否则计算时间较长。在实践中应权衡这两个参数值 。

调整树参数 

接下来,调整树参数,可以采用如下顺序: 
调整max_depth 和 num_samples_split ;max_depth 取3-12,steps=2 ;min_samples_split取2-10,steps=2 
调整min_samples_leaf ;min_samples_leaf取2-10
调整max_features ;max_features取3-13,step=1 
调参顺序是我们在实践中要认真考虑的,应首先调对结果影响最大的参数,比如max_depth and num_samples_split。

调整boosting参数

先调整学习率、树的数目。  随着学习率降低,树数目增加,测试集MSE,R2还是在提高的,但计算时间是个问题。,剩下的就是subsample。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值