Перекрестная проверка с исключением одного в R (с примерами)


Чтобы оценить производительность модели в наборе данных, нам нужно измерить, насколько хорошо прогнозы, сделанные моделью, соответствуют наблюдаемым данным.

Один из часто используемых методов для этого известен как перекрестная проверка с исключением одного (LOOCV) , в которой используется следующий подход:

1. Разделите набор данных на обучающий набор и тестовый набор, используя все наблюдения, кроме одного, как часть обучающего набора.

2. Построить модель, используя только данные из обучающей выборки.

3. Используйте модель, чтобы предсказать значение отклика одного наблюдения, не включенного в модель, и вычислить среднеквадратичную ошибку (MSE).

4. Повторите этот процесс n раз. Рассчитайте тестовую MSE как среднее значение всех тестовых MSE.

Самый простой способ выполнить LOOCV в R — использовать функцию trainControl() из библиотеки каретки в R.

В этом руководстве представлен краткий пример того, как использовать эту функцию для выполнения LOOCV для заданной модели в R.

Пример: перекрестная проверка с исключением одного в R

Предположим, у нас есть следующий набор данных в R:

#create data frame
df <- data.frame(y=c(6, 8, 12, 14, 14, 15, 17, 22, 24, 23),
 x1=c(2, 5, 4, 3, 4, 6, 7, 5, 8, 9),
 x2=c(14, 12, 12, 13, 7, 8, 7, 4, 6, 5))

#view data frame
df

y x1 x2
6 2 14
8 5 12
12 4 12
14 3 13
14 4 7
15 6 8
17 7 7
22 5 4
24 8 6
23 9 5

В следующем коде показано, как подобрать модель множественной линейной регрессии к этому набору данных в R и выполнить LOOCV для оценки производительности модели:

library (caret)

#specify the cross-validation method
ctrl <- trainControl(method = " LOOCV ")

#fit a regression model and use LOOCV to evaluate performance
model <- train(y ~ x1 + x2, data = df, method = " lm", trControl = ctrl)

#view summary of LOOCV 
print(model)

Linear Regression 

10 samples
 2 predictor

No pre-processing
Resampling: Leave-One-Out Cross-Validation 
Summary of sample sizes: 9, 9, 9, 9, 9, 9, ... 
Resampling results:

 RMSE Rsquared MAE 
 3.619456 0.6186766 3.146155

Tuning parameter 'intercept' was held constant at a value of TRUE

Вот как интерпретировать вывод:

  • Для создания 10 моделей было использовано 10 различных образцов. Каждая модель использовала 2 переменные-предикторы.
  • Предварительной обработки не было. То есть мы никак не масштабировали данные перед подбором моделей.
  • Метод повторной выборки, который мы использовали для создания 10 образцов, был перекрестной проверкой «Оставить один-исключить».
  • Размер выборки для каждой обучающей выборки составлял 9.
  • RMSE: среднеквадратическая ошибка. Это измеряет среднюю разницу между прогнозами, сделанными моделью, и фактическими наблюдениями. Чем ниже RMSE, тем точнее модель может предсказать фактические наблюдения.
  • Rsquared: это мера корреляции между прогнозами, сделанными моделью, и фактическими наблюдениями. Чем выше R-квадрат, тем точнее модель может предсказать фактические наблюдения.
  • MAE: Средняя абсолютная ошибка. Это средняя абсолютная разница между прогнозами, сделанными моделью, и фактическими наблюдениями. Чем ниже MAE, тем точнее модель может предсказать фактические наблюдения.

Каждая из трех метрик, представленных в выходных данных (RMSE, R-квадрат и MAE), дает нам представление о том, насколько хорошо модель работала на ранее неизвестных данных.

На практике мы обычно подбираем несколько разных моделей и сравниваем три метрики, представленные в выходных данных, показанных здесь, чтобы решить, какая модель дает наименьшую частоту ошибок при тестировании и, следовательно, является лучшей моделью для использования.

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.