xgboost 的哪些功能受种子 (random_state) 影响?

What features of xgboost are affected by seed (random_state)?

除了 seed= 参数传递给 numpy.random.seed:

之外,Python API 没有提供更多信息

seed (int) – Seed used to generate the folds (passed to numpy.random.seed).

但是 xgboost 的哪些功能使用 numpy.random.seed

xgboost 的哪些其他功能依赖于 numpy.random.seed

好吧,如果您想要详尽的列表,可以在 GitHub 查看源代码。在 github 上使用关键字搜索可获得良好的指示。

search for 'rand' - 15 个结果

search for 'seed' and python filter - 20 个结果

提升树按顺序生长,一次迭代内的树生长分布在线程之间。为了避免过度拟合,通过以下参数引入随机性:

  • colsample_bytree
  • colsample_bylevel
  • colsample_bynode
  • subsample(注意 *sample* 模式)
  • shuffle 在创建用于交叉验证的 CV 文件夹中

另外,你可能会在以下地方遇到非确定性,不受随机状态控制:

[GPU] histogram building is not deterministic due to the nonassociative aspect of floating point summation.

Using gblinear booster with shotgun updater is nondeterministic as it uses Hogwild algorithm

when using GPU ranking objective, the result is not deterministic due to the non-associative aspect of floating point summation.

评论回复:你怎么知道的?

知道这个很有帮助:

  1. 了解树木的生长方式:Demystify Modern Gradient Boosting Trees(参考资料也可能有帮助)

  2. 正在扫描文档 full text 以获取感兴趣的术语:randomsampledeterministicdeterminism

  3. 最后(首先?),了解为什么需要抽样和类似案例(如袋装树)(RANDOM FORESTS by Leo Breiman) and neural networks (Deep learning with Python 作者 François Chollet,关于过度拟合的章节)也可能有帮助。