使用决策树进行增量学习 (scikit-learn)

机器算法验证 Python 大车 scikit-学习 熊猫 内存
2022-03-17 16:08:11

我正在尝试使用我拥有的一些非常大的数据来训练回归树:大约 3Tb。

我正在使用 scikit-learn,当然我无法将这么多的数据加载到内存中。做一些在线研究,我发现一些 scikit-learn 算法有一个 partial_fit 方法可以用于这个目的。不幸的是 scikit-learn 决策树没有部分拟合方法。

我想知道你们中是否有人遇到过这个问题,是否有替代方法来处理它。

顺便说一句,我的数据存储在熊猫数据框中。

1个回答

Scikit-learn 仅提供最常见的决策树算法(D3、C4.5、C5.0 和 CART)的实现。这些依赖于将整个数据集保存在内存中,因此无法对它们使用部分拟合。您只能在数据的小子集上学习多个决策树,并将它们排列成一个随机森林。

还有一些其他算法可用于诱导适用于磁盘或流数据的决策树。我认为最知名的算法是 SLIQ、SPRINT 和 HOEFFDING 树(参见本文)。虽然它们似乎都没有在任何常见的机器学习框架 (afaik) 中实现,但您可以在 github 上找到一些独立的 python 实现。如果你使用 Spark,他们也有一些用于大数据的决策树算法。

PS:顺便说一句,你如何在一个 pandas 数据框中存储 3Tb 的数据?(你在使用 PyTables 吗?)