七、梯度提升树
7.1 GradientBoostingClassifier
GradientBoostingClassifier
是GBDT
分类模型,其原型为:class sklearn.ensemble.GradientBoostingClassifier(loss='deviance', learning_rate=0.1,
n_estimators=100, subsample=1.0, min_samples_split=2, min_samples_leaf=1,
min_weight_fraction_leaf=0.0, max_depth=3, init=None, random_state=None,
max_features=None, verbose=0, max_leaf_nodes=None, warm_start=False, presort='auto')
loss
:一个字符串,指定损失函数。可以为:'deviance'
(默认值):此时损失函数为对数损失函数: 。'exponential'
:此时使用指数损失函数。
n_estimators
:一个整数,指定基础决策树的数量(默认为100),值越大越好。learning_rate
:一个浮点数,表示学习率,默认为1。它就是下式中的 : 。- 它用于减少每一步的步长,防止步长太大而跨过了极值点。
- 通常学习率越小,则需要的基础分类器数量会越多,因此在
learning_rate
和n_estimators
之间会有所折中。
max_depth
:一个整数或者None
,指定了每个基础决策树模型的max_depth
参数。- 调整该参数可以获得最佳性能。
- 如果
max_leaf_nodes
不是None
,则忽略本参数。
min_samples_split
:一个整数,指定了每个基础决策树模型的min_samples_split
参数。min_samples_leaf
:一个整数,指定了每个基础决策树模型的min_samples_leaf
参数。min_weight_fraction_leaf
:一个浮点数,指定了每个基础决策树模型的min_weight_fraction_leaf
参数。subsample
:一个大于0
小于等于1.0
的浮点数,指定了提取原始训练集中多大比例的一个子集用于训练基础决策树。如果
subsample
小于1.0,则梯度提升决策树模型就是随机梯度提升决策树。此时会减少方差但是提高了偏差。
它会影响
n_estimators
参数。
max_features
:一个整数或者浮点数或者字符串或者None
,指定了每个基础决策树模型的max_features
参数。如果
max_features< n_features
,则会减少方差但是提高了偏差。max_leaf_nodes
:为整数或者None
,指定了每个基础决策树模型的max_leaf_nodes
参数。init
:一个基础分类器对象或者None
,该分类器对象用于执行初始的预测。如果为
None
,则使用loss.init_estimator
。verbose
:一个正数。用于开启/关闭迭代中间输出日志功能。warm_start
:一个布尔值。用于指定是否继续使用上一次训练的结果。random_state
:一个随机数种子。presort
:一个布尔值或者'auto'
。指定了每个基础决策树模型的presort
参数。
模型属性:
feature_importances_
:每个特征的重要性。oob_improvement_
:给出训练过程中,每增加一个基础决策树,在测试集上损失函数的改善情况(即:损失函数的减少值)。train_score_
:给出训练过程中,每增加一个基础决策树,在训练集上的损失函数的值。init
:初始预测使用的分类器。estimators_
:所有训练过的基础决策树。
模型方法:
fit(X, y[, sample_weight, monitor])
:训练模型。其中
monitor
是一个可调用对象,它在当前迭代过程结束时调用。如果它返回True
,则训练过程提前终止。predict(X)
:用模型进行预测,返回预测值。predict_log_proba(X)
:返回一个数组,数组的元素依次是X
预测为各个类别的概率的对数值。predict_proba(X)
:返回一个数组,数组的元素依次是X
预测为各个类别的概率值。score(X,y[,sample_weight])
:返回模型的预测性能得分。staged_predict(X)
:返回一个数组,数组元素依次是:GBDT
在每一轮迭代结束时的预测值。staged_predict_proba(X)
:返回一个二维数组,数组元素依次是:GBDT
在每一轮迭代结束时,预测X
为各个类别的概率值。staged_score(X, y[, sample_weight])
:返回一个数组,数组元素依次是:GBDT
在每一轮迭代结束时,该GBDT
的预测性能得分。
7.2 GradientBoostingRegressor
GradientBoostingRegressor
是GBRT
回归模型,其原型为:class sklearn.ensemble.GradientBoostingRegressor(loss='ls', learning_rate=0.1,
n_estimators=100, subsample=1.0, min_samples_split=2, min_samples_leaf=1,
min_weight_fraction_leaf=0.0, max_depth=3, init=None, random_state=None,
max_features=None, alpha=0.9, verbose=0, max_leaf_nodes=None, warm_start=False,
presort='auto')
loss
:一个字符串,指定损失函数。可以为:'ls'
:损失函数为平方损失函数。'lad'
:损失函数为绝对值损失函数。'huber'
:损失函数为上述两者的结合,通过alpha
参数指定比例,该损失函数的定义为:即误差较小时,采用平方损失;在误差较大时,采用绝对值损失。
'quantile'
:分位数回归(分位数指得是百分之几),通过alpha
参数指定分位数。
alpha
:一个浮点数,只有当loss='huber'
或者loss='quantile'
时才有效。n_estimators
: 其它参数参考GradientBoostingClassifier
。
模型属性:
feature_importances_
:每个特征的重要性。oob_improvement_
:给出训练过程中,每增加一个基础决策树,在测试集上损失函数的改善情况(即:损失函数的减少值)。train_score_
:给出训练过程中,每增加一个基础决策树,在训练集上的损失函数的值。init
:初始预测使用的回归器。estimators_
:所有训练过的基础决策树。
模型方法:
fit(X, y[, sample_weight, monitor])
:训练模型。其中
monitor
是一个可调用对象,它在当前迭代过程结束时调用。如果它返回True
,则训练过程提前终止。predict(X)
:用模型进行预测,返回预测值。score(X,y[,sample_weight])
:返回模型的预测性能得分。staged_predict(X)
:返回一个数组,数组元素依次是:GBRT
在每一轮迭代结束时的预测值。staged_score(X, y[, sample_weight])
:返回一个数组,数组元素依次是:GBRT
在每一轮迭代结束时,该GBRT
的预测性能得分。