Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Ausgleichsgerade und kleinste Quadrate

Nach dieser Lektion: Ich kann eine Gerade an Punkte anpassen, indem ich den quadratischen Fehler minimiere.

Lektion, 70 Min.3 BefehleJupyterLab-Lab für Data Science: pandas, Matplotlib und scikit-learn im Browser

Welche Gerade passt am besten zu den Punkten?

Eine Ausgleichsgerade ist die Gerade, die am besten zu vielen Messpunkten passt. Sie liegt der linearen Regression zugrunde und sagt, wie stark sich eine Größe ändert, wenn sich eine andere ändert.

Studierende notieren, wie viele Stunden sie pro Woche gelernt haben und wie viele Punkte sie im Test bekamen. Eine Gerade durch diese Punkte beantwortet: Wie viele Punkte bringt eine Stunde mehr?

Am Ende dieser Lektion

Notiz

Ich kann eine Gerade an Punkte anpassen, indem ich den quadratischen Fehler minimiere.

Schlüsselwörter

BegriffWas er bedeutet
Ausgleichsgeradedie Gerade, die am besten zu den Punkten passt
Fehlerquadratder Abstand zwischen Punkt und Gerade, mit sich selbst malgenommen
Mittlerer quadratischer Fehlerder Mittelwert aller Fehlerquadrate
Methode der kleinsten Quadratedie Gerade wählen, deren Fehler am kleinsten ist
Achsenabschnittder Wert der Geraden bei x gleich 0

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Der Fehler misst, wie schlecht eine Gerade passt

Eine Gerade hat die Form y = a * x + b. a ist die Steigung, b der Achsenabschnitt. Für jeden Punkt ist der Fehler der Unterschied zwischen Vorhersage und echtem Wert.

Sie quadrieren jeden Fehler, damit sich Fehler nach oben und unten nicht aufheben. Der Mittelwert dieser Fehlerquadrate heißt mittlerer quadratischer Fehler.

Beispiel: zwei Geraden an fünf Punkten

xy echtVorhersage 2 * x + 1FehlerquadratVorhersage 1,7 * x + 1Fehlerquadrat
011010
13302,70,09
24514,40,16
36716,10,01
48917,80,04
Mittel0,60,06

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Den Fehler in Python berechnen

Code: python
xs = [0, 1, 2, 3, 4]
ys = [1, 3, 4, 6, 8]

def fehler_der_geraden(a, b):
    summe = 0
    for i in range(len(xs)):
        fehler = a * xs[i] + b - ys[i]
        summe = summe + fehler ** 2
    return summe / len(xs)

print("Schätzung 2 und 1:", round(fehler_der_geraden(2, 1), 3))
print("Schätzung 1.7 und 1:", round(fehler_der_geraden(1.7, 1), 3))
# Probieren Sie 1.8 und 0.8. Wird der Fehler größer oder kleiner?

Den Fehler senken Sie mit dem Gradientenabstieg

Der Fehler hängt von zwei Zahlen ab, a und b. Das ist eine Funktion mit zwei Eingaben, und Sie kennen ihr Werkzeug: den Gradienten.

Die Steigung nach a ist der Mittelwert von 2 * Fehler * x, die nach b der Mittelwert von 2 * Fehler. Sie starten bei a = 0 und b = 0 und gehen immer wieder einen Schritt gegen den Gradienten.

Eine Gerade durch Abstieg finden

Code: python
xs = [0, 1, 2, 3, 4]
ys = [1, 3, 4, 6, 8]
a = 0.0
b = 0.0
lernrate = 0.05
for schritt in range(1000):
    steigung_a = 0
    steigung_b = 0
    for i in range(len(xs)):
        fehler = a * xs[i] + b - ys[i]
        steigung_a = steigung_a + 2 * fehler * xs[i] / len(xs)
        steigung_b = steigung_b + 2 * fehler / len(xs)
    a = a - lernrate * steigung_a
    b = b - lernrate * steigung_b
print("a:", round(a, 3), "b:", round(b, 3))
# Ändern Sie 1000 in 20. Wie weit sind Sie dann vom Ergebnis entfernt?

Dieselbe Gerade mit dem Optimierer von SciPy

Befehl
docker exec jupyter python3 -c "import numpy as np; from scipy.optimize import minimize; x = np.array([0, 1, 2, 3, 4]); y = np.array([1, 3, 4, 6, 8]); r = minimize(lambda p: np.mean((p[0] * x + p[1] - y) ** 2), [0.0, 0.0]); print(r.x.round(2))"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Eine Gerade hat auch eine exakte Lösung

Bei einer Geraden müssen Sie nicht schrittweise suchen. Für die beste Steigung bilden Sie für jeden Punkt das Produkt der Abstände von x und y zu ihren Mittelwerten. Diese Produkte addieren Sie und teilen durch die Summe der quadrierten x-Abstände.

Den Achsenabschnitt erhalten Sie danach, weil die Gerade durch die beiden Mittelwerte geht. Die Tabelle rechnet das für die fünf Punkte.

Beispiel: die exakte Gerade für die fünf Punkte

xyAbstand x zu 2Abstand y zu 4,4Produktx-Abstand zum Quadrat
01-2-3,46,84
13-1-1,41,41
240-0,400
3611,61,61
4823,67,24
Summe1710
ErgebnisSteigung 17 geteilt durch 10 = 1,7Achsenabschnitt 4,4 minus 1,7 mal 2 = 1,0

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Die exakte Lösung mit NumPy

Befehl
docker exec jupyter python3 -c "import numpy as np; x = np.array([0, 1, 2, 3, 4]); y = np.array([1, 3, 4, 6, 8]); print(np.polyfit(x, y, 1).round(2))"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Dieselbe Rechnung für ein Jahr Fahrradausleihen

Befehl
docker exec jupyter python3 -c "import numpy as np, pandas as pd; d = pd.read_csv('hires.csv'); print(np.polyfit(d['temp_c'], d['hires'], 1).round(1))"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein häufiger Fehler

Warnung

Viele denken, die Ausgleichsgerade gehe durch möglichst viele Punkte oder sogar durch alle. Sie senkt aber die Summe der Fehlerquadrate. Dabei darf sie jeden Punkt knapp verfehlen. Im Beispiel trifft sie nur den Punkt bei x gleich 0 exakt.

Über dieses Lab und seinen Quellcode: JupyterLab-Lab für Data Science: pandas, Matplotlib und scikit-learn im Browser

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.