A: so verwenden sie traincontrol zur steuerung von trainingsparametern
Um zu beurteilen, wie gut ein Modell in einen Datensatz passt, müssen wir seine Leistung anhand von Beobachtungen analysieren, die es noch nie zuvor gesehen hat.
Eine der gebräuchlichsten Methoden, dies zu erreichen, ist die k-fache Kreuzvalidierung , die den folgenden Ansatz verwendet:
1. Teilen Sie einen Datensatz zufällig in k Gruppen oder „Faltungen“ von ungefähr gleicher Größe auf.
2. Wählen Sie eine der Falten als Rückhalteset. Passen Sie die Schablone an die verbleibenden K-1-Falten an. Berechnen Sie den MSE-Test anhand der Beobachtungen in der gespannten Lage.
3. Wiederholen Sie diesen Vorgang k -mal, wobei Sie jedes Mal einen anderen Satz als Ausschlusssatz verwenden.
4. Berechnen Sie den Gesamttest-MSE als Durchschnitt der k Test-MSEs.
Der einfachste Weg, eine k-fache Kreuzvalidierung in R durchzuführen, ist die Verwendung der Funktionen trainControl() und train() aus der Caret- Bibliothek in R.
Die Funktion trainControl() wird verwendet, um die Trainingsparameter anzugeben (z. B. Art der zu verwendenden Kreuzvalidierung, Anzahl der zu verwendenden Falten usw.), und die Funktion train() wird verwendet, um das Modell tatsächlich an die Daten anzupassen. .
Das folgende Beispiel zeigt, wie man die Funktionen trainControl() und train() in der Praxis nutzt.
Beispiel: Verwendung von trainControl() 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
Angenommen, wir verwenden die Funktion lm() , um ein multiples lineares Regressionsmodell an diesen Datensatz anzupassen, wobei wir x1 und x2 als Prädiktorvariablen und y als Antwortvariable verwenden:
#fit multiple linear regression model to data fit <- lm(y ~ x1 + x2, data=df) #view model summary summary(fit) Call: lm(formula = y ~ x1 + x2, data = df) Residuals: Min 1Q Median 3Q Max -3.6650 -1.9228 -0.3684 1.2783 5.0208 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 21.2672 6.9927 3.041 0.0188 * x1 0.7803 0.6942 1.124 0.2981 x2 -1.1253 0.4251 -2.647 0.0331 * --- Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 3.093 on 7 degrees of freedom Multiple R-squared: 0.801, Adjusted R-squared: 0.7441 F-statistic: 14.09 on 2 and 7 DF, p-value: 0.003516
Mithilfe der Koeffizienten in der Modellausgabe können wir das angepasste Regressionsmodell schreiben:
y = 21,2672 + 0,7803*(x 1 ) – 1,1253(x 2 )
Um eine Vorstellung davon zu bekommen, wie gut dieses Modell bei unbekannten Beobachtungen abschneidet, können wir eine k-fache Kreuzvalidierung verwenden.
Der folgende Code zeigt, wie Sie die trainControl()- Funktion des Caret- Pakets verwenden, um eine k-fache Kreuzvalidierung ( method=“cv“ ) anzugeben, die 5 Falten ( number=5 ) verwendet.
Anschließend übergeben wir diese trainControl() -Funktion an die train()- Funktion, um tatsächlich die k-fache Kreuzvalidierung durchzuführen:
library (caret) #specify the cross-validation method ctrl <- trainControl(method = " cv ", number = 5 ) #fit a regression model and use k-fold CV to evaluate performance model <- train(y ~ x1 + x2, data = df, method = " lm ", trControl = ctrl) #view summary of k-fold CV print (model) Linear Regression 10 samples 2 predictors No pre-processing Resampling: Cross-Validated (5 fold) Summary of sample sizes: 8, 8, 8, 8, 8 Resampling results: RMSE Rsquared MAE 3.612302 1 3.232153 Tuning parameter 'intercept' was held constant at a value of TRUE
Aus dem Ergebnis können wir ersehen, dass das Modell fünfmal mit einer Stichprobengröße von jeweils acht Beobachtungen angepasst wurde.
Jedes Mal wurde das Modell dann verwendet, um die Werte der beiden gespeicherten Beobachtungen vorherzusagen, und jedes Mal wurden die folgenden Metriken berechnet:
- 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.
- 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.
Im Ergebnis wird der Durchschnitt der RMSE- und MAE-Werte der fünf Komponenten angezeigt:
- RMSE: 3,612302
- MAE: 3.232153
Diese Metriken geben uns eine Vorstellung von der Leistung des Modells bei neuen Daten.
In der Praxis passen wir normalerweise mehrere verschiedene Modelle an und vergleichen diese Metriken, um festzustellen, welches Modell bei unsichtbaren Daten am besten abschneidet.
Beispielsweise könnten wir ein polynomiales Regressionsmodell anpassen und eine K-fache Kreuzvalidierung durchführen, um zu sehen, wie die RMSE- und MAE-Metriken im Vergleich zum multiplen linearen Regressionsmodell abschneiden.
Hinweis Nr. 1: In diesem Beispiel verwenden wir k=5 Falten, Sie können jedoch eine beliebige Anzahl von Falten auswählen. In der Praxis wählen wir typischerweise zwischen 5 und 10 Lagen, da sich dies als die optimale Lagenzahl erweist, die zu zuverlässigen Testfehlerraten führt.
Hinweis Nr. 2 : Die Funktion trainControl() akzeptiert viele mögliche Argumente. Die vollständige Dokumentation zu dieser Funktion finden Sie hier .
Zusätzliche Ressourcen
Die folgenden Tutorials bieten zusätzliche Informationen zu Trainingsmodellen:
Einführung in die K-Fold-Kreuzvalidierung
Einführung in die Leave-One-Out-Kreuzvalidierung
Was ist Überanpassung beim maschinellen Lernen?