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


14

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

AIC=2k2ln(L)

k =模型中的参数数量

L =可能性

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

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

    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))

在此处输入图片说明

Answers:


10

我认为当存在“真实的”低维模型时,BIC是首选,我认为在经验工作中绝不会如此。AIC更符合以下假设:我们获取的数据越多,模型就越复杂。以我的经验,使用有效自由度的AIC是选择惩罚参数一种很好的方法,因为它有可能在一个新的独立样本中优化模型性能。λ


2
伟大的实践解释,在贝叶斯上下文中也很有意义。。。基于“理论”的似然比与“无理论”的预测误差。
Shadowtalker

3
可能有助于阐述如何在AIC中计算和使用正规化解决方案的“有效自由度”。
Brian Borchers 2014年

2
请参阅R rmseffective.df函数中的代码和我的《回归建模策略》。来自罗伯特·格雷(Robert Gray)的主要思想是,考虑不带惩罚的协方差矩阵与带惩罚的协方差矩阵。这两种比率的对角线之和给您有效的df
Frank Harrell 2014年

@FrankHarrell:因此,如果我理解正确的话,可以在其中计算一堆模型glmnet(每个模型都有不同的lambda参数)并为每个模型计算AIC,然后选择与AIC最低的模型对应的lambda吗?除了使用交叉验证之外,这基本上是选择lambda参数的另一种方法。我对吗?
Corel

1
我是在rms程序包的上下文中编写的,其中使用了几个拟合函数来effective.df计算有效参数数量,以便您可以获得有效的AIC。这将近似于您通过CV'ing交叉验证所获得的收益。看到这个
Frank Harrell

10

我对此的想法收集得并不多,但是这里有一些我知道的观点可能会有所帮助。


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

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

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

这向我暗示,通过以贝叶斯术语进行思考和建模,您可能会有所收获,或者至少会获得更连贯的研究设计。我知道在许多应用程序(例如高维机器学习)中这是不寻常的,并且(在我看来)从正则化的更具解释性的几何和损失函数解释中有所删除。至少,我在很大程度上依赖贝叶斯解释来决定AIC和BIC之间的关系,并向非专业人员,非统计型同事/老板等解释差异。

我知道这对交叉验证没有多大意义。关于贝叶斯推理的一件好事是,它可以生成参数的近似分布,而不是点估计。我认为,这可以用来回避测量有关预测误差的不确定性的问题。但是,如果您正在谈论使用CV来估计超参数,例如LASSO的,我再次遵照Gelmanλ

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

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.