机器学习:来自测试数据的训练模型

Posted

技术标签:

【中文标题】机器学习:来自测试数据的训练模型【英文标题】:Machine learning: training model from test data 【发布时间】:2018-06-12 19:40:24 【问题描述】:

我想知道一个模型是否也在多次评估测试数据时训练自己,从而导致过度拟合的情况。通常我们将训练数据拆分为train-test 拆分,我注意到有些人将其拆分为 3 组数据 - traintestevaleval 用于模型的最终评估。我可能错了,但我的意思是,如果上述情况不正确,那么就不需要 eval 数据集。

需要澄清一下。

【问题讨论】:

【参考方案1】:

评估模型在“狂野”中表现如何的最佳方法是评估其在未见过(即经过训练)的数据集上的表现——假设您在监督学习中拥有标签问题。

人们将他们的数据拆分为训练/测试/评估,并使用训练数据来估计/学习模型参数和测试集来调整模型(例如,通过尝试不同的超参数组合)。通常根据优化测试指标的超参数组合来选择模型(回归 - MSE、R^2 等;分类 - AUC、准确率等)。然后通常在组合的训练+测试数据集上重新训练所选模型。重新训练后,模型会根据其在 eval 数据集上的性能进行评估(假设您有一些基本事实标签来评估您的预测)。 eval 指标是您报告的泛化指标,即您的模型在新数据上的表现如何。

这有帮助吗?

【讨论】:

好吧,它并没有真正直接回答我的问题,但我得到了我想要的东西。 :)【参考方案2】:

假设您有训练和测试数据集。训练数据集是您知道输出并在训练数据集上训练模型并尝试预测测试数据集的输出的数据集。

大多数人将训练数据集拆分为训练和验证。因此,首先您在训练数据上运行您的模型并在验证集上对其进行评估。然后再次在测试数据集上运行模型。

现在您想知道这有什么帮助和用处吗? 这有助于您了解模型在可见数据(验证数据)和不可见数据(您的测试数据)上的性能。

这里出现了偏差-方差权衡。 https://machinelearningmastery.com/gentle-introduction-to-the-bias-variance-trade-off-in-machine-learning/

【讨论】:

【参考方案3】:

让我们考虑一个二元分类示例,其中使用学生上学期的成绩、运动成绩、课外活动等来预测他是否会通过最后一个学期。

假设我们有大约 10000 个样本(10000 名学生的数据)。

现在我们将它们分开:

训练集 - 6000 个样本

验证集 - 2000 个样本

测试集 - 1000 个样本

训练数据一般分为三个(训练集、验证集、测试集),原因如下:

1) 特征选择:假设您已经使用某种算法训练了模型。您计算训练准确度和验证准确度。您绘制学习曲线并找出模型是否过拟合或欠拟合并进行更改(添加或删除特征,添加更多样本等)。重复,直到您获得最佳验证准确性。现在使用测试集测试模型以获得最终分数。

2) 参数选择:当你使用像KNN这样的算法时,你需要找到最适合模型的K值。您可以绘制不同 K 值的准确度并选择最佳验证准确度并将其用于您的测试集。 (当您找到随机森林等的 n_estimators 时同样适用)

3) 模型选择:您还可以使用不同的算法训练模型,并通过使用验证集测试准确性来选择更适合数据的模型。

因此,验证集基本上可以帮助您评估模型的性能,您必须如何对其进行微调以获得最佳准确性。

希望对您有所帮助。

【讨论】:

以上是关于机器学习:来自测试数据的训练模型的主要内容,如果未能解决你的问题,请参考以下文章

机器学习 - 训练集验证集测试集

机器学习数据集划分-训练集,验证集,测试集

机器学习之数据模型算法和服务

机器学习基础:(Python)训练集测试集分割与交叉验证

机器学习100天:005 数据预处理之划分训练集

机器学习100天:005 数据预处理之划分训练集