哪个是第一?调整参数或选择模型

数据挖掘 交叉验证 模型选择 超参数 超参数调整
2021-09-29 08:37:22

我一直在阅读有关我们如何将数据分成 3 部分的信息;通常,我们使用验证集来帮助我们调整参数和测试集,以对我们的模型执行情况进行无偏估计,因此我们可以根据测试集的结果比较模型。但是,我也读过模型选择应该在调整参数之前完成。我越来越糊涂了。哪一个必须在另一个之前完成?验证集是否用于调优?如果为真,我们应该如何在调整参数之前进行模型选择?

4个回答

只有已经训练好模型才能调整参数,否则没有什么可调整的。

但是,我也读过模型选择应该在调整参数之前完成。

在调整之前,您需要在调整参数之前进行某种预处理。通常您的管道将包括:

  1. 获取数据并清理它。
  2. 做一些 EDA(探索性数据分析)可以更好地理解你的数据。
  3. 做一些特征工程——如果可能的话,粗略地说,你想转换当前数据,所以它更适合你的 ML 算法。
  4. 根据验证数据训练和评估您的模型。
  5. 调整模型的参数以获得更好的性能(包括与过度拟合的 alos 作斗争)。
  6. 在测试集上评估

在调整参数之前我们应该如何进行模型选择

关于模型选择——我认为即使对您的数据没有深入的了解,您也可以选择一些基线模型(我认为从线性回归或 K-NN 等简单模型开始以获得“性能感觉”是一个很好的规则) ),因为在大多数情况下,您知道您可能正在处理回归/分类/聚类任务,因此您已经可以指定要尝试的模型集 - 但在尝试大量 ML 模型之前,您应该准备好数据。

像这样的一些帖子可以让您感受到可用的 ml algos,但还有更多的尝试。

此外,如果您开始使用 ML ,我认为这篇论文可能会非常有用

但是,我也读过模型选择应该在调整参数之前完成。[...] 如果为真,我们应该如何在调整参数之前进行模型选择?

当然,模型选择应该在调整参数之前完成。
想象一下,您选择了一个模型,然后调整参数(当然,这需要很多时间)。结果很好。但是随后您测试另一个模型,即使不调整参数,结果也会更好。您对第一个模型所做的所有工作都是无用的,您需要花费数天甚至数周的时间来调整一个在您的数据上表现不佳的模型。

模型选择是第一位的,因为为您不会保留的模型调整参数是没有用的。当然,在使用数据进行测试之前,您可能不知道选择哪种模型。你必须猜测哪一个表现最好,或者尝试几个看看哪个更好,即使有几个数据集或几个训练时期。

验证集是否用于调优?

验证集可用于调整模型的超参数。通常,您测试超参数的一个子集,在几个 epoch 上训练每个模型,然后看看哪个表现最好。然后保留这组超参数,并使用真实数据集训练模型,尽可能多地获得良好的性能。

当然,要拥有最好的模型,您需要使用所有可能的超参数对它们进行测试。但是你不能这样做,所以你需要优化你的训练,首先选择一个模型,然后用几个超参数子集来调整它

选型流程如下:

1] 选择合适的算法来适应您的数据集。

2] 创建模型,在此过程中,我们将使用训练数据以及其他一些机器学习技术(如网格搜索和交叉验证)来拟合算法。如果您使用的是深度学习,那么您可能需要将数据拆分为训练、验证和测试数据。在机器学习中,如果您使用交叉验证,则不需要验证数据,因为交叉验证会自行拆分数据进行验证。

3] 现在,根据上述步骤的结果,您调整超参数并再次检查结果。您可以重复该过程,直到获得具有最佳指标的最佳模型。通过这种方式,您可以通过超参数调整来选择最佳模型。

关于选择模型的另一件事,您可以在第一步中更改算法,然后继续 step2 和 step3。现在,您将拥有不同的模型,它们具有自己的最佳超参数和最佳模型。然后,您可以选择最适合您需要的模型。

例如

1] 首先选择决策树来创建模型,然后使用 step2 和 step3 选择具有超参数调整的最佳最优模型。

2] 其次,您将算法更改为随机森林以创建模型,然后使用 step2 和 step3 再次选择具有超参数调整的最佳最优模型。

3]现在我们将有不同的模型,每个模型都被选为使用超参数调整的最佳模型。通过这种方式,您可以尝试创建几个模型并进行比较,然后最终选择最佳模型。

因此,在选择模型时实际上有两种情况。

1] 您使用算法创建模型,然后通过超参数调整选择最佳最优模型。

2]您使用不同的算法创建不同的模型,每个模型都有自己的最佳模型,并从中选择最佳模型。

但是,我也读过模型选择应该在调整参数之前完成。我越来越糊涂了。哪一个必须在另一个之前完成?

有时,我们可能会对创建模型和选择模型感到困惑。当我们创建模型时,我们必须选择合适的算法,有时这一步(我们选择算法的地方)也可以称为选择模型。因此,超参数有助于选择最佳模型,因此超参数调整先于选择模型。

验证集是否用于调优?

验证集用于在对测试数据进行测试之前评估模型性能。一旦我们评估了模型性能,如果它不如您预期的那么好,那么您更改超参数并再次检查性能。所以,是的,我们将使用验证数据集来调整超参数。

您可以将验证数据视为在开发软件应用程序时进行单元测试。您以开发人员的身份开发应用程序并进行单元测试。如果单元测试失败,那么您必须再次以开发人员的身份进行更改以修复单元测试错误,然后测试团队才会对其进行测试。测试团队批准后,应用程序将部署到生产环境中。同样,在机器学习中,您使用训练数据开发模型,并对验证数据进行第一次测试。然后进行超参数调整并选择最佳模型。该模型将在测试数据集上进行测试。一旦测试数据集的结果令人满意,您将在生产中部署模型。

模型参数自动从数据估计,模型超参数手动设置,并在过程中用于帮助估计模型参数。

模型超参数通常被称为参数,因为它们是机器学习的一部分,必须手动设置和调整。

基本上,参数是“模型”用来进行预测等的参数。例如,线性回归模型中的权重系数。超参数是有助于学习过程的参数。例如,K-Means 中的簇数,Ridge Regression 中的收缩因子。它们不会出现在最终的预测片段中,但它们对学习步骤后参数的外观有很大影响。

参考:https ://machinelearningmastery.com/difference-between-a-parameter-and-a-hyperparameter/