len*_*enz 5 machine-learning python-3.x xgboost
我意识到,与 scikit learn 相反,设置固定值并random_state不能保证模型每次都会输出相同的结果。
seed因此,即使通过设置、和random_state,我也无法从 XGBoostRegressor 获得可重现的结果。colsample_bytreesubsample
这是一个错误吗?这是设计使然吗?如果是这样,为什么?
如果您有始终有效的解决方案或解决方法,请分享。
这是代码:
model = XGBRegressor(n_estimators=1000, learning_rate=0.05,
subsample=0.8, colsample_bytree= 0.8, seed=42)
model.fit(X_train_trf,y_train,
early_stopping_rounds=5,
eval_set=[(X_train_trf, y_train), (X_valid_trf, y_valid)],
verbose=False)
preds = model.predict(X_valid_trf)
Run Code Online (Sandbox Code Playgroud)
在回答您的问题时,细微的差异可以通过浮点求和顺序和多线程的非确定性来解释,但总体梯度提升并不真正适合可重复地构建模型。您可以通过调整参数(例如设置 random_state、种子、输入特征、模型参数以及我在上面的评论中提出的建议)来控制很多随机性,但总的来说,您在构建模型时预计会出现一些小的变化,因为算法有效;特别是当数据中的信号不强时。
| 归档时间: |
|
| 查看次数: |
3780 次 |
| 最近记录: |