ML——训练集-验证集-测试集

训练集(training set),验证集(validation set)和测试集(test set)


统计学习方法:

  • 训练集: 用于模型训练
  • 验证集: 用于模型选择
  • 测试集: 用于模型评估(原文:用于最终对学习方法的评估)

个人理解:

  • 训练集: 用于模型拟合的数据样本
  • 验证集: 用于模型的选择
    • 不参与训练过程
    • 可用于超参数的调整
    • 可用于判断模型是否过拟合(用于决策何时停止训练过程)
    • 可多次使用
  • 测试集: 用于模型的评估
    • 不参与训练过程
    • 不可用于超参数的调整
    • 只可以使用一次

一些场景说明

做kaggle题目时

  • 不用测试集,因为数据集本来就少,测试集不能用于优化或者选择模型,只能用于评估
  • 此时测试集可以理解为kaggle题目中未知的部分数据
  • 此时从验证集中划分一部分验证集

写论文时

  • 需要训练集用于训练,验证集用于模型选择
  • 并且最终需要测试集用于评估模型和与其他人的模型对比

核心:验证集和测试集不能参与训练模型,测试集不能参与模型选择
模型训练时不能让模型看见验证集
在模型确定前都不能让模型看见测试集


关于K折交叉验证法

  • 统计学习方法中的描述: 交叉验证中每次划分为两部分,一部分用于训练模型,另一部分用于测试模型
  • 理解:上面的两部分,一部分为训练集,另一部分为验证集,在这里面没有测试集

关于网格搜索

  • 用来调超参数的一部分正好称为验证集
  • 除了验证集外,加入写论文做实验需要和其他模型作比较的话需要使用测试集(和验证集以及训练集都不相交)

关于数据划分的比重

  • 训练集:测试集 = 7:3
  • 训练集:验证集:测试集 = 6:2:2
  • 数据量非常多时(比如百万级别),验证集和测试集的比重可以适当缩小,因为验证集的主要目的是选择较好的模型,而测试集的目的是为了测试模型的效果,如果1万条数据足以验证模型的效果,则没必要非得给20万条数据