我很难理解嵌套交叉验证的工作原理——我理解需要两个循环(一个用于选择模型,另一个用于训练所选模型),但为什么它们是嵌套的?
据我了解,我们需要在训练之前选择模型,这指向非嵌套循环。
有人可以用我的推理解释什么是错的(或对的?),并更详细地解释嵌套交叉验证?一个有代表性的例子会很棒。
我很难理解嵌套交叉验证的工作原理——我理解需要两个循环(一个用于选择模型,另一个用于训练所选模型),但为什么它们是嵌套的?
据我了解,我们需要在训练之前选择模型,这指向非嵌套循环。
有人可以用我的推理解释什么是错的(或对的?),并更详细地解释嵌套交叉验证?一个有代表性的例子会很棒。
在这种情况下,“选择模型”是指选择模型的超参数。使用嵌套 CV 的原因仅仅是为了避免过度拟合训练数据。
考虑链接中的示例。首先,您喜欢通过 选择svm模型的最佳超参数GridSearchCV()。这是通过 4 倍 CV 完成的。现在,这clf.best_score_将是最佳估计器(具有最佳超参数的模型)的平均交叉验证分数。但是,尽管您使用了 CV,但现在您使用相同的数据来训练和报告性能。请记住,折叠不是独立的。因此,超参数可能过于特定于数据,即您的泛化误差估计过于乐观。因此,我们喜欢在超参数选择循环/过程(调用)之外/独立于超参数选择循环/过程(调用cross_val_score())来评估我们的最终模型性能。
在提供的图中,您可以清楚地看到报告的性能在GridSearchCV()大多数情况下优于报告的性能cross_val_score()。