和随机森林模型类似,scikit-learn中的GBDT模型也是基于决策树模型的集成算法,区别在于前者基于并行的bagging框架,而后者基于串行的boosting框架。
将boosting框架作用于CART树上,分别有适用于分类问题的GBDTClassifier和适用于回归问题的GBDTRegressor。两者在参数设定、调参等方面均极为类似。
1. 模型的主要参数
在GBDT中,存在两大类型的参数,分别为boosting框架参数和单棵决策树参数
1.1 boosting框架参数
boosting框架参数主要涉及各子决策树的迭代策略:
模型参数 | Parameter含义 | GBDTClassifier | GBDTRegressor |
n_estimators | 子树数量 | boosting框架下弱子学习器(子决策树)的数量,其值若偏小模型易欠拟合,若偏大计算量上升且容易过拟合。默认值为100。 | |
learning_rate | 步长 | 即每个弱学习器的权重缩减系数,用于防止对负梯度方向的过拟合,提高模型的泛化能力。默认值为0.1。 | |
loss | 损失函数 | 可微的损失函数,sklearn中不支持自定义。对于分类问题,可设置为'deviance'或'exponential',前者为默认值,表示对数损失函数(类似于logitstic回归),后为表示指数损失函数(此时模型退化为Adaboost)。对于回归问题,可设置为'ls', 'lad', 'huber', 'quantile',分别表示最小平方损失、最小绝对值损失、huber损失和分位数损失,默认值为'ls'。 | |
alpha | 分位数损失参数 | 分位数损失的参数 |