训练集(training set),验证集(validation set)和测试集(test set)
统计学习方法:
- 训练集: 用于模型训练
- 验证集: 用于模型选择
- 测试集: 用于模型评估(原文:用于最终对学习方法的评估)
个人理解:
- 训练集: 用于模型拟合的数据样本
- 验证集: 用于模型的选择
- 不参与训练过程
- 可用于超参数的调整
- 可用于判断模型是否过拟合(用于决策何时停止训练过程)
- 可多次使用
- 测试集: 用于模型的评估
- 不参与训练过程
- 不可用于超参数的调整
- 只可以使用一次
一些场景说明
做kaggle题目时
- 不用测试集,因为数据集本来就少,测试集不能用于优化或者选择模型,只能用于评估
- 此时测试集可以理解为kaggle题目中未知的部分数据
- 此时从验证集中划分一部分验证集
写论文时
- 需要训练集用于训练,验证集用于模型选择
- 并且最终需要测试集用于评估模型和与其他人的模型对比
核心:验证集和测试集不能参与训练模型,测试集不能参与模型选择
模型训练时不能让模型看见验证集
在模型确定前都不能让模型看见测试集
关于K折交叉验证法
- 统计学习方法中的描述: 交叉验证中每次划分为两部分,一部分用于训练模型,另一部分用于测试模型
- 理解:上面的两部分,一部分为训练集,另一部分为验证集,在这里面没有测试集
关于网格搜索
- 用来调超参数的一部分正好称为验证集
- 除了验证集外,加入写论文做实验需要和其他模型作比较的话需要使用测试集(和验证集以及训练集都不相交)
关于数据划分的比重
- 训练集:测试集 = 7:3
- 训练集:验证集:测试集 = 6:2:2
- 数据量非常多时(比如百万级别),验证集和测试集的比重可以适当缩小,因为验证集的主要目的是选择较好的模型,而测试集的目的是为了测试模型的效果,如果1万条数据足以验证模型的效果,则没必要非得给20万条数据