逻辑回归中的模型选择和模型性能

机器算法验证 物流 模型选择 交叉验证
2022-03-14 18:50:01

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

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

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

所以我真的有三个问题:

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

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

4个回答

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

你问

可以选择我认为仅基于生态学最好地解释依赖的起始变量吗?

不仅没问题,而且比任何自动化方案都要好。事实上,这些也可能是最终的变量。这在某种程度上取决于该领域的知识程度。如果您对正在研究的内容知之甚少,则可能需要采用更具探索性的方法。但是如果你有充分的理由认为某些变量应该在模型中,那么一定要把它们放进去。我会主张把它们留在那里,即使不重要。

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

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

这些权重假设 AIC 是对数似然的两倍加上 beta 数量的两倍。如果最好的模型的权重接近,那么就使用它。否则,您应该对总权重接近的模型的结果进行平均。通常发生的情况是,应该始终包含一组“核心”变量,不确定“非核心”组和第三组不重要的变量,这些变量永远不会出现在具有高权重的模型中。11

您还可以用 BIC 或其他一些基于惩罚的 IC 替换 AIC,以查看权重在多大程度上取决于所使用的特定复杂性惩罚。

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

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

我想不是。也许更好的方法是使用重复的交叉验证来评估三个模型中的每一个。鉴于您已经根据先验知识选择了特征,您无需担心特征选择。此方法允许您评估模型的性能。

如果不是,我在做交叉验证时如何选择最终模型?

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

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

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