我正在尝试在我的数据集上使用 glmnet 库运行交叉验证 (folds=10)。我感兴趣的结果是 BMI,预测变量包括一组临床变量。我的最终目标是使用弹性网络回归来选择特征并预测 BMI。对于交叉验证,我使用 0 到 1 的 alpha 范围,增量为 0.1。我正在使用 min CVM 来确定 lambda 的值,使用我当前的代码,我对 lambda 的估计值非常高。更高的 lambda 值是否可以接受,或者我在这里看不到?下面是我的代码片段。感谢您的所有帮助和评论。
size <- floor(nrow(DataFile) * 0.7)
Train_rows <- sample(rownames(DataFile),size=size,replace=FALSE)
Train_Data <- DataFile[Train_rows,]
Train_bmi <- phenoFile[Train_rows,]$BMI
####### Cross Validation Alpha and Lambda #####
myAlpha <- seq(0,1,by=0.1)
findAlpha_lambda <- function(iAlpha){
Train_Data <- as.matrix(Train_Data)
crossModel <- cv.glmnet(Train_Data,Train_bmi,alpha=iAlpha)
myLambda <- crossModel$lambda.min
myCVM <- min(crossModel$cvm)
title <- paste(iAlpha,myLambda,sep="_")
return(c(iAlpha,myLambda,myCVM))
}
myFrame <- as.data.frame(do.call(rbind,lapply(myAlpha,findAlpha_lambda)))
colnames(myFrame) <- c('Alpha','Lamda','CVM')
myFrame <- myFrame[order(myFrame$CVM),]
print(myFrame)
Alpha Lamda CVM
1 0.0 50.9839208 54.25337
2 0.1 1.7901432 54.37151
3 0.2 3.1427680 54.75240
4 0.3 2.1949422 57.68935
5 0.4 1.8927376 61.68384
9 0.8 1.2510439 63.69622
6 0.5 1.0933677 64.68333
8 0.7 0.2441112 64.73192
7 0.6 2.2050751 65.01727
11 1.0 1.3860429 65.17181
10 0.9 0.5042962 65.70732