Lineare und logistische Regression
Das einfachste Modell, das man vollständig versteht, und der Grund, warum es in der Praxis öfter gewinnt, als man erwartet.
Die Idee
Sie legen ein Lineal so durch eine Punktwolke, dass es möglichst nah an allen Punkten liegt. Mehr ist lineare Regression nicht. Die logistische Variante staucht das Ergebnis danach in den Bereich zwischen null und eins, damit eine Wahrscheinlichkeit daraus wird.
Wozu es gut ist
Preise schätzen, Bearbeitungsdauern vorhersagen, Ausfallwahrscheinlichkeiten berechnen, Kündigungsrisiken bewerten. Überall dort, wo die Antwort auch begründet werden muss.
Koeffizienten lesen
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler
rng = np.random.default_rng(0)
n = 600
alter = rng.normal(45, 12, n)
vertragsjahre = rng.normal(4, 2.5, n)
z = -0.03 * alter + 0.45 * vertragsjahre - 0.5
y = (rng.random(n) < 1 / (1 + np.exp(-z))).astype(int)
X = np.column_stack([alter, vertragsjahre])
Xs = StandardScaler().fit_transform(X) # erst skalieren, dann vergleichen
m = LogisticRegression().fit(Xs, y)
for name, c in zip(["Alter", "Vertragsjahre"], m.coef_[0]):
print(f"{name:14s} Koeffizient {c:+.3f} Odds-Faktor {np.exp(c):.2f}")Ein Odds-Faktor von 1,6 heißt: eine Standardabweichung mehr Vertragsjahre erhöht das Chancenverhältnis um 60 Prozent. Diese Aussage lässt sich einem Fachbereich vorlegen, und genau darin liegt der Wert.
- Vor dem Vergleich von Koeffizienten immer standardisieren.
- Kategoriale Merkmale als Dummy-Variablen aufnehmen, eine Kategorie weglassen.
- Auf Multikollinearität prüfen: stark korrelierte Merkmale machen Koeffizienten instabil.
- Residuen ansehen. Ein Muster darin heißt, dass ein Merkmal fehlt.
Die Formeln
Durchgerechnet
Mit β₀ = −0,5, β₁ = 0,45 und x₁ = 3:
z = −0,5 + 0,45 × 3 = 0,85p = 1/(1 + e^(−0,85)) = 1/(1 + 0,4274) = 0,7006- Odds:
0,7006 / 0,2994 = 2,34, und tatsächliche^0,85 = 2,34
Steigt x₁ auf 4, wird z = 1,30, p = 0,7858 und die Odds 3,67: also
genau der Faktor e^0,45 = 1,568 mehr. Der Koeffizient ist der Logarithmus
dieses Faktors, was ihn direkt interpretierbar macht.
Aufwand
Die Normalgleichung kostet O(n d² + d³). Bei d = 50 und n = 10⁶ ist das
in Sekunden erledigt; bei d = 10⁵ ist die Inverse nicht mehr praktikabel und
man löst iterativ. Genau an dieser Grenze beginnt der Bereich, in dem
Gradientenabstieg die einzige Option ist.