Fig. 1: Einrichtung für die Datenerfassung
Auf diese Weise wird ein erster Datensatz erstellt: Über einen Zeitraum von 376 Minuten werden 91 km zurückgelegt und etwa 735.000 Messwerte pro Sensorkanal aufgezeichnet, was einer Abtastrate von 32,5 Hz entspricht. Die Durchschnittsgeschwindigkeit betrug etwa 14,6 km/h.
Um den Einfluss der Abtastrate auf die Genauigkeit unserer Modelle zu beurteilen, wurde ein zweiter Datensatz erstellt, bei dem die Abtastrate maximiert werden sollte. Zu diesem Zweck können die Daten wegen des geringeren Durchsatzes nicht mehr per Bluetooth an die Labelling-App übertragen werden. Stattdessen werden sie direkt auf der SD-Karte gespeichert. Die Tasten und LEDs des XDK wurden entsprechend für das Label sowie für das Starten und Stoppen der Aufzeichnung programmiert. Der zweite Datensatz schließlich umfasst eine Strecke von rund 77 km, die in 314 Minuten aufgezeichnet wurde. Aufgrund der höheren Abtastrate von 294 Hz wurden deutlich mehr Daten aufgezeichnet – etwa 5,6 Millionen Datenpunkte pro Sensorkanal.
Schließlich wurde ein Testdatensatz auf die gleiche Weise aufgezeichnet, wobei das Fahrrad durch ein kvv.nextbike ersetzt wurde, um die Übertragbarkeit der Modelle auf unbekannte Fahrräder zu überprüfen. Insgesamt wurden ca. 9 km gefahren, wobei knapp über 500.000 Messwerte pro Sensorkanal gespeichert wurden.
Maschinelles Lernen
Für den Bereich des maschinellen Lernens wurden verschiedene Modelle verglichen. Zum einen wurden baumbasierte Verfahren wie Random Forest und XGBoost sowie Support Vector Machines gewählt. Alle diese Methoden haben sich bereits als sehr zuverlässige Modelle für eine Vielzahl von Klassifizierungsaufgaben erwiesen.
Darüber hinaus sind baumbasierte Algorithmen recht intuitiv und ihre Entscheidungen lassen sich im Gegensatz zu Black-Box-Modellen leicht interpretieren. Auf der anderen Seite wurden Deep-Learning-basierte Methoden eingesetzt. Neben LSTM-Netzen wurden auch faltige neuronale Netze getestet, insbesondere Deep Residual Networks. Diese wollen wir uns näher ansehen.
Fig. 2: ResNet für die Klassifizierung von Zeitreihen
Die obige Abbildung 2 zeigt ein von Fawaz et al. [3] entwickeltes ResNet zur Klassifizierung von Zeitreihen. Im Vergleich zur Bilderkennung gibt es hier eine Besonderheit: Die Filter gleiten nur in einer Dimension (Zeit) über die Eingabedaten. Alles andere funktioniert jedoch genau gleich. Wir sehen drei Restblöcke, die jeweils drei Faltungsschichten enthalten. Der erste Block verwendet 64 Filter und die beiden anderen Blöcke 128 Filter. Die Restverbindungen können das Degradationsproblem verhindern, d. h. es können tiefere Netze aufgebaut werden, ohne dass die Trainingsgenauigkeit rapide abnimmt. Auf die Restblöcke folgen schließlich ein Durchschnitts-Pooling und eine vollständig verbundene Ausgangsschicht.
Fig. 3: InceptionTime
Mit InceptionTime wird von Fawaz et al. [4] auch der aktuelle Stand der Technik im Bereich der Zeitreihenklassifikation vorgeschlagen. Die Architektur bleibt im Vergleich zum bisherigen ResNet weitgehend unverändert. Es werden jedoch nur zwei statt drei Residualblöcke verwendet. Schließlich werden die einzelnen Faltungsschichten durch Inception-Module ersetzt (siehe Abbildung 3 oben). In diesen Modulen laufen parallele Faltungsoperationen ab, deren Ausgang zu einem gemeinsamen Ausgang zusammengeführt wird.
Die Modelle werden mit Python, scikit-learn und keras implementiert. Zur Optimierung der Hyperparameter wird eine Gittersuche mit zehnfacher stratifizierter Kreuzvalidierung durchgeführt. Zuvor werden die von den Modellen verwendeten Eingabedaten vorbereitet, indem sie normalisiert werden. Außerdem werden zusammenfassende Statistiken wie Durchschnittswerte, Standardabweichungen usw. für die nicht auf Deep Learning basierenden Methoden berechnet. Insgesamt 14 neue Merkmale pro Sensorkanal dienen als Eingabe für diese Modelle.