Ich habe eine halbkleine Matrix mit binären Features der Dimension 250k x 100. Jede Zeile ist ein Benutzer, und die Spalten sind binäre "Tags" für ein bestimmtes Benutzerverhalten, z. B. "likes_cats".
user 1 2 3 4 5 ...
-------------------------
A 1 0 1 0 1
B 0 1 0 1 0
C 1 0 0 1 0
Ich möchte die Benutzer in 5-10 Cluster einteilen und die Ladevorgänge analysieren, um festzustellen, ob ich Gruppen von Benutzerverhalten interpretieren kann. Es scheint eine ganze Reihe von Ansätzen zu geben, um Cluster an Binärdaten anzupassen. Welche Strategie ist unserer Meinung nach die beste für diese Daten?
PCA
Erstellen einer Jaccard-Ähnlichkeitsmatrix , Anpassen eines hierarchischen Clusters und anschließende Verwendung der obersten "Knoten".
K-Mediane
K-Medoide
Proximus ?
Agnes
Bisher hatte ich einige Erfolge mit hierarchischen Clustern, aber ich bin mir nicht sicher, ob dies der beste Weg ist.
tags = read.csv("~/tags.csv")
d = dist(tags, method = "binary")
hc = hclust(d, method="ward")
plot(hc)
cluster.means = aggregate(tags,by=list(cutree(hc, k = 6)), mean)
quelle
Antworten:
Eine latente Klassenanalyse ist ein möglicher Ansatz.
Nehmen Sie die folgende Wahrscheinlichkeitsverteilung, wobei A, B und C Werte von 1 oder 0 annehmen können.
Wenn diese unabhängig voneinander wären, würden wir erwarten, zu sehen:
Sobald diese Möglichkeit beseitigt ist, können wir die Hypothese aufstellen, dass eine beobachtete Abhängigkeit auf der Häufung von Werten in ansonsten nicht beobachteten Untergruppen beruht. Um diese Idee zu testen, können wir das folgende Modell schätzen:
Allerdings versucht , in 100 Variablen sinnvolle Muster zu identifizieren , mit 5-10 Gruppen wahrscheinlich diese Liste zu reduzieren unten erfordern , bevor das Schätzmodell, das ein heikles Thema genug in seinem eigenen Recht ( REF ).
quelle
Tatsächlich ist häufiges Itemset-Mining möglicherweise die bessere Wahl als Clustering für solche Daten.
Die üblichen vektororientierten Algorithmen machen wenig Sinn. K-means erzeugt zum Beispiel nicht mehr binäre Mittel.
quelle