交叉验证问题

数据挖掘 机器学习 统计数据 交叉验证
2022-03-14 08:19:49

我是从这个很棒的答案来到这里的。我遇到了许多使用交叉验证的方法,并且所附问题的答案是迄今为止对我来说最好的解释。我的困境是,现在我无法弄清楚使用 Kfold 交叉验证来做什么:-

  1. 测试过拟合?
  2. 超参数调优?
  3. 还有其他用例吗?

那也是怎么回事?我无法弄清楚如何处理 kfold cross val 之后的平均分数,如何处理折叠以及如何处理在 k-1 折叠训练数据上训练的模型?

2个回答

回答“做什么”这一点,如果您使用 scikit-learn GridSearchCV 类(来自 sklearn.model_selection),您可以从中获得以下信息:

  • 根据您想要的“评分”指标(即 roc_auc、召回...),在您使用“param_grid”输入输入的参数中找到最佳参数
  • 最重要的一点是,您可以直接访问已经用整个训练数据集重新拟合的最佳估计器(即使用 CV 过程中找到的最佳超参数实例化的模型) 。

我已经看到了一些对整个训练集进行“手动”重新训练的来源,但这不是必需的,因为 scikit-learn 已经让您访问整个训练集上的改装模型 :)

交叉验证基本上用于超参数调整。

您在 kfold 交叉验证上训练一组模型超参数设置,并将 kfold 交叉验证的平均分数作为每个模型超参数设置的近似性能。然后,得分最高的模型超参数设置将成为您的模型设置的选择。这种超参数设置可以被视为您可以从这种模型中获得的最佳值。

稍后,您可以使用此模型设置来测试测试数据集的一般性能。