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:
machine-learning
clustering
Histelheim
quelle
quelle
Antworten:
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.
quelle
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
bcp
Paket 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 dasstrucchange
Paket, aber das hat bei mir weniger gut funktioniert.quelle
Mithilfe von Wavelets können Sie Zeiträume mit unterschiedlichen Eigenschaften identifizieren. Ich bin mir jedoch nicht sicher, ob es Methoden gibt, die Ihre Zeitreihen für Sie in diskrete Zeiträume unterteilen. Und es scheint, als gäbe es eine Menge Theorie zu durchforsten, die ich erst am Anfang habe. Ich freue mich auf weitere Vorschläge.
Ein kostenloses Einführungskapitel über Wavelets.
Ein R-Paket für Signifikanztests mit Wavelets.
quelle
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 ...
quelle
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.
quelle