在我目前实习的公司中,提供给我们的许多数据集都非常大(数百万行/千兆字节,甚至数兆字节的数据)。
在运行机器学习实验时,我发现自己想要使用(交叉验证的)网格搜索算法来优化我训练的模型的超参数。就时间而言,在上述数据集上执行此操作是一件非常昂贵的事情。
因此,我发现自己想知道对数据集进行更小、随机(或者分层?)的子采样以用于参数调整是否是一种有效的方法,因此我可以使用这些参数在大部分数据上训练最终模型数据集,甚至整个数据集?
在我目前实习的公司中,提供给我们的许多数据集都非常大(数百万行/千兆字节,甚至数兆字节的数据)。
在运行机器学习实验时,我发现自己想要使用(交叉验证的)网格搜索算法来优化我训练的模型的超参数。就时间而言,在上述数据集上执行此操作是一件非常昂贵的事情。
因此,我发现自己想知道对数据集进行更小、随机(或者分层?)的子采样以用于参数调整是否是一种有效的方法,因此我可以使用这些参数在大部分数据上训练最终模型数据集,甚至整个数据集?
这个问题真的很笼统。取决于数据和模型,这可能是一个好的做法,也可能是坏的。
总体思路是考虑“数据和模型的复杂性”。我们可能需要审查偏差和方差的权衡,即何时会发生欠拟合和过拟合以及如何检测它。
关于打开样本的问题:通常,数据越复杂,样本量有限,就越难获得“代表性”样本。
如果数据“非常复杂”,并且样本具有“代表性”,那么使用样本来调整参数是一种不好的做法。解决的方法是尝试更多的样本,并使用复杂的模型(例如神经网络)。
您可以看到我的答案在某些部分确实不清楚,这是因为很难说数据和模型的复杂性,以及需要多少样本才能“具有代表性”。