K significa clustering in R: tutorial passo passo con esempio

Pubblicato: 2020-02-17

In qualità di data scientist, farai un sacco di clustering. Sono disponibili molti tipi di algoritmi di clustering e dovresti essere esperto nell'usarli tutti. In questo articolo, discuteremo di un popolare algoritmo di clustering, K-means, e vedremo come viene utilizzato in R.

Scoprirai la teoria di base dietro il clustering di K-medie in R e come viene utilizzato. Abbiamo anche discusso un esempio pratico più avanti nell'articolo. Assicurati di aggiungere questo articolo ai segnalibri per riferimenti futuri. Ulteriori informazioni sull'analisi del clustering in Data Mining.

Prima di iniziare a discutere K significa clustering in R, dovremmo dare un'occhiata ai tipi di algoritmi di clustering presenti in modo da poter capire meglio come questo algoritmo li gestisce.

Leggi: Le migliori librerie R nella scienza dei dati

Sommario

Tipi di clustering

Quando si raggruppano più oggetti in modo tale che gli oggetti più simili tra loro si trovino in un cluster ravvicinato, si parla di clustering. La distanza tra gli oggetti potrebbe essere rilevante per la loro somiglianza. La somiglianza mostra la forza della relazione tra due oggetti distinti nella scienza dei dati. Il clustering è una popolare tecnica di data mining. Il clustering trova le sue applicazioni in numerosi settori e aree, tra cui l'analisi delle immagini, l'apprendimento automatico, la compressione dei dati, il riconoscimento di modelli e molti altri.

Il clustering è di due tipi: Hard e Soft. Discutiamo brevemente ciascuno di essi.

  • In un cluster rigido, un punto dati apparterrebbe totalmente a un cluster o non apparterrebbe affatto ad esso. Non c'è via di mezzo.
  • In un soft cluster, un oggetto dati potrebbe essere correlato a più di un cluster contemporaneamente a causa di una certa probabilità o probabilità.

Impara il corso di scienza dei dati online dalle migliori università del mondo. Guadagna programmi Executive PG, programmi di certificazione avanzati o programmi di master per accelerare la tua carriera.

Tipi di algoritmi di clustering

Come ci sono diversi tipi di cluster, ci sono anche diversi tipi di algoritmi di clustering. Puoi differenziare gli algoritmi in base al loro modello di cluster. Ciò significa che puoi distinguerli in base a come formano i cluster. Se iniziassimo a parlare di tutti i tipi di algoritmi di clustering, questa guida diventerà troppo lunga e lontana dal punto principale. Quindi, discuteremo solo di alcuni tipi importanti di algoritmi di clustering. Esistono algoritmi di clustering basati sulla connettività, sul centroide, sulla densità e sulla distribuzione.

Concetto di base di K-Mean

Il concetto di base di K-mean è abbastanza semplice. K-mean è correlato alla definizione dei cluster in modo che la variazione totale all'interno del cluster sia la più minima possibile. Ci sono una varietà di algoritmi k-medie. L'algoritmo k-medie più comune è l'algoritmo Hartigan-Wong, che afferma che la variazione totale intra-cluster è uguale alla somma delle distanze al quadrato delle distanze euclidee tra i centroidi e i loro elementi:

W( C k )= x io C k ( x io k ) 2

Qui x i si riferisce a un punto dati che appartiene al cluster C k e k si riferisce al valore medio dei punti dati presenti nel cluster Ck.

Il valore di x i dovrebbe essere tale che la somma della distanza al quadrato tra x i e k sia il minimo.

Qual è l'algoritmo K-mean?

Per utilizzare l'algoritmo, dovremo prima indicare il numero di cluster, K, che saranno presenti nel nostro risultato. L'algoritmo seleziona prima K oggetti in modo casuale per agire come centri del cluster iniziale. Chiamiamo quegli oggetti centroidi o mezzi del cluster. Quindi assegniamo gli oggetti rimanenti ai loro centroidi più vicini. La distanza euclidea tra i centroidi del cluster e gli oggetti determina quanto sono vicini.

Dopo aver assegnato gli oggetti ai rispettivi centroidi, l'algoritmo calcola il valore medio dei cluster. Dopo questo ricalcolo, ricontrolliamo le osservazioni per vedere se potrebbero essere più vicine a un cluster diverso. Quindi, riassegnamo gli oggetti ai centroidi di conseguenza. Continuiamo a ripetere questi passaggi fino all'interruzione dell'assegnazione dei cluster. Ciò significa che smettiamo di ripetere le iterazioni quando i cluster formati in un'iterazione sono gli stessi dell'iterazione precedente.

Utilizzo del clustering K-Means (esempio)

Ora che sai qual è l'algoritmo K-medie in R e come funziona, discutiamo un esempio per un migliore chiarimento. In questo esempio, raggrupperemo i clienti di un'organizzazione utilizzando il database dei clienti all'ingrosso. I dati per questo problema sono disponibili nel repository di apprendimento automatico di Berkley UCI. Puoi verificarlo qui .

Per prima cosa, leggeremo i dati. E poi ottenere un riassunto di esso. Dopo aver letto i dati e visto il suo riepilogo, vedrai che ci sono alcune nette differenze tra i principali consumatori in diverse categorie. Troverai alcuni valori anomali, che non puoi rimuovere facilmente con la normalizzazione (o il ridimensionamento). Con questi dati, un'azienda vorrebbe vedere cosa acquistano i clienti di fascia media per la maggior parte del tempo. Questo perché un'azienda avrebbe un'idea decente di ciò che acquistano i suoi migliori clienti.

Per creare un cluster di clienti di livello medio, dovremmo prima eliminare il livello superiore di clienti di ciascuna categoria. Quindi rimuoveremo i primi 5 e creeremo un nuovo set. Ecco come lo faremo:

top.n.custs <- funzione (data,cols,n=5) { #Richiede un frame di dati e la parte superiore N da rimuovere

idx.to.remove <-integer(0) #Inizializza un vettore per trattenere i clienti che vengono rimossi

for (c in cols){ # Per ogni colonna nei dati che abbiamo passato a questa funzione

col.order <-order(data[,c],decrescente=T) #Ordina la colonna “c” in ordine decrescente (più grande in alto)

#Ordine restituisce l'indice ordinato (es. riga 15, 3, 7, 1, …) anziché i valori effettivi ordinati.

idx <-head(col.order, n) #Prende il primo n della colonna ordinata C in

idx.to.remove <-union(idx.to.remove,idx) #Unisci e deduplica gli ID di riga che devono essere rimossi

}

return(idx.to.remove) #Restituisce gli indici dei clienti da rimuovere

}

top.custs <-top.n.custs(data,cols=3:8,n=5)

length(top.custs) #Quanti clienti sono necessari per essere rimossi?

data[top.custs,] #Esamina i clienti disponibili

data.rm.top<-data[-c(top.custs),] #Rimuovi i clienti richiesti

Con questo nuovo file, possiamo iniziare a lavorare sulla nostra analisi dei cluster. Per eseguire l'analisi del cluster, utilizzeremo il seguente codice:

set.seed(76964057) #Imposta il seme per la riproducibilità

k <-kmeans(data.rm.top[,-c(1,2)], centres=5) #Crea 5 cluster, rimuovi le colonne 1 e 2

k$centers #Visualizza&nbsp;centri cluster

table(k$cluster) #Indica il conteggio dei punti dati in ogni cluster

Dopo aver eseguito questo codice sul database specificato, otterrai questi risultati:

  • Il primo cluster avrebbe detersivi di alta qualità ma la bassa quantità di prodotti alimentari freschi
  • Il terzo cluster avrebbe prodotto più fresco

Avrai bisogno di usare insides e betweenss per un'interpretazione dettagliata dei risultati. k$withinss è uguale alla somma del quadrato della distanza tra ciascun oggetto dati dal centro del cluster. Più basso è il range, migliore sarebbe il risultato. Se la misura interna è alta nei tuoi dati, significa che sono presenti molti valori anomali ed è necessario eseguire la pulizia dei dati. k$betweenss è la somma del quadrato della distanza tra i diversi centri dei cluster. La distanza tra i centri del cluster dovrebbe essere la più alta possibile.

Leggi: 6 Strutture dati più comunemente usate in R

Dovresti prendere l'aiuto di tentativi ed errori per ottenere i risultati più accurati. Per fare ciò, dovrai provare vari valori per K. Quando il grafico dei tuoi risultati non mostra un incremento all'interno dei tuoi cluster, quel punto sarebbe il valore più adatto per K. Puoi trovare il valore di K attraverso il seguente codice:

rng<-2:20 #K da 2 a 20

tentativi <-100 #Esegui 100 volte l'algoritmo delle medie K

avg.totw.ss <-integer(length(rng)) #Imposta un vettore vuoto per contenere tutti i punti

for(v in rng){ # Per ogni valore della variabile di intervallo

v.totw.ss <-integer(tries) #Imposta un vettore vuoto per contenere i 100 tentativi

per(i in 1: tentativi){

k.temp <-kmeans(data.rm.top,centers=v) #Esegui kmeans

v.totw.ss[i] <-k.temp$tot.withinss#Memorizza il totale all'interno

}

avg.totw.ss[v-1] <-mean(v.totw.ss) #Average the 100 total withinss

}

plot(rng,avg.totw.ss,type=”b”, main=”Totale entro SS di Various K”,

ylab=”Totale medio entro la somma dei quadrati”,

xlab="Valore di K")

Questo è tutto. Ora puoi usare il grafico che ottieni da questo codice per ottenere il miglior valore per K e usarlo per ottenere i risultati richiesti. Usa questo esempio per provare la tua conoscenza del clustering K-means in R. Ecco tutto il codice che abbiamo usato nell'esempio:

data <-read.csv("Clienti all'ingrosso data.csv",header=T)

sommario (dati)

top.n.custs <- funzione (data,cols,n=5) { #Richiede un frame di dati e la parte superiore N da rimuovere

idx.to.remove <-integer(0) #Inizializza un vettore per trattenere i clienti che vengono rimossi

for (c in cols){ # Per ogni colonna nei dati che abbiamo passato a questa funzione

col.order <-order(data[,c],decrescente=T) #Ordina la colonna “c” in ordine decrescente (più grande in alto)

#Ordine restituisce l'indice ordinato (es. riga 15, 3, 7, 1, …) anziché i valori effettivi ordinati.

idx <-head(col.order, n) #Prende il primo n della colonna ordinata C in

idx.to.remove <-union(idx.to.remove,idx) #Unisci e deduplica gli ID di riga che devono essere rimossi

}

return(idx.to.remove) #Restituisce gli indici dei clienti da rimuovere

}

top.custs <-top.n.custs(data,cols=3:8,n=5)

length(top.custs) #Quanti clienti devono essere rimossi?

data[top.custs,] #Esamina i clienti

data.rm.top <-data[-c(top.custs),] #Rimuovi i clienti

set.seed(76964057) #Imposta il seme per la riproducibilità

k <-kmeans(data.rm.top[,-c(1,2)], centres=5) #Crea 5 cluster, rimuovi le colonne 1 e 2

k$centers #Visualizza i centri del cluster

table(k$cluster) #Indica il conteggio dei punti dati in ogni cluster

rng<-2:20 #K da 2 a 20

try<-100 #Esegui 100 volte l'algoritmo delle medie K

avg.totw.ss<-integer(length(rng)) #Imposta un vettore vuoto per contenere tutti i punti

for(v in rng){ # Per ogni valore della variabile di intervallo

v.totw.ss<-integer(tries) #Imposta un vettore vuoto per contenere i 100 tentativi

per(i in 1: tentativi){

k.temp<-kmeans(data.rm.top,centers=v) #Esegui kmeans

v.totw.ss[i]<-k.temp$tot.withinss#Memorizza il totale all'interno

}

avg.totw.ss[v-1]<-mean(v.totw.ss) #Average the 100 total withinss

}

plot(rng,avg.totw.ss,type=”b”, main=”Totale entro SS di Various K”,

ylab=”Totale medio entro la somma dei quadrati”,

xlab="Valore di K")

Conclusione

Speriamo che questa guida ti sia piaciuta. Abbiamo cercato di mantenerlo conciso e completo. Se hai domande sull'algoritmo K-mean, non esitare a chiedercelo. Ci piacerebbe rispondere alle tue domande.

Se sei curioso di conoscere la scienza dei dati, dai un'occhiata al programma Executive PG in Data Science di IIIT-B e upGrad, creato per i professionisti che lavorano e offre oltre 10 casi di studio e progetti, workshop pratici pratici, tutoraggio con esperti del settore, 1 -on-1 con mentori del settore, oltre 400 ore di apprendimento e assistenza al lavoro con le migliori aziende.

Quali sono alcuni degli svantaggi dell'utilizzo di K-medie?

I valori anomali possono estrarre i centroidi, oppure ai valori anomali può essere assegnato il proprio cluster anziché essere ignorati. Poiché K-mean è stocastico, non può garantire che venga trovata la soluzione di clustering ottimale globale. In realtà, valori anomali e dati rumorosi potrebbero rendere l'algoritmo altamente sensibile. Prima di raggruppare, considera di eliminare o tagliare i valori anomali. Quando si raggruppano dati con dimensioni e densità variabili, K-mean ha difficoltà. È necessario generalizzare K-mean per raggruppare tali dati. Anche se appartengono chiaramente allo stesso cluster, l'algoritmo k-means non consente ai punti dati distanti di condividere lo stesso cluster.

Qual è il metodo del gomito in K-medie?

Il metodo k-mean si basa molto sulla ricerca del numero appropriato di cluster. L'approccio del gomito è un metodo ampiamente utilizzato per determinare il miglior valore K. La tecnica del gomito esegue il clustering delle medie K sul set di dati per un intervallo di valori K sul grafico, quindi calcola un punteggio medio per tutti i cluster per ciascun valore di K. Il punteggio di distorsione, che è la somma delle distanze quadrate da ciascun punto al centro assegnato, viene calcolato per impostazione predefinita. Altri modelli basati sui dati, come il numero di componenti principali per caratterizzare un set di dati, possono utilizzare la stessa tecnica per determinare il numero di parametri.

Come possiamo trovare valori anomali in K-medie?

I valori anomali nel clustering K-Means possono essere scoperti utilizzando sia una tecnica basata sulla distanza che una tecnica basata su cluster. I valori anomali vengono scoperti utilizzando i dendrogrammi nel caso del clustering gerarchico. L'obiettivo del progetto è scoprire ed eliminare i valori anomali per rendere il raggruppamento più accurato. I dati vengono suddivisi in gruppi K assegnandoli ai centri di cluster più vicini nell'approccio di identificazione dei valori anomali basato su K-mean. Possiamo quindi calcolare la distanza o la dissomiglianza tra ciascun elemento e il suo centro del cluster e scegliere i valori anomali con le distanze maggiori. Poiché i valori estremi possono influire rapidamente su una media, il metodo di raggruppamento delle medie K è sensibile ai valori anomali.