Walidacja krzyżowa leave-one-out w r (z przykładami)
Aby ocenić wydajność modelu na zbiorze danych, musimy zmierzyć, jak dobrze przewidywania dokonane przez model odpowiadają obserwowanym danym.
Powszechnie stosowaną metodą jest weryfikacja krzyżowa Leave-One-Out (LOOCV) , która wykorzystuje następujące podejście:
1. Podziel zbiór danych na zbiór uczący i testowy, wykorzystując wszystkie obserwacje z wyjątkiem jednej jako część zbioru uczącego.
2. Utwórz model wykorzystując wyłącznie dane ze zbioru uczącego.
3. Wykorzystać model do przewidzenia wartości odpowiedzi obserwacji wyłączonej z modelu i obliczyć błąd średniokwadratowy (MSE).
4. Powtórz ten proces n razy. Oblicz testowe MSE jako średnią ze wszystkich testowych MSE.
Najłatwiejszym sposobem uruchomienia LOOCV w R jest użycie funkcji trainControl() z biblioteki caret w R.
Ten samouczek zawiera szybki przykład użycia tej funkcji do wykonania LOOCV dla danego modelu w R.
Przykład: weryfikacja krzyżowa typu Leave-One-Out w R
Załóżmy, że mamy następujący zbiór danych w 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
Poniższy kod pokazuje, jak dopasować model regresji liniowej do tego zbioru danych w języku R i wykonać LOOCV, aby ocenić wydajność modelu:
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
Oto jak zinterpretować wynik:
- Do zbudowania 10 modeli wykorzystano 10 różnych próbek. W każdym modelu zastosowano 2 zmienne predykcyjne.
- Nie przeprowadzono żadnego wstępnego przetwarzania. Oznacza to, że przed dopasowaniem modeli nie skalowaliśmy danych w żaden sposób.
- Metodą ponownego próbkowania, którą zastosowaliśmy do wygenerowania 10 próbek, była walidacja krzyżowa Leave-One-Out.
- Wielkość próby dla każdego zestawu treningowego wynosiła 9.
- RMSE: średni błąd kwadratowy. Mierzy średnią różnicę między przewidywaniami dokonanymi przez model a rzeczywistymi obserwacjami. Im niższy RMSE, tym dokładniej model może przewidzieć rzeczywiste obserwacje.
- Rkwadrat: Jest to miara korelacji między przewidywaniami modelu a rzeczywistymi obserwacjami. Im wyższy współczynnik R-kwadrat, tym dokładniej model może przewidzieć rzeczywiste obserwacje.
- MAE: Średni błąd bezwzględny. Jest to średnia bezwzględna różnica między przewidywaniami modelu a rzeczywistymi obserwacjami. Im niższy MAE, tym dokładniej model może przewidzieć rzeczywiste obserwacje.
Każdy z trzech pomiarów podanych w wyniku (RMSE, R-kwadrat i MAE) daje nam wyobrażenie o działaniu modelu na niepublikowanych danych.
W praktyce zazwyczaj dopasowujemy kilka różnych modeli i porównujemy trzy metryki dostarczone przez przedstawione tutaj wyniki, aby zdecydować, który model daje najniższy poziom błędów testowych i dlatego jest najlepszym modelem do użycia.