今天来谈一谈训练集 验证集 测试集。
- 训练集用于对模型参数的调整
- 验证集用于检测训练好的模型的检验(可以通过查看验证集的效果对模型进行调整)
- 测试集用于测试已经定型的模型的实际效果
我看到一些程序里面,没有把验证集考虑进去,其实有不妥的地方,现在我就来通俗的说一下这个。假设你是一个学生,老师给了你许多卷子而且还有答案哦(这就是训练集),然后你不停的做卷子学习,慢慢的你能达到很高的分数,然后你要参加期末考试了,结果要么就是你考砸了,要么就是考得很好。好,我们来分析,如果考砸了,说明老师给你的题目有问题(可以理解为训练集测试集不同分布),如果考得很好说明老师的题目还是可以的。好,那么问题来了,你突然被派到隔壁县去参加期末考试(知识点跟你所学的一样,也就是训练测试同分布),那么要怎么预测你考得如何,期末考试只有一次机会啊。好吧,这个时候验证集的作用就可以出来了,把老师给你的卷子抽出一小部分,给你当模拟考试,通过看你模拟考试的成绩,就可以推测你期末考试的成绩,差别不会很大。
同理,当我们在处理机器学习问题时,我们通过已用数据得到的模型,我们想知道在实际中的使用效果到底怎么样?这时候,验证集就显得很重要。我们通过模型在验证集表现,不断调整模型到最优,然后我们再用在测试集的效果来预测实际情况的效果,一般偏差很小。如果我们通过测试集的效果来调整模型,那么我们相当于在做一张已经知道答案的卷子,不断去契合测试集,那么当模型在实际应用的时候,效果会变差。
所以大家要习惯使用验证集,不要嫌麻烦。