Hej Leute,

heute gibt es mal keinen Programmcode, sondern Grundsätzlicheres. Was ist denn eigentlich maschinelles Lernen und was hat das mit künstlicher Intelligenz zu tun, welche ja heutzutage das Buzzwort ist.

Wie der Name schon sagt, soll eine Maschine etwas lernen. Aber was und wie bringt man einem Computer etwas bei?

 

Allgemein gesagt verbergen sich hinter Maschinellem Lernen (engl. machine learning, Abkürzung ML) eine Reihe von Algorithmen, die zuerst mit Beispielen gefüttert werden – das bezeichnet man als Trainingsphase – und dann auf neue Daten losgelassen werden.

 

Beispiele für maschinelles Lernen

Handschriftliche Ziffern-Erkennung

Ein aktuell sehr beliebtes Beispiel ist das Erkennen von Ziffern. Der Rechner soll also ein Bild von einer per Hand geschriebenen Ziffer korrekt erkennen. Wie allgemein für die Bilderkennung haben sich auch hier Neuronale Netze als gute Algorithmen, d.h. mit einer hohen Trefferquote (engl. accuracy) bzw. niedrige Fehlerquote, herausgestellt. State of the art ist eine Fehlerquote von 0,21%. Das Beispiel ist so beliebt, weil es dazu den schönen Trainingsdatensatz MNIST mit 70.000 Bildern von Ziffern der Auflösung 28×28 Pixel gibt. Zudem kann der Aufbau von Neuronalen Netzen gut an dem Beispiel erklärt werden, aber natürlich eignen sich auch andere ML-Algorithmen wie Support Vector Machines für diese Art der Klassifizierung.

 

Recommendation Engine – Kunden kauften auch

Eine Recommendation Engine (auch recommender system) kennt eigentlich jeder, der schon mal in einem Online-Shop bestellt hat. Diese soll Produkte vorschlagen, welche ich hoffentlich auch noch kaufen möchte. Allgemeiner sollen anhand der über den Nutzer bekannten Daten die Objekte identifiziert werden, für die der Nutzer das größte Interesse hat.

Lineare Regression

Ein Klassiker in der Statistik ist die lineare Regression. Dabei geht es darum, eine Gerade so zu bestimmen, dass der quadratische Fehler minimiert wird. Und auch dieser Algorithmus lernt anhand von einem Beispieldatensatz, welches die optimale Gerade ist.

 

Trainings- und Testdatensatz

Nachdem man einen Algorithmus mit Hilfe des Trainingsdatensatzes angelernt hat, möchte man natürlich wissen, wie gut der Algorithmus nun abschneidet, bevor man ihn auf die „echte“ Welt loslässt. Dafür ist der Testdatensatz da. In der Praxis sieht es so aus, dass man den Datensatz, den man zur Verfügung hat, zuerst in einen Trainings- und einen Testdatensatz aufteilt, dann mit Hilfe des Trainingsdatensatzes lernt und am Testdatensatz die Güte überprüft. Wichtig dabei ist, dass der Testdatensatz nicht schon zum Lernen benutzt wurde, ansonsten droht Overfitting, also das zu starke Anpassen an den speziellen Datensatz.

Wer es noch komplizierter mag, der unterteilt den Trainingsdatensatz nochmal in einen Trainings- und einen Validierungsdatensatz. Der Validierungsdatensatz ist dafür da, die Hyperparameter eines Algorithmus zu optimieren, also zum Beispiel die Struktur eines neuronalen Netzes.

 

Güte eines Modells

Die Güte eines Modells wird häufig mit der Genauigkeit (engl. accuracy) angegeben. Bei einem binären Klassifikationsproblem, also einer Einteilung von Beobachtungen in zwei Klassen, wird die Genauigkeit mit Hilfe des Testdatensatzs bestimmt. Dazu wird gezählt, wie häufig der Algorithmus richtig lag, d.h. ob der Algorithmus die gleiche Klasse wie im Testdatensatz prognostiziert hat. Diese Anzahl wird dann durch die Anzahl Beobachtungen geteilt.

Anders herum kann man auch die Fehlerrate bestimmen, also die Anzahl, bei denen der Algorithmus falsch lag. Ist die Klassifikation ein ja oder nein, kann man noch die Fehler in Falsch-Positiv und  Falsch-Negativ unterteilen (ebenso natürlich auch die korrekten Vorhersagen in Richtig-Positiv und Richtig-Negativ). Dabei bedeutet Falsch-Positiv, dass der Algorithmus ja vorhersagt, obwohl nein richtig wäre. Falsch-Negativ heißt dementsprechend andersherum, dass der Algorithmus nein vorhersagt, obwohl ja richtig wäre.