Suchen

Machine Learning mit Python, Teil 4 BIAS für komplexere Zusammenhänge nutzen

| Autor / Redakteur: Thomas Drilling / Stephan Augsten

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.

Firma zum Thema

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)

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

(ID:46142749)