Logistic回归中的模型选择和模型性能


9

我对逻辑回归中的模型选择和模型性能有疑问。我有基于三个不同假设的三个模型。前两个模型(分别命名为z和x)在每个模型中只有一个解释变量,而第三个模型(分别命名为w)更复杂。我正在使用AIC来选择w模型的变量,然后使用AIC来比较三个模型中最能解释因变量的模型。我发现w模型的AIC最低,现在想对该模型进行一些性能统计,以了解该模型的预测能力。既然我所知道的是,该模型比其他两个模型更好,但并不是那么好。

由于我已经使用所有数据来学习模型(以便能够比较所有三个模型),我该如何提高模型性能?从我收集到的信息来看,我不能仅对使用AIC从模型选择中获得的最终模型进行k折交叉验证,而是需要从头开始并包括所有解释变量,这是正确的吗?我想这是我与AIC选择的最终模型,我想知道它的性能如何,但确实意识到我已经对所有数据进行了训练,因此该模型可能会产生偏差。因此,如果我应该从头开始考虑所有折叠的所有解释变量,那么我将在某些折叠中得到不同的最终模型,我是否可以仅从折叠中选择具有最佳预测能力的模型,并将其应用于完整数据集进行比较AIC与其他两个模型(z和x)一起使用吗?或如何运作?

我的问题的第二部分是有关过度参数化的基本问题。我有156个数据点,其中52个为1,其余为0。对于w模型,我有14个解释变量可供选择,我意识到由于过分参数化,我无法将所有变量都包括在内,我读到您应该只使用因果变量组中的10%,而观察到的数据最少。对我来说只有5个 我正在尝试回答生态学中的一个问题,是否可以选择仅基于生态学就可以解释最佳依存关系的起始变量?或如何选择起始解释变量?完全排除某些变量并不正确。

所以我真的有三个问题:

  • 在具有交叉验证的完整数据集上训练的模型上测试性能是否可以?
  • 如果没有,在进行交叉验证时如何选择最终模型?
  • 我该如何选择起始变量,以便过度参数化?

对不起我的问题和无知。我知道有人问过类似的问题,但仍然有些困惑。赞赏任何想法和建议。

Answers:


7

的确,最好使用测试数据集来验证模型。但是,只要您对所做的事情很诚实,您仍然可以说模型对数据的性能如何。您不能真正做的是说它将在其他数据上做得很好:可能不会。不幸的是,许多发表的文章至少暗示了这种错误的观念。

你问

是否可以选择仅基于生态学就可以最好地解释因变量的起始变量?

不仅可以,而且比任何自动化方案都更好。实际上,这些也可能是最终变量。在某种程度上,这取决于该领域的知识程度。如果对您正在研究的内容知之甚少,则可能需要采用更具探索性的方法。但是,如果您有充分的理由认为某些变量应包含在模型中,则应将它们放入所有模型中。我会建议将其保留在模型中,即使不重要。


1

如果您要进行模型选择,那么我认为您最好进行详尽的搜索并加权每个模型,而不是挑选樱桃。您只有14个变量,这当然是可行的-16384个不同的模型并不是过大,特别是因为样本量很小。我还将查看归一化权重,其定义为:

wm=[lexp(12[AIClAICm])]1

这些权重假设AIC的负值为对数可能性的两倍加beta数量的两倍。如果最佳模型的权重接近则只需使用该权重即可。否则,应将总重量接近模型与平均结果进行平均。通常会发生的情况是,应始终包括一组“核心”变量,并且对“非核心”集具有不确定性,而第三组不重要的变量则永远不会出现在具有高权重的模型中。11

您也可以用BIC或其他基于惩罚的IC代替AIC,以查看权重取决于所使用的特定复杂性惩罚。


在所有可能的模型上使用AIC是一个过程非常繁多,我不知道其性能如何。从广义上讲,将其视为变量选择问题而不是惩罚(收缩)问题并不总是合乎逻辑的。
Frank Harrell

在模型选择中是否存在没有极端多样性的过程?您正在处理巨大的离散空间-这总是会导致大量比较。我认为问题更多在于模型中的隐式先验是否合理。
概率

说得好。但是我认为大多数模型选择练习都是不必要的(即简约不是您的朋友),而且根本没有先验的结果。
Frank Harrell

我也同意,我认为贝叶斯因子最适合用于模型结构问题,例如使用正态分布还是t分布。它们对于协变量选择不是没有用,但是与收缩相比效率低下。
概率

对不起,我的最新评论很抱歉,但是您知道在R中计算该值的简便方法吗?我在列表或矩阵中有AIC:s。我对R相当陌生,因此任何复杂的函数构建都很困难。谢谢!
mael 2012年

0

回答“是否可以在经过交叉验证的完整数据集上训练的模型上测试性能?” 不,我不认为这可以。您应该将所有3个模型拟合到数据集的同一子集。然后进行交叉验证,看哪个更好。


1
因此,如果我理解正确,那么我应该对所有模型只使用一种训练和一套测试集?那么我是否仍可以将5个变量用于最后一个模型,否则是否存在过度参数化的风险?而且,仅使用一个培训和测试集就不会有风险-因为这将很大程度上取决于我拥有的相对较少数据的分割位置-还是没有什么好担心的?否则,确实会觉得这是最正确的方法。
mael 2012年

0

在具有交叉验证的完整数据集上训练的模型上测试性能是否可以?

我想不是。也许更好的方法是使用重复交叉验证来评估三个模型中的每个模型。鉴于您已基于先验知识选择了功能,则无需担心功能选择。此方法使您可以评估模型的性能。

如果没有,在进行交叉验证时如何选择最终模型?

使用重复的交叉验证评估模型的性能后,您便可以使用所有可用数据来训练最终模型。

我该如何选择起始变量,以便过度参数化?

如果我理解正确:如以上贡献者的建议,您可以根据该区域的先前知识来添加特征,或者您需要在交叉验证中执行特征选择以避免过度拟合。然后,在训练最终模型时,将相同的特征选择过程应用于所有数据。您不能使用此模型来报告模型的广义性能,这必须来自交叉验证估计。

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.