Processing math: 100%
+ - 0:00:00
Notes for current slide
Notes for next slide

Optimizing

Maschinelles Lernen mit R
The R Bootcamp

April 2020

1 / 26




Overfitting vermeiden

  • Overfitting tritt ein, wenn ein Modell die Daten zu genau fitted und deswegen keine guten Vorhersagen liefert

  • Gute Performanz im Training bedeutet also nicht unbedingt gute Performanz im Test.




adapted from victoriarollison.com

2 / 26

Tuning Parameter

  • Die meisten ML Modelle besitzen Tuning Parameter, die die Modellkomplexität kontrollieren

  • Um diese Tuning Parameter zu fitten wird ein Validationsdatensatz kreiert.
  • Vorgehen
    1. Fitte Modell mit verschiedenen Tuning Parameter Werte
    2. Auf Basis des Validationsdatensatzes wähle die besten Tuning Parameter
    3. Fitte Modell für gesamten Traningsdatensatz.

3 / 26

Resampling Methoden

  • Resampling-Methoden automatisieren und generalisieren das Tuning der Modelle

Methode Beschreibung
k-fold cross-validation Trennt die Daten in k-Teile, verwendet jeden Teil einmal als Validationsset, während die restlichen Teile k-1 als Trainingsset dienen.
Bootstrap Über B Bootstrap Runden ziehe Zufallsstrichproben mit Zurücklegen aus den Daten und trenne die Stichprobe in Training und Validation auf.

4 / 26

Resampling Methoden

  • Resampling-Methoden automatisieren und generalisieren das Tuning der Modelle

Methode Beschreibung
k-fold cross-validation Trennt die Daten in k-Teile, verwendet jeden Teil einmal als Validationsset, während die restlichen Teile k-1 als Trainingsset dienen.
Bootstrap Über B Bootstrap Runden ziehe Zufallsstrichproben mit Zurücklegen aus den Daten und trenne die Stichprobe in Training und Validation auf.

5 / 26

Resampling Methoden

  • Resampling-Methoden automatisieren und generalisieren das Tuning der Modelle

Methode Beschreibung
k-fold cross-validation Trennt die Daten in k-Teile, verwendet jeden Teil einmal als Validationsset, während die restlichen Teile k-1 als Trainingsset dienen.
Bootstrap Über B Bootstrap Runden ziehe Zufallsstrichproben mit Zurücklegen aus den Daten und trenne die Stichprobe in Training und Validation auf.

6 / 26

Regression

Decision Trees

Random Forests

7 / 26

Regularized regression

  • Bestraft proportional zum Tuning parameter λ den Loss einer Regression für die Grösse der Modellparameter

Regularizedloss=ni(yiˆyi)2+λpjf(βj))

Name Funktion Strafe
Lasso j| Proportional zu den absoluten Regressionsgewichten.
Ridge βj2 Proportional zu den quadrierten Regressionsgewichten.
Elastic net j| + βj2 Summe von Lasso und Ridge.
8 / 26

Regularized regression

  • Ridge und Lasso verhalten sich erstaunlich unterschiedlich

  • Ridge

    • Durch die Quadrierung werden vor allem extreme βs in ihrer Grösse reduziert.

  • Lasso

    • Bei absoluten Werte werden alle βs gleichermassen in ihrer Grösse reduziert, was zu einer automatischen Feature-Auswahl führt, wenn einige βs Null werden.

9 / 26

Regularized regression

  • Verwende method = "glmnet" für Lasso und Ridge

  • Die Art der Regularisierung wird über das tuneGrid Argument spezifiziert

tuneGrid Einstellungen

Parameter Beschreibung
alpha = 1 Regression mit Lasso Regularisierung.
alpha = 0 Regression mut Ridge Regularisierung.
lambda Gewicht der Regularisierung.
# Trainiere ridge regression
train(form = einkommen ~ .,
data = basel,
method = "glmnet",
trControl = ctrl,
tuneGrid =
expand.grid(alpha = 0, # Ridge
lambda = 1)) # Lambda
# Trainiere lasso regression
train(form = einkommen ~ .,
data = basel,
method = "glmnet",
trControl = ctrl,
tuneGrid =
expand.grid(alpha = 1, # Lasso
lambda = 1)) # Lambda
10 / 26

Regression

Decision Trees

Random Forests

11 / 26

Decision trees

  • Der Tuning Parameter in Decision Trees heisst cp (complexity parameter).

Loss=Impurity+cp(nterminalnodes)

tuneGrid Einstellungen

Parameter Beschreibung
Niedriger cp, z.B. cp<.01 Niedrige Strafe, die zu komplexen Bäumen führt.
Hoher cp, z.B. cp<.20 Hohe Strafe, die zu einfachen Bäumen führt.

12 / 26

Decision trees

  • Der Tuning Parameter in Decision Trees heisst cp (complexity parameter).

Loss=Impurity+cp(nterminalnodes)

tuneGrid Einstellungen

Parameter Beschreibung
Niedriger cp, z.B. cp<.01 Niedrige Strafe, die zu komplexen Bäumen führt.
Hoher cp, z.B. cp<.20 Hohe Strafe, die zu einfachen Bäumen führt.
# Decision Tree mit cp = .01
train(form = einkommen ~ .,
data = basel,
method = "rpart",
trControl = ctrl,
tuneGrid =
expand.grid(cp = .01))
# Decision Tree mit cp = .2
train(form = einkommen ~ .,
data = basel,
method = "rpart",
trControl = ctrl,
tuneGrid =
expand.grid(cp = .2))
13 / 26

Regression

Decision Trees

Random Forests

14 / 26

Random Forest

  • Der Tuning Parameter in Random Trees heisst mtry und kontrolliert die Diversität.
  • mtry bestimmt wie viele Feature für den Split eines Knoten herangezogen werden.

tuneGrid Einstellungen

Parameter Beschreibung
Niedriges mtry, z.B., mtry = 1 Diverser Wald. Auf eine Weise, weniger komplex.
Hohes mtry, z.B., mtry = 5 Monotoner Wald. Auf eine Weise, komplexer.

15 / 26

Random Forest

  • Der Tuning Parameter in Random Trees heisst mtry und kontrolliert die Diversität.
  • mtry bestimmt wie viele Feature für den Split eines Knoten herangezogen werden.

tuneGrid Einstellungen

Parameter Beschreibung
Niedriges mtry, z.B., mtry = 1 Diverser Wald. Auf eine Weise, weniger komplex.
Hohes mtry, z.B., mtry = 5 Monotoner Wald. Auf eine Weise, komplexer.
# Random forest mit mtry = 2
train(form = einkommen ~ .,
data = basel,
method = "rf",
trControl = ctrl,
tuneGrid =
expand.grid(mtry = 2))
# Random forest mit mtry = 5
train(form = einkommen ~ .,
data = basel,
method = "rf",
trControl = ctrl,
tuneGrid =
expand.grid(mtry = 5))
16 / 26

k-fache Cross Validation für Ridge und Lasso

  • Ziel:

    • Identifiziere durch 10-fache Cross Validation die besten Regularisierungsparameter für ein Regressionsmodell

  • Berücksichtige:

    • α ∈ 0, .5, 1
    • λ ∈ 1, 2, ..., 100




18 / 26

trainControl()

  • Spezifiziere über trainControl die Art des Resamplings

trainControl() Argumente

Argument Beschreibung
method Die Resampling Methode; verwende cv für Cross Validation.
number Die Anzahl der "Folds".
# Spezifiziere 10-fache Cross Validation
ctrl_cv <- trainControl(method = "cv",
number = 10)
# Prädiziere einkommen mit glmnet
glmnet_mod <- train(form = einkommen ~ .,
data = basel,
method = "glmnet",
trControl = ctrl_cv)
19 / 26

tuneGrid

  • Spezifiziere über tuneGrid die Kandidatensets für die Tuning Parameter

  • tuneGrid eine liste oder einen data.frame; komfortabel durch expand.grid() erstellt

# Spezifiziere 10-fache Cross Validation
ctrl_cv <- trainControl(method = "cv",
number = 10)
# Prädiziere einkommen mit glmnet
glmnet_mod <- train(form = einkommen ~ .,
data = basel,
method = "glmnet",
trControl = ctrl_cv,
tuneGrid = expand.grid(
alpha = c(0, .5, 1),
lambda = 1:100))
20 / 26

k-fold Cross Validation

# Printe Überblick
glmnet_mod


At the end...

RMSE was used to select the optimal model using the smallest value. The final values used for the model were alpha = 1 and lambda = 27.


glmnet
6120 samples
19 predictor
No pre-processing
Resampling: Cross-Validated (10 fold)
Summary of sample sizes: 5506, 5507, 5508, 5509, 5507, 5509, ...
Resampling results across tuning parameters:
alpha lambda RMSE Rsquared MAE
0.0 1 1054 0.8717 844.0
0.0 2 1054 0.8717 844.0
0.0 3 1054 0.8717 844.0
0.0 4 1054 0.8717 844.0
0.0 5 1054 0.8717 844.0
0.0 6 1054 0.8717 844.0
0.0 7 1054 0.8717 844.0
0.0 8 1054 0.8717 844.0
0.0 9 1054 0.8717 844.0
0.0 10 1054 0.8717 844.0
0.0 11 1054 0.8717 844.0
0.0 12 1054 0.8717 844.0
21 / 26

k-fold Cross Validation

# Visualisiere Tuningparameter Fehlerkurve
plot(glmnet_mod)


At the end...

RMSE was used to select the optimal model using the smallest value. The final values used for the model were alpha = 1 and lambda = 27.

22 / 26

Final model

# Modellparameter unter dem besten Werten
# für alpha und lambda
coef(glmnet_mod$finalModel,
glmnet_mod$bestTune$lambda)


25 x 1 sparse Matrix of class "dgCMatrix"
1
(Intercept) 873.7053
id .
geschlechtm .
alter 108.5944
groesse 1.6993
gewicht -1.1578
bildungobligatorisch -43.2194
bildungsek II -77.9362
bildungsek III -20.9463
konfessionevangelisch-reformiert -7.8896
konfessionkatholisch .
konfessionkonfessionslos 45.1148
konfessionmuslimisch 103.6467
kinder 2.3714
glueck -209.4458
fitness 26.3446
essen 2.7141
alkohol 25.9812
tattoos -16.4525
rhein 3.6709
datause 0.1059
arztbesuche -1.5933
wandern -0.1534
fasnachtnein .
sehhilfenein -0.1204
23 / 26

Model comparison

  • Vergleiche die Performanz für die Validationsets mit resamples()

  • Die summary() des Objekts gibt einen ausführlichen Überblick über die Performanz.

# Einfaches Modell
glm_mod <- train(form = einkommen ~ .,
data = basel,
method = "glm",
trControl = ctrl_cv)
# Berechne Performanzen
resamples_mod <- resamples(
list(glmnet = glmnet_mod,
glm = glm_mod))
# Zeige Überblick
summary(resamples_mod)
24 / 26

Modellvergleich

Vergleiche die Vorhersageperformanz mehrerer Modelle mit resamples().

Das summary() des Outputobjekts printet Vorhersage Fehlerstatistiken der Cross Validation während des Trainings. Das ist eine Schätzung der zukünftigen Vorhersageperformanz!



Call:
summary.resamples(object = resamples_mod)
Models: glmnet, glm
Number of resamples: 10
MAE
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
glmnet 769.4 827.1 836.9 832.1 843.9 880.6 0
glm 788.2 813.2 840.3 832.4 849.0 865.0 0
RMSE
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
glmnet 957.1 1025 1050 1040 1054 1103 0
glm 988.2 1017 1044 1040 1064 1085 0
Rsquared
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
glmnet 0.8601 0.8661 0.8720 0.8721 0.8774 0.8854 0
glm 0.8558 0.8647 0.8736 0.8719 0.8768 0.8847 0
25 / 26




Overfitting vermeiden

  • Overfitting tritt ein, wenn ein Modell die Daten zu genau fitted und deswegen keine guten Vorhersagen liefert

  • Gute Performanz im Training bedeutet also nicht unbedingt gute Performanz im Test.




adapted from victoriarollison.com

2 / 26
Paused

Help

Keyboard shortcuts

, , Pg Up, k Go to previous slide
, , Pg Dn, Space, j Go to next slide
Home Go to first slide
End Go to last slide
Number + Return Go to specific slide
b / m / f Toggle blackout / mirrored / fullscreen mode
c Clone slideshow
p Toggle presenter mode
t Restart the presentation timer
?, h Toggle this help
Esc Back to slideshow