你需要的数据量取决于问题的复杂程度和算法的复杂程度。
这是毋庸置疑的,但是如果你的机器学习即将结束,那么这篇文章并不能给你什么帮助。
经常有人这么问我:
我需要多少数据?
我不能直接为你或任何人做出答复。但是我可以给你一些思考这个问题的方法。
在这篇文章中,我展示了一系列方法,可以用来估计针对你的情况需要多少训练数据来进行机器学习。
我希望这些方法中的一个或多个可以帮助你理解你所解决的问题的的难度和它如何与归纳问题的核心紧密结合起来的。
让我们开始深入探讨
知道为什么要询问所需的训练数据集的大小更重要。
答案将会影响你的下一步决策。
例如:
一般地,你可能会有其他更多的问题,例如:
这篇文章中的建议有助于解决后面的这些问题。
在实践中,我使用学习曲线(参见下文)自己回答这个问题,在小数据集上使用重采样方法(例如k-fold cross validation 和 bootstrap),并将置信区间添加到最终结果
没有人能告诉你预测建模的问题需要多少数据。
这是不可知的:这是一个棘手的问题:你必须通过实证研究找到答案。
机器学习所需的数据量取决于许多因素,例如:
这是我们的出发点。
“ 视情况而定 ”是大多数从业者第一个给你的答案。
很多人已经在你之前实践了很多机器学习应用问题。
他们中一些已经发表了他们的成果。
也许你可以看看类似于你的问题的研究,作为对可能需要的数据量的估计。
同样,对于算法性能如何随着数据集大小而进行研究也是很常见的。也许这样的研究可以告诉你需要多少数据才能使用某个特定的算法。
也许你可以综合参考多个研究。
在Google,Google Scholar和Arxiv上搜索相关论文。
你需要从你的问题中获取代表你尝试解决的问题的数据样本。
一般来说,这些样本必须是独立的,分布均匀的。
请记住,在机器学习中,我们在学习将输入数据映射到输出数据。学习到的映射函数的优劣取决于你的数据样本。
这意味着需要有足够的数据来合理地捕捉输入输出特征和他们之间可能存在的关系。
使用你的专业知识,或者找到对应领域的专家,并且探讨为合理地捕捉特征之间有用的练习而需要的数据集和数据规模的大小的原因。
用统计的方法可以让你估算一个合适的样本量。
我所见过的大多数试探法都是针对分类问题的,它们依据类别数量,输入特征或模型参数。一些算法看起来很严谨,其他的则是特殊尺度因子。
以下是你可能参考的一些示例:
他们都像特殊尺度因子。
在关于这个主题(而不是我的专业领域)的理论工作中,分类器(例如k-nearest neighbors)通常对照最优贝叶斯决策规则,并且问题的难度对应维度增加而爆炸性增加; 随着输入特征数量的增加,这个问题的难度将呈指数级增长。
一些例子:
研究结果建议应避免在高维而样本稀疏(例如少量的样本和大量的输入特征)的问题上采用局部方法(如k-nearest neighbors)。
有关这个主题的更好的探讨,请参阅:
强大的机器学习算法通常采用非线性算法。
根据定义,他们能够学习输入和输出特征之间复杂的非线性关系。你可能很希望使用这些算法或正打算使用它们。
这些算法通常很灵活,甚至是无参的(除了现有的参数之外,算法还可以计算出需要多少个参数来建模问题)。它们也是高度随机的,这意味着根据由于训练它们的数据的不同,预测结果也会有所不同。这增加了灵活性和更强大的功能,但往往需要更多的数据。
事实上,像深度学习这样的非线性算法可以在得到更多数据的后得到提升。
如果一个线性算法在每个类有数百个样本的情况下可以达到很好的性能,那么对于非线性算法,例如随机森林或人工神经网络,则可能需要每个类有数千个样本。
在开发一种新的机器学习算法过正中,用数据量和问题复杂程度来证明甚至解释算法的性能是很常见的。
这些研究可能会也可能不会被算法的设计者公布,并且可能存在也可能不存在你正在考虑的问题的模型。
我会建议你用自己的数据和一个性能良好的算法(如随机森林)进行研究。
设计一个评估模型计算鞥努力与训练数据集大小的关系的研究。
将结果绘制为 x轴为的训练数据集大小,y轴为模型复杂程度的线形图,可以让你了解数据大小如何影响模型在处理你的问题上的性能。
这张图被称为学习曲线。
从这个图中,您可能能够预计一个成熟的模型所需的数据量,或者在达到收益率递减的拐点之前需要的数据量。
为了开发能在各种在全面了解问题的背景下开发强大的模型,我强烈推荐这种方法。
应用机器学习算法时,你需要大量的数据。
通常情况下,您需要更多的数据,而不是在古典统计中合适的需要数据的数量。
我经常回答这个问题:需要多少数据才能反应:
获取并使用尽可能多的数据。
如果被问到这个问题,而且对问题的具体情况一无所知,我会说一些天真的事情:
再一次,这只是特别的猜测,但如果你需要的话,这是一个起点。所以开始吧!
大数据通常与机器学习一起讨论,但你可能不需要大数据来应用到您的预测模型。
有些问题需要很多数据,所有的数据。例如,简单的统计机器翻译:
如果您正在进行传统的建模,那么在训练集大小中可能会有一个收益递减点,你应该研究您的问题和你选择的模型来估测该点的位置。
请记住,机器学习是一个归纳的过程。模型只能捕获它所看到的。如果训练数据不包含边界情况,则很可能你的模型将没有效果。
现在,停止手中的事来准备思考你的问题,并建模。
不要让训练集大小的问题阻碍你开始建模问题的步伐。
在大多数情况下,我认为这个问题是你拖延的理由。
获取所有可用的数据,使用你拥有全部数据,看看你的问题需要怎样一个有效的模型。
学习一些东西,然后采取措施更好地理解进一步分析的内容,来扩展数据,或者收集更多数据。
如果您正在深入研究,本节将提供更多有关该主题的资源。
Q&A网站上有很多关于这个问题的讨论,比如Quora,StackOverflow和CrossValidated。以下是几个可能有所帮助的选择例子。
我期望在这个问题上有一些很好的统计研究。这里有一些我能找到的。
其他相关文章。
在这篇文章中,你有了一套思考和解答这个问题的思路:
机器学习需要多少数据进行训练?