为什么我使用scikit-learn的GradientBoostingRegressor从同一输入获得不同的输出?

时间:2014-02-18 06:24:28

标签: python machine-learning scikit-learn

例如:

params = {'n_estimators': 200, "max_depth": 4, 'subsample': 1, 'learning_rate': 0.1}
boost = ensemble.GradientBoostingRegressor(**params)
ghostBoost = ensemble.GradientBoostingRegressor(**params)

...

boost.fit(x, y)
ghostBoost.fit(x, y)

...

predictionA = boost.predict(features)
predictionB = ghostBoost.predict(features)

boostghostBoost完全相同但predictionA不等于predictionB,为什么会发生这种情况?

1 个答案:

答案 0 :(得分:4)

尝试将两个模型的random_state构造函数参数修复为相同的值。决策树构建过程是随机的,因为每个节点都会从可用功能中随机抽取max_features带替换而不替换)。

编辑:功能采样无需更换即可完成。在max_features=None(默认值)评估所有要素时,如果排序更改可能会在max_depth不是None时产生影响,并且目标变量具有导致绑定的非唯一值最佳功能分裂。