Ich versuche mit Python und sklearn eine Anomalieerkennung zwischen Zeitreihen durchzuführen (aber andere Paketvorschläge sind auf jeden Fall willkommen!).
Ich habe einen Satz von 10 Zeitreihen; Jede Zeitreihe besteht aus Daten, die aus dem Drehmomentwert eines Reifens (also insgesamt 10 Reifen) erfasst wurden, und die Sätze enthalten möglicherweise nicht die gleiche Anzahl von Datenpunkten (Satzgröße unterschiedlich) . Jede Zeitreihendaten sind so ziemlich nur die Reifen-ID, der Zeitstempel und der sig-Wert (Wert aus dem Signal oder dem Sensor). Beispieldaten für eine Zeitreihe sehen folgendermaßen aus:
tire_id timestamp sig_value
tire_1 23:06.1 12.75
tire_1 23:07.5 0
tire_1 23:09.0 -10.5
Jetzt habe ich 10 von ihnen und 2 von ihnen verhalten sich seltsam. Ich verstehe, dass dies ein Problem bei der Erkennung von Anomalien ist, aber die meisten Artikel, die ich online lese, erkennen Anomaliepunkte innerhalb derselben Zeitreihe (auch bekannt als, wenn an einigen Punkten die Drehmomentwerte für diesen Reifen nicht normal sind).
Um festzustellen, welche 2 Reifen sich abnormal verhalten, habe ich versucht, die Clustering-Methode zu verwenden, im Grunde genommen k-bedeutet Clustering (da es unbeaufsichtigt ist).
Um die Daten für die Einspeisung in das k-means-Clustering für jede Zeitreihe (auch bekannt als für jeden Reifen) vorzubereiten, habe ich Folgendes berechnet:
- Die Top 3 Sätze des benachbarten lokalen Maximums und lokalen Minimums mit der höchsten Amplitude (Differenz)
- Mittelwert des Drehmomentwertes
- Standardabweichung der Drehmomentwerte
Ich habe auch die Anzahl der Cluster auf nur 2 festgelegt, also entweder Cluster 1 oder 2.
Mein Endergebnis (nach dem Zuweisen von Clustern) sieht also wie folgt aus:
amplitude local maxima local minima sig_value_std \
tire_0 558.50 437.75 -120.75 77.538645
tire_0 532.75 433.75 -99.00 77.538645
tire_0 526.25 438.00 -88.25 77.538645
tire_1 552.50 -116.50 436.00 71.125912
tire_1 542.75 439.25 -103.50 71.125912
sig_value_average cluster
tire_0 12.816990 0
tire_0 12.816990 0
tire_0 12.816990 0
tire_1 11.588038 1
tire_1 11.588038 0
Jetzt habe ich eine Frage, was ich mit diesem Ergebnis anfangen soll ... also hat jeder Reifen 3 Datenreihen, da ich die Top 3 Paare lokaler Max / Min mit 3 größten Amplituden ausgewählt habe, und das bedeutet, dass jede Reihe sein kann einem Cluster zugewiesen, und manchmal werden sie sogar für 1 Reifen verschiedenen Clustern zugewiesen. Außerdem ist die Clustergröße normalerweise größer als nur 2.
Meine Fragen sind:
- Wie erkennt man Anomalien über "Zeitreihen", nicht nur über einzelne Datenpunkte?
- Ist mein Ansatz vernünftig / logisch? Wenn ja, wie kann ich mein Ergebnis bereinigen, um das zu erhalten, was ich will? Und wenn nicht, was kann ich tun, um mich zu verbessern?