Machine Learning mit Python, Teil 4

BIAS für komplexere Zusammenhänge nutzen

| Autor / Redakteur: Thomas Drilling / Stephan Augsten

Eine lineare Regression ohne BIAS führt bei der Celsius-Fahrenheit-Umrechnung zu einem falschen Koeffizienten von 2,48923077.
Eine lineare Regression ohne BIAS führt bei der Celsius-Fahrenheit-Umrechnung zu einem falschen Koeffizienten von 2,48923077. (Bild: Drilling / Jupyter)

Nachdem wir uns die Modellierung eines einfachen linearen Zusammenhangs anhand der Python-Bibliothek sklearn angesehen haben, wenden wir uns jetzt komplexeren Zusammenhängen zu und schauen uns an, was man unter einem BIAS versteht.

Im vorigen Teil konnte unser neuronales Netz einfache lineare Zusammenhänge erkennen. Das gelingt aber schon nicht mehr bei der Umrechnung von Grad Celsius nach Fahrenheit. Hier ist nicht nur der Proportionalitätsfaktor, sondern auch der „Offset“, sprich die Verschiebung zu berücksichtigen, da beide Skalen auf einem unterschiedlichen Grundwert basieren.

Konkret lautet die Formel zu Umrechnung von Grad Celsius nach Grad Fahrenheit: F=C *1,8+32. Der Versatz rührt daher, dass sich der Nullpunkt der beiden Skalen unterscheidet; der von Celsius wird bekanntlich auf Basis des Gefrierpunkts von Wasser „geeicht“.

In unserem bisherigen Beispiel lautete die Formel zur Berechnung des Ausgangswertes y=x1*w1, wobei das Gewicht w1 aus dem Zusammenhang der Daten (x und y sind quasi Datenpunkte) „erlernt“ wurde. Um nun auch das die Fahrenheit-Umrechnung erlernen zu können, führen wir den bisherigen Eingängen (welche die den oder die Datenpunkte für X anliegen) einen weiteren Eingang hinzu, der konstant auf 1 liegt: den so genannten BIAS (b).

Eine lineare Regression ohne BIAS führt bei der Celsius-Fahrenheit-Umrechnung zu einem falschen Koeffizienten von 2,48923077.
Eine lineare Regression ohne BIAS führt bei der Celsius-Fahrenheit-Umrechnung zu einem falschen Koeffizienten von 2,48923077. (Bild: Drilling / Jupyter)

Die Ausgangsberechnung erfolgt dann offenbar durch: y = x1*w1+x2*w2+x3*w3 + b*1. Damit können wir nun einfach auch unseren Fahrenheit-Zusammenhang modellieren: Dazu definieren wir in Python, d.h. im Jupyter-Notebook, wieder drei x-Werte und drei passende y-Werte für die Celsius-Fahrenheit-Skala. Würde man die lineare Regression ohne BIAS durchführen und dann wie oben den Koeffizienten ermitteln, betrüge dieser nicht 1,8 sondern 2,48923077.

Das liegt daran, dass der BIAS nicht berücksichtigt wurde – zu erkennen am Ausdruck: fit_intercept=False. Wir können den BIAS durch Eingabe von fit_intercept=True nun berücksichtigen. Ermitteln wir jetzt den Koeffizienten mit …

print(model.coef_)

Erst unter Berücksichtigung des BIAS ergibt sich für die Umrechnung von Grad Celsius nach Grad Fahrenheit der richtige Koeffizient.
Erst unter Berücksichtigung des BIAS ergibt sich für die Umrechnung von Grad Celsius nach Grad Fahrenheit der richtige Koeffizient. (Bild: Drilling / Jupyter)

…, erhalten wir wieder die 1,8 als Ergebnis. Das Gewicht w1 wurde also korrekt mit 1,8 erlernt. Um den eigentlichen Offset aus den Daten zu ermitteln, kann man die folgende Methode verwenden:

model.intercept

Kommentare werden geladen....

Kommentar zu diesem Artikel

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 46142749 / Programmiersprachen)