Die Python-Library scikit-learn umfasst zahlreiche Machine-Learning-Algorithmen und soll den Einstieg in die Welt des maschinellen Lernens erleichtern. Dafür wird bewusst auf fortgeschrittene Implementierungen und GPU-Support verzichtet, dafür aber auf eine möglichst einfache Installation und Bedienbarkeit geachtet. Die Library eignet sich hervorragend für schnelle Analysen und erste Modelle, was für unsere erste Vorhersagen vollkommen ausreichend war. Außerdem konnten wir so die Stations-Snapshots in wenigen Schritten umfassend analysieren. Anschließend haben wir eine erste Prognose mit dem Multi-layer Perceptrons (MLP) Lernalgorithmus erstellt.
Ein mehrschichtiges Perzeptron / Multi-layer Perceptron ist ein überwachter Lernalgorithmus, der eine Funktion lernt, indem er auf einem Datensatz trainiert. Bei einer Reihe von Merkmalen und einem Ziel kann es einen nichtlinearen Funktionsapproximator (= Annäherung) für Klassifikation oder Regression lernen. Es unterscheidet sich von der logistischen Regression dadurch, dass zwischen der Eingabe- und der Ausgabeschicht eine oder mehrere nichtlineare Schichten, die als verdeckte Schichten bezeichnet werden, vorhanden sein können. Die Abbildung zeigt eine MLP mit einer verdeckten Schicht mit skalarer Ausgabe.
Die linke Schicht, die als Eingabeschicht bezeichnet wird, besteht aus einer Gruppe von Neuronen, die die Eingabefunktionen darstellen. Jedes Neuron in der versteckten Schicht transformiert die Werte aus der vorherigen Schicht mit einer gewichteten linearen Summierung, gefolgt von einer nichtlinearen Aktivierungsfunktion – wie die tanh (hyperbolische Tangens)- oder ReLu-Funktion. Aktuell gehört die ReLu-Funktion zu den beliebtesten Aktivierungsfunktionen für maschinelles Lernen. Die Ausgabeschicht empfängt die Werte der letzten verborgenen Ebene und wandelt diese in Ausgabewerte um. Das Modul enthält die öffentlichen Attribute coefs_ und intercepts_. coefs_ ist eine Liste von Gewichtsmatrizen, wobei die Gewichtsmatrix am Index die Gewichte zwischen Ebene und Ebene darstellt. intercepts_ ist eine Liste von Bias-Vektoren, wobei der Vektor bei Index die zu der Ebene hinzugefügten Bias-Werte darstellt.
Die klaren Vorteile des MLP-Algorithmus:
- Erlernen nichtlinearer Modelle
- Echtzeit- bzw. sogenanntes Online-Lernen
Es ergeben sich jedoch auch folgende Nachteile:
- MLP mit versteckten Schichten haben eine nicht konvexe Verlustfunktion, wenn mehr als ein lokales Minimum existiert. Daher können unterschiedliche Zufallsgewichtsinitialisierungen zu einer unterschiedlichen Validierungsgenauigkeit führen.
- MLP erfordert die Optimierung einer Reihe von Hyperparametern, wie die Anzahl der versteckten Neuronen, Schichten und Iterationen.
- MLP ist empfindlich für die Skalierung von Features.
Klasse MLPRegressor implementiert ein mehrschichtiges Perzeptron, das mit Backpropagation ohne Aktivierungsfunktion in der Ausgangsschicht trainiert, was auch als Verwendung der Identifizierungsfunktion als Aktivierungsfunktion angesehen werden kann. Daher verwendet es den quadratischen Fehler als Verlustfunktion und die Ausgabe ist eine Menge von kontinuierlichen Werten. MLPRegressor unterstützt auch Multi-Output-Regression, bei der eine Probe mehr als ein Ziel haben kann. MLPRegressor trainiert iterativ, da zu jedem Zeitschritt die partiellen Ableitungen der Verlustfunktion in Bezug auf die Modellparameter berechnet werden, um die Parameter zu aktualisieren. Es kann auch einen Regularisierungsbegriff zur Verlustfunktion hinzufügen, der die Modellparameter verkleinert, um eine Überanpassung (overfitting) zu verhindern. Diese Implementierung arbeitet mit Daten, die als dichte und spärliche, nummerierte Arrays von Gleitkommawerten dargestellt werden.