LOOCV (исключить перекрестную проверку) в программировании на R

Опубликовано: 17 Февраля, 2022

LOOCV (перекрестная проверка без исключения) - это тип подхода к перекрестной проверке, в котором каждое наблюдение рассматривается как набор проверки, а остальные (N-1) наблюдения рассматриваются как обучающий набор. В LOOCV выполняется подгонка модели и прогнозирование с использованием одного набора для проверки наблюдения. Более того, повторение этого N раз для каждого наблюдения в качестве набора для проверки. Модель подогнана, и модель используется для прогнозирования значения для наблюдения. Это частный случай K-кратной перекрестной проверки, в которой количество складок совпадает с количеством наблюдений (K = N). Этот метод помогает уменьшить смещение и случайность. Этот метод направлен на снижение среднеквадратичной ошибки и предотвращение чрезмерной подгонки. Выполнить LOOCV в R-программировании очень просто.

Математическое выражение

LOOCV включает одну кратность для каждого наблюдения, т.е. каждое наблюдение само по себе играет роль набора для проверки. Наблюдения (N-1) играют роль обучающей выборки. При линейном методе наименьших квадратов стоимость производительности одной модели равна стоимости одной модели. В LOOCV можно избежать переоборудования модели при реализации метода LOOCV. MSE (среднеквадратичная ошибка) рассчитывается путем подбора по полному набору данных.

В приведенной выше формуле h i представляет, какое влияние оказывает наблюдение на его собственное соответствие, то есть между 0 и 1, которое наказывает остаток, поскольку он делится на небольшое число. Это раздувает остаток.

Реализация в R

Набор данных:

The Hedonic is a dataset of prices of Census Tracts in Boston. It comprises crime rates, the proportion of 25,000 square feet residential lots, the average number of rooms, the proportion of owner units built prior to 1940 etc of total 15 aspects. It comes pre-installed with Eclat package in R.

R

# Installing the package 
install.packages("Ecdat"
      
# Loading package 
library(Ecdat) 
      
# Structure of dataset in package 
str(Hedonic)

Выход:

Выполнение перекрестной проверки без исключения (LOOCV) для набора данных:

Using the Leave One Out Cross Validation(LOOCV) on the dataset by training the model using features or variables in the dataset.

R

# Installing Packages
install.packages("Ecdat")
install.packages("boot")
install.packages("dplyr")
install.packages("ggplot2")
install.packages("caret")
  
# Loading the packages
library(Ecdat)
library(boot)
library(dplyr)
library(ggplot2)
library(caret)
  
# Model Building
age.glm <- glm(age ~ mv + crim + zn + indus 
               + chas + nox + rm + tax + dis
               + rad + ptratio + blacks + lstat,
               data = Hedonic)
age.glm 
  
# Mean Squared Error
cv.mse <- cv.glm(Hedonic, age.glm)
cv.mse$delta
  
# Generating error of 
# Different models
cv.mse = rep(0,5)
for (i in 1:5)
{
  age.loocv <- glm(age ~ mv + poly(crim, i)
                   + zn + indus + chas + nox
                   + rm + poly(tax, i) + dis
                   + rad + ptratio + blacks
                   + lstat, data = Hedonic)
  cv.mse[i] = cv.glm(Hedonic, age.loocv)$delta[1]
}
  
cv.mse

Выход:

  • Модель age.glm:

Модель age.glm имеет 505 степеней свободы с нулевым отклонением как 400100 и остаточным отклонением как 120200. AIC составляет 4234.

  • Среднеквадратичная ошибка:

Первая ошибка 250.2985 - это среднеквадратичная ошибка (MSE) для обучающего набора, а вторая ошибка 250.2856 - для перекрестной проверки исключения одной ошибки (LOOCV). Сгенерированные выходные числа почти равны.

  • Ошибки разных моделей:

Ошибка постоянно увеличивается. Это говорит о том, что полиномы высокого порядка в общем случае бесполезны.

Преимущества LOOCV следующие:

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

Недостаток LOOCV заключается в следующем:

  • Обучение модели N раз приводит к дорогостоящему времени вычислений, если набор данных большой.