区分训练集、验证集、测试集---最明白的解释

1 前言

最开始接触交叉验证,没理解这里的验证集,我当时想,怎么可以这样呢?验证集怎么可以参与训练调参呢?
后来才明白,验证集就是从训练集划分出来的东西,是我把验证集误想成了测试集了。。。

2 正文

首先强调:
机器学习分为两个步骤:训练+测试。

  1. 训练阶段:只使用训练集training set对模型进行训练,即调参。
  2. 测试阶段:只使用测试集test set对模型进行测试,用于评估模型学习情况,泛化能力,不参与调参。

  • 那么验证集validation set是怎么来的呢?

原来我们在训练阶段存在这些问题:

  • 我们怎么保证此时训练获得的参数是ok的呢?
  • 即我们什么时候选择停止迭代呢?
  • 以及我们怎么防止(减少)过拟合、欠拟合呢?
    为了解决上述问题,我们就想出来了一个选择模型、选择参数的方法:
    从训练集里划分出一部分数据,称之为验证集,相当于用来“模拟测试集”,即相当于高考之前的每一次的模拟考试。

于是上述就变成了:

  1. 训练阶段:
    a. 只使用训练集对不同的模型进行训练
    b. 只是使用验证机对不同的模型进行”测试"
    c. 选取最好的模型
  2. 测试阶段:只使用测试集对模型进行性能测试。

也就是说,训练集、验证集都是拿来训练的,测试集才是拿来测试的。
训练集、验证集可以拿来调参,测试集不可以

3 帮助调参、选择模型的方法

3.1 引入验证集

  1. 将训练集分为两部分:
  • training set
  • validation set
  1. 如何选择模型:
    在训练集中训练不同的模型,选择验证集中错误最小的模型

  2. 缺点:
    当样本本来就不足时,上述操作可能会引入数据稀疏问题。

3.2 2. 交叉验证(Cross-Validation)

  1. 将训练集分为 S 组,每次使用S-1组作为训练集,剩下一组作为验证集
  2. 取验证集上平均性能最好的一组。
    区分训练集、验证集、测试集---最明白的解释_第1张图片

交叉验证的一个方法:k折交叉验证
● 用于模型调优,找到使得模型泛化性能最优的超参值。找到后,在全部训练集上重新训练模型,并使用独立测试集对模型性能做出最终评价。
● 使用了无重复抽样技术,每次迭代过程中每个样本点只有一次被划入训练集或测试集的机会。

区分训练集、验证集、测试集---最明白的解释_第2张图片
觉得对您所帮助的话,请多多点赞!

你可能感兴趣的:(深度学习,机器学习,深度学习,人工智能)