像 XGBoost 或 Lightbgm 这样的梯度提升解决方案能否用于处理大量数据?我有一个 820GB 的 csv 文件,其中包含 10 亿个观测值,每个观测值有 650 个数据点。
XGBoost 的数据太多了吗?我已经在互联网上搜索了一个解决方案,当数据无法放入 RAM 内存时无济于事。我阅读了有关 xgb 的外部存储器的信息,但没有详细的文档。有人能指出我正确的方向吗,谢谢!
像 XGBoost 或 Lightbgm 这样的梯度提升解决方案能否用于处理大量数据?我有一个 820GB 的 csv 文件,其中包含 10 亿个观测值,每个观测值有 650 个数据点。
XGBoost 的数据太多了吗?我已经在互联网上搜索了一个解决方案,当数据无法放入 RAM 内存时无济于事。我阅读了有关 xgb 的外部存储器的信息,但没有详细的文档。有人能指出我正确的方向吗,谢谢!
1) 将数据拆分成更小的块
2)在第一个块上学习 clf
3)将模型转储到泡菜中
4)加载第二个块
5)从泡菜加载模型
6) 在第二个块上学习 clf,依此类推
是的,您可以使用 Dask 后端并行训练 XGBoost。
简短的解决方案
与 Dask 并行训练 XGBoost 需要对代码进行 2 处更改:
用dtrain = xgb.DMatrix(X_train, y_train)
_dtrain = xgb.dask.DaskDMatrix(X_train, y_train)
用xgb.train(params, dtrain, ...)
_xgb.dask.train(client, params, dtrain, ...)
您可以尝试将数据集拆分为 100 个较小的数据集并构建独立模型之后生成具有 100 个特征的新数据集,其中每个特征是对 100 个模型的预测。使用半独立预测器训练最终模型
至少它可以让你显着减少计算时间
您可以将 Vaex 和 Koalas 与 H2O 中的苏打水一起使用。如果你有计算基础,所有这三个结合起来。您可以轻松地处理非常分布的问题