Eine spielerische Möglichkeit sein Knowhow im Bereich Machine Learning zu erweitern, bietet die Plattform www.kaggle.com. Auf dieser werden Wettbewerbe ausgeschrieben, die darin bestehen Optimierungsaufgaben mit vorgegebenen Daten möglichst gut zu lösen. Dies können Wettbewerbe sein für die Geldpreise ausgelobt sind (derzeit bis zu 100.000 $ pro Bewerb), oder Bewerbe bei denen es nur um die Ehre der ersten Plätze, und natürlich dem Wissensaufbau geht.
Um dies zu testen versuche ich mich mal an einem Wettbewerb, der der Schulung dient, und mit der Plattform Coursera, die ich in einem früheren Beitrag beschrieben habe, veranstaltet wird. Dabei soll der Fahrpreis einer Taxifahrt in New York vorhergesagt werden, wenn einige Werte, wie Start- und Endpunkt, Zeitpunkt und Passagieranzahl bekannt sind. Dazu werden die Daten von 55 Millionen Taxifahrten zur Verfügung gestellt, um ein Machine Learning Modell zu trainieren. Für jede der Fahrten ist dabei der Fahrpreis in den Daten vorhanden. Es kann daher Supervised Learning eingesetzt werden.
Das Modell wird dann verwendet, um für einen zweiten Datensatz (“Testdaten”), der keine Fahrpreise enthält, diese zu errechnen. Diese Prognosen lädt man in Form einer Datei auf die Plattform hoch, wo sie mit den unsichtbaren realen Werten verglichen werden. Um so näher man im Mittel den Echt-Daten mit seiner Prognose kommt, desto besser liegt man in der Ergebnisliste (“Leaderboard”) des Bewerbes.
Nach einigen Versuchen liege ich mit einer mittleren Abweichung von 3,59$ mal auf Platz 421 von zu diesem Zeitpunkt 820 Teilnehmern. Erste Versuche mit einem einfachen linearen Regressions-Modell brachten zuerst einen mittleren Fehler von ca. 5,7$, den ich dann mit einem neuronalen Netz mit einigen Schichten und ca 100 Neuronen pro Schicht verbessern konnte.
Der Prozess zur Erstellung einer Einreichung zum Wettbewerb übt dabei die typischen Schritte eines Machine Learning Projektes. Beginnend mit explorativer Datenanalyse samt Visualisierungen, um sich einen Überblick über die Daten zu verschaffen, Zusammenhänge zu erkennen, und abnorme Daten (“Ausreißer”) zu eliminieren. Hierzu eignet sich zum Beispiel Software wie “Tableau”, die ich in einem früheren Beitrag beschrieben habe.
Im nächsten Schritt werden die für die Prognose relevanten Merkmale (“Features”) aufbereitet, in meinem Beispiel waren das neben der Fahrstrecke, der Passagieranzahl auch Dinge wie Wochentag, Uhrzeit oder Jahreszeit. Mit den vorhandenen Trainings-Daten wird anschließend mit einem Optimierungsverfahren nach den optimalen Parametern des Modells gesucht. Bei meinen letzten Versuchen kam “TensorFlow” mit “Keras” für Modellierung und Training zum Einsatz. Um in der Rangliste weiter nach vorne zu kommen, muss ich nun mit weiteren Merkmalen, anderen Modellparametern und längeren Trainingszeiten versuchen meine Prognosen zu verbessern.
Die Kaggle-Plattform bietet alles was für die Bewerbe benötigt wird, neben Datensätzen werden die eigenen Berechnungen und die Analysen anderer in Form von Jupyter-Notebooks (“Kernels”) in “Python” oder “R” zur Verfügung gestellt, und diese können auch direkt auf der Plattform berechnet werden. Neuerdings werden die Berechnungen durch die Option nur GPU-Unterstützung deutlich beschleunigt.