Formerkennung für Zeitreihendaten

8

Ich habe eine große Sammlung von Zeitreihen - Messungen, die alle 15 Minuten (96 Messungen pro Tag) über einen Zeitraum von 1 Jahr an verschiedenen Orten durchgeführt werden.

Ich habe jede Zeitreihe in 365 separate kleinere Zeitreihen unterteilt, eine für jeden Tag des Jahres. Wenn man sich diese Zeitreihen ansieht, gibt es sicherlich viele verschiedene Formen für einen einzelnen Tag. Manche sehen sinusförmig aus, manche sind konstant, manche sehen aus wie ein zufälliger stochastischer Prozess, manche sehen parabolisch aus und manche sehen aus wie U's.

Ich möchte einen Algorithmus verwenden, der diese gemeinsamen Formen findet. Ich dachte über Clustering nach und verwendete die Cluster-Schwerpunkte, um gemeinsame Formen zu definieren, wollte aber bei der Community nachfragen, ob dies richtig ist. Bisher habe ich Dynamic Time Warp als Metrik betrachtet, aber es scheint, dass diese Metrik viel Berechnung erfordert. Ich habe auch gefunden

http://mox.polimi.it/it/progetti/pubblicazioni/quaderni/13-2008.pdf von SE.

Ich habe auch gesehen Ist es möglich, Zeitreihen-Clustering basierend auf der Kurvenform durchzuführen? Diese Frage stammt jedoch aus dem Jahr 2010 und ist möglicherweise veraltet.

Eine andere Idee, die ich hatte, war, Eigenzusammensetzungen von Matrizen zu nehmen, die wie folgt formatiert waren:

Die Matrix ist eine Matrix aller am Tag beobachteten Zeitreihen . Jede Zeile der Matrix ist eine Zeitreihe der Länge 96. Dann würde ich 365 Eigendekompositionen durchführen und die Eigenvektoren als gemeinsame Formen verwenden. Klingt das vernünftig?M.ichichM.ich

Vielen Dank!

JCWong
quelle

Antworten:

7

Ich würde nicht zu tief in das Clustering der Zeitreihen eintauchen, das auf einer komplexen Kurvenanalyse basiert, da Ihre Daten wahrscheinlich viel Rauschen enthalten und Sie wahrscheinlich seltsame (bedeutungslose) Cluster erhalten.

Ich denke, dass es einfacher ist, das Hauptmuster Ihrer Daten zu ermitteln, das höchstwahrscheinlich auf Trends und Saisonalität basiert (Wochentage, Wochenenden, Feiertage ...). Sie finden es, indem Sie einige Statistiken von jedem Tag (Mittelwert, Morgentrend, Abendtrend ...) mit der Zeit (Tag des Jahres, Wochentag, Tag des Monats ...) auf der x-Achse zeichnen. Auf diese Weise erhalten Sie die Basis Ihrer Daten und damit Ihre Basiscluster.

Wenn Sie beispielsweise in R Ihr Datum in Spalte 1 und Ihren Mittelwert in Spalte 2 haben, können Sie Ihre Basislinie des Wochentagsmusters einfach wie folgt zeichnen:

data[,3] <- as.factor(weekdays(data[,1]))
plot(data[,3],data[,2],main='mean by Day of Week')

Der nächste Schritt kann darin bestehen, Ihre Ausreißer zu identifizieren und zu überprüfen, ob Sie dort Muster finden.

Wenn Sie es vorziehen, in umgekehrter Reihenfolge zu arbeiten; Wenn Sie eine automatische Analyse ausführen , wie Sie sie vorgeschlagen haben, oder mehrere Zeitreihen, die auf LB_Keogh oder kml eingestellt sind , ist dies in Ordnung. Sie müssen jedoch mit der obigen Logik zur aussagekräftigen Interpretation der Ergebnisse zurückkehren.

Kerl
quelle