【sklearn学习】集成算法之梯度提升树GBDT

梯度提升树(Gradient Boosting Decision Tree, GBDT)是提升法中的代表算法

GBDT中包含Boosting三要素

  • 损失函数:用以衡量模型预测结果与真实结果的差异
  • 弱评估器:决策树,不同的boosting算法使用不同的建树流程
  • 综合集成结果:集成算法具体如何输出集成结果

建模流程:

依据上一个弱评估器的结果,计算损失函数,并使用损失函数自适应影响下一个弱评估器的构建。集成模型输出的结果,受到整体所有弱评估器的影响。

GBDT的不同

弱评估器

GBDT的弱评估器输出类型不再和整体集成算法输出类型一致,无论GBDT整体在执行回归、分类、排序任务,弱评估器一定是回归器。GBDT通过sigmoid或softmax函数输出具体的分类结果,但实际弱评估器一定是回归器。

损失函数

GBDT损失函数不再局限于固定或单一的某个损失函数

拟合残差

GBDT通过修改后续弱评估器的拟合目标(标签y)来直接影响后续弱评估器的结构,每次用于建立弱评估器的是样本以及挡下集成输出与真实标签的差异,而Adaboost通过调整数据分布间接影响后续弱评估器。

抽样思想

GBDT加入了随机森林的随机抽样思想,在每次建树前,允许对样本和特征进行抽样来增大弱评估器之间的独立性。

sklearn 中集成了GBDT分类和GBDT回归

sklearn.ensemble.GradientBoostingClassifier

class sklearn.ensemble.GradientBoostingClassifier(*loss='deviance'learning_rate=0.1n_estimators=100subsample=1.0criterion='friedman_mse'min_samples_split=2min_samples_leaf=1min_weight_fraction_leaf=0.0max_depth=3min_impurity_decrease=0.0init=Nonerandom_state=Nonemax_features=Noneverbose=0max_leaf_nodes=Nonewarm_start=Falsevalidation_fraction=0.1n_iter_no_change=Nonetol=0.0001ccp_alpha=0.0)

类型 参数/属性
迭代过程

参数:n_extimators, learning_rate, loss, alpha, init

属性:loss_, init_, extimators_

弱评估器结构 criterion, max_depth, min_samples_split, min_samples_leaf, min_weight_fraction_leaf, max_leaf_nodes, min_impurity_decrease
提前停止

参数:validation_fraction, n_iter_no_change, tol

属性:n_estimators_

弱评估的器训练数据

参数:subsam, max_featuures, random_state

属性:oob_improvement, train_score_

其它 ccp_alpha

1. 迭代过程

n_estimators:具体迭代次数

learning_rate:学习率参数

init:输入计算初始预测结果的估计器对象

可以输入任意评估器,如决策树、逻辑回归等可以输出概率的模型

字符串“zero”,代表从0开始迭代

None对象,默认为None对象,自动选择类DummyEstimator中的某种默认方式进行预测作为结果

在init中输入训练好的模型会加重GBDT的过拟合,通常选择None作为init的输入

使用回归器完成分类任务

多分类情况会按照实际的标签数建立迭代次数*类别数个弱评估器

GBDT的8种损失函数

GBDT将损失函数从有限的指数损失、MSE推广到任意可微函数

"deviance":交叉熵损失

二分类交叉熵损失

多分类交叉熵损失

二分类指数损失

多分类指数损失

平方误差  squared_error

绝对误差  absolute_error

Huber损失  huber

quantile损失  quantile

当高度关注离群值、并且希望努力将离群值预测正确时,选择平方误差squared_error

努力排除离群值影响、更关注非离群值的时候,选择绝对误差absolute_error

试图平衡离群值与非离群值、没有偏好时,选择Huber或者Quantileloss

参数/属性名 作用
n_estimators 集成算法种弱分类器数量,对Boosting算法而言为实际迭代次数
learning_rate Boosting算法中的学习率,影响弱分类器结果的加权求和过程
loss、alpha 需要优化的损失函数,以及特定损失函数需要调节的阈值
init 初始化预测结果H0的设置
loss_ 返回具体的损失函数对象
init_ 返回具体的初始化设置
estimators_ 返回实际建立的评估器列表
n_estimators_ 返回实际迭代次数

 对于GBDT,各个参数对算法的影响:

影响力 参数
几乎总是具有巨大影响力

n_estimators(整体学习能力)

learning_rate(整体学习速率)

max_features(随机性)

大部分时候具有影响力

init(初始化)

subsamples(随机性)

loss(整体学习能力)

可能有大影响力,大部分时候影响力不明显

max_depth(粗剪枝)

min_samples_split(精剪枝)

min_impurity_decrease(精剪枝)

max_leaf_nodes(精剪枝)

criterion(分枝敏感度)

当数据量足够大时,几乎无影响

random_state

ccp_alpha(结构风险)

可以进行优化的参数:loss、criterion、init、n_estimators、learning_rate、max_features、subsamples、max_depth、min_impurity_decrease

参数 范围
loss 'squared_error','absolute_error','huber','quantile'
criterion 'friedman_mse','squared_error','mse','mae'
init
n_estimators (25,200,25)
learning_rate (0.05,2.25,0.05)
max_features
subsample (0.1,0.8,0.1)
max_depth (2,30,2)
min_impurity_decrease (0,5,1)

你可能感兴趣的:(sklearn学习,算法,数据分析)