是否可以为套索回归模型计算 AIC 和 BIC?

机器算法验证 r 模型选择 套索 aic 比克
2022-02-01 19:54:42

是否可以为套索回归模型和其他参数仅部分进入方程的正则化模型计算 AIC 或 BIC 值。如何确定自由度?

我正在使用 R 将套索回归模型与包中的glmnet()函数拟合glmnet,我想知道如何计算模型的 AIC 和 BIC 值。通过这种方式,我可以将值与没有正则化的模型进行比较。这可能吗?

3个回答

我在为 glmnet 模型计算 AIC 和 BIC 的方法上苦苦挣扎。然而,经过相当多的搜索,我在谷歌结果的第三页找到了答案。可以在这里找到。我把它贴在这里给未来的读者,因为我相信我不能是唯一的。

最后,我通过以下方式实现了AIC和BIC:

fit <- glmnet(x, y, family = "multinomial") 

tLL <- fit$nulldev - deviance(fit)
k <- fit$df
n <- fit$nobs
AICc <- -tLL+2*k+2*k*(k+1)/(n-k-1)
AICc

BIC<-log(n)*k - tLL
BIC

您可能还会发现以下论文感兴趣:

RJ Tibshirani 和 J. Taylor (2011),套索问题中的自由度arXiv 预印本:1111.0653

H. Zou、T. Hastie 和 R. Tibshirani (2007),关于套索的自由度,统计年鉴 35 (5),2173-2192。

在 johnnyheineken 引用的链接中,作者指出:

恐怕 glmnet 对象(dev.ratio,nulldev)中可用的两个量不足以获得模型的可能性,您需要计算 AICc。您在三个未知数中有两个方程:似然(null)、似然(模型)和似然(饱和)。我无法从可能性(null)中获得可能性(模型)。

在我看来,如果您要比较两个模型之间的 AIC,那么您无法分离零偏差这一事实并不重要。由于它存在于不等式的“两边”,它将显示哪个模型必须具有较低的 AIC。这取决于两件事:

  1. 两种模型中的数据相同(无论如何 AIC 比较都是必需的)
  2. 我既不会忘记 Stat101 也不会忘记高中代数(鉴于我目前的咖啡因摄入量,这是一个强有力的假设)