关键点:数据集太大了,我几乎无法将其存储在硬件中。 (拍字节)
假设我的数据集中有数万亿行。该数据集太大,无法存储在内存中。我想在这个数据集上训练一个机器学习模型,比如逻辑回归。我该怎么办?
现在,我知道亚马逊/谷歌在大量数据上进行机器学习。他们怎样做呢?例如点击数据集,全局每个智能设备的输入都存储在一个数据集中。
拼命寻找新想法并乐于接受修正。
我的思路:
这样优化就是小批量下降。
现在的问题是,在优化中,无论是SGD还是mini batch,在最坏的情况下,当它遍历完所有数据时就会停止。遍历整个数据集是不可能的。
所以我就有了提前停止的想法。提前停止保留验证集,并在错误停止下降/收敛于验证集时停止优化。但由于数据集的大小,这可能不可行。
现在我正在考虑简单地随机采样训练集和测试集,并使用可行的大小来训练模型。
Pandas 读取函数将整个数据加载到 RAM 中,这可能是一个问题。为了解决这个问题,需要分块处理数据。
如果数据量很大,可以使用批次来训练数据集。使用神经网络、xgboost 等复杂模型代替逻辑回归。
要在如此大量的数据上训练机器学习模型,您可以首先使用 PyTorch 中的 DataLoader 类。
PyTorch DataLoader 类可用于加载和处理大型数据集中的数据,并创建小批量用于训练机器学习模型(例如逻辑回归)。
对于加载无法装入内存的巨大数据集特别有用。