XGBoost 庞大的数据集 ~1TB

数据挖掘 大数据 数据 xgboost
2021-09-25 20:23:43

像 XGBoost 或 Lightbgm 这样的梯度提升解决方案能否用于处理大量数据?我有一个 820GB 的 csv 文件,其中包含 10 亿个观测值,每个观测值有 650 个数据点。

XGBoost 的数据太多了吗?我已经在互联网上搜索了一个解决方案,当数据无法放入 RAM 内存时无济于事。我阅读了有关 xgb 的外部存储器的信息,但没有详细的文档。有人能指出我正确的方向吗,谢谢!

4个回答

1) 将数据拆分成更小的块

2)在第一个块上学习 clf

3)将模型转储到泡菜中

4)加载第二个块

5)从泡菜加载模型

6) 在第二个块上学习 clf,依此类推

是的,您可以使用 Dask 后端并行训练 XGBoost。

简短的解决方案

与 Dask 并行训练 XGBoost 需要对代码进行 2 处更改:

  1. dtrain = xgb.DMatrix(X_train, y_train) _dtrain = xgb.dask.DaskDMatrix(X_train, y_train)

  2. xgb.train(params, dtrain, ...) _xgb.dask.train(client, params, dtrain, ...)

您可以尝试将数据集拆分为 100 个较小的数据集并构建独立模型之后生成具有 100 个特征的新数据集,其中每个特征是对 100 个模型的预测。使用半独立预测器训练最终模型

至少它可以让你显着减少计算时间

您可以将 Vaex 和 Koalas 与 H2O 中的苏打水一起使用。如果你有计算基础,所有这三个结合起来。您可以轻松地处理非常分布的问题