+ - 0:00:00
Notes for current slide
Notes for next slide

Fitting

Maschinelles Lernen mit R
The R Bootcamp

April 2020

1 / 30

Fitting

  • Modelle sind eigentlich Familie von Modellen, wobei jede Parameterkombination ein unterschiedliches Modell definiert
  • Ein Modell zu fitten bedeutet, von der Familie von Modellen dasjenige zu identifizieren welches die Daten am besten abbildet.




angepasst von explainxkcd.com

2 / 30

Loss function

  • Eines zentrales Konzepte in der Statistik und im maschinellen Lernen.
  • Die Loss Funktion ist eine Zusammenfassung der durch ein Modell begangenen Fehler.

Loss=f(Fehler)

Zwei Zwecke

Zweck Beschreibung
Fitting Finde Parameter, die die Verlustfunktion minimieren.
Evaluation Berechne den Verlust für ein gefittetes Modell.

5 / 30

Regression

Decision Trees

Random Forests

6 / 30

Regression

In der Regression, wird ein Kriterium y modelliert, als Summe der Features x1,x2,... mal Gewichte b1,b2,... plus b0, der sogenannte Intercept oder Ordinatenabschnitt.

y^=b0+b1×x1+b2×x2+...

Ein Regressionskoeffizient bi gibt an, wie stark sich y^ verändert, wenn sich xi um 1 verändert.

Ceteris paribus, je extremer bi, desto wichtiger ist xi für die Vorhersage von y (Cave: die Skala von xi beeinflusst bi!).

Wenn bi=0, heisst das, xi bringt keinen Zusatznutzen bei der Vorhersage von y.

7 / 30

Loss function in der Regression

  • Mean Squared Error (MSE)

    • Mittlere Quadratsumme der Abweichungen zwischen vorhergesagten und tatsächlichen Werten.
MSE=1ni1,...,n(yiy^i)2
  • Mean Absolute Error (MAE)

    • Mittlere absolute Abweichungen zwischen vorhergesagten und tatsächlichen Werten.
MAE=1ni1,...,n|yiy^i|

8 / 30

Fitting

  • Analytisch

    • In gewissen Fällen, können die Parameterwerte direkt berechnet werden, z.B., mit der Normalgleichung:

b=(XTX)1XTy
  • Numerisch

    • In den meisten Fällen, müssen die Parameter jedoch mittels gerichtetem trial and error Verfahren gefunden werden, z.B., mittels gradient descent:

bn+1=bn+γF(bn)




angepasst von me.me

9 / 30

Fitting

  • Analytisch

    • In gewissen Fällen, können die Parameterwerte direkt berechnet werden, z.B., mit der Normalgleichung:

b=(XTX)1XTy
  • Numerisch

    • In den meisten Fällen, müssen die Parameter jedoch mittels gerichtetem trial and error Verfahren gefunden werden, z.B., mittels gradient descent:

bn+1=bn+γF(bn)



angepasst von dunglai.github.io

angepasst von dunglai.github.io

10 / 30

Zwei Problemtypen

  • Regression

    • Vorhersage eines numerischen, kontinuierlichen Kriteriums.

    • Vorhersage des Cholesterinspiegels mit Alter

  • Klassifikation

    • Vorhersage eines kategorialen, diskreten Kriteriums.

    • Vorhersage, ob Herzinfarkt ja oder nein


11 / 30

Logistische Regression

  • In der logistischen Regression, modellieren wir eine kategoriale Variable y ∈ (0,1) als gewichtete Summe der Features, wobei wir die Vorhersage mit einer logistischen Linkfunktion transformieren:

y^=logistisch(b0+b1×x1+...)

  • Die logistische Funktion bildet Vorhersagen auf den Bereich von 0 und 1 – die beiden Kategorien – ab.

logistisch(x)=11+exp(x)

12 / 30

Logistische Regression

  • In der logistischen Regression, modellieren wir eine kategoriale Variable y ∈ (0,1) als gewichtete Summe der Features, wobei wir die Vorhersage mit einer logistischen Linkfunktion transformieren:

y^=logistisch(b0+b1×x1+...)

  • Die logistische Funktion bildet Vorhersagen auf den Bereich von 0 und 1 – die beiden Kategorien – ab.

logistisch(x)=11+exp(x)

13 / 30

Loss in Klassifikation

  • Distanz
    • LogLoss wird i.A.R. zum Fitten von Parametern, verwendet, und wie MSE und MAE auch zur Evaluation.

LogLoss=1nin(log(y^)y+log(1y^)(1y)) MSE=1nin(yy^)2;MAE=1nin|yy^|

  • Übereinstimmung
    • 0-1 loss evaluiert die Übereinstimmung zwischen vorhergesagter Klasse und tatsächlicher Klasse , was im Vergleich leicht zu interpretieren ist.

Loss01=1ninI(yy^)

14 / 30

Wahrheitsmatrix

  • Die Wahrheitsmatrix (confusion matrix) enthält die Anzahl einer bestimmten Klasse zugeordneter Werte als Funktion der tatsächlichen Klasse.
  • Anhand der Wahrheitsmatrix können unterschiedliche statistische Gütekriterien berechnet werden.


Wahrheitsmatrix

y = 1 y = 0
ŷ = 1 Richtig positiv (RP) Falsch positiv (FP)
ŷ = 0 Falsch negativ (FN) Richtig negativ (RN)

Genauigkeit: Prozentsatz richtiger Vorhersagen über alle Fälle hinweg.

Richt.=RP+RNRP+RN+FN+FP=1Loss01

Sensitivität: Prozentsatz richtiger Vorhersagen über tatsächlich positive Fälle hinweg.

Sensitivität=RPRP+FN

Spezifität: Prozentsatz richtiger Vorhersagen über tatsächlich negative Fälle hinweg.

Spezifität=RNRN+FP

15 / 30

Wahrheitsmatrix

  • Die Wahrheitsmatrix (confusion matrix) enthält die Anzahl einer bestimmten Klasse zugeordneter Werte als Funktion der tatsächlichen Klasse.
  • Anhand der Wahrheitsmatrix können unterschiedliche statistische Gütekriterien berechnet werden.


Wahrheitsmatrix

Krank Gesund
"Krank" RP = 3 FP = 1
"Gesund" FN = 1 RN = 2

Genauigkeit: Prozentsatz richtiger Vorhersagen über alle Fälle hinweg.

Richt.=RP+RNRP+RN+FN+FP=1Loss01

Sensitivität: Prozentsatz richtiger Vorhersagen über tatsächlich positive Fälle hinweg.

Sensitivität=RPRP+FN

Spezifität: Prozentsatz richtiger Vorhersagen über tatsächlich negative Fälle hinweg.

Spezifität=RNRN+FP

16 / 30

carets Haupfunktionen

Funktion Beschreibung
trainControl() Wähle Spezifikationen dafür, wie das Modell gefittet werden soll.
train() Spezifiziere das Modell und finde die besten Parameterschätzwerte.
postResample() Evaluiere die Modellperformanz (Fitting oder Vorhersage) für Regressionsprobleme.
confusionMatrix() Evaluiere die Modellperformanz (Fitting oder Vorhersage) für Klassifikationsprobleme.
# Schritt 1: Definiere Kontrollparameter
# trainControl()
ctrl <- trainControl(...)
# Schritt 2: Fitte und exploriere Modell
# train()
mod <- train(...)
summary(mod)
mod$finalModel # bestes Modell
# Schritt 3: Beurteile Fit
# predict(), postResample(),
# confusionMatrix()
fit <- predict(mod)
postResample(fit, truth)
confusionMatrix(fit, truth)
18 / 30

trainControl()

  • trainControl() steuert, wie caret ein Modell fittet.
  • Bis zur Session Optimisierung verwenden wir method = "none".


# Fitte das Modell ohne fortgeschrittene
# Tuningmethoden der Parameter
ctrl <- trainControl(method = "none")
# zeige Dokumentation
?trainControl

19 / 30

train()

  • train() ist caret's Zugpferd, wenn es um Fitting geht. Es können über 200 Modelle mit nur leichten Änderungen im method Argument gefittet werden.
Argument Beschreibung
form Modellformel, zur Spezifikation von Kriterium und Features.
data Datensatz für die Parameterschätzung.
method Der Modellalgorithmus.
trControl Kontrollparameter für den Fittingprozess.
tuneGrid, preProcess Coole Dinge für später.
# Fitte eine Regression zur Vorhersage des
# Einkommens
eink_mod <-
train(form = einkommen ~ ., # Formel
data = basel, # Daten
method = "glm", # Regression
trControl = ctrl) # Kontroll-
# parameter
eink_mod
Generalized Linear Model
6120 samples
19 predictor
No pre-processing
Resampling: None
20 / 30

train()

  • train() ist caret's Zugpferd, wenn es um Fitting geht. Es können über 200 Modelle mit nur leichten Änderungen im method Argument gefittet werden.
Argument Beschreibung
form Modellformel, zur Spezifikation von Kriterium und Features.
data Datensatz für die Parameterschätzung.
method Der Modellalgorithmus.
trControl Kontrollparameter für den Fittingprozess.
tuneGrid, preProcess Coole Dinge für später.
# Fitte random forest zur Vorhersage von
# Einkommen
eink_mod <-
train(form = einkommen ~ ., # Formel
data = basel, # Daten
method = "rf", # Random Forest
trControl = ctrl) # Kontroll-
# parameter
eink_mod
Random Forest
6120 samples
19 predictor
No pre-processing
Resampling: None
21 / 30

train()

  • train() ist caret's Zugpferd, wenn es um Fitting geht. Es können über 200 Modelle mit nur leichten Änderungen im method Argument gefittet werden.
  • Alle 200+ Modelle findest du hier.



22 / 30

train()

  • Das Kriterium muss die richtige Klasse haben:

    • numeric Kriterium → Regression
    • factor Kriterium → Klassifkation


# A tibble: 5 x 5
Ausfall Alter Geschlecht Karten Bildung
<dbl> <dbl> <chr> <dbl> <dbl>
1 0 45 M 3 11
2 1 36 F 2 14
3 0 76 F 5 12
4 1 25 M 2 17
5 1 36 F 3 12
# Regressionsproblem
loan_mod <- train(form = Ausfall ~ .,
data = Loans,
method = "glm",
trControl = ctrl)
# Klassifikationsproblem
load_mod <- train(form = factor(Ausfall) ~ .,
data = Loans,
method = "glm",
trControl = ctrl)
23 / 30

.$finalModel

  • Die train() Funktion gibt eine liste zurück. Diese enthält ein finalModel Element - das ist unser bestes gefittetes Model.
  • Greife auf das Modell mit .$finalModel zu und exploriere das Objekt mit generischen Funktionen:


Funktion Beschreibung
summary() Überblick über die wichtigsten Resultate.
names() Zeige Namen aller benannten Elemente (häufig mit $ ansteuerbar).
# Fitte Regressionsmodell
eink_mod <-
train(form = einkommen ~ alter + groesse,
data = basel, # Daten
method = "glm", # Regression
trControl = ctrl) # Kontrollparameter
# Zeige benannte Elemente
names(eink_mod$finalModel)
[1] "coefficients" "residuals" "fitted.values"
[4] "effects" "R" "rank"
[ reached getOption("max.print") -- omitted 28 entries ]
24 / 30

.$finalModel

  • Die train() Funktion gibt eine liste zurück. Diese enthält ein finalModel Element - das ist unser bestes gefittetes Model.
  • Greife auf das Modell mit .$finalModel zu und exploriere das Objekt mit generischen Funktionen:


Funktion Beschreibung
summary() Überblick über die wichtigsten Resultate.
names() Zeige Namen aller benannten Elemente (häufig mit $ ansteuerbar).
# Fitte Regressionsmodell
eink_mod <-
train(form = einkommen ~ alter + groesse,
data = basel, # Daten
method = "glm", # Regression
trControl = ctrl) # Kontrollparameter
# Zugriff auf spezifische Elemente
eink_mod$finalModel$coefficients
(Intercept) alter groesse
877.2395 149.0087 0.6194
25 / 30

.$finalModel

  • Die train() Funktion gibt eine liste zurück. Diese enthält ein finalModel Element - das ist unser bestes gefittetes Model.
  • Greife auf das Modell mit .$finalModel zu und exploriere das Objekt mit generischen Funktionen:


Funktion Beschreibung
summary() Überblick über die wichtigsten Resultate.
names() Zeige Namen aller benannten Elemente (häufig mit $ ansteuerbar).
# Zeige Modelloutput
summary(eink_mod)
Call:
NULL
Deviance Residuals:
Min 1Q Median 3Q Max
-4042 -849 11 842 4748
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 877.239 220.726 3.97 7.1e-05 ***
[ erreichte getOption("max.print") -- 2 Zeilen ausgelassen ]
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for gaussian family taken to be 1543046)
Null deviance: 5.1695e+10 on 6119 degrees of freedom
Residual deviance: 9.4388e+09 on 6117 degrees of freedom
AIC: 104578
Number of Fisher Scoring iterations: 2
26 / 30

predict()

  • Die predict() Funktion macht Modellvorhersagen. Dazu muss man lediglich den Modelloutput als erstes Argument spezifizieren.


# Extrahiere gefittete Werte
glm_fits <- predict(object = eink_mod)
glm_fits[1:8]
1 2 3 4 5 6 7 8
9032 6035 4565 8119 8884 8432 10221 11858

27 / 30

postResample()

  • Die postResample() Funktion erstellt eine einfache Zusammenfassung der Modellperformanz bei Regressionsproblemen. Zu spezifizierende Argumente sind die vorhergesagten Werte und die tatsächlichen Werte.


# Evaluiere Modellperformanz
postResample(glm_fits,
basel$einkommen)
RMSE Rsquared MAE
1241.8895 0.8174 993.5378

28 / 30

confusionMatrix()

  • confusionMatrix() erstellt eine Zusammenfassung der Modellperformanz bei Klassifikationsproblemen. Inputs sind wiederum die vorhergesagten und tatsächlichen Werte.


# Regressionsmodell zur Klassifikation
sehhilfe_mod <-
train(form = factor(sehhilfe) ~ alter + geschlecht,
data = basel,
method = "glm",
trControl = ctrl)
# Evaluiere Modellperformanz
confusionMatrix(predict(sehhilfe_mod),
basel$sehhilfe)



Confusion Matrix and Statistics
Reference
Prediction ja nein
ja 3984 2136
nein 0 0
Accuracy : 0.651
95% CI : (0.639, 0.663)
No Information Rate : 0.651
P-Value [Acc > NIR] : 0.506
Kappa : 0
Mcnemar's Test P-Value : <2e-16
Sensitivity : 1.000
Specificity : 0.000
Pos Pred Value : 0.651
Neg Pred Value : NaN
Prevalence : 0.651
Detection Rate : 0.651
[ erreichte getOption("max.print") -- 5 Zeilen ausgelassen ]
29 / 30

Fitting

  • Modelle sind eigentlich Familie von Modellen, wobei jede Parameterkombination ein unterschiedliches Modell definiert
  • Ein Modell zu fitten bedeutet, von der Familie von Modellen dasjenige zu identifizieren welches die Daten am besten abbildet.




angepasst von explainxkcd.com

2 / 30
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