例如:
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)
boost
和ghostBoost
完全相同但predictionA
不等于predictionB
,为什么会发生这种情况?
答案 0 :(得分:4)
尝试将两个模型的random_state
构造函数参数修复为相同的值。决策树构建过程是随机的,因为每个节点都会从可用功能中随机抽取max_features
(带替换而不替换)。
编辑:功能采样无需更换即可完成。在max_features=None
(默认值)评估所有要素时,如果排序更改可能会在max_depth
不是None
时产生影响,并且目标变量具有导致绑定的非唯一值最佳功能分裂。