训练集、验证集和测试集的理解
相信很多小伙伴在学习机器学习的过程中时常遇到“训练集、验证集与测试集”三个术语,大部分人比较容易理解训练集和测试集的区别与作用,而对验证集和测试集的理解却十分模糊。本文就从机器学习的一般流程进一步探讨三个数据集的具体作用。
先来看看三种数据集的划分:
这里先解释普通参数和超参数的概念:
- 普通参数:优化算法所能更新的参数,如神经网络算法中的相邻两层权重和每层的偏置。
- 超参数:优化算法无法更新的参数,如神经网络算法中的学习率、隐含层的数量及每层的节点数等。
Ripley, B.D对三种属于的经典解释:
- 训练集:用于学习所构建的分类器的普通参数
- 验证集:用于更新所构建的分类器的超参数
- 测试集:仅仅用于衡量所构建的分类器的性能(泛化误差)
由此可见,验证集更重要的作用是更新超参数已达到选择最优模型的目的
机器学习的工作流程:
图片引自:https://blog.csdn.net/weixin_42137700/article/details/92760531
假设我们有10个候选模型,在训练集上用每个模型进行迭代学习之后得到代价函数最小的模型对应的参数。然后将学习到的参数在验证集上计算验证集的分类准确率,然而这个准确率不一定是最高的,因为我们可以通过改变超参数再次进行迭代学习。我们希望通过验证集改变超参数然后再返回到训练集进行训练,如此循环即可得到最优模型所包含的参数与超参数,最后测试集仅仅用于最终模型的泛化能力评估。问题在于为什么不将数据仅分为训练集和测试集,在测试集上改变超参数?因为在测试集上改变超参数然后再进行一轮的迭代学习,如此反复这个过程,模型在无形之中学得了测试集中数据的特点,而这个过程很容易导致在测试集上过拟合。而此时没有新的数据集供泛化评估
一个形象的比如阐述三者之间的关系:
学生学习书本的知识(书本知识相当于训练集)
学生做课后作业(课后作业相当于验证集)
学生参加期末考试(期末考试相当于测试集)
设想一下,假设所有的题量是一定的(书本题+作业题+期末题都在一个题库中),学生学完课本知识接着去刷题库,有可能把题库里面的所有题都刷完了,那么再去参加期末考试,所有的题都是见过的怎能体现真实水平?只有学完课本题去做作业题,期末考试题并没有见过才能体现真实水平。、
总结:
只划分训练集和测试集, 会出现过拟合该测试集的风险;
样本数据集包括训练集、验证集、测试集, 其中训练集和验证集的作用是对学习模型进行参数择优, 测试集是测试该模型的泛化能力。