如何在内存太大的数据上训练 xgboost 模型?

数据挖掘 xgboost
2021-09-16 14:18:37

在大到无法一次将其保存在内存中的数据上训练 xgboost(eXtreme 梯度提升)模型的最佳实践是什么?拆分数据并训练多个模型?有更优雅的解决方案吗?

3个回答

您可以训练 xgboost,计算输出(边距),然后继续训练,请参见boost from prediction中的示例。

我自己没有尝试过,但也许你可以在数据的第一个子集(比如 10%)上进行训练,然后继续在另一个子集上进行训练,等等。

更新

一步一步的过程

  1. 将数据拆分为 N 个可管理的子集,设置 n=1
  2. 在第 n 个子集上训练 xgboost
  3. 使用从先前获得的模型计算 n+1 子集的预测(边距)
  4. 通过 setinfo 将边距添加到 n+1 子集中
  5. 递增 n

步骤 2-5 重复 N 次。

我不认为你所要求的是可能的。看到这个问题

我知道您想在 A PART 数据上训练模型,然后在另一个 PART 上继续训练,依此类推。所以@aivanov 的回答在这方面无济于事。

如果您使用的是 R,您是否考虑过bigmemoryandff包?

我自己没有太多使用这些的经验,但有兴趣看看它们是否有助于解决手头的问题。