Cross-Validation

AIC、BIC 和 GCV:在懲罰回歸方法中做出決策的最佳方法是什麼?

  • July 20, 2014

我的一般理解是AIC處理模型的擬合優度和模型的複雜性之間的權衡。

= 模型中的參數數量

= 可能性

貝葉斯信息準則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))

在此處輸入圖像描述

當存在“真正的”低維模型時,我認為 BIC 是首選,我認為在實證工作中絕不會出現這種情況。AIC 更符合假設我們獲得的數據越多,模型就越複雜。以我的經驗,使用有效自由度的 AIC 是選擇懲罰參數的一種非常好的方法因為它可能會在新的獨立樣本中優化模型性能。

引用自:https://stats.stackexchange.com/questions/108567

comments powered by Disqus