Clustering di una matrice binaria


22

Ho una matrice semi-piccola di caratteristiche binarie di dimensione 250k x 100. Ogni riga è un utente e le colonne sono "tag" binari di alcuni comportamenti dell'utente, ad esempio "like_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

Vorrei adattare gli utenti in 5-10 cluster e analizzare i caricamenti per vedere se sono in grado di interpretare gruppi di comportamento degli utenti. Sembra che ci siano alcuni approcci per adattare i cluster ai dati binari: quale riteniamo possa essere la migliore strategia per questi dati?

  • PCA

  • Creazione di una matrice di somiglianza Jaccard , adattamento di un cluster gerarchico e utilizzo dei primi "nodi".

  • K-mediane

  • K-medoids

  • Prossimo ?

  • Agnese

Finora ho avuto un certo successo con l'utilizzo del clustering gerarchico, ma non sono davvero sicuro che sia il modo migliore di procedere.

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)

inserisci qui la descrizione dell'immagine


1
Per dati di grandi dimensioni (molti nodi) e ad alta dimensione, può anche essere utile provare un algoritmo di clustering dei grafici (usando ad esempio la somiglianza tanimoto e metodi come il cluster di Louvain, RNSC, mcl). Ho dei dubbi sul fatto che il tuo tipo di dati genererà cluster significativi (molto bene, ovviamente), ma quei dubbi riguardano il clustering in generale, non specificamente un particolare tipo di clustering. PCA è sicuramente qualcosa da provare.
Micans,

6
Ad essere sincero, sono sorpreso che questa domanda abbia attirato così poca attenzione. Perché è così? A me sembra una domanda estremamente interessante.
Dror Atariah,

Risposte:


9

L'analisi della classe latente è un possibile approccio.

Prendi la seguente distribuzione di probabilità in cui A, B e C possono assumere valori di 1 o 0.

P(UNio,Bj,CK)

Se questi fossero indipendenti l'uno dall'altro, ci aspetteremmo di vedere:

P(Ai,Bj,Ck)=P(Ai)P(Bj)P(Ck)

Una volta eliminata questa possibilità, potremmo ipotizzare che qualsiasi dipendenza osservata sia dovuta a raggruppamenti di valori all'interno di sottogruppi altrimenti non osservati. Per testare questa idea, possiamo stimare il seguente modello:

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

Xnn

5n10

Tuttavia, tentare di identificare schemi significativi in ​​100 variabili con 5-10 gruppi richiederà probabilmente di ridurre tale elenco prima di stimare il modello, che è un argomento abbastanza complicato a sé stante ( REF ).


Fantastico, interessante Quale sarebbe il vantaggio di usare quella tecnica rispetto a qualcun altro?
wije,

Uno dei vantaggi è che il clustering è confuso, consentendo di tenere conto dell'incertezza nelle assegnazioni di classe successive. Un altro è quello perché è un metodo basato sul modello. ottieni indici di adattamento basati sulla verosimiglianza che possono aiutare a guidare la selezione del modello. Questo ovviamente ha il costo di dover fare ipotesi distributive ... Sono sicuro che altri metodi validi avranno i loro compromessi.
DL Dahly,

5

In realtà, l' estrazione frequente di articoli potrebbe essere una scelta migliore rispetto al raggruppamento su tali dati.

Il solito set di algoritmi orientato al vettore non ha molto senso. I mezzi K per esempio produrranno mezzi che non sono più binari.


Ha senso utilizzare oggetti frequenti anche se desidero raggruppare gli utenti anziché i tag (colonne)?
wije

1
IMHO sì. Ma per ovvie ragioni, le regole di associazione non sono un partizionamento rigoroso del set di dati. Un utente può essere membro di più di un "set di articoli frequenti". Cioè un utente può essere sia un fan dei gatti che un fan dei cani; questi due gruppi non sono obbligati a essere disgiunti.
Anony-Mousse -Reststate Monica

Quale IMHO è effettivamente buono. Supponendo che ogni utente sia membro esattamente di un cluster mi sembra eccessivamente ingenuo.
Anony-Mousse -Reststate Monica
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.