数据集以及为什么使用评估()?

数据挖掘 数据集 训练 验证 测试
2022-02-18 06:11:11

我开始学习机器学习,我对一些概念有疑问。我读过我们需要将数据集拆分为训练集、验证集和测试集。我会问四个与他们相关的问题。

1 -训练集:它.fit()用于我们的模型学习参数,例如神经网络中的权重?

2-验证集:也可用于.fit(). 使用验证集,以便我们可以在每个 epoch 结束时验证我们的模型(调整一些超参数,例如隐藏层中的节点数)?

3 - 如果 2 是正确的(即验证集已经在 中使用.fit()),我们还需要使用.evalute()吗?为什么?

4 -测试集x:模型从未见过的新输入( ),所以我可以对它们进行预测?通过.predict()函数使用?

2个回答

首先要明确的是,我们在这里专门讨论监督学习:有一个训练阶段,在此阶段模型提供了标记的实例(特征和类)。

简单的类比:模型就像一个学生。

  • 训练:学生看到许多练习及其答案。目标是让学生/模型学习如何根据练习中的输入找到答案。
  • 评估:学生掌握了新知识后,参加了未随问题提供答案的测试。老师知道答案,并根据学生的回答正确程度给学生评分。此步骤还需要带注释的数据,以计算模型的执行情况。
  • 生产:以后学生可能会有一份工作,他们可以应用他们获得的知识。一般来说,没有人检查他们的答案,这不是目标。

最重要的区别是训练集测试集,这两者在监督学习中总是必要的。验证集是可选的:它是一个中间测试集,在有不同“级别”的训练时使用。例如,在第 1 级,多个模型(例如具有不同特征或超参数)在训练集上进行训练并在验证集上进行评估。在第 2 级,从这些多个模型中挑选出最好的模型:第 2 级是一种“元训练”,因此最终模型仍然需要使用新的测试集(未见数据)进行评估。深度神经网络也需要一个验证集,因为它们迭代地应用一个大的训练/评估循环来训练一个模型。

所以问题 3 的答案是:因为在训练期间使用了验证集(第 2 级),它不能被认为是对最终模型的良好评估(因为模型使用来自它的信息)。

训练数据集用于训练模型从数据中学习信息以解决问题(预测)。

验证数据集用于检查训练模型是否足以解决未见数据的问题(预测),并用于选择使用的最佳训练模型。验证数据不用于训练,但用于选择最佳模型以供将来使用