嵌套交叉验证后如何建立最终模型并调整概率阈值?


17

首先,为发布一个已经在这里这里这里这里这里详细讨论过的问题的道歉,并用于重新加热旧主题。我知道@DikranMarsupial已经在帖子和期刊论文中详细介绍了这个主题,但是我仍然感到困惑,从这里的类似帖子数量来看,这仍然是其他人难以理解的事情。我还应该指出,我在这个话题上的矛盾加剧了我的困惑。您还应该知道我本来是物理学家,而不是统计学家,所以我在这方面的专业知识有限。我正在写一篇期刊论文,其中我想使用嵌套的CV来评估最终模型所期望的性能。在我的领域,这是第一个。(我们几乎从不使用任何是我领域中强大的简历的一种形式,但要用神经网络和增强型决策树的研究成果来愉快地抽出论文!)因此,有一个非常透彻和清晰的理解非常重要,这样我就不会搞砸和传播对我的社区来说是一个错误的过程,可能需要多年才能学会!谢谢!关于这个问题...

嵌套交叉验证后如何构建最终模型?

我正在训练一个具有L1和L2正则化的简单glmnet模型。快速,简单和可解释。我执行特征中心,缩放和Box-Cox转换,以使特征分布均值中心,标准化并且有点像高斯型。我在交叉验证中执行此步骤,以防止信息泄漏。纯粹是因为我的硬件速度非常慢,而且我无法使用更多的CPU资源,所以在特征预处理之后,我还会在CV中执行基于过滤器的快速特征选择。我正在使用随机网格搜索来选择alpha和lambda超参数。我知道我不应该通过CV循环获得此估算值。我知道内部CV回路用于模型选择(在这种情况下,是最佳超参数),而外部回路则用于模型评估,即内部CV和外部CV具有两个不同的用途,这些用途常常被错误地混为一谈。(到目前为止,我还好吗?)

现在,我发布的链接建议“考虑交叉验证的方法是估计使用构建模型的方法获得的性能,而不是估计模型的性能”。鉴于此,我应该如何解释嵌套CV过程的结果?

我读过的建议似乎表明以下问题---如果这是错误的,请纠正我:内部CV是允许我选择glmnet模型的最佳alpha和lambda超参数的机制的一部分。如果我完全按照内部CV中所使用的过程(包括超参数调整)使用整个数据集构建最终模型,则外部CV会告诉我可以从最终模型中获得的估计值。即,超参数调整是“用于构建模型的方法”的一部分。这是正确的吗?因为这使我感到困惑。在其他地方,我已经看到了构建要部署的最终模型的过程涉及使用固定值对整个数据集进行训练使用CV选择的超参数。在此,“用于建立模型的方法”不包括调整。那是什么呢?在某个时候,将选择最佳超参数并将其固定以构建最终模型!哪里?怎么样?如果我的内循环是CV的5倍,而我的外循环是CV的5倍,并且我在内部CV中选择了100个测试点作为随机网格搜索的一部分,那么我实际训练了几次glmnet模型?(100 * 5 * 5)+ 1作为最终版本,还是我不知道还有更多步骤?

基本上,我需要对如何从嵌套CV解释性能估计以及如何构建最终模型进行非常清晰的描述。

我还想知道选择概率阈值的适当程序,以将最终的glmnet模型的概率分数转换为(二进制)类标签---需要另一个CV循环吗?

Answers:


8

嵌套交叉验证无需嵌套即可解释

这就是我看到(嵌套)交叉验证和模型构建的方式。请注意,我是化学家,就像您从应用程序侧向模型构建过程一样(请参见下文)。我的主要观点是,从我的角度来看,我不需要专用的嵌套各种交叉验证。我需要一种验证方法(例如交叉验证)和一个模型训练功能:

model = f (training data)

“我的”模型训练函数f 不需要任何超参数,因为它在内部进行了所有超参数调整(例如alphalambdathreshold)。

换句话说,我的训练功能可能包含任意数量的内部交叉验证(或实物验证或我认为有用的绩效评估)。但是,请注意,参数超参数之间的区别通常是需要将超参数调整到手边的数据集/应用程序,然后无论参数是什么数据都可以拟合参数。因此,从新分类算法的开发者的角度来看,g (training data, hyperparameters)如果提供给定的数据和超参数,仅提供适合参数的“裸”拟合函数()确实有意义。

拥有“外部”训练功能的要点f是,在进行交叉验证运行之后,它为您提供了一种直接的方式来“对整个数据集”进行训练:仅使用f (whole data set)而不是对f (cv split training data)交叉验证代理模型进行调用。

因此,在您的示例中,您将有5 + 1个呼叫f,并且每个to的呼叫f将有100 * 5个呼叫g


概率阈值

尽管您可以通过另一个交叉验证来做到这一点,但这并不是必需的:它只是您现成的模型所具有的又一个超参数,并且可以在内部进行估算f

您需要解决的是一种启发式方法,可让您计算这样的阈值。有各种各样的启发式方法(从ROC出发,并指定在允许的两个阈值以及一个“不确定”(NA)级别等方面,在最小可接受的灵敏度或特异性或PPV或NPV的情况下,避免假阳性与假阴性相比有多么重要) )适合不同情况-良好的启发式方法通常是针对特定应用的。

但是对于这里的问题,您可以在内部执行此操作f,例如,使用内部交叉验证期间获得的预测来计算ROC,然后相应地找到您的工作点/阈值。


对部分问题的具体评论

我知道我不应该报告用于选择最佳超参数的CV的性能,作为对我的最终模型的预期性能的估计(过于乐观),而应该包括外部CV循环以获取此估计。

是。(尽管内部估算确实包含与外部估算有关的信息:如果它比外部估算的最优性要高得多,则通常是过度拟合。)

我了解内部CV回路用于模型选择

实际上,任何一种数据驱动的模型调整->包括调整截止阈值。

(在这种情况下,为最佳超参数),并且将外部循环用于模型评估,即内部和外部CV经常会错误地混淆两个不同的目的。

是。

即,超参数调整是“用于构建模型的方法”的一部分。

我也更喜欢这样看:我是化学家,就像您从应用程序的角度看:对我来说,没有超参数,经过训练/拟合的模型是不完整的,或更准确地说,模型是我可以直接用于的东西获得预测。尽管您注意到其他人有不同的看法(没有超参数调整)。根据我的经验,开发新模型的情况经常如此:超参数调整是一个“已解决的问题”,没有考虑。(旁注:他们对交叉验证在验证方面可以做什么的看法也与交叉验证在应用程序方面可以做的稍有不同)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.