AIC、BIC 和 GCV:在惩罚回归方法中做出决策的最佳方法是什么?

机器算法验证 交叉验证 套索 aic 岭回归 比克
2022-02-25 18:13:06

我的一般理解是AIC处理模型的拟合优度和模型的复杂性之间的权衡。

AIC=2k2ln(L)

k = 模型中的参数数量

L = 可能性

贝叶斯信息准则BIC与 AIC 密切相关。AIC 对参数数量的惩罚不如 BIC 强。我可以看到这两个在历史上无处不在。但是广义交叉验证(GCV)对我来说是新的。GCV 如何与 BIC 或 AIC 相关联?这些标准是如何一起或单独用于在像脊这样的面板回归中选择惩罚项的?

编辑: 这是一个思考和讨论的例子:

    require(lasso2)
    data(Prostate)
    require(rms)

    ridgefits = ols(lpsa~lcavol+lweight+age+lbph+svi+lcp+gleason+pgg45,
           method="qr", data=Prostate,se.fit = TRUE, x=TRUE, y=TRUE)
    p <- pentrace(ridgefits, seq(0,1,by=.01))
    effective.df(ridgefits,p)
    out <- p$results.all
    par(mfrow=c(3,2))
    plot(out$df, out$aic, col = "blue", type = "l", ylab = "AIC", xlab = "df"  )
    plot(out$df, out$bic, col = "green4", type = "l", ylab = "BIC",  xlab = "df" )
    plot(out$penalty, out$df,  type = "l", col = "red", 
     xlab = expression(paste(lambda)), ylab = "df" )
    plot(out$penalty, out$aic, col = "blue", type = "l",  
      ylab = "AIC", xlab = expression(paste(lambda))  )
    plot(out$penalty, out$bic, col = "green4", type = "l", ylab = "BIC", 
      xlab= expression(paste(lambda))

require(glmnet)
y <- matrix(Prostate$lpsa, ncol = 1)
x <- as.matrix (Prostate[,- length(Prostate)])
cv <- cv.glmnet(x,y,alpha=1,nfolds=10)
plot(cv$lambda, cv$cvm, col = "red", type = "l", 
      ylab = "CVM",   xlab= expression(paste(lambda))

在此处输入图像描述

2个回答

当存在“真正的”低维模型时,我认为 BIC 是首选,我认为在实证工作中绝不会出现这种情况。AIC 更符合假设我们获得的数据越多,模型就越复杂。根据我的经验,使用有效自由度的 AIC 是选择惩罚参数的一种非常好的方法,因为它可能会在新的独立样本中优化模型性能。λ

我自己对此的想法并不是很完整,但这里有一些我知道可能会有所帮助的观点。


AIC 的贝叶斯解释是它是对预期对数逐点预测密度(即样本外预测误差)的偏差校正近似值。这种解释在Gelman、Hwang 和 Vehtari (2013)中有很好的阐述,并在Gelman 的博客上进行了简要讨论交叉验证是对同一事物的不同近似。

同时,BIC 是特定先验条件下“贝叶斯因子”的近似值(在Raftery, 1999中有很好的解释)。这几乎是似然比的贝叶斯类似物。

AIC 和 BIC 的有趣之处在于惩罚回归有贝叶斯解释,例如 LASSO 是贝叶斯回归的 MAP 估计,其系数具有独立的拉普拉斯先验。在上一个问题中提供更多信息,Kyung、Gill、Ghosh 和 Casella (2010)中提供更多信息。

这向我表明,通过以贝叶斯术语进行思考和建模,您可能会获得一些里程,或者至少是更连贯的研究设计。我知道这在很多应用中有点不寻常,比如高维机器学习,并且在(在我看来)更可解释的正则化几何和损失函数解释中也有些不同。至少,我在很大程度上依赖贝叶斯解释来决定 AIC 和 BIC,并向外行、非统计导向的同事/老板等解释差异。

我知道这与交叉验证没有多大关系。贝叶斯推理的一个好处是它产生了参数的近似分布,而不是点估计。我觉得,这可以用来回避衡量一个人对预测误差的不确定性的问题。但是,如果您正在谈论使用 CV 来估计超参数,例如,我再次遵从Gelmanλ

通过交叉验证选择调整参数只是分层贝叶斯的一种特殊实现。