有人能推荐在机器学习中,训练数据和测试数据的最佳划分比例吗?如果我将训练和测试数据按30-70的比例划分,会有什么缺点?
回答:
遗憾的是,没有一种“正确”的数据划分方法,人们使用不同的数值,这些数值是基于不同的启发式方法、直觉以及个人经验/偏好选择的。一个好的起点是帕累托原则(80-20)。
有时候,简单划分并不是一个选项,因为你可能有太多的数据——在这种情况下,你可能需要对数据进行抽样,或者如果你的算法计算复杂度高,则使用较小的测试集。一个重要的部分是随机选择你的数据。权衡非常简单:测试数据较少 = 你的算法性能的方差会更大。训练数据较少 = 参数估计的方差会更大。
对我个人来说,比划分的大小更重要的是,你显然不应该总是在同一个测试划分上只进行一次测试,因为它可能会有偏见(你可能在划分上幸运或不幸)。这就是为什么你应该对几种配置进行测试(例如,你运行测试X次,每次选择不同的20%进行测试)。在这里,你可能会遇到所谓的模型方差问题——不同的划分会导致不同的值。这就是为什么你应该多次运行测试并平均结果。
使用上述方法,你可能会发现测试所有可能的划分很麻烦。一种公认的数据划分方法是所谓的交叉验证,正如你在维基文章中读到的,有几种类型(既有详尽的,也有非详尽的)。请特别注意k折交叉验证。