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?

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert