评估训练机器学习模型所需数据量目前并没有一个定量的计算方式,往往要结合所在问题、模型结构等等实际情况来评估,需要反复的实验来最终决定所需数据量。当然这里说的数据量的前提是,每条数据之间的重复或相似度比较低。否则100条重复的数据会比10条不重复数据更没用,即必须是有效的数据。这种情况下通常来说,对数据量的要求就是韩信点兵,多多益善。数据量大小对于模型的影响主要在于泛化性,数据量越大模型泛化性越好。
其中决定数据量的两个重要因素,一是数据的复杂度或者说特征数目,二是模型的参数数目以及模型的结构。
数据的特征数目是指描述一个数据所需的特征维度,如一张100*100大小彩色图片的特征维度就是100*100*3=30000个特征数。而对一段文本的特征表示,如果用词袋模型表示的话,其特征数就是词典中所有词的数目。按照经验来说,对于特征数目很大的数据,往往需要大量的数据来训练模型,同时也意味着模型的参数也要很多。对于特征维数小的数据往往就使用简单的逻辑回归模型即可。但是对于特征维数多,但是现有的数据量少,可以选择使用基于树的集合模型,如adaboost、随机森林等等。而对于处理具有超多特征维度的数据,最直接的方法就是使用深度神经网络,如图片、文本等。
设计的模型参数越多,那么所需的数据量也要越大,大量实验表明两者之前存在线性关系。此外优良的模型结构能很大程度上减少参数的数目,达到更好的预测效果。比如对于提取图像特征来说,全连接就不如卷积层,后者参数数目还更少。
因此在决定所需数据量时,就需要反复实验,不断调整模型参数,判断模型是否存在过拟合等。根据具体情况来具体分析。
给一点经验性的解释吧,供参考。
对于一个模型所需要的最少训练数据量,可以从几个方面看:
- 最重要的首先是数据的分布情况和可解释性强弱,若训练集的本身可以很好地分类标签,那么用小数据量的训练集和LR即可满足;
- 很多情况下数据的隐含因子无法通过简单地特征工程表现出来,这时候就要搬出神经网络(NN)这种网络结构来自动组合特征,实际上在挖掘高维的隐含特征,如果隐含特征简单,那么数据量不用太大也可行,数据挖掘难度越大,所需要的数据量也就越大。
总的来说,数据分布越稀疏,数据表征越不清晰,那么所需要数据量越大。一个通俗例子就是想象你在沙漠里淘金子一样。当然这只是经验之谈,没有理论基础,我还是相信以后有更好的结构来代替现在的NN模型。
怎样估计训练好一个机器学习模型所需要的最少训练数据量?http://t.jinritoutiao.js.cn/dCSqnM/