2017-06-23 4 views
2

GradientBoostedRegressorpydocsには、属性としてoob_improvement_と記載されています。sklearnから計算された偏差にアクセスするGradientBoostedRegressor

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

デフォルトでは、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を参照してください。

関連する問題