Как рассчитать ошибку перекрестной проверки для модели регрессии гребня? - PullRequest
1 голос
/ 04 апреля 2020

Я пытаюсь приспособить модель ridge к набору данных белого вина . Я хочу использовать весь набор данных для обучения и использовать 10-кратное резюме для расчета частоты ошибок теста. Вот главный вопрос - как рассчитать погрешность теста CV для модели регрессионной логики c. Я вычислил наилучшее значение 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 вместо. Тем не менее, не похоже, что он принимает тип модели (это будет logisti c здесь) в качестве входных данных, плюс ему нужен список значений лямбда-выражений в качестве входных данных, тогда как у меня просто есть одно лучшее значение лямбда-значений, которое я получил, как упоминалось над. Таким образом, выполнение кода -

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'

Благодарим вас за помощь.

...