Ошибка в eval(expr, envir, enclos): объект 'PAY_0.1' не найден (Повышение)
Я пытаюсь применить модель повышения, но я продолжаю получать эту ошибку. Любая помощь будет высоко ценится. Это набор данных из kaggle, данные кредитной карты UCI, если вам интересно.
DataSplit<-createDataPartition(UCIdata$default.payment.next.month,p=.8,list=FALSE)
boosttrain<-UCIdata[DataSplit,]
boosttest<-UCIdata[-DataSplit,]
gmbGrid2<-expand.grid(maxdepth=seq(1,10,1),iter=50,nu=seq(0.1,1,0.1))
boostingcontrol2<-trainControl(method="repeatedcv",classProbs = TRUE,summaryFunction = twoClassSummary)
gmbFit2<-train(default.payment.next.month~.,data=boosttrain[,2:25],method="ada",trControl=boostingcontrol2,verbose=FALSE,tuneGrid=gmbGrid2)
Я тогда получаю это.
Предупреждающие сообщения: 1: В train.default(x, y, weights = w, ...): Метрика "Точность" не была в наборе результатов. ROC будет использоваться вместо. 2: в eval(expr, envir, enclos): сбой прогнозов для Fold01.Rep1: nu=0.1, maxdepth= 1, iter=50 Ошибка в eval(expr, envir, enclos): объект 'PAY_0.1' не найден
В наборе данных нет PAY_0.1, только PAY_0, PAY_2, PAY_3,...,PAY_6. Откуда взялся PAY_0.1?
1 ответ
Я думаю, PAY_0 - это двоичная / факторная переменная в вашем наборе данных. PAY_0.1 - фиктивная переменная, созданная из расширения этой переменной, которая является PAY_0.0 и PAY_0.1. Скорее всего, у PAY_0 очень мало единиц, поэтому у PAY_0.1 будет очень мало единиц. При выполнении обучения вместе с CV (repeatcv) возможно, что у одного из сгибов не могло быть никаких 1 и, следовательно, этой ошибки. Или, возможно, когда вы строите дерево глубиной 1, тогда ни у одного дерева нет поломок на основе переменной PAY_0.1.
Чтобы исправить проблему, пожалуйста, сделайте:
- Начните свой диапазон глубины немного выше. Так что вместо
maxdepth=seq(1,10,1)
если вы используетеmaxdepth=seq(4,10,1)
Вы можете не получить эту проблему. Глубина 1 дерева слишком мала. - Проверьте распределение PAY_0. Если слишком мало единиц, то вы можете увеличить частоту дискретизации до 1 или уменьшить цифру до 0.