数据集大小是否会影响机器学习算法?

时间:2014-09-04 12:03:56

标签: algorithm machine-learning dataset bigdata svm

因此,想象一下能够获得足够质量的足够数据(数百万的训练和测试数据点)。请暂时忽略概念漂移并假设数据是静态的,并且不会随时间变化。在模型质量方面使用所有数据是否有意义?

Brain和Webb(http://www.csse.monash.edu.au/~webb/Files/BrainWebb99.pdf)已经包含了一些试验不同数据集大小的结果。在经过16,000或32,000个数据点训练后,他们测试的算法会收敛到稳定。但是,由于我们生活在大数据世界中,我们可以访问数百万个数据集,所以这篇论文有点相关,但已经过时了。

是否有任何关于数据集大小对学习算法(朴素贝叶斯,决策树,SVM,神经网络等)影响的最新研究。

  1. 学习算法什么时候会收敛到某个稳定的模型,而更多的数据不再提高质量?
  2. 可以在50,000个数据点之后,或者可能在200,000之后或仅在1,000,000之后发生?
  3. 有经验法则吗?
  4. 或许算法无法收敛到稳定模型,达到某种平衡?
  5. 我为什么这么问?想象一下,存储有限的系统和大量独特的模型(数以千计的模型都有自己独特的数据集),无法增加存储空间。因此,限制数据集的大小非常重要。

    对此有何想法或研究?

1 个答案:

答案 0 :(得分:21)

我完成了关于这个主题的硕士论文,所以我碰巧知道了很多。

在我的硕士论文的第一部分中,我拿了一些非常大的数据集(约5,000,000个样本)并通过学习不同百分比的数据集(学习曲线)测试了一些机器学习算法。 )。 Results for HIGGS

我做的假设(我主要使用scikit-learn)不是为了优化参数,而是使用算法的默认参数(由于实际原因我不得不做出这个假设,没有优化,一些模拟已经超过24集群上的小时数)。

首先要注意的是,实际上,每种方法都会导致数据集某一部分达到稳定状态。但是,由于以下原因,您不能得出有关达到平台所需的有效样本数量的结论:

  • 每个数据集都是不同的,对于非常简单的数据集,它们可以为您提供10个样本所提供的几乎所有内容,而有些数据集在12000个样本后仍有一些内容可以显示(请参阅上面示例中的Higgs数据集)。
  • 数据集中的样本数量是任意的,在我的论文中,我测试了一个带有错误样本的数据集,这些样本只是添加到算法的混乱中。
然而,我们可以区分具有不同行为的两种不同类型的算法:参数(线性,......)和非参数(随机森林,......)模型。如果达到一个非参数的平台,这意味着数据集的其余部分是"无用"。正如你所看到的那样,Lightning方法很快就会在我的图片上达到一个平台,这并不意味着数据集没有任何东西可以提供,但更多的是该方法可以做的最好。这就是为什么非参数方法在获得的模型很复杂并且可以从大量训练样本中获益时效果最好的原因。

至于你的问题:

  1. 见上文。

  2. 是的,这完全取决于数据集内部的内容。

  3. 对我来说,唯一的经验法则是进行交叉验证。如果您认为您将使用20,000或30,000个样本,那么您通常会遇到交叉验证不成问题的情况。在我的论文中,我在测试集上计算了我的方法的准确性,当我没有注意到显着的改进时,我确定了到达那里的样本数量。正如我所说,你可以观察到一些趋势(参数方法往往比非参数方法更快地饱和)

  4. 有时,当数据集不够大时,您可以获取所拥有的每个数据点,如果您拥有更大的数据集,仍然有改进的余地。在我的论文中没有对参数进行优化,Cifar-10数据集表现得那样,即使在我的算法已经融合了50,000之后也是如此。

  5. 我补充说,优化算法的参数会对收敛到高原的速度产生很大影响,但它需要另一步交叉验证。

    你的最后一句与我论文的主题高度相关,但对我而言,它与执行ML任务的记忆和时间更相关。 (好像你覆盖的数据集少于整个数据集,你的内存需求会更少,而且会更快)。关于这一点,"核心集"对你来说真的很有意思。

    我希望我可以帮助你,我不得不停下来,因为我可以继续这样做,但如果你需要更多的澄清,我很乐意提供帮助。