如何计算岭回归模型的交叉验证误差?

时间:2020-04-04 14:39:59

标签: r machine-learning regression cross-validation

我正在尝试在上使用ridge white wine dataset模型。我想使用整个数据集进行训练,并使用10倍CV来计算测试错误率。那就是主要问题-如何为岭回归逻辑模型计算CV测试误差。 我计算了lambda的最佳值(也使用了CV),现在我想找到CV的测试错误率。目前,我的计算代码所述CV测试错误为-

cost1 <- function(good, pi=0) mean(abs(good-pi) > 0.5)
ridge.model <- glmnet(x, y, alpha = 0, family = "binomial", lambda = bestlam)
ridge.model$beta # all coefficients for the variables
ridge.model.cv.err<- cv.glm(winedata,ridge.model,cost1, K=10)
ridge.model.cv.err$delta

这将产生以下错误-

cbind2(1,newx)%%nbeta中的错误:%

尚未实现的方法

有什么想法可能导致此错误?


我应该使用cv.glmnet来代替suggested。但是,它似乎不接受模型类型(这里将是逻辑模型)作为输入,而且它需要一个lambda值列表作为输入,而如上所述,我只有一个最佳的lambda值。因此,运行代码-

ridge.model.cv.err<- cv.glmnet(x,y, lambda = bestlam, cost1, K=10)

给出错误-Error in cv.glmnet(x, y, lambda = bestlam, cost1, K = 10) : Need more than one value of lambda for cv.glmnet

数据被处理为-

winedata <- read.delim("winequality-white.csv", sep = ';')
winedata$quality[winedata$quality< 7] <- "0" #recode
winedata$quality[winedata$quality>=7] <- "1" #recode
winedata$quality <- factor(winedata$quality)# Convert the column to a factor
names(winedata)[names(winedata) == "quality"] <- "good"      #rename 'quality' to 'good'

感谢您的帮助。

0 个答案:

没有答案