前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习需要多少数据进行训练?

机器学习需要多少数据进行训练?

作者头像
青橙.
发布2018-01-31 17:55:47
8.1K0
发布2018-01-31 17:55:47
举报
文章被收录于专栏:橙、橙、

你需要的数据量取决于问题的复杂程度和算法的复杂程度。

这是毋庸置疑的,但是如果你的机器学习即将结束,那么这篇文章并不能给你什么帮助。

经常有人这么问我:

我需要多少数据?

我不能直接为你或任何人做出答复。但是我可以给你一些思考这个问题的方法。

在这篇文章中,我展示了一系列方法,可以用来估计针对你的情况需要多少训练数据来进行机器学习。

我希望这些方法中的一个或多个可以帮助你理解你所解决的问题的的难度和它如何与归纳问题的核心紧密结合起来的。

让我们开始深入探讨

机器学习需要多少训练数据?
机器学习需要多少训练数据?

为什么你问这个问题?

知道为什么要询问所需的训练数据集的大小更重要。

答案将会影响你的下一步决策。

例如:

  • 你的数据太多了?考虑开发一些学习曲线来找出代表性的样本(参考下文)。或者,考虑使用大数据框架来使用所有数据。
  • 你的数据太少了?考虑确认你的数据确实太少了。考虑收集更多数据,或者使用数据增加方法来人为地增加样本量。
  • 你还没有开始收集数据?考虑收集一些数据并评估是否足够。或者,如果是用于研究或数据收集的费用很高,可以考虑与领域专家和统计人员交谈。

一般地,你可能会有其他更多的问题,例如:

  • 我应该从数据库中选取多少条记录?
  • 需要多少样本数据才能达到理想的性能?
  • 训练集要多大才能达到模型性能的充分估计?
  • 需要多少数据才能证明一个模型比另一个好?
  • 我应该使用train/test split还是k-fold cross validation?

这篇文章中的建议有助于解决后面的这些问题。

在实践中,我使用学习曲线(参见下文)自己回答这个问题,在小数据集上使用重采样方法(例如k-fold cross validation 和 bootstrap),并将置信区间添加到最终结果

那么,你需要多少数据?

1.视情况而定; 没有人能告诉你

没有人能告诉你预测建模的问题需要多少数据。

这是不可知的:这是一个棘手的问题:你必须通过实证研究找到答案。

机器学习所需的数据量取决于许多因素,例如:

  • 问题的复杂性,通常是将输入变量与输出变量关联最好的未知基础函数。
  • 学习算法的复杂性,通常是用于从具体示例中归纳的未知底层学习映射函数的算法。

这是我们的出发点。

视情况而定 ”是大多数从业者第一个给你的答案。

2.类比推理

很多人已经在你之前实践了很多机器学习应用问题。

他们中一些已经发表了他们的成果。

也许你可以看看类似于你的问题的研究,作为对可能需要的数据量的估计。

同样,对于算法性能如何随着数据集大小而进行研究也是很常见的。也许这样的研究可以告诉你需要多少数据才能使用某个特定的算法。

也许你可以综合参考多个研究。

在Google,Google ScholarArxiv上搜索相关论文。

3.利用专业知识

你需要从你的问题中获取代表你尝试解决的问题的数据样本。

一般来说,这些样本必须是独立的,分布均匀的。

请记住,在机器学习中,我们在学习将输入数据映射到输出数据。学习到的映射函数的优劣取决于你的数据样本。

这意味着需要有足够的数据来合理地捕捉输入输出特征和他们之间可能存在的关系。

使用你的专业知识,或者找到对应领域的专家,并且探讨为合理地捕捉特征之间有用的练习而需要的数据集和数据规模的大小的原因。

4.运用统计学方法

用统计的方法可以让你估算一个合适的样本量。

我所见过的大多数试探法都是针对分类问题的,它们依据类别数量,输入特征或模型参数。一些算法看起来很严谨,其他的则是特殊尺度因子。

以下是你可能参考的一些示例:

  • 类的数量因子:每个类必须有x个独立的样本,其中x可以是数十,数百或者数千(例如5,50,500,5000)。
  • 输入特征数量因子:必须比输入特征多x%的样本,其中x可以是几十个(例如10)。
  • 模型参数个数的因子:每个参数必须有x个独立的样本,其中x可以是几十个(例如10)。

他们都像特殊尺度因子。

在关于这个主题(而不是我的专业领域)的理论工作中,分类器(例如k-nearest neighbors)通常对照最优贝叶斯决策规则,并且问题的难度对应维度增加而爆炸性增加; 随着输入特征数量的增加,这个问题的难度将呈指数级增长。

一些例子:

研究结果建议应避免在高维而样本稀疏(例如少量的样本和大量的输入特征)的问题上采用局部方法(如k-nearest neighbors)。

有关这个主题的更好的探讨,请参阅:

5.非线性算法需要更多的数据

强大的机器学习算法通常采用非线性算法。

根据定义,他们能够学习输入和输出特征之间复杂的非线性关系。你可能很希望使用这些算法或正打算使用它们。

这些算法通常很灵活,甚至是无参的(除了现有的参数之外,算法还可以计算出需要多少个参数来建模问题)。它们也是高度随机的,这意味着根据由于训练它们的数据的不同,预测结果也会有所不同。这增加了灵活性和更强大的功能,但往往需要更多的数据。

事实上,像深度学习这样的非线性算法可以在得到更多数据的后得到提升。

如果一个线性算法在每个类有数百个样本的情况下可以达到很好的性能,那么对于非线性算法,例如随机森林或人工神经网络,则可能需要每个类有数千个样本。

6.数据集大小 VS 模型计算能力

在开发一种新的机器学习算法过正中,用数据量和问题复杂程度来证明甚至解释算法的性能是很常见的。

这些研究可能会也可能不会被算法的设计者公布,并且可能存在也可能不存在你正在考虑的问题的模型。

我会建议你用自己的数据和一个性能良好的算法(如随机森林)进行研究。

设计一个评估模型计算鞥努力与训练数据集大小的关系的研究。

将结果绘制为 x轴为的训练数据集大小,y轴为模型复杂程度的线形图,可以让你了解数据大小如何影响模型在处理你的问题上的性能。

这张图被称为学习曲线

从这个图中,您可能能够预计一个成熟的模型所需的数据量,或者在达到收益率递减的拐点之前需要的数据量。

为了开发能在各种在全面了解问题的背景下开发强大的模型,我强烈推荐这种方法。

7.大胆的猜测

应用机器学习算法时,你需要大量的数据。

通常情况下,您需要更多的数据,而不是在古典统计中合适的需要数据的数量。

我经常回答这个问题:需要多少数据才能反应:

获取并使用尽可能多的数据。

如果被问到这个问题,而且对问题的具体情况一无所知,我会说一些天真的事情:

  • 你需要数以千计的样本。
  • 怎么都要个几百吧。
  • 理想情况下,“一般”建模问题,需要数万或数十万的样本。
  • 数百万或数千万的样本对于“复杂”的问题,如深入学习的问题。

再一次,这只是特别的猜测,但如果你需要的话,这是一个起点。所以开始吧!

8.获取更多数据(不管是什么!?)

大数据通常与机器学习一起讨论,但你可能不需要大数据来应用到您的预测模型。

有些问题需要很多数据,所有的数据。例如,简单的统计机器翻译:

如果您正在进行传统的建模,那么在训练集大小中可能会有一个收益递减点,你应该研究您的问题和你选择的模型来估测该点的位置。

请记住,机器学习是一个归纳的过程。模型只能捕获它所看到的。如果训练数据不包含边界情况,则很可能你的模型将没有效果。

告别拖延,就从现在开始

现在,停止手中的事来准备思考你的问题,并建模。

不要让训练集大小的问题阻碍你开始建模问题的步伐。

在大多数情况下,我认为这个问题是你拖延的理由。

获取所有可用的数据,使用你拥有全部数据,看看你的问题需要怎样一个有效的模型。

学习一些东西,然后采取措施更好地理解进一步分析的内容,来扩展数据,或者收集更多数据。

进一步阅读

如果您正在深入研究,本节将提供更多有关该主题的资源。

Q&A网站上有很多关于这个问题的讨论,比如Quora,StackOverflow和CrossValidated。以下是几个可能有所帮助的选择例子。

我期望在这个问题上有一些很好的统计研究。这里有一些我能找到的。

其他相关文章。

总结

在这篇文章中,你有了一套思考和解答这个问题的思路:

机器学习需要多少数据进行训练?

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么你问这个问题?
    • 那么,你需要多少数据?
    • 1.视情况而定; 没有人能告诉你
    • 2.类比推理
    • 3.利用专业知识
    • 4.运用统计学方法
    • 5.非线性算法需要更多的数据
    • 6.数据集大小 VS 模型计算能力
    • 7.大胆的猜测
    • 8.获取更多数据(不管是什么!?)
    • 告别拖延,就从现在开始
    • 进一步阅读
      • 总结
      相关产品与服务
      大数据
      全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档