(я не уверен, является ли это вопросом R Caret или статистикой, но я думаю, что у меня только проблемы с пониманием вывода результатов поезда кареты)
Извините, что не предоставил работающего примера, этот вопросо понимании вывода каретки.
Мой набор данных dt_in
имеет размеры 17 000 x 80.
У меня есть следующий код для обучающих моделей (например, случайный лес, усиленные линейные модели), который приводит кв гораздо лучшем случае RMSE, R ^ 2 и MAE для теста, чем для обучающего набора данных.Неважно, какую модель я использую, RMSE результата теста обычно на ~ 10% -30% ниже.
# prepare datasets ----------------------------------------------------------------------------
training_indices = createDataPartition(dt_in[, dep], p = .75, list = F)
dt_training = dt_in[training_indices]
dt_test = dt_in[-training_indices]
tc = trainControl(method = "repeatedcv",number = 10,repeats = 3)
# train ---------------------------------------------------------------------------------------
trained = train(dt_training[, -"dep"] , dt_training[, dep], method = fun, trControl = tc)
# model evalution ---------------------------------------------------------
trained$results
mtry RMSE Rsquared MAE RMSESD RsquaredSD MAESD
1 2 80.59007 0.2192741 46.86460 21.27305 0.06727583 2.937344
2 40 73.42838 0.3747700 40.95060 18.61011 0.05384239 1.291299
3 79 71.62358 0.3975308 40.42657 19.50400 0.07105303 1.502392
# test results
models_predicted = extractPrediction(list(trained),
testX = dt_test[, -"dep"],
testY = dt_test[, dep])
postResample(models_predicted$pred, models_predicted$obs)
RMSE Rsquared MAE
59.1520342 0.5816214 23.3004383
Я уже избавился от экстремальных выбросов в зависимой переменной, которые могут быть болееможет появиться в наборе обучающих данных.
Я понимаю, что делает extractPrediction
, но я не уверен, как рассчитывается trained$results
, просто потому, что он основан на наборах данных для повторной выборки.Я не понимаю, как результаты теста могут быть намного лучше, чем результаты тренировок.