大家好,今天我们学习【机器学习速成】之 为什么要拆分为三个子集:训练集、验证集、测试集
我们 马上学三点 ,
- 只划分训练集和测试集的不足
- 验证集在划分方案中的重要性
- 训练集、测试集、验证集三者区别
大家可以点击下面的“ 了解更多 ”,或搜索“ 马上学123 ”,在线观看PPT讲义
训练集和测试集工作流程
![ec604e3aa351af91e9b8795337516418.png](https://i-blog.csdnimg.cn/blog_migrate/182903f7e93dd5e81a0f12a81257696d.jpeg)
训练集和测试集工作流程
上一个课程 我们介绍了如何将数据集划分为训练集和测试集。 借助这种划分, 您可以对一个样本集进行训练, 然后使用不同的样本集测试模型。
我们来想象下运用该方法的实际情况, 我们有了测试集和训练集, 并按照上一节课程的要求对它们进行了妥善区分。 现在我们要进行一些迭代。 我将用训练数据训练一种模型, 然后使用测试集对模型进行测试 并观察其指标, 根据在测试集上获得的效果调整模型。
“ 调整模型 ”指的是 调整您可以想到的关于模型的任何方面, 从更改学习速率、添加或移除特征, 到从头开始设计全新模型。
我将调整一些设置, 比如调整学习速率或类似设置。 然后重新尝试前面的操作, 看看能否提高测试集准确率。 我可能会添加一些特征,也可能会去除一些特征, 并继续迭代, 直到根据测试集指标找出最佳模型为止。
这样有问题吗? 我能想到的一点是: 我可能 针对测试集的特性进行了过拟合 。 这样就太糟糕了…
划分为三个子集
![d88cb1ae6223d2609a9c1da5aef53175.png](https://i-blog.csdnimg.cn/blog_migrate/2c50fbb239cb8641c4ac91147ee8f32a.jpeg)
划分为三个子集
我们可以使用另一种方法来解决这个问题, 我可以在分组数据之外创建第三个数据集, 并将该数据集称为“ 验证集 ”, 这可以大幅降低过拟合的发生几率。
验证集和测试集应该来源于同一分布,且与真实需求一致。
更好的工作流程
我会使用一种新迭代方法, 对训练数据进行迭代训练, 然后仅基于验证集进行评估。
将测试集搁置一旁,完全不使用这些数据。 我将不断迭代、调整各种参数或对模型进行任何更改, 直到根据验证集得出比较理想的结果后。 再使用测试集再次检查该模型。
![8a066fa029d44c1caa9b690210ddc06a.png](https://i-blog.csdnimg.cn/blog_migrate/c75dd3eb02bda8307a654dd5f468a69c.jpeg)
更好的工作流程
我要确保根据测试集得出的结果 基本上符合根据验证集得出的结果。 如果不符合,则充分说明我可能对验证集进行了过拟合。
不断使用测试集和验证集会使其逐渐失去效果。 也就是说,您使用相同数据来决定超参数设置 或其他模型改进的次数越多, 您对于这些结果能够真正泛化到未见过的新数据的信心就越低。
该工作流程之所以更好, 原因在于它暴露给测试集的信息更少。
如果可能的话,建议您收集更多数据来“刷新”测试集和验证集。 重新开始也是一种很好的重置方式。
训练集、测试集、验证集三者区别
![aa9504358551aed26c48930d2e5ff06f.png](https://i-blog.csdnimg.cn/blog_migrate/83a04187b50e6b10cfdd6edda36879bd.jpeg)
训练集、测试集、验证集三者区别
训练集是用来训练模型内参数的数据集;
验证集用于调整超参数, 根据几组模型验证集上的表现 决定哪组超参数拥有最好的性能, 同时用来监控模型是否发生过拟合。
测试集用来评价模型泛化能力, 即之前模型使用验证集确定了超参数, 最后使用一个从没有见过的新数据集来判断这个模型是否工作。
三者区别举例: 我们把学生能力类比模型能力 训练集就像是学生的课本,学生根据课本里的内容来掌握知识, 验证集就像是练习作业, 通过作业可以知道不同学生学习情况、进步的速度快慢, 而最终的测试集就像是考试, 考的题是平常都没有见过,考察学生举一反三的能力。
为什么需要测试集?
![045f0c971e0a45e9782958ba83203049.png](https://i-blog.csdnimg.cn/blog_migrate/df8641cc65ae6ca9b3f334af7b62bec9.jpeg)
训练集、测试集、验证集三者区别
训练集直接参与了模型调慘的过程, 显然不能用来反映模型真实的能力, 这样一些对课本死记硬背的学生将会拥有最好的成绩, 这是过拟合,显然不对。
同理,由于验证集参与了人工调参的过程, 也不能用来最终评判一个模型, 就像刷题库的学生也不能算是学习好的学生是吧。 所以要通过最终的考试, 也就是测试集来考察一个学生模型的真正的能力。
对于用于比赛的公开数据集, 验证集会公开标注,测试集不会公开。
千万不要用测试数据来训练模型! 不然就监守自盗了!
总结:
只划分训练集和测试集, 会出现过拟合该测试集的风险;
样本数据集包括训练集、验证集、测试集, 其中训练集和验证集的作用是对学习模型进行参数择优, 测试集是测试该模型的泛化能力。
这里讲了三点,关键词有哪几个?
提问:AI比赛时,我们可以看到测试集吗?
欢迎回复评论