如何使用令人生畏的庞大训练数据集训练模型

数据挖掘 训练 大数据
2022-03-07 04:15:31

我有一个非常庞大的数据集,我想知道如何设置实验以使用这些数据来训练模型的正确方法。

我知道我可以使用数据缩减来删除一些变量。尽管数据缩减实际上可以减少数据量,但正如我所见,这种技术旨在提高模型训练的有效性,而不是处理数据量带来的实际问题。

我的一个想法是先将整个数据打乱,然后将数据分成“小”块。一旦有了,比如说'个块,我可以使用每个块训练相同的模型,如下所示:N

initialize(M);
for(n in N) {
  D = load_chunck(n);
  M = train(M, D);
}

尽管这种方法可以有效地将实验与手头的计算资源相匹配,但我担心以这种方式训练模型会影响模型的质量,因为它会包含来自后者块的偏差。此外,N 现在是要设置的新超参数。

我可以看到的另一种选择是使用统计抽样:

D = retrieve_sampling(sampling_size);
if (D is good)
   M = train(D);

我想知道我是否还有其他方法可以做到这一点,然后是我在这里引用的那些。

1个回答

很多时候,对于海量数据集,模型实际上并不需要全部数据。所以我认为第一步是检查使用整个数据是否有用:运行一个消融研究,你使用 1%,然后是 2%、3%、..,直到 10% 的数据(调整水平当然是你的情况)。每次运行都包括在 x % 子集上进行训练并在验证集上进行评估(确保在任何事情之前分开你真正的最终测试集,本研究应该只使用验证集)。

目标是估计通过添加训练数据可以获得多少性能增益。将性能绘制为数据量的函数应该可以很好地了解趋势,即使它没有达到最大性能点,即当更多数据不再提高性能时。有了这些信息,您可以更好地决定如何进行真正的培训。