【问题标题】:How to fit successive batches in Scikit-Learn?如何在 Scikit-Learn 中拟合连续批次?
【发布时间】:2019-04-30 13:51:09
【问题描述】:

我有一个大型数据集 (>1 TB),我希望使用 GradientBoostingRegressor of Scikit-Learn 对其进行训练。

由于数据的大小远远超出了我的 RAM 容量,我正在考虑将数据分成多个块,并逐个“fit()”它们。

我了解将“warm_start”属性设置为 True 会在 fit() 之后保留权重。但是,似乎我还需要为每次连续调用 fit() 增加估算器的数量。

在将估计器的数量增加一个之前,是否可以先 fit() 所有数据块?

什么是我的问题的最佳解决方案,即。拟合超大数据集?

【问题讨论】:

  • 只有估算器listed here 有能力做到这一点。

标签: python machine-learning scikit-learn bigdata gradient-descent


【解决方案1】:

您可能想尝试 SGD 估计器中的 partial_fit 方法。它不是 GBM,但它工作得非常好,并且对于您拥有的数据大小,您可能会通过线性模型和适当的交互获得良好的结果。

【讨论】:

  • 好的。我应该立即一个接一个地调用 partial_fit() 语句吗?提升不是总能带来更好的结果吗?为什么你认为线性模型对我的情况有好处?它们具体是什么适当的相互作用?如果我坚持使用 Gradient Boosting,您认为在提供下一个数据块时将估计阶段的数量增加一个是否重要?
  • 是的,一般来说,提升可能会产生更好的结果。但是你说你有很多数据,在这种情况下,如果你处理你的特征,一个具有交互作用的线性模型可能能够获得很好的性能。我个人在一个非常大的数据集上使用了 partial_fit 方法,并且能够获得与使用 H2O 的 gbms 相当的结果。
猜你喜欢
  • 2015-10-25
  • 2015-03-25
  • 2013-12-19
  • 2021-05-09
  • 2016-04-22
  • 2018-05-26
  • 2020-05-31
  • 2015-12-01
  • 1970-01-01
相关资源
最近更新 更多