2. Regression
2
Motivation§ Regressionsanalysen modellieren den Zusammenhang
zwischen einem oder mehreren unabhängigen Merkmalen (z.B. Gewicht und PS) und einemabhängigen Merkmal (z.B. Verbrauch)
§ Intuition: Wie lässt sich das abhängige Merkmal durch
die unabhängigen Merkmale erklären?
§ Hierzu wird ein Modell angenommen, wie die Merkmale
zusammenhängen und dessen Parameter anhand
von verfügbaren Daten bestimmt
Data Science / Kapitel 2: Regression
3
Motivation§ Beispiel: Vorhersage des Verbrauchs (mpg)
eines Autos basierend auf seiner Leistung (hp)
(und später weiteren Merkmalen)
§ Daten: Auto MPG Datensatz aus UCI ML Repository
https://archive.ics.uci.edu/ml/datasets/auto+mpg
§ 398 Autos (392 mit vollständigen Merkmalen)
§ 8 Merkmale (Verbrauch, Zylinder, Gewicht, etc.)
Data Science / Kapitel 2: Regression
4
Motivation
Data Science / Kapitel 2: Regression
5
Inhalt§ 2.1 Einfache lineare Regression
§ 2.2 Multiple lineare Regression
§ 2.3 Nominale und ordinale Merkmale
§ 2.4 Gradientenabstiegsverfahren
§ 2.5 Polynomiale Regression
§ 2.6 Merkmalstransformation
§ 2.7 Evaluation
§ 2.8 Regularisierung
Data Science / Kapitel 2: Regression
6
2.1 Einfache lineare Regression§ Einfache lineare Regression betrachtet Datenpunkte
und nimmt an, dass das das metrische Merkmal ylinear vom metrischen Merkmal x abhängt
§ Das angenommene Modell hat somit die Form
y = w0 + w1 x Modell
Parameter
AbhängigesMerkmal
UnabhängigesMerkmal
(x1, y1), . . . , (xn, yn)
Data Science / Kapitel 2: Regression
7
Einfache lineare Regression§ Verschiedene Werte der Parameter w0 und w1
entsprechen verschiedenen Geraden
§ Wir benötigen ein Gütekriterium, um zu bestimmen,
welche Gerade die beste ist
w0 = 0 w1 = 0.2
w0 = 35 w1 = -0.1
Data Science / Kapitel 2: Regression
8
Mittelwert, Varianz und Standardabweichung§ Wir definieren den Mittelwert unserer Merkmale als
§ Die Varianz unserer Merkmale ist definiert als
§ Die Werte σx und σy heißen Standardabweichungder Merkmale x und y
x = 1n
nÿ
i=1xi y = 1
n
nÿ
i=1yi
‡ 2x = 1
n
nÿ
i=1(xi ≠ x)2 ‡ 2
y = 1n
nÿ
i=1(yi ≠ y)2
Data Science / Kapitel 2: Regression
9
Kovarianz§ Kovarianz covx,y misst inwiefern die beiden Merkmale x
und y zusammenhängen, d.h. sich in die gleiche Richtung
bzw. entgegengesetzte Richtungen ändern
§ Große Kovarianz deutet auf einen Zusammenhang hin
§ ein positiver Wert zeigt an, dass sich die beiden Merkmale
in die gleiche Richtung ändern
§ ein negativer Wert zeigt an, dass sich die beiden Merkmale
in entgegengesetzte Richtungen ändern
covx,y = 1n
nÿ
i=1(xi ≠ x)(yi ≠ y)
Data Science / Kapitel 2: Regression
10
Korrelationskoeffizient nach Pearson§ Pearsons Korrelationskoeffizient misst inwiefern ein
linearer Zusammenhang zwischen zwei Merkmalen xund y besteht
§ Pearsons Korrelationskoeffizient nimmt Werte in [-1,+1] an
§ Wert -1 zeigt negative lineare Korrelation an
§ Wert 0 zeigt keine lineare Korrelation an
§ Wert 1 zeigt positive lineare Korrelation an
corx,y =
nqi=1
(xi ≠ x)(yi ≠ y)Û
nqi=1
(xi ≠ x)Û
nqi=1
(yi ≠ y)= covx,y
‡x‡y
Data Science / Kapitel 2: Regression
11
Korrelationskoeffizient nach Pearson
corhp,mpg ¥ ≠0.7784
Data Science / Kapitel 2: Regression
12
Anscombes Quartett
§ Alle vier Datensätze haben den gleichen Mittelwert, die
gleiche Varianz, den gleichen Korrelationskoeffizientensowie die gleiche optimale Regressionsgerade
Data Science / Kapitel 2: Regression
13
Korrelation und Kausalität§ Korrelation zwischen zwei Merkmalen bedeutet nicht,
dass eine Kausalität, d.h. Wirkzusammenhang,
zwischen den beiden besteht
§ Beispiele:
§ Zahl der Fernseher und Einkommen eines Haushalts
§ Leistung eines PKWs und Schuhgröße des Halters
§ Verkauf von Weihnachtsschmuck und Selbstmordrate
§ Korrelation des Tages: http://www.correlated.org
§ Spurious Correlations: http://www.tylervigen.com/
Data Science / Kapitel 2: Regression
14
Straffunktion und Residuen§ Straffunktion (loss function) misst wie gut unser Modell,
für eine bestimmte Wahl von Parameterwerten, unsere
Daten beschreibt (d.h. wie viel wir verlieren, wenn
wir unser Modell statt der Daten verwenden)
§ Residuum (residual) des Datenpunkts (xi, yi) misst wie weit
der beobachte Wert yi von der Vorhersage abweicht
(yi ≠ yi) = (yi ≠ (w0 + w1 xi)) = (yi ≠ w0 ≠ w1 xi)
Data Science / Kapitel 2: Regression
15
Residuen
Data Science / Kapitel 2: Regression
16
Quadratischer Fehler§ Einfache lineare Regression (ordinary least squares)
verwendet die Summe der quadrierten Residuen(sum of squared errors – SSE) als Straffunktion
§ Zum Bestimmen der optimalen Parameter w0* und w1
*
müssen wir folgendes Optimierungsproblem lösen
L(w0, w1) =nÿ
i=1(yi ≠ w0 ≠ w1 xi)2
arg minw0,w1
nÿ
i=1(yi ≠ w0 ≠ w1 xi)2
Data Science / Kapitel 2: Regression
17
Plotten der Straffunktion§ Straffunktion für unsere Beispieldaten sieht wie folgt aus
Data Science / Kapitel 2: Regression
18
Analytische Bestimmung optimaler Parameter§ Optimale Parameterwerte lassen sich im Fall der
einfachen linearen Regression analytisch bestimmen
1) Bestimme partielle Ableitungen der Straffunktion
nach den Parametern w0 und w1
2) Bestimme gemeinsame Nullstelle durch Lösen
des linearen Gleichungssystems
ˆL
ˆ w0= ≠2
nÿ
i=1(yi ≠ w0 ≠ w1 xi)
ˆL
ˆ w1= ≠2
nÿ
i=1(yi ≠ w0 ≠ w1 xi) xi
ˆL
ˆ w0= 0 ˆL
ˆ w1= 0
Data Science / Kapitel 2: Regression
19
Analytische Bestimmung optimaler Parameter§ Geschlossene Lösungen für optimale Parameterwerte
wú0 = 1
n
nÿ
i=1yi ≠ wú
11n
nÿ
i=1xi
wú1 =
nnq
i=1xiyi ≠
3nq
i=1xi
4 3nq
i=1yi
4
nnq
i=1x2
i ≠3
nqi=1
xi
42
Data Science / Kapitel 2: Regression
20
Analytische Bestimmung optimaler Parameter§ Optimale Parameter für unsere Beispieldaten
wú0 = 39.9359 wú
1 = ≠0.1578
Data Science / Kapitel 2: Regression
21
Bestimmtheitsmaߧ Bestimmtheitsmaß (R2 coefficient of determination) misst
wie gut die bestimmte Regressionsgerade die Datenannähert, d.h. wie gut sie die in den Daten
beobachtete Variation erklärt
R2 = 1 ≠
nqi=1
(yi ≠ yi)2
nqi=1
(yi ≠ y)2
Data Science / Kapitel 2: Regression
22
Einfache lineare Regression in Pythonimport numpy as npimport pandas as pdimport seaborn as snsimport matplotlib.pyplot as pltfrom sklearn import linear_model, metrics
# Autodaten einlesencars = pd.read_csv('../data/auto-mpg/auto-mpg.data', header=None, sep='\s+')
# Verbrauchswerte extrahiereny = cars.iloc[:,0].values
# Leistungswerte extrahierenX = cars.iloc[:,[3]].values
# Plot erstelleng = sns.regplot(x=X, y=y, fit_reg=False)
# Einfache lineare Regressionreg = linear_model.LinearRegression()reg.fit(X,y)plt.plot(X, reg.predict(X), color='red')
# Plot beschriftenplt.xlabel('Leistung [hp]')plt.ylabel('Verbrauch [mpg]')
# Plot anzeigenplt.show()
Data Science / Kapitel 2: Regression
23
Einfache lineare Regression in Python
§ Vollständiges Jupyter-Notebook unter:
http://swl.htwsaar.de/.../2017-vl-ds-kap2-regression.html
http://swl.htwsaar.de/.../2017-vl-ds-kap2-regression.ipynb
# Koeffizienten und Bestimmtheitsmaß ausgebenprint('Parameter:')print('w0: %f'%reg.intercept_)print('w1: %f'%reg.coef_[0]) print('Bestimmtheitsmaß')print('R2: %f'%metrics.r2_score(y,reg.predict(X)))
Data Science / Kapitel 2: Regression
24
Zusammenfassung§ Lineare Regression sagt ein abhängiges metrisches
Merkmal anhand eines unabhängigenmetrischen Merkmals voraus
§ Straffunktion betrachtet die Summe der quadrierten Residuen, d.h. Abweichungen zwischen dem
eigentlichen Wert und der Vorhersage
§ Optimale Parameter der Regressionsgerade
lassen sich analytisch bestimmen
Data Science / Kapitel 2: Regression
25
Literatur[1] L. Fahrmeir, R. Künstler, I. Pigeot und G. Tutz:
Statistik – Der Weg zur Datenanalyse,
Springer, 2017 (Kapitel 12)
[2] S. Raschka: Machine Learning in Python,
mitp, 2017 (Kapitel 10)
Data Science / Kapitel 2: Regression
26
2.2 Multiple lineare Regression§ Multiple lineare Regression betrachtet Datenpunkte
und nimmt an, dass sich das abhängige Merkmal yi als
Linearkombination der m unabhängigen
Merkmale x(i,1), …, x(m,1) erklären lässt
§ Das Modell hat somit (m + 1) Parameter und entspricht
einer Hyperebene im (m + 1)-dimensionalen Raum
yi = w0 + w1x(i,1) + w2x(i,2) + . . . + wmx(i,m)
(x(i,1), x(i,2), . . . , x(i,m), yi)
Data Science / Kapitel 2: Regression
27
Multiple lineare Regression in Matrixschreibweise§ Oft ist es einfacher, bei vielen unabhängigen Merkmalen,
das Modell in Matrixschreibweise zu formulieren
§ Datenmatrix X (n × (m + 1))
mit einer zusätzlichen führenden Spalte gefüllt mit Einsen
X =
S
WU1 x(1,1) . . . x(1,m)...1 x(n,1) . . . x(n,m)
T
XV
Data Science / Kapitel 2: Regression
28
Multiple lineare Regression in Matrixschreibweise§ Parametervektor w ((m + 1) × 1)
§ Beobachtungsvektor y (n × 1)
w =
S
WUw0...
wm
T
XV
y =
S
WUy1...
yn
T
XV
Data Science / Kapitel 2: Regression
29
Multiple lineare Regression in Matrixschreibweise§ Vorhersagevektor ŷ (n × 1) lässt sich berechnen als
y = X w =
S
WU1 x(1,1) . . . x(1,m)...1 x(n,1) . . . x(n,m)
T
XV
S
WUw0...
wm
T
XV
Data Science / Kapitel 2: Regression
30
Multiple lineare Regression in Matrixschreibweise§ Auch bei der multiplen linearen Regression kommt
der quadratische Fehler zum Einsatz
§ Die Straffunktion (loss function) lässt sich schreiben als
L(w) =nÿ
i=1
!yi ≠ w0 x(i,0) ≠ w1 x(i,1) ≠ . . . ≠ wm x(i,m)
"2
= (y ≠ X w)T (y ≠ X w)
Data Science / Kapitel 2: Regression
31
Analytische Bestimmung optimaler Parameter§ Zum Bestimmen der optimalen Parameter müssen
wir folgendes Optimierungsproblem lösen
§ Vorgehensweise ist analog zum einfachen Fall,bedient sich jedoch der Vektoranalysis
arg minw
L(w) = (y ≠ X w)T (y ≠ X w)
Data Science / Kapitel 2: Regression
32
Analytische Bestimmung optimaler Parameter§ Schritt 1: Vereinfachen der Straffunktion
§ (1) nach (2) nutzt aus, dass (Xw)T = wT XT
§ (3) nach (4) nutzt aus, dass yT Xw = (wT XT y)T = (wT XT y)
L(w) = (y ≠ X w)T (y ≠ X w) (1)= (yT ≠ wT XT ) (y ≠ X w) (2)= yT y ≠ yT X w ≠ wT XT y + wT XT X w (3)= yT y ≠ 2 wT XT y + wT XT X w (4)
Data Science / Kapitel 2: Regression
33
Analytische Bestimmung optimaler Parameter§ Schritt 2: Bestimmen der Ableitung nach w
§ Hierbei wird ausgenutzt, dass gilt:
ˆwT XT yˆw = XT y
ˆL(w)ˆw = ≠2XT y + 2 XT X w
ˆwT XT X wˆw = 2 XT X w
Data Science / Kapitel 2: Regression
34
Analytische Bestimmung optimaler Parameter§ Schritt 3: Bestimmen einer Nullstelle der Ableitung nach w
§ (3) nach (4) multipliziert beide Seiten von links
mit der inversen Matrix (XT X)-1
§ Die inverse Matrix (XTX)-1 existiert dann, wenn die
ursprüngliche Datenmatrix X vollen Spaltenrang hat,
d.h. alle Spaltenvektoren sind linear unabhängig
≠2XT y + 2 XT X w != 0 (1)… 2 XT X w = 2XT y (2)… XT X w = XT y (3)… w = (XT X)≠1 XT y (4)
Data Science / Kapitel 2: Regression
35
Analytische Bestimmung optimaler Parameter§ Die inverse Matrix (XTX)-1 existiert nicht z.B.
für folgende Datenmatrizen
§ Allgemein existiert die inverse Matrix nicht, wenn
§ es mehr Merkmale als Datenpunkte gibt (d.h. m > n)
§ unabhängige Merkmale (d.h. Spaltenvektoren) existieren,
die linear abhängig voneinander sind
X =
S
U1 2 41 3 61 2 4
T
V X =
S
U1 2 1 9 51 3 3 0 21 2 3 4 7
T
V
Data Science / Kapitel 2: Regression
36
Multiple lineare Regression in Pythonimport numpy as npimport pandas as pdimport seaborn as snsimport matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3Dfrom sklearn import linear_model, metrics
# Autodaten einlesencars = pd.read_csv('../data/auto-mpg/auto-mpg.data', header=None, sep='\s+')
# Verbrauchswerte extrahiereny = cars.iloc[:,0].values
# Leistungs- und Gewichtswerte extrahierenX = cars.iloc[:,[3,4]].values
# Plot erstellen#g = sns.regplot(x=X, y=y, fit_reg=False)
# Einfache lineare Regressionreg = linear_model.LinearRegression()reg.fit(X,y)
# Plot erstellenfig = plt.figure()ax = fig.add_subplot(111, projection='3d')
# Datenpunkte plottenfor i in range(0,len(y)):
ax.scatter(X[i,0], X[i,1], y[i], color='blue', marker='x')
Data Science / Kapitel 2: Regression
37
Multiple lineare Regression in Python# Vorhersagewerte berechnenX0 = np.arange(min(X[:,0]), max(X[:,0]), 25) X1 = np.arange(min(X[:,1]), max(X[:,1]), 25) X0, X1 = np.meshgrid(X0, X1)Z = X0.copy() n = X0.shape[0] m = X0.shape[1] for i in range(0, n):
for j in range(0, m): Z[i,j] = reg.predict([[X0[i,j], X1[i,j]]])
# Hyperebene Plottenax.plot_surface(X0, X1, Z, color='red', linewidth=0, antialiased=False)
# Plot beschriftenax.set_xlabel('Leistung [hp]') ax.set_ylabel('Gewicht [lbs]') ax.set_zlabel('Verbrauch [mpg]')
# Plot anzeigenplt.show()
# Koeffizienten und Bestimmtheitsmaß ausgebenprint('Parameter:')print('w0: %f'%reg.intercept_)print('w1: %f'%reg.coef_[0]) print('w2: %f'%reg.coef_[1]) print('Bestimmtheitsmaß')print('R2: %f'%metrics.r2_score(y,reg.predict(X)))
Data Science / Kapitel 2: Regression
38
Multiple lineare Regression in Python
§ Vollständiges Jupyter-Notebook unter:
http://swl.htwsaar.de/.../2017-vl-ds-kap2-regression.html
http://swl.htwsaar.de/.../2017-vl-ds-kap2-regression.ipynb
Data Science / Kapitel 2: Regression
39
2.3 Nominale und ordinale Merkmale§ Wie lassen sich nominale und ordinale Merkmale so
kodieren, dass sie für lineare Regression und
andere Verfahren verwendbar sind?
§ Nominale Merkmale (z.B. Herkunft) werden in ein binäres Merkmal je in den Daten vorhandenem Wert kodiert
(one-hot encoding)
Herkunft
1312
Herkunft 1 Herkunft 2 Herkunft 3
1 0 00 0 11 0 00 1 0
Data Science / Kapitel 2: Regression
40
Nominale und ordinale Merkmale§ Ordinale Merkmale (z.B. Energieeffizienzklasse) werden
auf ganze Zahlen abgebildet, so dass die Ordnungder ursprünglichen Werte erhalten bleibt
§ Hierbei wird implizit angenommen, dass die Abstände
zwischen benachbarten Werten gleich groß,
d.h. diese äquidistant sind
Energiee�zienzklasseACB
Energiee�zienzklasse021
Data Science / Kapitel 2: Regression
41
Nominale und ordinale Merkmale in Pythonimport pandas as pd
# Autodaten einlesencars = pd.read_csv('../data/auto-mpg/auto-mpg.data', header=None, sep='\s+')
# Daten der ersten zehn Autos ausgebenprint(cars.head(n=10), "\n")
# Nominales Merkmal Herkunft kodierenorigin_one_hot = pd.get_dummies(cars[7], prefix='origin')
# Neue Merkmale mit ursprünglichen Daten konkatenierencars = pd.concat([cars, origin_one_hot], axis=1)
# Daten der ersten zehn Autos ausgebenprint(cars.head(n=10), "\n")
Data Science / Kapitel 2: Regression
42
Nominale und ordinale Merkmale in Python
§ Vollständiges Jupyter-Notebook unter:
http://swl.htwsaar.de/.../2017-vl-ds-kap2-regression.html
http://swl.htwsaar.de/.../2017-vl-ds-kap2-regression.ipynb
import numpy as npimport pandas as pd
# Daten mit einem metrischen und einem ordinalen Merkmal erzeugendata = pd.DataFrame(np.matrix([[1.2,'A'], [2.1, 'B'], [1.7, 'C'], [3.2, 'A'], [4.2,'B']])) # Daten ausgebenprint(data,"\n")
# Ordnung der Werte angebenorder = ['A', 'B', 'C'] # Ordinales Merkmal kodierenencoded_feature = data[1].astype("category", ordered=True, categories=order).cat.codes
# Neues Merkmal mit urprünglichen Daten konkatenierendata = pd.concat([data, encoded_feature], axis=1)
# Daten ausgebenprint(data)
Data Science / Kapitel 2: Regression
43
Zusammenfassung§ Multiple lineare Regression sagt ein abhängiges
metrisches Merkmal anhand mehrererunabhängiger metrischer Merkmale voraus
§ Optimale Parameter der Regressionshyperebene
lassen sich analytisch bestimmen
§ Nominale und ordinale Merkmale können so kodiert
werden, dass sie für lineare Regression
verwendbar sind
Data Science / Kapitel 2: Regression
44
Literatur[1] L. Fahrmeir, R. Künstler, I. Pigeot und G. Tutz:
Statistik – Der Weg zur Datenanalyse,
Springer, 2017 (Kapitel 12)
[2] S. Raschka: Machine Learning in Python,
mitp, 2017 (Kapitel 10)
Data Science / Kapitel 2: Regression