趋近智
想象您正在教学生一门新学科。您会给他们学习资料和练习题。您怎么知道他们是否真正掌握了知识点,或者只是记住了您给他们的特定问题的答案?您不会用完全相同的练习题来测试他们,对吗?您会给他们一个包含不同问题但涵盖相同主题的新测试。
机器学习模型也面临类似的挑战。如果我们用所有现有数据训练模型,然后用相同数据进行测试,它可能会表现完美,仅仅因为它“记住了”答案。这无法说明模型未来在新数据上的表现如何,而这通常是构建模型的主要目的。这种在新数据上表现良好的能力称为泛化能力。
为了正确评估泛化能力并构建可靠的模型,我们将数据集划分为不同的子集。最常见的方法使用三个不同的集合:
这是您数据中最大的部分,通常占总数据集的 60% 到 80%。机器学习算法使用这些数据来实际学习输入特征与输出标签之间的模式和关联(在监督学习中)。可以将其视为模型的“教科书”和“家庭作业问题”。模型通过查看训练集中的示例,迭代调整其内部参数,力求最小化在此数据上产生的误差。
这是一个较小的、独立的数据块,约占总量的 10% 到 20%。模型不会直接在此数据上训练。相反,验证集有两个主要作用:
可以把验证集想象成学习过程中使用的“小测验”或“模拟考试”。它有助于指导学习策略(超参数调整),并检查真正的理解程度(泛化),而无需使用期末考试题目。
这个最终的子集,通常也占数据的 10% 到 20%,被保留下来,并且只在所有训练和超参数调整完成后使用一次。模型在构建过程中从未见过这些数据。
“测试集的唯一目的是对所选模型的表现提供无偏的最终评估。它模拟了模型在新数据上的预期表现。”
测试集绝对不能用于任何训练或调整决策,这一点非常重要。如果您在测试集上评估,然后根据结果回头调整模型或超参数,再重新评估,您就有效地“污染”了测试集。它不再提供无偏估计,因为您的决策受到了其特定数据的影响。可以把它想象成最终的、正式的考试。您只考一次,那个分数就代表您的知识。您不能在看到问题后反复重考。
我们可以可视化数据的这种划分:
一个典型的工作流程涉及将初始数据集划分为训练集、验证集和测试集。模型从训练集学习,使用验证集进行调整,并最终在测试集上评估。
数据在划分前通常会随机打乱,以确保每个集合都能代表数据的整体分布。具体的百分比(例如,70/15/15、80/10/10)可能会根据数据集的大小和具体问题而有所不同。对于非常大的数据集,较小的百分比可能足以用于验证和测试。有时,特别是对于更简单的工作流程或较小的数据集,人们可能只划分为训练集和测试集(例如,80/20),或许会使用交叉验证等技术在训练集上进行超参数调整和模型选择(我们稍后可能会遇到交叉验证)。然而,三集合划分(训练/验证/测试)是一种基本做法,被广泛接受,尤其是在开发更复杂的模型时。
总而言之,将数据划分为训练集、验证集和测试集是机器学习中的一项基本技术。它使我们能够训练模型,有效地调整它们,并获得模型在新数据上表现如何的可靠估计,这对于构建值得信赖和有用的应用至关重要。这种做法直接有助于诊断和预防过拟合等常见问题,我们稍后将讨论此问题。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造