Как перекрестно проверить производительность модели в r


В статистике мы часто строим модели по двум причинам:

  • Поймите взаимосвязь между одной или несколькими переменными-предикторами и переменной отклика.
  • Используйте модель для прогнозирования будущих наблюдений.

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

Например, мы можем построить модель множественной линейной регрессии , которая использует возраст и доход в качестве переменных-предикторов, а статус по умолчанию — в качестве переменной ответа. В этом случае мы можем захотеть подогнать модель к набору данных, а затем использовать эту модель для прогнозирования на основе дохода и возраста нового заявителя вероятности того, что он не сможет выплатить свой кредит.

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

Использование перекрестной проверки для оценки ошибки прогнозирования

Перекрестная проверка относится к различным способам оценки ошибки прогнозирования. Общий подход к перекрестной проверке следующий:

1. Выделите определенное количество наблюдений в наборе данных – обычно 15–25% всех наблюдений.
2. Подгоните (или «обучите») модель на основе наблюдений, которые мы храним в наборе данных.
3. Проверьте, насколько хорошо модель может делать прогнозы на основе наблюдений, которые мы не использовали для обучения модели.

Измерение качества модели

Когда мы используем подобранную модель для прогнозирования новых наблюдений, мы можем использовать несколько различных показателей для измерения качества модели, в том числе:

Множественный R-квадрат: измеряет силу линейной связи между переменными-предикторами и переменной ответа. R-квадрат, кратный 1, указывает на идеальную линейную связь, тогда как R-квадрат, кратный 0, указывает на отсутствие линейной зависимости. Чем выше кратное R-квадрат, тем больше вероятность того, что переменные-предикторы предсказывают переменную ответа.

Среднеквадратическая ошибка (RMSE): измеряет среднюю ошибку прогноза, сделанную моделью при прогнозировании значения нового наблюдения. Это среднее расстояние между истинным значением наблюдения и значением, предсказанным моделью. Более низкие значения RMSE указывают на лучшее соответствие модели.

Средняя абсолютная ошибка (MAE): это средняя абсолютная разница между истинным значением наблюдения и значением, предсказанным моделью. Этот показатель обычно менее чувствителен к выбросам, чем RMSE. Более низкие значения MAE указывают на лучшее соответствие модели.

Реализация четырех различных методов перекрестной проверки в R

Затем мы объясним, как реализовать в R следующие методы перекрестной проверки:

1. Подход к набору валидации
2. k-кратная перекрестная проверка
3. Оставьте перекрестную проверку в стороне
4. Повторная k-кратная перекрестная проверка

Чтобы проиллюстрировать, как использовать эти различные методы, мы будем использовать подмножество встроенного набора данных R mtcars :

 #define dataset
data <- mtcars[, c("mpg", "disp", "hp", "drat")]

#view first six rows of new data
head(data)

# mpg disp hp drat
#Mazda RX4 21.0 160 110 3.90
#Mazda RX4 Wag 21.0 160 110 3.90
#Datsun 710 22.8 108 93 3.85
#Hornet 4 Drive 21.4 258 110 3.08
#Hornet Sportabout 18.7 360 175 3.15
#Valiant 18.1 225 105 2.76

Мы построим модель множественной линейной регрессии, используя disp , hp и drat в качестве переменных-предикторов и миль на галлон в качестве переменной ответа.

Подход к набору проверки

Подход к набору проверки работает следующим образом:

1. Разделите данные на два набора: один набор используется для обучения модели (т. е. оценки параметров модели), а другой набор используется для тестирования модели. Обычно обучающий набор генерируется путем случайного выбора 70–80% данных, а оставшиеся 20–30% данных используются в качестве тестового набора.

2. Создайте модель, используя набор обучающих данных.
3. Используйте модель для прогнозирования данных тестового набора.
4. Измерьте качество модели с помощью таких показателей, как R-квадрат, RMSE и MAE.

Пример:

В следующем примере используется набор данных, который мы определили выше. Сначала мы делим данные на
обучающий набор и тестовый набор, используя 80% данных в качестве обучающего набора и оставшиеся 20% данных в качестве тестового набора. Далее мы строим модель, используя обучающий набор. Затем мы используем модель для прогнозирования тестового набора. Наконец, мы измеряем качество модели с помощью R-квадрата, RMSE и MAE.

 #load dplyr library used for data manipulation
library(dplyr)

#load caret library used for partitioning data into training and test set
library(caret)

#make this example reproducible
set.seed(0)

#define the dataset
data <- mtcars[, c("mpg", "disp", "hp", "drat")]

#split the dataset into a training set (80%) and test set (20%).
training_obs <- data$mpg %>% createDataPartition(p = 0.8, list = FALSE)

train <- data[training_obs, ]
test <- data[-training_obs, ]

# Build the linear regression model on the training set
model <- lm(mpg ~ ., data = train)

# Use the model to make predictions on the test set
predictions <- model %>% predict(test)

#Examine R-squared, RMSE, and MAE of predictions
data.frame(R_squared = R2(predictions, test$mpg),
           RMSE = RMSE(predictions, test$mpg),
           MAE = MAE(predictions, test$mpg))

#R_squared RMSE MAE
#1 0.9213066 1.876038 1.66614

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

Преимущества и недостатки этого подхода

Преимущество подхода с набором проверки состоит в том, что он прост и эффективен в вычислительном отношении. Недостатком является то, что модель строится с использованием только части общих данных. Если данные, которые мы исключаем из обучающего набора, содержат интересную или ценную информацию, модель не примет ее во внимание.

k-кратный подход к перекрестной проверке

Подход k-кратной перекрестной проверки работает следующим образом:

1. Случайным образом разделите данные на k «складок» или подмножеств (например, 5 или 10 подмножеств).
2. Обучите модель на всех данных, исключив только одно подмножество.
3. Используйте модель, чтобы сделать прогнозы относительно данных из подмножества, которое было исключено.
4. Повторяйте этот процесс до тех пор, пока каждое из k подмножеств не будет использоваться в качестве тестового набора.
5 . Измерьте качество модели путем усреднения k ошибок теста. Это известно
как ошибка перекрестной проверки.

Пример

В этом примере мы сначала делим данные на 5 подмножеств. Затем мы подгоняем модель, используя все данные, кроме подмножества. Затем мы используем модель, чтобы сделать прогнозы относительно неучтенного подмножества и записать ошибку теста (используя R-квадрат, RMSE и MAE). Мы повторяем этот процесс до тех пор, пока каждое подмножество не будет использоваться в качестве тестового набора. Затем мы просто вычисляем среднее из 5 ошибок теста.

 #load dplyr library used for data manipulation
library(dplyr)

#load caret library used for partitioning data into training and test set
library(caret)

#make this example reproducible
set.seed(0)

#define the dataset
data <- mtcars[, c("mpg", "disp", "hp", "drat")]

#define the number of subsets (or "folds") to use
train_control <- trainControl(method = "cv", number = 5)

#train the model
model <- train(mpg ~ ., data = data, method = "lm", trControl = train_control)

#Summarize the results
print(model)

#Linear Regression 
#
#32 samples
#3 predictor
#
#No pre-processing
#Resampling: Cross-Validated (5 fold) 
#Summary of sample sizes: 26, 25, 26, 25, 26 
#Resampling results:
#
# RMSE Rsquared MAE     
#3.095501 0.7661981 2.467427
#
#Tuning parameter 'intercept' was held constant at a value of TRUE

Преимущества и недостатки этого подхода

Преимущество k-кратного подхода перекрестной проверки перед подходом набора проверки состоит в том, что он строит модель несколько раз, каждый раз используя разные фрагменты данных, поэтому у нас нет возможности пропустить важные данные при построении модели.

Субъективная часть этого подхода — выбор значения k, то есть количества подмножеств, на которые нужно разделить данные. В целом, более низкие значения k приводят к более высокой систематической ошибке, но более низкой изменчивости, тогда как более высокие значения k приводят к более низкой систематической ошибке, но более высокой изменчивости.

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

Метод перекрестной проверки «Оставить одно» (LOOCV)

Подход LOOCV работает следующим образом:

1. Постройте модель, используя все наблюдения в наборе данных, кроме одного.
2. Используйте модель, чтобы спрогнозировать значение отсутствующего наблюдения. Запишите ошибку проверки этого прогноза.
3. Повторите этот процесс для каждого наблюдения в наборе данных.
4. Измерьте качество модели путем усреднения всех ошибок прогнозирования.

Пример

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

 #load dplyr library used for data manipulation
library(dplyr)

#load caret library used for partitioning data into training and test set
library(caret)

#make this example reproducible
set.seed(0)

#define the dataset
data <- mtcars[, c("mpg", "disp", "hp", "drat")]

#specify that we want to use LOOCV
train_control <- trainControl( method = "LOOCV" )

#train the model
model <- train(mpg ~ ., data = data, method = "lm", trControl = train_control)

#summarize the results
print(model)

#Linear Regression 
#
#32 samples
#3 predictor
#
#No pre-processing
#Resampling: Leave-One-Out Cross-Validation 
#Summary of sample sizes: 31, 31, 31, 31, 31, 31, ... 
#Resampling results:
#
# RMSE Rsquared MAE     
#3.168763 0.7170704 2.503544
#
#Tuning parameter 'intercept' was held constant at a value of TRUE

Преимущества и недостатки этого подхода

Преимущество LOOCV заключается в том, что мы используем все точки данных, что обычно снижает потенциальную погрешность. Однако, поскольку мы используем модель для прогнозирования значения каждого наблюдения, это может привести к большей вариативности ошибки прогнозирования.

Еще одним недостатком этого подхода является то, что он должен соответствовать такому большому количеству моделей, что может стать неэффективным и тяжелым в вычислительном отношении.

Подход с повторной k-кратной перекрестной проверкой

Мы можем выполнить повторную k-кратную перекрестную проверку , просто выполнив k-кратную перекрестную проверку несколько раз. Итоговая ошибка – это средняя ошибка количества повторений.

В следующем примере выполняется 5-кратная перекрестная проверка, повторяющаяся 4 раза:

 #load dplyr library used for data manipulation
library(dplyr)

#load caret library used for partitioning data into training and test set
library(caret)

#make this example reproducible
set.seed(0)

#define the dataset
data <- mtcars[, c("mpg", "disp", "hp", "drat")]

#define the number of subsets to use and number of times to repeat k-fold CV
train_control <- trainControl(method = "repeatedcv", number = 5, repeats = 4 )

#train the model
model <- train(mpg ~ ., data = data, method = "lm", trControl = train_control)

#summarize the results
print(model)

#Linear Regression 
#
#32 samples
#3 predictor
#
#No pre-processing
#Resampling: Cross-Validated (5 fold, repeated 4 times) 
#Summary of sample sizes: 26, 25, 26, 25, 26, 25, ... 
#Resampling results:
#
# RMSE Rsquared MAE     
#3.176339 0.7909337 2.559131
#
#Tuning parameter 'intercept' was held constant at a value of TRUE

Преимущества и недостатки этого подхода

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

Как выбрать количество сверток при перекрестной проверке

Самая субъективная часть перекрестной проверки — это принятие решения о том, сколько сгибов (т. е. подмножеств) использовать. В общем, чем меньше количество складок, тем более смещены оценки ошибок, но тем менее изменчивыми они будут. И наоборот, чем больше число складок, тем менее смещены оценки ошибок, но тем более изменчивыми они будут.

Также важно учитывать время расчета. Для каждой складки вам нужно будет тренировать новый шаблон, и хотя это медленный процесс, он может занять много времени, если вы выберете большое количество сгибов.

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

Как выбрать модель после выполнения перекрестной проверки

Перекрестная проверка используется для оценки ошибки прогнозирования модели. Это может помочь нам выбрать между двумя или более различными моделями, выделив, какая модель имеет наименьшую ошибку прогноза (на основе RMSE, R-квадрата и т. д.).

После того как мы использовали перекрестную проверку для выбора лучшей модели, мы используем все доступные данные, чтобы соответствовать выбранной модели. Мы не используем фактические экземпляры модели, которые мы обучили во время перекрестной проверки, для нашей окончательной модели.

Например, мы можем использовать 5-кратную перекрестную проверку, чтобы определить, какую модель лучше использовать между двумя разными моделями регрессии. Однако как только мы определили, какую модель лучше всего использовать, мы используем все данные, чтобы соответствовать окончательной модели. Другими словами, мы не забываем ни одной складки при построении окончательной модели.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *