决策树参数调优建议

建议一:

三个最重要的参数为:树的数目、树的深度和学习率。建议参数调整策略为:
– 采用默认参数配置试试
– 如果系统过拟合了,降低学习率
– 如果系统欠拟合,加大学习率

建议二:

– n_estimators和learning_rate:固定n_estimators为100(数目不大,因为树的深度较大,每棵树比较复杂),然后调整learning_rate
– 树的深度max_depth:从6开始,然后逐步加大
– min_child_weight : 1 ⁄ sqrt rare_events ,其中rare_events 为稀有事件的数目
– 列采样colsample_bytree/ colsample_bylevel:在[0.3, 0.5]之间进行网格搜索
– 行采样subsample:固定为1
– gamma: 固定为0.0

建议三:

• 1. 选择较高的学习率(learning rate),并选择对应于此学习率的理想的树的数量
– 学习率以工具包默认值为0.1。
– XGBoost直接引用函数“cv”可以在每一次迭代中使用交叉验证,并返回理想的树数量(因为交叉验证很慢,所以可以import两种XGBoost;直接引用xgboost(用“cv”函数调整树的数目)和XGBClassifier —xgboost的sklearn包(用GridSearchCV调整其他参数 )。
• 2. 对于给定的学习率和树数量,进行树参数调优( max_depth,min_child_weight, gamma, subsample, colsample_bytree, colsample_bylevel )
• 3. xgboost的正则化参数(lambda, alpha)的调优
• 4. 降低学习率,确定树的数目参数

通常操作步骤

1、采用缺省参数,此时learning_rate =0.1(较大), 观察n_estimators的合适范围

2、max_depth 和 min_child_weight 参数调整,我们先大范围地粗调参数(步长为2),再小范围微调

3、再次调整n_estimators

可选步骤:

1、gamma参数调整– 通常缺省值(0)表现还不错,如计算资源允许,可以调整(略)

2、行列采样参数: subsample和colsample_bytree
– 这两个参数可分别对样本和特征进行采样,从而增加模型的鲁棒性
– 现在[0.3-1.0]之间调整,粗调时步长0.1
– 微调时步长为0.05(略)

3、正则参数调整: reg_alpha(L2)和reg_lambda(L0)

– reg_alpha = [ 0.1, 1] # L1, default = 0
– reg_lambda = [0.5, 1, 2]
# L2, default = 1
– Best: -0.458950 using {'reg_alpha': 1, 'reg_lambda': 0.5)

reg_lambda似乎越小越好(叶子结点的分数),reg_alpha似乎越大越好(叶子结点数目)
如计算资源允许,可进一步增大reg_alpha,减小reg_lambda

4、降低学习率,调整树的数目

猜你喜欢

转载自blog.csdn.net/evolution23/article/details/85253992