Leave-one-out-kreuzvalidierung in r (mit beispielen)
Um die Leistung eines Modells anhand eines Datensatzes zu bewerten, müssen wir messen, wie gut die vom Modell gemachten Vorhersagen mit den beobachteten Daten übereinstimmen.
Eine hierfür häufig verwendete Methode ist die sogenannte Leave-One-Out Cross-Validation (LOOCV) , die den folgenden Ansatz verwendet:
1. Teilen Sie einen Datensatz in einen Trainingssatz und einen Testsatz auf und verwenden Sie dabei alle Beobachtungen bis auf eine als Teil des Trainingssatzes.
2. Erstellen Sie ein Modell, das nur Daten aus dem Trainingssatz verwendet.
3. Verwenden Sie das Modell, um den Antwortwert der vom Modell ausgeschlossenen Beobachtung vorherzusagen und den mittleren quadratischen Fehler (MSE) zu berechnen.
4. Wiederholen Sie diesen Vorgang n -mal. Berechnen Sie den Test-MSE als Durchschnitt aller Test-MSE.
Der einfachste Weg, LOOCV in R auszuführen, ist die Verwendung der trainControl()- Funktion aus der Caret- Bibliothek in R.
Dieses Tutorial bietet ein kurzes Beispiel dafür, wie Sie diese Funktion verwenden, um LOOCV für ein bestimmtes Modell in R durchzuführen.
Beispiel: Leave-One-Out-Kreuzvalidierung in R
Angenommen, wir haben den folgenden Datensatz in 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
Der folgende Code zeigt, wie man in R ein multiples lineares Regressionsmodell an diesen Datensatz anpasst und LOOCV durchführt, um die Leistung des Modells zu bewerten:
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
So interpretieren Sie das Ergebnis:
- Für den Bau von 10 Modellen wurden 10 verschiedene Muster verwendet. Jedes Modell verwendete zwei Prädiktorvariablen.
- Es fand keine Vorverarbeitung statt. Das heißt, wir haben die Daten vor der Anpassung der Modelle in keiner Weise skaliert .
- Die Resampling-Methode, die wir zur Generierung der 10 Stichproben verwendeten, war die Leave-One-Out-Kreuzvalidierung.
- Die Stichprobengröße für jeden Trainingssatz betrug 9.
- RMSE: quadratischer Mittelwertfehler. Dies misst den durchschnittlichen Unterschied zwischen den Vorhersagen des Modells und den tatsächlichen Beobachtungen. Je niedriger der RMSE, desto genauer kann ein Modell tatsächliche Beobachtungen vorhersagen.
- Rsquared: Dies ist ein Maß für die Korrelation zwischen Vorhersagen des Modells und tatsächlichen Beobachtungen. Je höher das R-Quadrat, desto genauer kann ein Modell tatsächliche Beobachtungen vorhersagen.
- MAE: Der durchschnittliche absolute Fehler. Dies ist die durchschnittliche absolute Differenz zwischen den Vorhersagen des Modells und den tatsächlichen Beobachtungen. Je niedriger der MAE, desto genauer kann ein Modell tatsächliche Beobachtungen vorhersagen.
Jede der drei im Ergebnis bereitgestellten Messungen (RMSE, R-Quadrat und MAE) gibt uns eine Vorstellung von der Leistung des Modells bei unveröffentlichten Daten.
In der Praxis passen wir in der Regel mehrere unterschiedliche Modelle an und vergleichen die drei Metriken, die sich aus den hier vorgestellten Ergebnissen ergeben, um zu entscheiden, welches Modell die niedrigsten Testfehlerraten erzeugt und daher das beste zu verwendende Modell ist.