Einführung
Im Rahmen meiner Zertifizierung zum Machine Learning Engineer habe ich als Abschlussprojekt die Vorhersage von Erdbeben gewählt.
Ziel des Projektes ist es ein Machine Learning Model zu trainieren, dass mit seismischen Daten eine präzise Vorhersage machen kann wann ein Erdbeben auftreten wird.
Das Projekt wurde in der Programmierspache Python mit Tensorflow/Keras implementiert.
Details zu diesem Projekt auf Github.
Daten Analyse
Die Grundlage für das Training ist ein Datensatz in Form eine CSV Datei. Die Datei besteht aus 2 Spalten „acoustic_data“ (Amplitude des seismischen Signals) und „time_to_failure“ (Zeit bis zum eintreten des Erdbebens).
Hier ein Beispiel der Datei:
Eine visuelle Darstellung des akustischen Signals sieht so aus:
Metrik
Die Metrik um zu prüfen ob das Model wirklich lernt ist der Mean Absolute Error (MAE). Der MEA wird mit folgender Formel berechnet:
Für jeden Datensatz des Testdatensatzes wird der Vorhersagefehler berechnet und in einen positiven Wert konvertiert indem man den Absolutwert für jeden Fehler nimmt. Abschließend wird der Mittelwert für alle aufgezeichneten Fehler berechnet. Das ist dann der MAE.
Features
Als Features für das Training habe ich mich für MFCC (Mel Frequency Cepstral Coefficients) entschieden. Der MFCC führt zu einer kompakten Darstellung des Frequenzspektrums. In der finalen Version wurden 10 Koeffizienten gewählt bei einer Abtastrate von 44100 Hz.
Hier die visuelle Darstellung des MFCC:
Die daraus resultierenden 10 Features sehen visuell so aus:
Da einige Features relativ gleich im Verlauf sind (z.B. „mfcc_2“ und „mfcc_3“) habe ich entschieden per Principal Component Analysis (PCA) die Anzahl der Features von 10 auf 6 zu reduzieren.
Training
Mit den verbleibenden Features wurde ein Rekurrentes neuronales Netz (RNN) trainiert.
Im Ergebnis entstand ein Model das zur vorhersage von Erdbeben im Laborumfeld geeignet ist.
Das RNN ist wie folgt aufgebaut: