从sklearn GradientBoostedRegressor访问计算的偏差

时间:2017-06-23 15:57:46

标签: python scikit-learn

pydocs GradientBoostedRegressor提及oob_improvement_作为属性。

http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingRegressor.html

enter image description here

但是我在sklearn 0.18.1中找到的是:

print '%s\n' %(repr(gbr.oob_improvement_))

{AttributeError}'GradientBoostingRegressor' object has no attribute 'oob_improvement_'

请注意其他属性,例如feature_importances_ 执行出现:

print '%s' %repr(gbr.feature_importances_)

[ 0.18573911  0.02802389  0.03824209  0.4526584   0.04772151   0.03357871  0.16121998  0.01518073]

`oob_improvement``属性实际上是否可以通过其他方式访问?

1 个答案:

答案 0 :(得分:4)

默认情况下,GradientBoostingClassifier使用所有数据来提升迭代次数。由于每个阶段都没有保留数据,因此无法获得OOB估算值。

另一种方法是在每个阶段使用训练数据的随机子样本;这种方法称为“随机梯度提升”。这样做可以减少差异并增加偏差,并使OOB估算可用。要启用它,请使用subsample< 1.0,例如

clf = GradientBoostingClassifier(subsample=0.6)

在上面的例子中,每个基础学习者接受60%随机数据样本的培训,其余40%的训练样本用于OOB估计。

有关完整示例,请参阅http://scikit-learn.org/stable/auto_examples/ensemble/plot_gradient_boosting_oob.html