机器学习的最佳模型

数据挖掘 机器学习 分类 scikit-学习 张量流 回归
2022-03-14 14:34:29

我是机器学习领域的初学者,我有一些小疑问,我没有找到任何合适的答案。如何选择预测未知数据的最佳模型。我已经学会了两种方法,我无法弄清楚哪一种是正确的。

换句话说,通过将数据拆分为训练和测试数据来训练您的模型,然后拟合模型以预测测试输出和错误,对数据进行混洗并在大约 100 个或更多周期内平均错误。这将为我们提供超过 100 个周期(python 方式随机状态)的平均误差(用于测试的 rmse)。现在要预测未知数据(验证模型),我应该考虑使用哪个模型进行预测。

1- rmse 更接近平均 rmse:选择一个模型,它报告的误差大约等于在 100 个周期内实现的平均误差来预测未知数据,并将其称为预测模型,或

2-最佳性能:从 100 个模型中选择一个模型来预测未知数据是最好的(测试的最低 rmse)?

我还在苦苦挣扎的另一件事是,如果将最低误差模型视为未知数据预测的模型,则通过保持 X_train 和 y_train 与最佳模型相同。如果我从同一个数据库中选择我的 X_test 和 y_test(仅 10%)超过 400 次不同的时间并预测错误,这会是过度拟合的预测吗?

提前致谢

1个回答

如果您使用测试集进行模型选择(无论您是使用一些随机状态,还是进行超参数调整都无关紧要),那么它是脏的,不能再用于预测预测性能。

您应该遵循的一般工作流程是这样的:

  1. 分为训练和测试。将“测试”锁定在保险箱中。
  2. 仅在训练集上使用交叉验证来调整参数。
  3. 将超参数修复为找到的最佳设置。将它们以粗体字作为“最终参数”写在墙上的石板上。
  4. 使用这些参数在整个训练集上训练一个新分类器
  5. 从保险箱中获取测试集,并在测试集上只运行一次分类器,以预测您的分类器在未来的工作情况
  6. 如果结果比 2. 中的结果差很多:恐慌。这是行不通的。
  7. 可选:如果您确信超参数不依赖于数据大小,但您需要每一点训练数据,您可以使用 in-stone 参数在 train+test 上训练分类器。但是,这是有风险的,因为您不再拥有测试集。
  8. 部署,但监控它的性能确实与预期的一样好。

黄金法则是:如果您使用了测试集,则不能再更改模型。你有一个机会得分。

这就是您在 CV 中再次拆分训练集的原因。