Метод поезда каретки жалуется Что-то не так; все значения метрики RMSE отсутствуют

Много раз я получал эту ошибку при попытке подобрать модель gbm или rpart. Наконец, я смог последовательно воспроизвести его, используя общедоступные данные. Я заметил, что эта ошибка возникает при использовании резюме (или повторного резюме). Когда я не использую какой-либо элемент управления посадкой, я не получаю эту ошибку. Может ли кто-нибудь пролить свет на то, почему я постоянно получаю ошибку.

fitControl= trainControl("repeatedcv", repeats=5)
ds = read.csv("http://www.math.smith.edu/r/data/help.csv")
ds$sub = as.factor(ds$substance)
rpartFit1 <- train(homeless ~ female + i1 + sub + sexrisk + mcs + pcs, 
                   tcControl=fitControl, 
                   method = "rpart", 
                   data=ds)

person Fred R.    schedule 28.07.2015    source источник
comment
По моему опыту, эта ошибка произошла из-за того, что некоторые переменные были факторами, а не числовыми. Другой случай может заключаться в том, что переменная представляет собой строку символов. Попробуйте sapply(your_data, class) проверить классы столбцов.   -  person SabDeM    schedule 28.07.2015
comment
Спасибо за ваш ответ. Этот и другие наборы данных, которые демонстрируют эту ошибку, имеют некоторые переменные, относящиеся к факторному классу. Но почему это важно? rpart не может обрабатывать факторные переменные. Почему не работает при использовании CV?   -  person Fred R.    schedule 28.07.2015
comment
если числа пытаются преобразовать их в numeric, то characters пытаются не включать их в модель. В любом случае, это не общая ошибка, я думаю, что это зависит от того, что использует поезд method. Не забывайте, что train - это не модель, а просто оболочка для простого синтаксиса и применения множества разных моделей, просто изменив аргумент method.   -  person SabDeM    schedule 28.07.2015
comment
ваши данные каждый раз разбиваются одинаково? Я предполагаю, что это приведет к такой ошибке   -  person Rorschach    schedule 28.07.2015
comment
Эта конкретная ошибка исчезает, если вы используете правильное имя параметра в функции train(). Должно быть trControl=fitControl, а не tcControl=fitControl. Это было очевидно после просмотра сгенерированного warnings().   -  person MrFlick    schedule 29.07.2015
comment
@SabDeM Ты только что спас мне мой рассудок! Благодарю вас!   -  person pookie    schedule 20.06.2016
comment
Привет, я отправил ответ, но он был удален. Я говорил, что ошибка вычисления RMSE, вероятно, связана с наличием бесконечных значений в наборе обучающих данных. Скажи мне, может ли это быть правильным.   -  person agenis    schedule 05.12.2017
comment
Удалите все из train(), ожидайте формулу, данные и метод и попробуйте еще раз...!!   -  person Aniket Sawale    schedule 28.03.2018


Ответы (1)


Опечатка, должно быть trControl вместо tcControl. И когда аргумент предоставляется как tcControl, caret передает его в rpart, и это выдает ошибку, потому что этот параметр никогда не был доступен.

Я думаю, это отвечает на ваш вопрос о том, почему вы получаете эту ошибку, когда пытаетесь провести перекрестную проверку в обучении.

Ниже показано, как это должно работать:

library(caret)
library(mosaicData)

data(HELPrct)
ds = HELPrct
fitControl= trainControl(method="repeatedcv",times=5)
ds$sub = as.factor(ds$substance)

rpartFit1 <- train(homeless ~ female + i1 + sub + sexrisk + mcs + pcs, 
                   trControl=fitControl, 
                   method = "rpart", 
                   data=ds[complete.cases(ds),])

rpartFit1
CART 

117 samples
  6 predictor
  2 classes: 'homeless', 'housed' 

No pre-processing
Resampling: Cross-Validated (10 fold) 
Summary of sample sizes: 105, 105, 105, 106, 105, 106, ... 
Resampling results across tuning parameters:

  cp          Accuracy   Kappa      
  0.00000000  0.5280303  -0.03503032
  0.01190476  0.5280303  -0.03503032
  0.07142857  0.5977273  -0.02970604

Accuracy was used to select the optimal model using the largest value.
The final value used for the model was cp = 0.07142857.
person StupidWolf    schedule 25.06.2020