Geeignete Clustering-Techniken für zeitliche Daten?


13

Ich habe zeitliche Daten von Aktivitätsfrequenzen. Ich möchte Cluster in den Daten identifizieren, die unterschiedliche Zeiträume mit ähnlichen Aktivitätsstufen angeben. Idealerweise möchte ich die Cluster identifizieren, ohne die Anzahl der Cluster a priori anzugeben.

Was sind geeignete Clustering-Techniken? Wenn meine Frage nicht genügend Informationen zur Beantwortung enthält, welche Informationen muss ich bereitstellen, um die geeigneten Clustering-Techniken zu bestimmen?

Unten ist eine Illustration der Art von Daten / Clustering, die ich mir vorstelle: Clustering über die Zeit


Die Handlung sieht für mich geglättet (interpoliert) aus. Das ist wahrscheinlich irreführend. Und "longitudinal" habe ich mit Geodaten assoziiert, aber anscheinend schaust du auf eine Zeitreihe?
Hat aufgehört - Anony-Mousse

1
Achten Sie nicht zu sehr auf die Handlung, es ist nur ein Beispiel. Was ich erreichen möchte, ist die Identifizierung bestimmter Zeitabschnitte anhand von Variablen, die sich über die Zeit ändern. Longitudinal ist in meinen Augen dasselbe wie die
Zeitdaten

Da Sie diesen Begriff beim Clustering meistens wie in de.wikipedia.org/wiki/Longitude sehen, ist aus Ihrer Frage nicht ersichtlich, was Sie als Cluster definieren möchten. Sie können z. B. Zeitintervalle gruppieren , die sich über "Subjekte" hinweg ähnlich verhalten, oder Subjekte, die über die Zeit den gleichen Fortschritt aufweisen.
Hat aufgehört - Anony-Mousse

1
Ich habe "longitudinal" in "temporal" geändert, um Verwirrung zu vermeiden. Mit deinen Worten denke ich, dass ich Zeitintervalle gruppieren möchte . Es ist mir jedoch wichtig, dass die Cluster unterschiedliche, zeitlich zusammenhängende Episoden sind.
Histelheim

Suchen mit den Schlüsselwörtern "Zeitreihensegmentierung" oder "Regime Switching Models" können hilfreich sein.
Yves

Antworten:


6

Aus meiner eigenen Forschung geht hervor, dass Gaußsche Hidden-Markov-Modelle gut passen könnten: http://scikit-learn.org/stable/auto_examples/plot_hmm_stock_analysis.html#example-plot-hmm-stock-analysis-py

Es scheint definitiv verschiedene Episoden von Aktivität zu finden.

Gaußsches verstecktes Markov-Modell


Müssen Sie nicht vorher wissen, wie viele versteckte Zustände es gibt? Gibt es eine Möglichkeit, das zu umgehen?
JCWong

@JCWong Ich denke, Sie können eine nichtparametrische Bayes'sche Variante (das unendliche versteckte Markov-Modell) verwenden, um dies zu vermeiden.
jtobin

Nach langer Zeit: HMM scheint Ereignisse nicht zeitlich zu gruppieren (wie in der Abbildung dargestellt). Es wurde jedoch gefragt, wie man zeitliche Cluster erhält. Ich bin nur neugierig, weil ich an zeitlichen Clustern arbeite.
RussellB

3

Ihr Problem klingt ähnlich wie eines, das ich gerade betrachte, und diese Frage ist ähnlich, aber weniger gut erklärt.

Ihre Antwort verweist auf eine gute Zusammenfassung der Änderungserkennung. Für mögliche Lösungen hat eine schnelle Google-Suche ein Change Point Analysis- Paket in Google-Code gefunden. R hat auch einige Werkzeuge, um dies zu tun. Das bcpPaket ist ziemlich leistungsstark und sehr einfach zu bedienen. Wenn Sie dies im Handumdrehen tun möchten, wenn Daten eingehen, beschreibt der Artikel "Online-Erkennung von Änderungspunkten und Parameterschätzung mit Anwendung auf genomische Daten" einen wirklich ausgeklügelten Ansatz. Es gibt auch das strucchangePaket, aber das hat bei mir weniger gut funktioniert.



1

Haben Sie diese Seite gesehen: UCR Time Series Classification / Clustering Page ?

Dort finden Sie beides: die zu übenden Datensätze und veröffentlichte Ergebnisse - um die Leistung Ihrer eigenen Implementierung zu vergleichen (es gibt auch einen Link zur bekannten Leistung bekannter maschineller Lerntechniken). Darüber hinaus wird auf dieser Seite eine kritische Masse von Artikeln zitiert, aus denen Sie die Suche nach dem für Ihr Problem, Ihre Daten oder Ihre Bedürfnisse am besten geeigneten Ansatz fortsetzen können.

Es gibt auch eine andere Möglichkeit, dies (möglicherweise) durch Anwendung von sequitur http: // sequitur.info zu tun. Wenn Sie in der Lage sind, Ihre Daten gut zu normalisieren / anzunähern, wird Ihre Grammatik für diese "unterschiedlichen Zeiträume mit ähnlichen Aktivitätsstufen" in diesem Artikel angezeigt und nach einem anderen gesucht, da ich keine weiteren Links hinzufügen kann ...


3
Können Sie eine kurze Zusammenfassung der auf dieser Seite verfügbaren Ressourcen bereitstellen?
chl

Natürlich kann ich. von dort aus habe ich meinen eigenen klassifikator
seninp

1

Ich denke, Sie können Dynamic Time Wrapping verwenden, um nach Ähnlichkeiten zwischen verschiedenen Zeitreihen zu suchen. Dazu müssen Sie Ihr Wavelet möglicherweise wie ein Array in Auflistungen diskretisieren. Die Granularität wäre jedoch ein Problem, und wenn Sie eine große Anzahl von Zeitreihen haben, sind die Berechnungskosten ziemlich hoch, um die DTM-Entfernung für jedes Paar zu berechnen. Möglicherweise benötigen Sie eine Vorauswahl, um als Beschriftung zu arbeiten.

Überprüfen Sie dies aus. Ich arbeite auch an einer Aufgabe wie deiner und diese Seite hat mir geholfen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.