In diesem Blog wird es sehr mathematisch. Wir werden eine Menge ableiten und herleiten. Wenn Du also Freude am Formelnreiten hast, solltest Du Dich an die gute alte Zeit aus dem Mathe LK erinnert f├╝hlen. Mir hat diese Finger├╝bung so viel Spa├č bereitet, dass ich beschlossen habe, diesen kleinen Blog zu schreiben.

Die Normalverteilung

Maschinelles Lernen braucht viele Daten, um den richtigen Algorithmus erlernen zu k├Ânnen. Wenn man zum Beispiel ein ML Verfahren entwickelt, dass das Wetter der n├Ąchsten Tage bestimmen soll, braucht man m├Âglichst viele Messwerte (Datum, Temperatur, Feuchtigkeit, Luftdruck, ÔÇŽ) aus der Vergangenheit. Nat├╝rlich darf man den Daten, mit denen man seinen Algorithmus f├╝ttert, nicht blind vertrauen. Man muss sich auf jeden Fall seiner Qualit├Ąt vergewissern, um nicht etwas Falsches zu lernen. Da man sich zumeist nicht jeden Datensatz einzeln anschauen kann, verwendet man statistische Verfahren, um etwaige Ausrei├čer und Fehler herausfiltern zu k├Ânnen.

Die Normalverteilung ist eins der wesentlichen Werkzeuge der Analysten. Wenn man die Qualit├Ąt der Daten bestimmen m├Âchte, mit denen man einen Algorithmus f├╝r maschinelles Lernen (Random Forest, Neuronale Netze, ÔÇŽ) f├╝ttert, ist die Normalverteilung ein absolutes Grundwerkzeug. Dabei geht es darum, einen Ausdruck zu finden, wie wahrscheinlich ein durchschnittliches Ergebnis ist. Eine Frau in Deutschland ist zum Beispiel durchschnittlich 1,66m gro├č. Aber nat├╝rlich sind nicht alle Frauen in Deutschland 1,66m gro├č. Die Normalverteilung kann f├╝r diesen Fall eine quantitative Aussage treffen, wie gro├č die Wahrscheinlichkeit ist, dass die n├Ąchste Frau, die Du siehst 1,66m, 1,80m oder 1,25m gro├č ist. Die Normalverteilung gehorcht dabei folgender Gleichung.

Abb. 1: Formel der Normalverteilung

Die Fl├Ąche unter dieser Funktion ist immer 1. Somit eignet sie sich eben perfekt f├╝r die Analyse von Stichproben, da die absolute Menge der Proben immer auf 1 normiert wird.
Ich m├Âchte mich auf die beiden Formfaktoren ¤â und ╬╝ der Gleichung konzentrieren, die die allgemeine Normalverteilung auf jede spezielle Stichprobe anpasst. Im Folgenden werde ich Schritt f├╝r Schritt herleiten, wie man aus einer Menge von Messungen (zum Beispiel die K├Ârpergr├Â├če von einhundert Frauen in Deutschland) die beiden Faktoren herleitet.

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import math
x = np.arange(-5, 5, 0.1)
y = [1 / math.sqrt(2 * math.pi) * math.exp(-0.5 * x**2) for x in x]
plt.plot(x,y, label="¤â = 1 / ┬Á = 0")
plt.grid(True)
plt.legend()
plt.show()
print("Abb 1: Normalverteilung f├╝r ¤â = 1 und ┬Á = 0")
Abb 2: Normalverteilung f├╝r ¤â = 1 und ┬Á = 0

Formfaktor: ? der Erwartungswert

Der Erwartungswert ist schlichtweg der Mittelwert. Damit verschiebt man das Maximum der Kurve auf den Durchschnittswert.

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import math
x = np.arange(130, 210, 0.1)
y_klein =  [1 / math.sqrt(2 * math.pi) * math.exp(-0.5 * (x - 140)**2) for x in x]
y_mittel = [1 / math.sqrt(2 * math.pi) * math.exp(-0.5 * (x - 166)**2) for x in x]
y_gross =  [1 / math.sqrt(2 * math.pi) * math.exp(-0.5 * (x - 180)**2) for x in x]
plt.plot(x,y_klein,  label="┬Á = 140cm")
plt.plot(x,y_mittel, label="┬Á = 166cm")
plt.plot(x,y_gross,  label="┬Á = 180cm")
plt.grid(True)
plt.legend()
plt.show()
print("Abb 2: Normalverteilung f├╝r ¤â = 1 und ┬Á = 140cm oder 166cm oder 180cm")
Abb 3: Normalverteilung f├╝r ¤â = 1 und ┬Á = 140cm oder 166cm oder 180cm

Formfaktor: ? die Varianz

Die Varianz gibt an, wie stark die Proben um den Mittelwert streuen. Wenn eine Schulklasse zum Beispiel eine Arbeit schreibt und 15 Kinder eine Eins und 15 Kinder eine Sechs schreiben, ist der Mittelwert eine 3, die Streuung ist aber extrem gro├č.

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import math
x = np.arange(-5, 5, 0.1)
y_klein =  [1 / math.sqrt(2 * math.pi * 0.5**2) * math.exp(-0.5 * (x)**2 / 0.5**2) for x in x]
y_mittel = [1 / math.sqrt(2 * math.pi * 1.0**2) * math.exp(-0.5 * (x)**2 / 1.0**2) for x in x]
y_gross =  [1 / math.sqrt(2 * math.pi * 2.0**2) * math.exp(-0.5 * (x)**2 / 2.0**2) for x in x]
plt.plot(x,y_klein,  label="¤â = 0,5")
plt.plot(x,y_mittel, label="¤â = 1.0")
plt.plot(x,y_gross,  label="¤â = 2.0")
plt.grid(True)
plt.legend()
plt.show()
print("Abb 3: Normalverteilung f├╝r ┬Á = 0 und ¤â = 0,5 oder ¤â = 1.0 oder ¤â = 2,0")
Abb 4: Normalverteilung f├╝r ┬Á = 0 und ¤â = 0,5 oder ¤â = 1.0 oder ¤â = 2,0

Ein Beispiel

Nehmen wir noch einmal die Durchschnittsgr├Â├če von Frauen in Deutschland. Laut www.laenderdaten.info ist sie 1,66m. Ich sch├Ątze nun ein ¤â von 12 und errechne die Wahrscheinlichkeit, dass ich als n├Ąchstes eine Frau mit 1,40m oder 1,66m oder 1,90m treffe.

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import math
sigma = 12
mu = 166
f = lambda x :  1 / math.sqrt(2 * math.pi * sigma**2) * math.exp(-0.5 * (x - mu)**2 / sigma**2)
x = np.arange(100, 220, 0.1)
y =  [f(x) for x in x]
plt.plot(x,y,  label="¤â = 12 / ┬Á = 166")
h = 140
plt.plot(h, f(h),'o-',  label="{}cm = {:.2f}%".format(h, f(h)*100))
h = 166
plt.plot(h, f(h),'o-',  label="{}cm = {:.2f}%".format(h, f(h)*100))
h = 190
plt.plot(h, f(h),'o-',  label="{}cm = {:.2f}%".format(h, f(h)*100))
plt.grid(True)
plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left', borderaxespad=0.)
plt.show()
print("Abb 4: Normalverteilte K├Ârpergr├Â├čen von Frauen in Deutschland mit einem ┬Á = 166cm und ¤â = 12")
Abb 5: Normalverteilte K├Ârpergr├Â├čen von Frauen in Deutschland mit einem ┬Á = 166cm und ¤â = 12

Die Wahrscheinlichkeit, dass ich alle drei Frauen als n├Ąchstes treffe ist somit das Produkt aus den Einzelergebnissen:

Herleitung der Formfaktoren

Das Produkt

Nun stellt sich die Frage: Wie kann man aus einer Menge von Testergebnissen die beiden Formfaktoren ¤â und ╬╝ herleiten? Dazu gehe ich noch einmal zur├╝ck zum Beispiel, in dem man sehen kann, dass die Gesamtwahrscheinlichkeit das Produkt der Einzelwahrscheinlichkeiten ist:

Abb. 6: Gesamtwahrscheinlichkeit

Wichtig ist hier, dass alle xi aus demselben Wahrscheinlichkeitsexperiment kommen m├╝ssen. Sie haben also alle das gleiche ╬╝ und das gleiche ¤â.

Der Logarithmus

Man kann sich vergegenw├Ąrtigen, dass sich ╬╝ und ¤â gegenseitig nicht beeinflussen. Das ╬╝ verschiebt das Maximum der Kurve nach links oder rechts und das ¤â bestimmt die H├Âhe und die Breite der Kurve. Beide Parameter sind also voneinander entkoppelt und k├Ânnen einzeln betrachtet werden. Das gilt, solange alle xi aus dem gleichen Wahrscheinlichkeitsexperiment kommen und somit das gleiche ╬╝ und ¤â haben. Diese Vor├╝berlegung f├╝hrt zum n├Ąchsten Schritt. Ich will wissen, wo das ╬╝ maximal wird. Dazu m├╝sste ich die Funktion nach ╬╝ ableiten:

Abb 7: Ableitung der Funktion

Das kann man machen ist wegen des Produkts der einzelnen xi aber nicht sehr lustig. Man kann hier aber zu einem kleinen Trick greifen. Wir suchen ja den Ort des Maximums, und nicht den Betrag. Also k├Ânnen wir uns eine Funktion suchen, die ihr Maximum an der gleichen Stelle hat, die sich aber sch├Âner ableiten l├Ąsst. Und die gibt es. Wir nehmen einfach von dem gesamten Ausdruck den Logarithmus:

Abb. 8: Logarithmus der Gesamtwahrscheinlichkeit
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import math
sigma = 2
x = 144
f    = lambda mu :  1 / math.sqrt(2 * math.pi * sigma**2) * math.exp(-0.5 * (x - mu)**2 / sigma**2)
f_ln = lambda mu :  math.log(1 / math.sqrt(2 * math.pi * sigma**2) * math.exp(-0.5 * (x - mu)**2 / sigma**2))
mu = np.arange(100, 220, 0.1)
plt.plot(mu, [f(mu_i)    for mu_i in mu],  label="W(┬Á,¤â,x)")
plt.plot(mu, [f_ln(mu_i) for mu_i in mu], label="ln(W(┬Á,¤â,x))")
plt.yscale('symlog', linthreshy=0.01)
plt.grid(True)
plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left', borderaxespad=0.)
plt.show()
print("Abb 5: Normalverteilung und deren nat├╝rlicher Logarithmus f├╝r ein konstantes ¤â und x")
Abb 9: Normalverteilung und deren nat├╝rlicher Logarithmus f├╝r ein konstantes ¤â und x

Der Logarithmus hat die sch├Âne Eigenschaft, dass er alle Rechenoperationen quasi um einen Grad heruntersetzt. Somit k├Ânnen wir den Ausdruck oben in sehr einfache Teile zerlegen:

Abb. 10: Einzelne Teile der Gesamtfunktion

Die Kettenregel

Mit der Kettenregel l├Ąsst sich der Ausdruck nun sehr einfach nach ╬╝ ableiten:

Abb. 11: Mit der Kettenregel ableiten

Das Maximum

Das Maximum einer Funktion findet man bekanntlich, indem man sie einmal ableitet und zu null setzt:

Abb. 12: Das Maximum der Funktion

Die Formel f├╝r den Erwartungswert ╬╝ ist also der Mittelwert aller Einzelwahrscheinlichkeiten und das ist ja auch genau das Ergebnis, dass wir erwartet haben.

Der n├Ąchste Parameter

Nun stellt sich die Frage, ob man den Logarithmus auch f├╝r die Herleitung der Varianz verwenden kann. Da wir oben aber festgestellt haben, dass die Parameter voneinander entkoppelt sind sollte auch das funktionieren.

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import math
mu = 166
x = 144
f    = lambda sigma :  1 / math.sqrt(2 * math.pi * sigma**2) * math.exp(-0.5 * (x - mu)**2 / sigma**2)
f_ln = lambda sigma :  math.log(1 / math.sqrt(2 * math.pi * sigma**2) * math.exp(-0.5 * (x - mu)**2 / sigma**2))
sigma = np.arange(1.9, 250, 0.1)
plt.plot(sigma, [f(sigma_i)    for sigma_i in sigma],  label="W(┬Á,¤â,x)")
plt.plot(sigma, [f_ln(sigma_i) for sigma_i in sigma], label="ln(W(┬Á,¤â,x))")
plt.yscale('symlog', linthreshy=0.01)
plt.grid(True)
plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left', borderaxespad=0.)
plt.show()
print("Abb 6: Normalverteilung und deren nat├╝rlicher Logarithmus f├╝r ein konstantes ┬Á und x")
Abb 13: Normalverteilung und deren nat├╝rlicher Logarithmus f├╝r ein konstantes ┬Á und x

Eine visuelle Inspektion ist ja bekanntlich kein Beweis, dass man auch hier den Logarithmus verwenden kann, um die Varianz herzuleiten. Somit glauben wir erst einmal der Behauptung, dass beide Kurven ihr Maximum an der gleichen Stelle haben und ├╝berpr├╝fen, ob das Ergebnis plausibel erscheint:

Abb. 14: Plausibilit├Ątspr├╝fung

Simples Ableiten

Abb. 15: Die Standardabweichung

Das Maximum

Auch diese Gleichung wird wieder zu null gesetzt:

Diese Formel kennt man als Statistiker auch. Das ist n├Ąmlich die Standartabweichung. Also ein Ma├č f├╝r die Streuung von Stichproben um den Mittelwert. Damit sind die wichtigsten Werkzeuge f├╝r die Bewertung von Stichproben gesch├Ąrft:

Abb. 15: Normaverleitung, Werwartungswert und Varianz

Kostenlose Downloads rund um das Thema IT und Digitalisierung

Keine Kommentare vorhanden.

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht ver├Âffentlicht. Erforderliche Felder sind mit * markiert.