Comprensione dei confronti dei risultati del clustering


13

Sto sperimentando la classificazione dei dati in gruppi. Sono abbastanza nuovo su questo argomento e sto cercando di capire l'output di alcune analisi.

Utilizzando esempi tratti da Quick-R , Rvengono suggeriti diversi pacchetti. Ho provato a usare due di questi pacchetti ( fpcusando la kmeansfunzione e mclust). Un aspetto di questa analisi che non capisco è il confronto dei risultati.

# comparing 2 cluster solutions
library(fpc)
cluster.stats(d, fit1$cluster, fit2$cluster)

Ho letto le parti pertinenti del fpc manuale e non sono ancora chiaro su cosa dovrei puntare. Ad esempio, questo è il risultato del confronto tra due diversi approcci di clustering:

$n
[1] 521

$cluster.number
[1] 4

$cluster.size
[1] 250 119  78  74

$diameter
[1]  5.278162  9.773658 16.460074  7.328020

$average.distance
[1] 1.632656 2.106422 3.461598 2.622574

$median.distance
[1] 1.562625 1.788113 2.763217 2.463826

$separation
[1] 0.2797048 0.3754188 0.2797048 0.3557264

$average.toother
[1] 3.442575 3.929158 4.068230 4.425910

$separation.matrix
          [,1]      [,2]      [,3]      [,4]
[1,] 0.0000000 0.3754188 0.2797048 0.3557264
[2,] 0.3754188 0.0000000 0.6299734 2.9020383
[3,] 0.2797048 0.6299734 0.0000000 0.6803704
[4,] 0.3557264 2.9020383 0.6803704 0.0000000

$average.between
[1] 3.865142

$average.within
[1] 1.894740

$n.between
[1] 91610

$n.within
[1] 43850

$within.cluster.ss
[1] 1785.935

$clus.avg.silwidths
         1          2          3          4 
0.42072895 0.31672350 0.01810699 0.23728253 

$avg.silwidth
[1] 0.3106403

$g2
NULL

$g3
NULL

$pearsongamma
[1] 0.4869491

$dunn
[1] 0.01699292

$entropy
[1] 1.251134

$wb.ratio
[1] 0.4902123

$ch
[1] 178.9074

$corrected.rand
[1] 0.2046704

$vi
[1] 1.56189

La mia domanda principale qui è capire meglio come interpretare i risultati di questo confronto tra cluster.


In precedenza, avevo chiesto di più sull'effetto del ridimensionamento dei dati e sul calcolo di una matrice di distanza. Tuttavia, Mariana Soffer ha risposto chiaramente e sto solo riorganizzando la mia domanda per sottolineare che sono interessato all'interpretazione del mio output, che è un confronto tra due diversi algoritmi di clustering.

Parte precedente della domanda : se sto eseguendo qualsiasi tipo di clustering, devo sempre ridimensionare i dati? Ad esempio, sto usando la funzione dist()sul mio set di dati in scala come input per la cluster.stats()funzione, tuttavia non capisco perfettamente cosa sta succedendo. Ho letto dist() qui e afferma che:

questa funzione calcola e restituisce la matrice di distanza calcolata utilizzando la misura della distanza specificata per calcolare le distanze tra le righe di una matrice di dati.


Cerchi ulteriori chiarimenti o non sei soddisfatto della risposta di @ mariana? Immagino che riguardi la tua prima domanda (2 ° §). In questo caso, forse dovresti aggiornare la tua domanda in modo che le persone capiscano perché stai impostando una taglia su questa domanda.
chl

@chl Lo aggiornerò per renderlo più chiaro. Sto solo cercando una guida sull'interpretazione dei confronti del clustering, poiché non capisco cosa significhi l'output. La risposta di @ mariana è stata molto utile spiegando alcuni dei termini associati a questo metodo.
Celenius,

Risposte:


13

Prima lascia che ti dica che non spiegherò esattamente tutte le misure qui, ma ti darò un'idea di come confrontare quanto sono buoni i metodi di clustering (supponiamo che stiamo confrontando 2 metodi di clustering con lo stesso numero di cluster).

  1. Ad esempio, maggiore è il diametro del cluster, peggiore è il clustering, poiché i punti che appartengono al cluster sono più dispersi.
  2. Maggiore è la distanza media di ciascun cluster, peggiore è il metodo di clustering. (Supponiamo che la distanza media sia la media delle distanze da ciascun punto del cluster al centro del cluster.)

Queste sono le due metriche più utilizzate. Controlla questi collegamenti per capire cosa rappresentano:

  • distanza tra cluster (maggiore è il migliore, è il riepilogo della distanza tra i diversi centroidi del cluster)
  • distanza intra-cluster (più basso è il migliore, è il riepilogo della distanza tra i membri del cluster al centro del cluster)

Per comprendere meglio le metriche sopra, controlla questo .

Quindi dovresti leggere il manuale della libreria e le funzioni che stai usando per capire quali misure rappresentano ciascuna di queste, o se queste non sono incluse prova a trovare il significato di quelle incluse. Tuttavia, non mi preoccuperei e continuerei con quelli che ho dichiarato qui.

Continuiamo con le domande che hai fatto:

  1. Per quanto riguarda il ridimensionamento dei dati: Sì, dovresti sempre ridimensionare i dati per il clustering, altrimenti le diverse scale delle diverse dimensioni (variabili) avranno influenze diverse nel modo in cui i dati sono raggruppati, con più alti sono i valori nella variabile, più influente è tale variabile sarà nel modo in cui viene fatto il clustering, mentre in effetti dovrebbero avere tutti la stessa influenza (a meno che per qualche strana ragione particolare non lo si desideri in quel modo).
  2. Le funzioni di distanza calcolano tutte le distanze da un punto (istanza) a un altro. La misura della distanza più comune è Euclide, quindi supponiamo che tu voglia misurare la distanza dall'istanza 1 all'istanza 2 (supponiamo che tu abbia solo 2 istanze per semplicità). Consentono anche di assumere che ogni istanza ha 3 valori (x1, x2, x3), così I1=0.3, 0.2, 0.5e I2=0.3, 0.3, 0.4quindi la distanza euclidea da I1 e I2 sarebbe: sqrt((0.3-0.2)^2+(0.2-0.3)^2+(0.5-0.4)^2)=0.17, quindi la matrice di distanza si tradurrà in:

        i1    i2
    i1  0     0.17
    i2  0.17  0

Si noti che la matrice della distanza è sempre simmetrica.

La formula della distanza euclidea non è l'unica esistente. Esistono molte altre distanze che possono essere utilizzate per calcolare questa matrice. Controllare ad esempio in Wikipedia Distanza di mantenimento e come calcolarlo. Alla fine della pagina Wikipedia per la distanza euclidea (dove puoi anche controllare la sua formula) puoi controllare quali altre distanze esistono.


Grazie per la tua risposta esaustiva: è molto utile.
Celenius,

Sono davvero felice che sia stato utile per te.
Mariana Soffer,

@marianasoffer il link alla pagina di Stanford non funziona. Si prega di aggiornarlo o renderlo accessibile. Grazie
Herman Toothrot,

7

Penso che la migliore misura di qualità per il clustering sia il presupposto del cluster, come indicato da Seeger in Learning con dati etichettati e senza etichetta :

Ad esempio, supponiamo che X = Rd e la validità dell'assunzione del cluster, ovvero che due punti x, x debbano avere la stessa etichetta t se esiste un percorso tra loro in X che passa solo attraverso regioni di P relativamente alta (x ).

Sì, questo porta giù l'intera idea dei centroidi e dei centri. Dopotutto, si tratta di concetti piuttosto arbitrari se si pensa al fatto che i dati potrebbero trovarsi all'interno di una sotto-cartella non lineare dello spazio in cui si sta effettivamente operando.

È possibile creare facilmente un set di dati sintetico in cui i modelli di miscela si rompono. Ad esempio questo: un cerchio all'interno di una nuvola.

Per farla breve: misurerei la qualità di un algoritmo di clustering in maniera minimax. Il miglior algoritmo di clustering è quello che minimizza la distanza massima di un punto dal vicino più vicino dello stesso cluster mentre massimizza la distanza minima di un punto dal vicino più vicino da un cluster diverso.

Potresti anche essere interessato a Un algoritmo di cluster teorico di informazioni non parametriche .


Come posso esaminare un adattamento del cluster usando un approccio minimax? Il mio livello di conoscenza del clustering è molto semplice, quindi al momento sto solo cercando di capire come confrontare due diversi approcci di clustering.
Celenius,

Potresti condividere il codice R per la figura allegata?
Andrej,

@Andrej La mia ipotesi è una nuvola gaussiana ( x<-rnorm(N);rnorm(N)->y) divisa in 3 parti per r (con una delle quali rimossa).

Non conosco un algoritmo pratico che si adatti a tale misura di qualità. Probabilmente vuoi ancora usare K-Means et al. Ma se la misura di cui sopra si guasta, sai che i dati che stai guardando non sono (ancora!) Adatti a quell'algoritmo.
Bayerj,

@Andrej Non uso R (proveniente da ML piuttosto che da statistiche :) ma ciò che mbq suggerisce sembra andare bene.
Bayerj,
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.