资讯

留出法是什么?把数据分成训练和测试两部分来评估模型

2026-11-053 分钟阅读百科
TL;DR留出法(Hold-out)是最简单的模型评估方法,把数据集按一定比例(如七三或八二)划分为互不重叠的训练集和测试集,用训练集训练、用测试集估计泛化误差;划分应尽量保持数据分布一致(常用分层抽样),并可多次随机划分取平均以减少偶然性。

留出法(Hold-out Method)是评估机器学习模型泛化能力最简单、最常用的方法:把手头的数据集直接划分为两个互不重叠的部分,一部分用来训练模型,叫作训练集;另一部分“留出来”不参与训练,专门用来测试模型的效果,叫作测试集。模型在测试集上的表现,就作为它在新数据上表现的估计。

为什么要留出数据

评估一个模型,不能用它训练时见过的数据。因为模型可能只是“记住”了训练数据,在训练集上表现好,并不代表它在新数据上也能表现好。就像考试不能用学生已经做过的练习题原题,否则只能测出学生的记忆力,而不能测出他的真实水平。把一部分数据留出来、不让模型在训练时看到,就相当于为模型准备了一份新的考卷。

划分时需要注意什么

划分比例:常见的做法是把大约三分之二到五分之四的数据用于训练,剩下的用于测试,比如七比三或八比二。这里存在一个两难:训练集太大,测试集就太小,评估的结果不够稳定可靠;测试集太大,训练集就变小,训练出的模型与用全部数据训练的模型差别较大。当数据量非常大,比如有上百万个样本时,测试集只需要占很小的比例就足够了。

保持分布一致:训练集和测试集的数据分布应该尽量一致,否则会引入额外的偏差。比如在分类问题中,如果正负样本的比例在训练集和测试集中相差很大,评估结果就会失真。常用的做法是分层抽样:按照各个类别分别进行划分,保证每个类别在训练集和测试集中的比例与原始数据相同。

多次划分取平均:单次随机划分的结果可能带有偶然性,换一种划分方式,评估的结果可能就不一样。因此,通常会进行多次随机划分,每次都重新训练和测试,最后取各次结果的平均值作为最终的评估结果。

注意时间顺序:对于时间序列数据,比如预测股价、销量,不能随机地划分,而应该用较早的数据训练、用较晚的数据测试,否则模型就相当于“看到了未来”。

验证集

在实际的项目中,除了训练集和测试集,通常还会再留出一部分数据作为验证集,用于调整超参数和选择模型。测试集只在最后使用一次,用来评估最终选定的模型。如果反复地用测试集来调整模型,测试集就失去了“新数据”的意义,评估结果会变得过于乐观。

与其他评估方法的比较

留出法简单快速,适合数据量较大的情况。当数据量较少时,留出法浪费了一部分本可以用于训练的数据,评估结果的波动也较大,这时更常用交叉验证:把数据分成若干份,轮流用其中一份做测试、其余做训练,每份数据都既当过训练数据也当过测试数据。此外还有自助法,通过有放回的抽样来构造训练集。