Clustering einer binären Matrix

22

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)

Bildbeschreibung hier eingeben

wije
quelle
1
Bei großen (vielen Knoten) und hochdimensionalen Daten kann es sich auch lohnen, einen Graph-Clustering-Algorithmus zu verwenden (z. B. mit Tanimoto-Ähnlichkeit und Methoden wie Louvain-Clustering, RNSC, mcl). Ich habe einige Zweifel, ob Ihre Art von Daten aussagekräftige Cluster erzeugen wird (das kann natürlich gut sein), aber diese Zweifel beziehen sich auf das Clustering im Allgemeinen und nicht speziell auf eine bestimmte Art von Clustering. PCA ist definitiv etwas zu versuchen.
Micans
6
Um ehrlich zu sein, bin ich überrascht, dass diese Frage so wenig Aufmerksamkeit auf sich gezogen hat. Wieso ist es so? Das klingt für mich nach einer äußerst interessanten Frage.
Dror Atariah

Antworten:

9

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.

P(EINich,Bj,Ck)

Wenn diese unabhängig voneinander wären, würden wir erwarten, zu sehen:

P(EINich,Bj,Ck)=P(EINich)P(Bj)P(Ck)

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:

P(EINich,Bj,Ck)=P(Xn)P(EINich|Xn)P(Bj|Xn)P(Ck|Xn)

Xnn

5n10

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 ).

DL Dahly
quelle
Großartig, interessant. Was würdest du sagen, ist der Vorteil, wenn du diese Technik gegenüber den anderen anwendest?
Wije
Ein Vorteil besteht darin, dass die Clusterbildung unscharf ist, sodass Sie Unsicherheiten bei nachfolgenden Klassenzuweisungen berücksichtigen können. Ein anderer Grund ist, dass es sich um eine modellbasierte Methode handelt. Sie erhalten wahrscheinlichkeitsbasierte Anpassungsindizes, die Ihnen bei der Modellauswahl helfen können. Dies geht natürlich zu Lasten von Verteilungsannahmen ... Ich bin sicher, dass andere gültige Methoden ihre eigenen Nachteile haben werden.
DL Dahly
5

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.

Anony-Mousse
quelle
Ist es sinnvoll, häufige Elemente zu verwenden, obwohl ich die Benutzer anstelle der Tags (Spalten) gruppieren möchte?
Wije
1
IMHO ja. Assoziationsregeln sind jedoch aus offensichtlichen Gründen keine strikte Partitionierung des Datensatzes. Ein Benutzer kann Mitglied von mehr als einer "häufigen Gegenstandsmenge" sein. Dh ein Benutzer kann sowohl ein Katzenfan als auch ein Hundefan sein; Diese beiden Gruppen sind nicht dazu gezwungen, disjunkt zu sein.
Anony-Mousse
Welcher IMHO ist eigentlich gut. Die Annahme, dass jeder Benutzer Mitglied genau eines Clusters ist, erscheint mir zu naiv.
Anony-Mousse