重点:数据集太大了,我几乎无法将其存储在硬件中。(pb)
假设我在一个数据集中有数万亿行。此数据集太大,无法存储在内存中。我想在这个数据集上训练一个机器学习模型,比如逻辑回归。我该怎么做呢?
现在,我知道亚马逊/谷歌对大量数据进行机器学习。他们是怎么做的?例如,单击dataset,其中全局每个智能设备的输入都存储在一个数据集中。拼命寻找新的想法,并愿意接受纠正。
我的思路:
- 加载一部分数据到内存
- 执行梯度下降
这样优化就是小批量下降。
现在的问题是,在优化中,无论是SGD还是迷你批处理,在最坏的情况下,它在遍历所有数据时停止。无法遍历整个数据集
所以我有了提早停车的想法。提前停止保留了一个验证集,并将在错误停止下降/收敛于验证集时停止优化。但由于数据集的大小,这可能不可行。
现在我正在考虑简单地随机抽取一个训练集和一个测试集,用可行的大小来训练模型。
Pandas的read函数将整个数据加载到ram中,这可能是一个问题。为了解决这个问题,将数据分成块处理。
在数据量巨大的情况下,您可以使用批处理来训练数据集。使用复杂的模型,如神经网络,xgboost,而不是逻辑回归。
查看本网站了解更多如何处理大数据的信息。