Перекрестная проверка с исключением одного в 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 predictors 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 различных образцов. В каждой модели использовались две переменные-предикторы.
- Никакой предварительной обработки не было. То есть мы никак не масштабировали данные перед подгонкой моделей.
- Метод повторной выборки, который мы использовали для создания 10 выборок, заключался в перекрестной проверке с исключением одного.
- Размер выборки для каждого обучающего набора составлял 9 человек.
- RMSE: среднеквадратическая ошибка. Это измеряет среднюю разницу между предсказаниями модели и фактическими наблюдениями. Чем ниже RMSE, тем точнее модель может предсказать фактические наблюдения.
- Rsquared: это мера корреляции между предсказаниями модели и фактическими наблюдениями. Чем выше R-квадрат, тем точнее модель может предсказать фактические наблюдения.
- МАЭ: Средняя абсолютная ошибка. Это средняя абсолютная разница между предсказаниями модели и фактическими наблюдениями. Чем ниже MAE, тем точнее модель может предсказать фактические наблюдения.
Каждое из трех измерений, представленных в результате (RMSE, R-квадрат и MAE), дает нам представление о производительности модели на неопубликованных данных.
На практике мы обычно подбираем несколько различных моделей и сравниваем три показателя, представленные здесь в результатах, чтобы решить, какая модель дает наименьший уровень ошибок при тестировании и, следовательно, является лучшей моделью для использования.