使用最少内存训练数据的最有效方法是什么?

机器算法验证 机器学习 数据集 算法 Python
2022-03-17 02:16:04

这是我的训练数据:200,000 个示例 x 10,000 个特征。所以我的训练数据矩阵是 - 200,000 x 10,000。

当我为每个示例生成特征时,我通过一个接一个地保存每个数据集(一个又一个示例)设法将其保存在一个平面文件中,而不会出现内存问题。

但是,现在当我使用MilkSVM light或任何其他机器学习算法时,一切都试图将整个训练数据加载到内存中,而不是一个一个地训练它。但是我只有 8 GB RAM,所以我不能这样继续。

你知道无论如何我可以一个数据集一个数据集地训练算法吗?即,这样在任何时候我都只会在训练时将一个数据集加载到内存中。

3个回答

我相信这种学习的术语是核心学习。一个建议是vowpal wabbit,它有一个方便的 R 库,以及许多其他语言的库。

我衷心赞同 Zach 的建议。vowpal wabbit 是一个很好的选择,你会对它的速度感到惊讶。根据 vowpal wabbit 的规范,200k x 10k 的数据集并不大。

vowpal_wabbit(可通过https://github.com/JohnLangford/vowpal_wabbit以源代码形式获得,旧版本可作为 Ubuntu 世界中的标准包获得)是一个快速的在线线性 + 双线性学习器,具有非常灵活的输入。您可以混合使用二进制和数值特征。无需对功能进行编号,因为变量名称将“按原样”工作。它有大量的选项、算法、归约、损失函数和总而言之的极大灵活性。您可以加入邮件列表(通过 github 找到)并提出任何问题。社区非常了解和支持。

我在这里回答了类似的问题重点是大多数机器学习/数据挖掘算法都是批量学习器,它们将所有数据加载到内存中。因此,您需要不同的工具来处理非常大的数据集。另请参阅该问题的工具。

在线学习是一种减少算法内存占用的方法。