训练和验证数据结构

时间:2021-01-01 22:21:08

标签: python validation machine-learning

如果我的机器学习分类器使用相同的训练数据和验证数据会发生什么?

5 个答案:

答案 0 :(得分:2)

如果训练数据和验证数据相同,训练好的分类器会有很高的准确率,因为它已经看到了数据。这就是我们使用训练测试分割的原因。我们取 60-70% 的训练数据来训练分类器,然后对 30-40% 的数据运行分类器,这些数据是分类器还没有看到的验证数据。这有助于针对没有标签的真实测试集衡量分类器及其行为(例如过拟合或欠拟合)的准确性。

答案 1 :(得分:1)

我们创建多个模型,然后使用验证来查看哪个模型表现最好。我们还使用验证数据将模型的复杂性降低到正确的水平。如果您使用训练数据作为验证数据,您将获得极高的成功率(您的错误分类率或平均平方误差很小),但是当您将模型应用于并非来自训练数据的真实数据时,您的模型会做得很差。这称为对列车数据的过度拟合。

答案 2 :(得分:0)

基本上什么都没发生。您只是想在训练时使用的相同数据上验证模型的性能,这实际上不会产生任何不同或有用的东西。这就像教某人认出一个苹果,然后让他们认出同一个苹果,然后看看他们表现如何。

为什么要使用验证集?简而言之,假设训练集和验证集是从相同的分布生成的,因此在训练集上训练的模型应该在验证集的示例上表现得几乎同样好,这是它以前从未见过的。

答案 3 :(得分:0)

通常,我们将数据划分为验证和训练以防止过拟合。为了解释它,我们可以考虑一个模型来分类它是人类还是非人类,并且您的数据集包含 1000 个人类图像。如果您使用该数据集中的所有图像训练模型,并再次使用相同的数据集对其进行验证,则您的准确率将达到 99%。但是,当您将来自不同数据集的另一幅图像按模型分类时,您的准确率将比第一个低得多。因此,这个例子的模型的泛化是训练一个寻找火柴人的模型来定义它是否是人类,而不是寻找特定的英俊金发男人。因此,我们将数据集分为验证和训练两个部分,以泛化模型并防止过度拟合。

答案 4 :(得分:0)

TLDR;

如果您使用相同的数据集进行训练和验证,则:

training_accuracy = testing_accuracy

如果您使用训练数据集作为验证数据集,您的 testing_accuracy 将与 training_accuracy 相同。 因此,您将无法判断您的模型是否具有 underfit


让我们谈谈数据集和评估指标。这是一些术语(参考)-

数据集:

  • 训练数据集:用于拟合模型的数据。
  • 验证数据集:在训练过程中用于验证模型泛化能力或用于提前停止的数据。在大多数情况下,这与测试数据集相同

评估:

  • 训练准确度:在比较来自训练数据本身的预测和实际值时所达到的准确度。
  • 测试准确度:在比较来自测试/验证数据的预测和实际值时所达到的准确度。

使用 training_accuracy,您可以了解模型对数据的拟合程度,而 testing_accuracy 则告诉您该模型的泛化程度。如果 {{ 1}} 低,那么您的模型具有 train_accuracy,您可能需要一个更好的模型(更好的特征、不同的架构等)来对给定的问题进行建模。如果 underfitted 高但 training_accuracy 低,这意味着您的模型很好地拟合了数据,但它不能推广到看不见的数据上。这是testing_accuracy

<块引用>

注意:在实践中,最好使用过拟合模型并对其进行大量正则化,而不是使用欠拟合模型。

您需要了解的另一件重要事情是训练模型 (overfitting) 和从模型 (fit / {{1 }}) 是 2 个独立的任务。因此,当您使用验证数据集作为训练数据集时,您基本上仍然是 predict 同一训练数据集上的模型,但是 score 时,您使用的是训练数据集,这将为您提供相同的准确性作为 training

因此,您根本不会知道您是否inference,但这并不意味着您将获得 99% 的准确率,就像其他建议的答案一样!您可能仍然training_accuracy并获得极低的模型准确度