是否有一个经验法则来最好地将数据划分为训练集和验证集?平分妥当吗?或者相对于验证数据,拥有更多的训练数据是否有明显的优势(反之亦然)?或者这个选择很大程度上取决于应用程序?

我主要分别使用80% / 20%的训练数据和验证数据,但我选择这种划分没有任何原则性的理由。能找个在机器学习方面更有经验的人给我出主意吗?


当前回答

也许63.2% / 36.8%是一个合理的选择。原因可能是,如果总样本量为n,并希望从初始n中随机抽样替换(也称为重新抽样,如在统计引导中)n个案例,那么在重新抽样中选择单个案例的概率将约为0.632,前提是n不是太小,如这里解释的:https://stats.stackexchange.com/a/88993/16263

对于n=250的样本,单个案例被重新抽样到4位数字的概率为0.6329。 对于n=20000的样本,概率为0.6321。

其他回答

这完全取决于手头的数据。如果您有相当多的数据,那么如上所述,80/20是一个不错的选择。但如果你不使用50/50分割的交叉验证,可能会帮助你更多,并防止你创建一个过度拟合训练数据的模型。

也许63.2% / 36.8%是一个合理的选择。原因可能是,如果总样本量为n,并希望从初始n中随机抽样替换(也称为重新抽样,如在统计引导中)n个案例,那么在重新抽样中选择单个案例的概率将约为0.632,前提是n不是太小,如这里解释的:https://stats.stackexchange.com/a/88993/16263

对于n=250的样本,单个案例被重新抽样到4位数字的概率为0.6329。 对于n=20000的样本,概率为0.6321。

你应该再考虑一件事。

如果你有一个非常大的数据集,比如1,000,000个例子,分割80/10/10可能是不必要的,因为10% = 100,000个例子可能太多了,不能说模型工作得很好。

也许99/0.5/0.5就足够了,因为5000个例子可以代表你数据中的大部分方差,你可以很容易地在测试和开发中根据这5000个例子来判断模型是否有效。

不要仅仅因为你听说80/20是可以的就使用80/20。想想测试集的目的。

去年,我参加了Andrew Ng教授的在线机器学习课程。他的建议是:

培训:60%

交叉验证:20%

测试:20%

假设你有较少的数据,我建议尝试70%,80%和90%,并测试哪个会给出更好的结果。在90%的情况下,10%的测试可能会得到较差的准确性。