如何在海量数据上训练机器学习模型?



重点:数据集太大了,我几乎无法将其存储在硬件中。(pb)

假设我在一个数据集中有数万亿行。此数据集太大,无法存储在内存中。我想在这个数据集上训练一个机器学习模型,比如逻辑回归。我该怎么做呢?

现在,我知道亚马逊/谷歌对大量数据进行机器学习。他们是怎么做的?例如,单击dataset,其中全局每个智能设备的输入都存储在一个数据集中。

拼命寻找新的想法,并愿意接受纠正。

我的思路:

  1. 加载一部分数据到内存
  2. 执行梯度下降

这样优化就是小批量下降。

现在的问题是,在优化中,无论是SGD还是迷你批处理,在最坏的情况下,它在遍历所有数据时停止。无法遍历整个数据集

所以我有了提早停车的想法。提前停止保留了一个验证集,并将在错误停止下降/收敛于验证集时停止优化。但由于数据集的大小,这可能不可行。

现在我正在考虑简单地随机抽取一个训练集和一个测试集,用可行的大小来训练模型。

Pandas的read函数将整个数据加载到ram中,这可能是一个问题。为了解决这个问题,将数据分成块处理。

在数据量巨大的情况下,您可以使用批处理来训练数据集。使用复杂的模型,如神经网络,xgboost,而不是逻辑回归。

查看本网站了解更多如何处理大数据的信息。

最新更新