Lineare Regression: Von Daten zum optimierten Modell
Lineare Regression modelliert lineare Beziehungen zwischen Prädiktoren und einer Zielvariable. Bei einfacher linearer Regression lautet die Gleichung y = b₀ + b₁ × x, wobei x der Prädiktor, y die Antwortvariable, b₀ der Achsenabschnitt und b₁ die Steigung ist. Die Koeffizienten bestimmen die Position der Geraden in der Ebene.
Daten in Tabellenform mit Merkmalen und einer Antwortvariable bilden die Grundlage. Beispiel: die Beziehung zwischen Wohnungspreis und Anzahl der Zimmer. Die Modellqualität hängt von der Repräsentativität der Stichprobe ab – das Prinzip „Garbage in, garbage out“ bestimmt das Ergebnis.
Modelle sind nützlich für Vorhersagen und zur Identifizierung von Mustern. Die Transformation tabellarischer Daten in einen analytischen Ausdruck ermöglicht die Extrapolation auf neue Beobachtungen.
Methode der kleinsten Quadrate
OLS (Ordinary Least Squares) minimiert die Summe der quadrierten Residuen: ∑(y_i - ŷ_i)². Analytische Lösung: b₁ = Cov(x, y) / Var(x), b₀ = ȳ - b₁ × x̄.
# Beispiel für Koeffizientenberechnung
import numpy as np
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 5, 4, 5])
b1 = np.cov(x, y)[0,1] / np.var(x)
b0 = np.mean(y) - b1 * np.mean(x)
print(f'b0: {b0:.2f}, b1: {b1:.2f}')
Dieser Ansatz funktioniert für nicht-degenerierte Daten, erfordert aber im multivariaten Fall eine Matrixinversion (XᵀX)⁻¹.
Bewertung der Modellqualität
Visuell: Streudiagramm von Vorhersagen vs. tatsächliche Werte, Residuenplots. Metriken:
- R² (Bestimmtheitsmaß): Anteil der erklärten Varianz, 0–1.
- RMSE: √(MSE), in Einheiten der Antwortvariable.
- MAE: mittlerer absoluter Fehler.
- MAPE/SMAPE: prozentuale Fehler.
Residuenplots zeigen Heteroskedastizität oder Nichtlinearität.
Datenaufteilung und Validierung
Trainings-/Testaufteilung (80/20) verhindert Overfitting. Kreuzvalidierung (k-fold) mittelt Metriken über Folds.
def train_test_split(X, y, test_size=0.2):
indices = np.arange(len(X))
np.random.shuffle(indices)
split = int(len(X) * (1 - test_size))
return X[indices[:split]], X[indices[split:]], y[indices[:split]], y[indices[split:]]
Multivariate Regression
Erweiterung auf y = b₀ + b₁x₁ + ... + bₙxₙ. Matrixform: ŷ = Xβ, Lösung β = (XᵀX)⁻¹Xᵀy. Vorverarbeitung:
- Normalisierung: (x - min)/(max - min).
- Standardisierung: (x - μ)/σ.
- One-Hot-Encoding kategorialer Merkmale.
Probabilistische Interpretation
Modell nimmt Normalverteilung der Fehler an: ε ~ N(0, σ²). Vorhersageintervall: *ŷ ± t SE √(1 + 1/n + (x - x̄)² / SXX)*. Maximum-Likelihood-Schätzung (MLE) optimiert die Log-Likelihood.
Umgang mit Ausreißern
Erkennungsmethoden:
- Mahalanobis-Distanz: generalisierte Distanz im multivariaten Raum.
- Cook's-Distanz: Einfluss einer Beobachtung auf Koeffizienten.
- LOF (Local Outlier Factor): lokale Dichte.
- RANSAC: Konsens zufälliger Teilmengen.
Entfernung oder robuste Regressoren (Huber-Verlust).
Gradientenabstieg und Regularisierung
Für große Daten: iterative Optimierung θ := θ - α ∇J(θ), wobei J die Kostenfunktion ist.
- L1 (Lasso): |β|, Sparsity.
- L2 (Ridge): β², Schrumpfung.
Hyperparameter λ wird per CV optimiert.
def gradient_descent(X, y, lr=0.01, epochs=1000):
theta = np.zeros(X.shape[1])
for _ in range(epochs):
pred = X @ theta
grad = X.T @ (pred - y) / len(y)
theta -= lr * grad
return theta
Wichtige Erkenntnisse
- Lineare Regression ist ein grundlegendes Werkzeug für lineare Beziehungen, skalierbar für multivariate Aufgaben.
- OLS bietet eine analytische Lösung; Gradientenabstieg ist für große Datensätze geeignet.
- Metriken wie R² und RMSE bewerten die Qualität; Residuenplots diagnostizieren Probleme.
- Regularisierung (L1/L2) bekämpft Overfitting und Multikollinearität.
- Vorverarbeitung (Skalierung, Ausreißerentfernung) ist entscheidend für Stabilität.
— Editorial Team
Noch keine Kommentare.