Der allererste Erfolg beim Machine Learning mit Python

Nichts ist motivierender als ein allererster schneller Erfolg beim Erlernen einer neuen Sache und so ist es auch beim Machine Learning. Sind alle Voraussetzungen zum Start mit dem Erlernen von Machine Learning gegeben, können wir an einem ersten, einfachen Beispiel erfahren, was die Grundprinzipien des maschinellen Lernens sind.

Im folgenden ist ein kurzes Python-Skript dargestellt, wobei an jedem Zeilenende eine Zahl als Kommentar eingefügt ist, so dass wir im Anschluss jede Zeile durchgehen können.

from sklearn import linear_model as ln  # 1
features = [[2],[4],[8],[16]]           # 2
target = [4, 8, 16, 32]                 # 3
model = ln.LinearRegression()           # 4
model.fit(features, target)             # 5
print ("Vorhersage:")                   # 6
print (model.predict(32))               # 7

Bevor wir die Zeilen gemeinsam durchgehen, nimm dir kurz Zeit und schau dir diese sieben Code-Zeilen in Ruhe von oben bis unten Schritt für Schritt an. Versuche dir vorzustellen, was jede einzelne Zeile wahrscheinlich dem Python-Interpreter mitteilen möchte. Wenn du Python noch nicht so gut kennst, wird dir vielleicht manches aus anderen Programmiersprachen bekannt vorkommen. Falls du noch gar keine Erfahrung mit dem Programmieren haben solltest, so werden vermutlich deine Englischkenntnisse ausreichen, um dir eine erste Vorstellung einer jeden Zeile zu machen.

Gehen wir nun die Zeilen einmal durch und fangen mit dem einfachsten Teil an, der steht in diesem Fall am Ende:

Zeile 6 gibt dem Python-Interpreter die Anweisung, den Text „Vorhersage:“ auf den Bildschirm zu schreiben, also alles, was zwischen den Klammern und den Anführungszeichen steht.

Auch in Zeile 7 soll etwas auf den Bildschirm geschrieben werden. In diesem Fall sind innerhalb der Klammern jedoch keine Anführungszeichen, so dass nicht einfach Text, sondern das Ergebnis des Aufrufs „model.predict(32)“ dem Anwender präsentiert werden soll. Wir kommen nochmals darauf zurück, was das im Detail bedeutet.

Springen wir nun in Zeile 1: Hier steht, dass aus dem SciKit-Paket das Modul linear_model benötigt wird. Dessen Funktionen sollen unserem Skript unter der Bezeichnung „ln“ zur Verfügung stehen.

In Zeile 2 legen wir eine Liste von vier Zahlenwerten an, die „features“ genannt werden.

In Zeile 3 legen wir abermals eine Liste von vier Zahlenwerten an, die als „target“ referenziert werden. Es ist wichtig, dass beide Listen die gleiche Anzahl Werte haben. In unserem Beispiel sind es jeweils vier.

Mit der Zeile 4 wählen wir unseren Algorithmus, mit dessen Hilfe wir auf Grundlage der Daten in target und features unsere Vorhersagen treffen lassen wollen. Unter der Bezeichnung „model“ ziehen wir aus dem linear_model-Modul – hier „ln“ genannt – den Algorithmus namens „LinearRegression“ heran. In der Sprache der Informatik: Wir erstellen eine Instanz der Klasse LinearRegression und referenzieren die Instanz als model.

Zeile 5 trainiert unseren Algorithmus: Hier zeigen wir dem gewählten Machine-Learning-Model, welche Ergebnisse („target“) wir aus unseren vorliegenden Eingaben („features“) wir bisher erzielt haben.

Zeile 6 hatten wir bereits.

In Zeile 7 lassen wir unseren Algorithmus vorhersagen, welches Ergebnis er anhand der Eingabe des bisher nicht bekannten Werts „32“ erwartet. Das Ergebnis der Vorhersage lassen wir ausgeben.

Das ausgegebene Ergebnis lautet 64.

Was ist jetzt so besonders daran?

Was auf dem ersten Blick womöglich unspektakulär aussehen mag, grenzt bei genauerem Hinsehen an Zauberei, denn an keiner Stelle unseres Programms haben wir festgelegt, was der Computer mit einer von uns eingegebenen Zahl tun soll. Der Algorithmus hat sich in Zeile 5 die Werte aus den vorhandenen Daten in „features“ angesehen und diese mit den von uns bestätigten Ergebnissen in „target“ verglichen. Selbständig hat der Algorithmus festgestellt, dass sich die Werte im Vergleich stets verdoppeln und dieses Prinzip auf unsere Eingabe von „32“ in Zeile 7 angewandt.

Dies mag in unserem einfachen Beispiel mit zwei Zahlenreihen mit jeweils vier Werten wenig beeindrucken, aber das Gleiche funktioniert auch mit hunderttausenden von Einträgen, die man sich als Mensch nicht mal so nebenbei ansehen und dahinter liegende Muster erkennen kann.