如何从此 [外部交叉验证] 输出中选择模型?
简短的回答:你没有。
将内部交叉验证视为模型拟合过程的一部分。这意味着拟合包括超参数的拟合(这是内部交叉验证隐藏的地方)就像任何其他模型估计例程一样。
外部交叉验证估计了这种模型拟合方法的性能。为此,您使用通常的假设
- 个外部代理模型等价于使用所有数据构建的“真实” 模型。k
model.fitting.procedure
- 或者,在情况 1. 发生故障(重采样验证的悲观偏差)的情况下,至少个外部代理模型彼此等价。
这允许您汇集(平均)测试结果。这也意味着您不需要在它们之间进行选择,因为您假设它们基本相同。第二个较弱的假设的崩溃是模型不稳定性。k
不要选择看似最好的个代理模型——这通常只是“收获”测试不确定性并导致乐观偏差。k
那么如何使用嵌套 CV 进行模型选择呢?
内部CV进行选择。
在我看来,从这 K 个获胜模型中选择最佳模型并不是一个公平的比较,因为每个模型都在数据集的不同部分进行了训练和测试。
你是对的,选择个代理模型中的一个并不是一个好主意。但你对原因是错误的。真正的原因:见上文。他们没有在相同的数据上进行培训和测试这一事实在这里并没有“伤害”。k
- 没有相同的测试数据:因为您想在事后声称测试结果概括为从未见过的数据,这不会产生影响。
- 没有相同的训练数据:
- 如果模型是稳定的,这没有什么区别:这里的稳定意味着如果训练数据通过用其他案例替换一些案例而受到“扰动”,则模型不会改变(很多)。
- 如果模型不稳定,三个考虑因素很重要:
- 您实际上可以通过使用迭代/重复 折交叉验证来衡量这种情况是否以及在何种程度上是这种情况。这使您可以比较相同案例的交叉验证结果,这些结果是由基于略有不同的训练数据构建的不同模型预测的。k
- 如果模型不稳定,则在折交叉验证的测试结果中观察到的方差会增加:您不仅因为总共只测试了有限数量的案例而具有方差,而且还有额外的方差由于模型的不稳定性(预测能力的差异)。k
- 如果不稳定性是一个真正的问题,您就无法很好地推断“真实”模型的性能。
这让我想到了你的最后一个问题:
我可以对从外部 K 折中获得的分数进行哪些类型的分析/检查?
更新@user99889的问题:如果外部CV发现不稳定怎么办?
首先,在外部 CV 循环中检测模型在这方面没有产生稳定的预测与检测预测误差对于应用程序来说太高并没有真正的不同。这是模型验证(或验证)的可能结果之一,暗示我们拥有的模型不适合其目的。
在回答@davips 的评论中,我正在考虑解决内部CV 中的不稳定性——即作为模型优化过程的一部分。
但是您肯定是对的:如果我们根据外部 CV 的发现更改我们的模型,则需要对更改后的模型进行另一轮独立测试。
但是,外部 CV 的不稳定性也表明优化设置不正确 - 因此发现外部 CV 中的不稳定性意味着内部 CV 没有以必要的方式惩罚不稳定性 - 这将是我的主要观点在这种情况下批评。换句话说,为什么优化允许/导致严重过拟合的模型?
但是,这里有一个特点,恕我直言,在仔细考虑了确切情况后,恕我直言“最终”模型的进一步更改:正如我们确实检测到过度拟合,对模型的任何提议更改(更少的 df/更多限制性或聚合)都会朝着不太过拟合的方向发展(或者至少是不太容易过拟合的超参数)。独立测试的重点是检测过拟合——欠拟合可以通过已经在训练过程中使用的数据来检测。
因此,如果我们正在谈论进一步减少 PLS 模型中相对良性的潜在变量的数量(如果提议的更改将是完全不同类型的模型,例如 PLS 而不是 SVM,那么所有的赌注都将失败),如果我知道我们无论如何都处于建模的中间阶段,我会更加放松——毕竟,如果优化后的模型仍然不稳定,那么毫无疑问需要更多的案例。此外,在许多情况下,您最终需要执行旨在正确测试性能的各个方面的研究(例如,对未来获取的数据的概括)。尽管如此,我还是坚持需要报告完整的建模过程,并且需要仔细讨论这些后期更改的影响。
此外,从已经可用的结果中,包括和袋外模拟 CV 性能估计在内的聚合是可能的——这是我愿意在这里考虑的模型的另一种类型的“后处理”。再一次,如果研究从一开始就设计为检查聚合没有提供优于个体预测的优势(这是另一种说法,个体模型是稳定的),那就更好了。
更新(2019 年):我对这些情况的思考越多,我就越倾向于“显然没有嵌套的嵌套交叉验证”方法。