机器学习项目里最基础也最容易出错的一步,就是数据集划分。训练集用于拟合参数,验证集用于调参和选择模型,测试集用于最终评估。三者职责不同,混用会让评估结果虚高。
常见错误是先用测试集调参,再报告测试集分数。这样测试集实际上参与了模型选择,不再是独立评估。正确做法是测试集只在最后用一次,之前所有决策都基于验证集。
划分比例没有固定答案。数据量大时可用 98/1/1,数据量小时常用 60/20/20 或 70/15/15。类别不平衡时要用分层抽样,保证各集合类别比例接近总体。
时间序列数据不能随机划分。应按时间切分,用过去预测未来,避免未来信息泄漏到训练集。用户行为数据还要考虑按用户划分,防止同一用户出现在多个集合造成泄漏。
交叉验证是数据量不足时的替代方案,用 K 折轮流做验证。但最终仍需保留独立测试集,否则无法判断模型在未见数据上的真实表现。