Zum Inhalt springen

Regression

Regression bezeichnet eine Methode des überwachten Lernens, bei der ausgehend von einer oder mehreren unabhängigen Variablen (Prädiktoren) auf eine abhängige Variable (Kriterium) geschlossen wird. Dies ermöglicht die Messung des Einflusses der Prädiktoren auf das Kriterium oder die Vorhersage des Kriteriums. Prädiktoren können metrisch, ordinal oder nominal sein.

Die einfache lineare Regression prognostiziert ein Kriterium anhand eines einzelnen Prädiktors. Die Formel lautet:

y^=b×x+a=θ0+θ1x\hat{y} = b \times x + a = \theta_0 + \theta_1 x

Dabei ist y^\hat{y} das prognostizierte Kriterium, bb oder θ1\theta_1 die Steigung, xx der Prädiktor und aa oder θ0\theta_0 der Achsenabschnitt.

Die Berechnung erfolgt wie folgt:

b=rsysxb = r \frac{s_y}{s_x}

Hierbei ist rr der Korrelationskoeffizient zwischen xx und yy, sys_y die Standardabweichung von yy und sxs_x die Standardabweichung von xx.

a=yˉb×xˉa = \bar{y} - b \times \bar{x}

Dabei sind yˉ\bar{y} und xˉ\bar{x} die arithmetischen Mittel von yy und xx.

Die multiple lineare Regression prognostiziert ein Kriterium anhand mehrerer Prädiktoren. Die Formel lautet:

y^=b1×x1+b2×x2++bk×xk+a=θ0+θ1x1+θ2x2++θmxm\hat{y} = b_1 \times x_1 + b_2 \times x_2 + \dots + b_k \times x_k + a = \theta_0 + \theta_1 x_1 + \theta_2 x_2 + \dots + \theta_m x_m

Die Berechnung und Interpretation ähneln der einfachen linearen Regression.

Die logistische Regression prognostiziert eine dichotome abhängige Variable, also eine Variable mit zwei Ausprägungen, wie Ja/Nein. Die Formel für die Sigmoidfunktion lautet:

f(z)=11+ezf(z) = \frac{1}{1 + e^{-z}}

Die Wahrscheinlichkeit, dass die abhängige Variable y=zy = z gegeben x1,,xnx_1, \dots, x_n, beträgt:

P(y=zx1,,xn)=11+e(θ0+θ1x1++θkxk)P(y = z | x_1, \dots, x_n) = \frac{1}{1 + e^{-(\theta_0 + \theta_1 x_1 + \dots + \theta_k x_k)}}

Dabei ist ee die Eulersche Zahl (etwa 2,71828). Die Berechnung der Parameter θ\theta erfolgt mittels Gradientenabstieg. Die Ableitung der Kostenfunktion entspricht der linearen Regression. Das Verfahren umfasst die Berechnung der multivariaten Regression und die Anwendung der Sigmoidfunktion auf y^\hat{y}.

Die Kostenfunktion misst den Fehler des Modells und wird minimiert, um optimale Parameter zu finden.

J(θ0,θ1)=12Nn=1N(θ0+θ1xnyn)2J(\theta_0, \theta_1) = \frac{1}{2N} \sum_{n=1}^{N} (\theta_0 + \theta_1 x_n - y_n)^2

J(θ0,θ1)=12Nn=1N(hθ(xn)yn)2J(\theta_0, \theta_1) = \frac{1}{2N} \sum_{n=1}^{N} (h_\theta(x_n) - y_n)^2

Dabei ist NN die Anzahl der Datenpunkte, hθ(xn)h_\theta(x_n) die Vorhersagefunktion des Modells, yny_n der Zielwert. Der quadrierte Fehler eliminiert die Richtung des Fehlers, und 12N\frac{1}{2N} mittelt den Fehler über alle Datenpunkte.

Die Kostenfunktion quantifiziert die Abweichung der Vorhersagen von den tatsächlichen Werten. Je kleiner der Wert, desto besser die Anpassung des Modells.

Die Nullstellen der Ableitung der Kostenfunktion geben das Minimum an. Die Ableitungen lauten:

θ0J(θ0,θ1)=0θ0=(y)(x2)(x)(xy)Nx2(x)2\frac{\partial}{\partial \theta_0} J(\theta_0, \theta_1) = 0 \Longleftrightarrow \theta_0 = \frac{(\sum y)(\sum x^2) - (\sum x)(\sum xy)}{N \sum x^2 - (\sum x)^2}

Code-Äquivalent:

theta0 = (
(sum(y) * sum(x ** 2) - sum(x) * sum(x * y)) /
(n * sum(x ** 2) - sum(x) ** 2)
)

θ1J(θ0,θ1)=0θ1=N(xy)(x)(y)Nx2(x)2\frac{\partial}{\partial \theta_1} J(\theta_0, \theta_1) = 0 \Longleftrightarrow \theta_1 = \frac{N \sum (x y) - (\sum x)(\sum y)}{N \sum x^2 - (\sum x)^2}

Code-Äquivalent:

theta1 = (
(n * sum(x * y) - sum(x) * sum(y)) /
(n * sum(x ** 2) - sum(x) ** 2)
)

Dieses Verfahren ist genauer als Gradientenabstieg und eignet sich für kleine bis mittlere Datenmengen, ohne dass eine Feature-Skalierung erforderlich ist.

Das Gradientenabstiegsverfahren minimiert die Kostenfunktion durch iterative Anpassung der Parameter θ0\theta_0 und θ1\theta_1. Es beginnt mit zufälligen oder nullinitialisierten Werten.

Die Vorhersagefunktion lautet:

hθ(x)=θ0+θ1xh_\theta(x) = \theta_0 + \theta_1 x

Die Kostenfunktion (Mean Squared Error) ist:

J(θ0,θ1)=12ni=1n(hθ(x(i))y(i))2J(\theta_0, \theta_1) = \frac{1}{2n} \sum_{i=1}^{n} (h_\theta(x^{(i)}) - y^{(i)})^2

Die Ableitungen sind:

  1. Ableitung nach θ0\theta_0:

θ0J(θ0,θ1)=1ni=1n(hθ(x(i))y(i))\frac{\partial}{\partial \theta_0} J(\theta_0, \theta_1) = \frac{1}{n} \sum_{i=1}^{n} (h_\theta(x^{(i)}) - y^{(i)})

  1. Ableitung nach θ1\theta_1:

θ1J(θ0,θ1)=1ni=1nx(i)(hθ(x(i))y(i))\frac{\partial}{\partial \theta_1} J(\theta_0, \theta_1) = \frac{1}{n} \sum_{i=1}^{n} x^{(i)} (h_\theta(x^{(i)}) - y^{(i)})

Die Update-Regeln lauten:

θ0θ0α1ni=1n(hθ(x(i))y(i))\theta_0 \leftarrow \theta_0 - \alpha \frac{1}{n} \sum_{i=1}^{n} (h_\theta(x^{(i)}) - y^{(i)})

θ1θ1α1ni=1nx(i)(hθ(x(i))y(i))\theta_1 \leftarrow \theta_1 - \alpha \frac{1}{n} \sum_{i=1}^{n} x^{(i)} (h_\theta(x^{(i)}) - y^{(i)})

Dabei ist α\alpha die Lernrate. Ein zu kleiner Wert verzögert die Konvergenz.

Code-Äquivalent:

for step in range(1000):
y_pred = theta0 + x * theta1
theta1_new = theta1 - learning_rate * (1 / n) * sum(x * (y_pred - y))
theta0_new = theta0 - learning_rate * (1 / n) * sum(y_pred - y)
theta0, theta1 = theta0_new, theta1_new
if step % 50 == 0:
theta0s.append(theta0)
theta1s.append(theta1)

Pseudocode:

  1. Initialisierung: Setze θ0=0\theta_0 = 0, θ1=0\theta_1 = 0, Lernrate α\alpha, Iterationen, Datenpunkte, nn.
  2. Für jede Iteration: Berechne Vorhersage, Fehler; aktualisiere θ1\theta_1 und θ0\theta_0.
  3. Ende.
  4. Ausgabe: Finale θ0\theta_0 und θ1\theta_1.

Das Verfahren eignet sich besonders für große Datenmengen.

Die Feature-Skalierung normiert die Werte der Merkmale auf einen Bereich, etwa 0 bis 1, um die Konvergenz zu beschleunigen:

xscaled(n)=x(n)min(x)max(x)min(x)x_{\text{scaled}}^{(n)} = \frac{x^{(n)} - \min(x)}{\max(x) - \min(x)}

Eingabewerte müssen später entsprechend skaliert werden. Konvergenz beschreibt den Prozess, bei dem ein Algorithmus einer optimalen Lösung, wie einem minimalen Fehler, näher kommt.