2016-11-19 2 views
0

Angenommen, ich 5 Kategorien stündliche Daten für consective 10 Tage entspricht, erstellt als:Statistiken über Cluster-Mitglied Beziehungen über mehrere Tage

library(xts) 
set.seed(123) 
timestamp <- seq(as.POSIXct("2016-10-01"),as.POSIXct("2016-10-10 23:59:59"), by = "hour") 
data <- data.frame(cat1 = rnorm(length(timestamp),150,5), 
         cat2 = rnorm(length(timestamp),130,3), 
         cat3 = rnorm(length(timestamp),150,5), 
         cat4 = rnorm(length(timestamp),100,8), 
         cat5 = rnorm(length(timestamp),200,15)) 
data_obj <- xts(data,timestamp) # creat time-series object 
head(data_obj,2) 

nun separat für jeden Tag, ich Clustering durchführen und sehen, wie diese Kategorien verhalten sich in Bezug zueinander mit einfachen kmeans wie:

daywise_data <- split.xts(data_obj,f="days",k=1) # split data day wise 
clus_obj <- lapply(daywise_data, function(x){ # clustering day wise 
    return (kmeans(t(x), 2)) 
}) 

Sobald Clustering vorbei ist, stelle ich mir die Cluster-Beziehungen über verschiedene 10 Tage mit

sapply(clus_obj,function(x) x$cluster) # clustering results 

und ich die Ergebnisse als

enter image description here

Bei der visuellen Inspektion festgestellt, ist es klar, dass cat1 und cat3 immer im gleichen Cluster geblieben. Ähnlich sind cat4 und cat5 meist in verschiedenen Clustern an 10 verschiedenen Tagen.

Abgesehen von der visuellen Inspektion, gibt es einen automatischen Ansatz zum Sammeln dieser Art von Statistik aus solchen Clustering-Tabellen?


Hinweis: Dies ist ein Dummy-Beispiel. Ich habe einen Datenrahmen, der solche 80 Kategorien über kontinuierliche 100 Tage enthält. Eine automatische Zusammenfassung wie oben wird den Aufwand reduzieren.

Antwort

0

Paarzählende Cluster-Evaluierungsmaßnahmen zeigen eine einfache Möglichkeit, dieses Problem anzugehen.

Anstatt auf Objekt-Cluster-Zuordnungen, die instabil sind, betrachten diese Methoden, ob zwei Objekte im selben Cluster sind (das heißt ein "Paar").

So können Sie überprüfen, ob diese Paare sich im Laufe der Zeit ändern oder nicht.

Da k-means zufällig ist, möchten Sie es möglicherweise auch mehrmals für jede Zeitscheibe ausführen, da sie verschiedene Clusterings zurückgeben können!

Sie könnten dann sagen, dass z.B. Serie 1 ist im selben Cluster wie Serie 2 in 90% der Ergebnisse. usw.

+0

Ihre Erklärung ist korrekt und ich möchte diesen Prozentsatz berechnen. Aber die in [Wikipedia] (https://en.wikipedia.org/wiki/Cluster_analysis) erwähnten externen Bewertungsmaßstäbe scheinen in meinem Fall nicht zu gelten, da ich keine Grundwahrheit (Benchmark) habe. Diese Clusterbildung wird nicht überwacht. Ihre weiteren Erkenntnisse könnten mir helfen, weiter zu graben ... –

+0

Der gleiche Ansatz kann verwendet werden, um zwei Ergebnisse zu verschiedenen Zeitpunkten zu vergleichen. Die meisten dieser Methoden sind symmetrisch, im Wesentlichen sind sie ein Ähnlichkeitsmaß für Partitionierungen. –

+0

Ich habe mein Problem ein wenig umformuliert und habe die Antwort auf [this] (http://stackoverflow.com/q/40713096/3317829) Stack Overflow Link bekommen –

Verwandte Themen