K-significa ClusterProgrammazione in R con esempio

โšก Riepilogo intelligente

K-Mezzi ClusterIn R, l'algoritmo raggruppa le osservazioni minimizzando la distanza tra ciascun punto e il centroide del cluster di appartenenza. Questa guida standardizza il dataset dei prezzi dei computer, anima l'algoritmo, trova il valore ottimale di k con il metodo del gomito e visualizza i cluster tramite una mappa di calore.

  • ๐Ÿงญ Metodo non supervisionato: ClusterIl metodo individua la struttura e crea un'etichetta, anzichรฉ prevedere un risultato giร  noto.
  • ๐Ÿ“ Standardizzare prima di tutto: La funzione scale() assegna a ogni variabile una media pari a zero e una deviazione standard pari a uno, in modo che nessuna colonna domini la distanza.
  • ๐Ÿ”„ Ciclo iterativo: Assegna i punti al centroide piรน vicino, ricalcola i centroidi e ripeti il โ€‹โ€‹processo finchรฉ nessuna osservazione modifica il cluster.
  • ๐Ÿ“‰ Scelta di k: Traccia il grafico di tot.withinss in funzione di un intervallo di k e individua il punto di flesso, ovvero il punto in cui i cluster aggiuntivi smettono di essere vantaggiosi.
  • ๐ŸŽฒ Riproducibilitร : I risultati variano tra le diverse esecuzioni, quindi set.seed() fissa il punto di partenza e nstart = 25 mantiene il migliore tra i tanti punti di partenza.
  • ???? ๏ธ Interpretazione: Una mappa termica dei centri scalati mostra a colpo d'occhio quale variabile definisce ciascun cluster.

Mezzi K Clustering in R

Cosa รจ Cluster analisi?

Cluster l'analisi appartiene a apprendimento senza supervisione. Un cluster รจ un gruppo di dati che condividono caratteristiche simili. Possiamo dire che l'analisi di clustering riguarda piรน la scoperta che una previsione. La macchina cerca somiglianze nei dati. Ad esempio, puoi usare l'analisi di cluster per la seguente applicazione:

  • Segmentazione della clientela: cerca somiglianze tra gruppi di clienti
  • Clustering del mercato azionario: azioni del gruppo in base alle performance
  • Ridurre la dimensionalitร  di un dataset mediante raggruppamentoping osservazioni con valori simili

ClusterL'analisi non รจ troppo difficile da implementare ed รจ significativa e utilizzabile per il business.

La differenza piรน evidente tra lโ€™apprendimento supervisionato e quello non supervisionato risiede nei risultati. Lโ€™apprendimento non supervisionato crea una nuova variabile, lโ€™etichetta, mentre lโ€™apprendimento supervisionato prevede un risultato. La macchina aiuta il professionista nel tentativo di etichettare i dati in base alla stretta correlazione. Spetta all'analista utilizzare i gruppi e dar loro un nome.

Facciamo un esempio per comprendere il concetto di clustering. Per semplicitร , lavoriamo in due dimensioni. Hai dati sulla spesa totale dei clienti e sulla loro etร . Per migliorare la pubblicitร , il team di marketing vuole inviare email piรน mirate ai propri clienti.

Nel grafico seguente sono riportati la spesa totale e l'etร  dei clienti.

library(ggplot2)
df <- data.frame(age = c(18, 21, 22, 24, 26, 26, 27, 30, 31, 35, 39, 40, 41, 42, 44, 46, 47, 48, 49, 54),
    spend = c(10, 11, 22, 15, 12, 13, 14, 33, 39, 37, 44, 27, 29, 20, 28, 21, 30, 31, 23, 24)
)
ggplot(df, aes(x = age, y = spend)) +
    geom_point()

Cluster Analisi

A questo punto รจ visibile uno schema

  1. In basso a sinistra si vedono i giovani con un potere dโ€™acquisto inferiore
  2. La parte medio-alta riflette le persone con un lavoro che possono permettersi e che spendono di piรน
  3. Infine, le persone anziane con un budget inferiore.

Cluster Analisi

Nella figura sopra, raggruppi manualmente le osservazioni e definisci ciascuno dei tre gruppi. Questo esempio รจ piuttosto semplice e altamente visivo. Se vengono aggiunte nuove osservazioni al set di dati, รจ possibile etichettarle all'interno dei cerchi. Tu definisci il cerchio in base al nostro giudizio. Invece, puoi usare machine Learning raggruppare i dati in modo oggettivo.

In questo tutorial imparerai come utilizzare il file k-significa algoritmo.

Algoritmo K-Means

L'algoritmo K-means รจ il metodo di clustering piรน utilizzato. Risale agli anni '1950 ed รจ stato perfezionato numerose volte da allora.

L'algoritmo cerca di trovare gruppi minimizzando la distanza tra le osservazioni, chiamata ottimale locale soluzioni. Le distanze vengono misurate in base alle coordinate delle osservazioni. Ad esempio, in uno spazio bidimensionale le coordinate sono semplicemente x e y.

K-significa Algoritmo

L'algoritmo funziona come segue:

  • Passaggio 1: Scegliere k centroidi iniziali a caso nello spazio delle caratteristiche
  • Passaggio 2: Assegna ogni osservazione al centro del cluster piรน vicino, il baricentroQuesto produce k gruppi
  • Passo 3: Shift il baricentro iniziale alla media delle coordinate all'interno di un gruppo.
  • Passaggio 4: ridurre al minimo la distanza in base ai nuovi centroidi. Si creano nuovi confini. Pertanto, le osservazioni si sposteranno da un gruppo all'altro
  • Ripetere finchรฉ nessuna osservazione cambia gruppo

L'algoritmo K-means misura normalmente la distanza euclidea tra due osservazioni x e y:

K-significa Algoritmo

Sono disponibili altre misure, come la distanza di Manhattan o di Minkowski. Si noti che l'algoritmo K-means restituisce gruppi diversi ogni volta che viene eseguito. Ricordiamo che le prime stime iniziali sono casuali e calcolano le distanze finchรฉ l'algoritmo non raggiunge l'omogeneitร  all'interno dei gruppi. In altre parole, il K-means รจ molto sensibile alla prima scelta e, a meno che il numero di osservazioni e gruppi non sia piccolo, รจ quasi impossibile ottenere la stessa suddivisione in gruppi.

Selezione del numero di cluster

Un'altra difficoltร  riscontrata con k-means รจ la scelta del numero di cluster. รˆ possibile impostare un valore elevato di k, ovvero un numero elevato di gruppi, per migliorare l'omogeneitร  all'interno del gruppo, ma si rischia overfitting i dati. L'overfitting significa che le prestazioni calano drasticamente su nuovi dati, perchรฉ il modello ha memorizzato il rumore in quel particolare campione anzichรฉ il modello sottostante.

Il numero di cluster dipende dalla natura del set di dati, dal settore, dall'azienda e cosรฌ via. Tuttavia, esiste una regola pratica per selezionare il numero appropriato di cluster:

Seleziona il Numero di Clusters

dove n รจ il numero di osservazioni nel set di dati.

In pratica, vale la pena dedicare del tempo alla ricerca del valore di k che meglio si adatta alle esigenze aziendali.

Utilizzeremo il set di dati Prezzi dei personal computer per eseguire la nostra analisi di clustering. Questo set di dati contiene 6259 osservazioni e 10 caratteristiche. Il set di dati osserva il prezzo dal 1993 al 1995 di 486 personal computer negli Stati Uniti. Le variabili sono prezzo, velocitร , ram, schermo, cd tra le altre.

Procederai come segue:

  • Importa le date
  • Allena il modello
  • Valuta il modello

Importa le date

L'algoritmo K-means non รจ adatto per variabili fattoriali, perchรฉ si basa sulle distanze e le etichette discrete non presentano una distanza significativa tra loro. Elimina le tre colonne categoriche (cd, multi, premium) insieme all'indice di riga X. Questo dataset non contiene valori mancanti.

library(dplyr)
PATH <-"https://raw.githubusercontent.com/guru99-edu/R-Programming/master/computers.csv"
df <- read.csv(PATH) %>%
select(-c(X, cd, multi, premium))
glimpse(df)

Uscita

## Observations: 6,259
## Variables: 7
## $ price <int> 1499, 1795, 1595, 1849, 3295, 3695, 1720, 1995, 2225, 2...
## $ speed <int> 25, 33, 25, 25, 33, 66, 25, 50, 50, 50, 33, 66, 50, 25, ...
## $ hd <int> 80, 85, 170, 170, 340, 340, 170, 85, 210, 210, 170, 210...
## $ ram <int> 4, 2, 4, 8, 16, 16, 4, 2, 8, 4, 8, 8, 4, 8, 8, 4, 2, 4, ...
## $ screen <int> 14, 14, 15, 14, 14, 14, 14, 14, 14, 15, 15, 14, 14, 14, ...
## $ ads <int> 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, ...
## $ trend  <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1...

Dalle statistiche riassuntive, si puรฒ notare che i dati hanno valori elevati. Una buona pratica prima di qualsiasi metodo basato sulla distanza รจ standardizzare i dati in modo che ogni variabile abbia un media di zero e deviazione standard di unoSenza di essa, il prezzo, i cui valori si aggirano sulle migliaia, dominerebbe il calcolo della distanza e le dimensioni dello schermo non avrebbero quasi alcuna importanza.

summary(df)

Produzione:

##      price          speed              hd              ram        
##  Min.   : 949   Min.   : 25.00   Min.   :  80.0   Min.   : 2.000  
##  1st Qu.:1794   1st Qu.: 33.00   1st Qu.: 214.0   1st Qu.: 4.000
##  Median :2144   Median : 50.00   Median : 340.0   Median : 8.000  
##  Mean   :2220   Mean   : 52.01   Mean   : 416.6   Mean   : 8.287  
##  3rd Qu.:2595   3rd Qu.: 66.00   3rd Qu.: 528.0   3rd Qu.: 8.000  
##  Max.   :5399   Max.   :100.00   Max.   :2100.0   Max.   :32.000  
##      screen           ads            trend      
##  Min.   :14.00   Min.   : 39.0   Min.   : 1.00  
##  1st Qu.:14.00   1st Qu.:162.5   1st Qu.:10.00  
##  Median :14.00   Median :246.0   Median :16.00  
##  Mean   :14.61   Mean   :221.3   Mean   :15.93  
##  3rd Qu.:15.00   3rd Qu.:275.0   3rd Qu.:21.50  
##  Max.   :17.00   Max.   :339.0   Max.   :35.00

Ridimensioni le variabili con la funzione scale() della libreria dplyr. La trasformazione riduce l'impatto dei valori anomali e consente di confrontare un'unica osservazione con la media. Se un valore standardizzato (o z-score) รจ alto, puoi essere certo che questa osservazione รจ effettivamente superiore alla media (un punteggio z elevato implica che questo punto รจ lontano dalla media in termini di deviazione standard. Un punteggio z pari a due indica che il valore รจ 2 standard deviazioni dalla media. Nota: il punteggio z segue una distribuzione gaussiana ed รจ simmetrico attorno alla media.

# Note: speed is deliberately left out of the scaled data frame
rescale_df <- df %>%
    mutate(price_scal = scale(price),
    hd_scal = scale(hd),
    ram_scal = scale(ram),
    screen_scal = scale(screen),
    ads_scal = scale(ads),
    trend_scal = scale(trend)) %>%
select(-c(price, speed, hd, ram, screen, ads, trend))

R base ha una funzione per eseguire l'algoritmo k media. La funzione base di k media รจ:

kmeans(df, k)
arguments:
-df: dataset used to run the algorithm
-k: Number of clusters

Allena il modello

Nella figura tre, hai descritto in dettaglio il funzionamento dell'algoritmo. Puoi visualizzare graficamente ogni passaggio con il pacchetto di animazione scritto da Yihui Xie, che ha anche creato knitr per R Markdown. Il pacchetto non รจ presente nei canali conda, quindi installalo da CRAN:

install.packages("animation")

Dopo aver caricato la libreria, aggiungi .ani dopo kmeans e R traccerร  tutti i passaggi. A scopo illustrativo, esegui l'algoritmo solo con le variabili riscalate hd e ram con tre cluster.

set.seed(2345)
library(animation)
kmeans.ani(rescale_df[2:3], 3)

Code Spiegazione

  • kmeans.ani(rescale_df[2:3], 3): seleziona le colonne 2 e 3 del set di dati rescale_df ed esegui l'algoritmo con k set su 3. Traccia l'animazione.

Allena il modello

Allena il modello

Puoi interpretare l'animazione come segue:

  • Passaggio 1: R sceglie casualmente tre punti
  • Passaggio 2: calcola la distanza euclidea e disegna i cluster. Hai un grappolo verde in basso a sinistra, un grande grappolo colorato in nero a destra e uno rosso tra di loro.
  • Passo 3: Calcola il baricentro, cioรจ la media dei cluster
  • Ripetere fino a quando nessun dato cambia nel cluster

L'algoritmo รจ convergente dopo sette iterazioni. Puoi eseguire l'algoritmo k-mean nel nostro set di dati con cinque cluster e chiamarlo pc_cluster.

pc_cluster <-kmeans(rescale_df, 5)

La lista pc_cluster contiene sette elementi utili:

  • pc_cluster$cluster: Il cluster assegnato a ciascuna osservazione
  • pc_cluster$centers: i centri del cluster
  • pc_cluster$totss: La somma totale dei quadrati
  • pc_cluster$withinss: Entro la somma dei quadrati, un valore per cluster
  • pc_cluster$tot.withinss: La somma di withinss
  • pc_cluster$betweenss: Somma totale dei quadrati meno la somma dei quadrati all'interno
  • pc_cluster$size: numero di osservazioni all'interno di ciascun cluster

Utilizzerai la somma dei quadrati inside (ovvero tot.withinss) per calcolare il numero ottimale di cluster k. Trovare k รจ davvero un compito impegnativo.

Come trovare il valore ottimale di k con il metodo del gomito

Una tecnica per scegliere il k migliore รจ chiamata the metodo del gomito. Questo metodo utilizza l'omogeneitร  all'interno del gruppo o l'eterogeneitร  all'interno del gruppo per valutare la variabilitร . In altre parole, ti interessa la percentuale della varianza spiegata da ciascun cluster. Puoi aspettarti che la variabilitร  aumenti con il numero di cluster, in alternativa, l'eterogeneitร  diminuisce. La nostra sfida รจ trovare il k che va oltre i rendimenti decrescenti. L'aggiunta di un nuovo cluster non migliora la variabilitร  dei dati perchรฉ restano pochissime informazioni da spiegare.

In questo tutorial, troviamo questo punto usando la misura di eterogeneitร . La somma dei quadrati totale all'interno dei cluster รจ il tot.withinss nell'elenco restituito da kmean().

Puoi costruire il grafico del gomito e trovare il k ottimale come segue:

  • Passaggio 1: costruire una funzione per calcolare la somma totale dei quadrati all'interno dei cluster
  • Passaggio 2: Eseguire l'algoritmo su un intervallo di valori di k
  • Passaggio 3: crea un frame di dati con i risultati dell'algoritmo
  • Passaggio 4: tracciare i risultati

Passo 1) Costruisci una funzione per calcolare la somma totale dei quadrati all'interno dei cluster

Si crea la funzione che esegue l'algoritmo k-mean e si memorizza il totale all'interno della somma dei quadrati dei cluster

kmean_withinss <- function(k) {
    cluster <- kmeans(rescale_df, k)
    return (cluster$tot.withinss)
}

Code Spiegazione

  • funzione(k): imposta il numero di argomenti nella funzione
  • kmeans(rescale_df, k): Esegui l'algoritmo per questo valore di k
  • return(cluster$tot.withinss): Memorizza il totale all'interno della somma dei quadrati dei cluster

Verifica la funzione con k uguale a 2.

Produzione:

## Try with 2 cluster
kmean_withinss(2)

Produzione:

## [1] 27087.07

Passo 2) Esegui l'algoritmo n volte

Utilizzerai la funzione sapply() per eseguire l'algoritmo su un intervallo di k. Questa tecnica รจ piรน veloce della creazione di un ciclo e della memorizzazione del valore.

# Set maximum cluster 
max_k <-20 
# Run algorithm over a range of k 
wss <- sapply(2:max_k, kmean_withinss)

Code Spiegazione

  • max_k <- 20: Imposta il valore massimo di k a 20
  • sapply(2:max_k, kmean_withinss): esegue la funzione kmean_withinss() nell'intervallo 2:max_k, ovvero da 2 a 20.

Passo 3) Crea un frame di dati con i risultati dell'algoritmo

Una volta scritta e testata la funzione, eseguila nell'intervallo da 2 a 20 e memorizza ogni valore di tot.withinss.

# Create a data frame to plot the graph
elbow <-data.frame(2:max_k, wss)

Code Spiegazione

  • data.frame(2:max_k, wss): crea un frame di dati con l'output dell'archivio dell'algoritmo in wss

Passo 4) Traccia i risultati

Traccia il grafico per visualizzare dove si trova il punto del gomito

# Plot the graph with gglop
ggplot(elbow, aes(x = X2.max_k, y = wss)) +
    geom_point() +
    geom_line() +
    scale_x_continuous(breaks = seq(1, 20, by = 1))

K ottimale

Dal grafico puoi vedere che il k ottimale รจ sette, dove la curva inizia ad avere un rendimento decrescente.

Una volta ottenuto il nostro k ottimale, riesegui l'algoritmo con k uguale a 7 e valuti i cluster.

Esaminando i cluster

pc_cluster_2 <-kmeans(rescale_df, 7)

Come menzionato prima, puoi accedere alle restanti informazioni interessanti nell'elenco restituito da kmean().

pc_cluster_2$cluster
pc_cluster_2$centers
pc_cluster_2$size

La valutazione รจ soggettiva e dipende dallo scopo dei cluster. L'obiettivo qui รจ raggruppare computer con specifiche simili. Un esperto del dominio potrebbe farlo manualmente, ma il processo sarebbe lento e soggetto a errori. K-means fa il raggruppamentoping oggettivamente e lascia all'esperto il compito di interpretare e nominare il risultato.

Come valutazione preventiva, รจ possibile esaminare la dimensione dei cluster.

pc_cluster_2$size

Produzione:

## [1] 608 1596 1231  580 1003  699  542

Il cluster piรน grande, il numero 2, contiene 1,596 osservazioni, mentre il piรน piccolo, il numero 7, ne contiene solo 542. Sarebbe auspicabile una certa omogeneitร  tra i cluster; in caso contrario, potrebbe essere necessaria una preparazione dei dati piรน snella.

Il componente centrale consente un'analisi piรน approfondita dei dati. Le righe si riferiscono alla numerazione dei cluster e le colonne alle variabili utilizzate dall'algoritmo. I valori rappresentano il punteggio medio di ciascun cluster per la colonna di interesse. La standardizzazione semplifica l'interpretazione. I valori positivi indicano che lo z-score di un dato cluster รจ superiore alla media generale. Ad esempio, il cluster 4 ha il prezzo medio piรน alto (price_scal = 1.09), mentre il cluster 5 ha il piรน basso (-0.82).

center <-pc_cluster_2$centers
center

Produzione:

##   price_scal    hd_scal     ram_scal screen_scal   ads_scal trend_scal
## 1 -0.6372457 -0.7097995 -0.691520682  -0.4401632  0.6780366 -0.3379751
## 2 -0.1323863  0.6299541  0.004786730   2.6419582 -0.8894946  1.2673184
## 3  0.8745816  0.2574164  0.513105797  -0.2003237  0.6734261 -0.3300536
## 4  1.0912296 -0.2401936  0.006526723   2.6419582  0.4704301 -0.4132057
## 5 -0.8155183  0.2814882 -0.307621003  -0.3205176 -0.9052979  1.2177279
## 6  0.8830191  2.1019454  2.168706085   0.4492922 -0.9035248  1.2069855
## 7  0.2215678 -0.7132577 -0.318050275  -0.3878782 -1.3206229 -1.5490909

Puoi creare una mappa termica con ggplot per aiutarci a evidenziare la differenza tra le categorie.

I colori predefiniti di ggplot devono essere modificati con la libreria RColorBrewer. Puoi usare il conda libreria e il codice da avviare nel terminale:

conda install -c r r-rcolorbrewer

Per creare una mappa termica si procede in tre passaggi:

  • Costruisci un frame di dati con i valori del centro e crea una variabile con il numero del cluster
  • Rimodellare i dati con la funzione raccogli() della libreria tidyr. Vuoi trasformare i dati da ampi a lunghi.
  • Crea la tavolozza dei colori con il coloreRampFunzione tavolozza()

Passo 1) Costruisci un frame di dati

Creiamo il set di dati di rimodellamento

library(tidyr)

# create dataset with the cluster number

cluster <- c(1: 7)
center_df <- data.frame(cluster, center)

# Reshape the data

center_reshape <- gather(center_df, features, values, price_scal: trend_scal)
head(center_reshape)

Produzione:

##   cluster   features     values
## 1       1 price_scal -0.6372457
## 2       2 price_scal -0.1323863
## 3       3 price_scal  0.8745816
## 4       4 price_scal  1.0912296
## 5       5 price_scal -0.8155183
## 6       6 price_scal  0.8830191		

Passo 2) Crea la tavolozza dei colori

Il codice seguente crea la tavolozza di colori utilizzata dalla mappa di calore.

library(RColorBrewer)
# Create the palette
hm.palette <-colorRampPalette(rev(brewer.pal(10, 'RdYlGn')),space='Lab')

Passaggio 3) Visualizza

Puoi tracciare il grafico e vedere come appaiono i cluster.

# Plot the heat map
ggplot(data = center_reshape, aes(x = features, y = cluster, fill = values)) +
    scale_y_continuous(breaks = seq(1, 7, by = 1)) +
    geom_tile() +
    coord_equal() +
    scale_fill_gradientn(colours = hm.palette(90)) +
    theme_classic()

Esaminando il Cluster

Come ottenere risultati K-Means riproducibili con set.seed() e nstart

Il tutorial fa notare che l'algoritmo k-means restituisce gruppi diversi a ogni esecuzione. Non si tratta di un inconveniente con cui convivere, bensรฌ di un problema che puรฒ essere risolto con due soluzioni standard, nessuna delle quali viene utilizzata negli esempi precedenti.

1. Imposta il punto di partenza con set.seed(). I centroidi iniziali vengono estratti in modo casuale, quindi la stessa chiamata produce cluster diversi ogni volta. Impostando un seed, l'intera analisi diventa riproducibile:

set.seed(123)
pc_cluster_2 <- kmeans(rescale_df, 7)

2. Esegui diverse partenze e conserva le migliori con nstart. Un singolo avvio casuale puรฒ convergere a un ottimo locale scadente. L'argomento nstart esegue l'algoritmo tante volte quante sono le possibili combinazioni di avvio casuali e restituisce quello con la somma totale dei quadrati piรน bassa:

set.seed(123)
pc_cluster_2 <- kmeans(rescale_df, centers = 7, nstart = 25)

Venticinque avvii sono la raccomandazione usuale e hanno un costo molto basso su un dataset di queste dimensioni. Senza di essi, la curva del gomito stessa diventa instabile, perchรฉ ogni punto sul grafico proviene da un singolo avvio sfortunato o fortunato. La funzione kmean_withinss() definita in precedenza dovrebbe quindi essere scritta come:

kmean_withinss <- function(k) {
    cluster <- kmeans(rescale_df, centers = k, nstart = 25)
    return (cluster$tot.withinss)
}

3. Aumenta iter.max se l'algoritmo emette un avviso. Se R segnala che "non รจ convergito in 10 iterazioni", imposta iter.max = 50 per dargli piรน margine.

K-Means vs Gerarchico Clustering in R

L'algoritmo K-means non รจ l'unico metodo di clustering disponibile e la scelta dipende solitamente dalla dimensione dei dati e dal fatto che si sappia giร  o meno quanti gruppi si desidera creare.

Criteri K-Mezzi Hierarchical
Numero di cluster Deve essere scelto in anticipo Scelto successivamente, tagliando il dendrogramma
Stabilitร  dei risultati Varia a seconda dell'avvio casuale Deterministico
Scalabilitร  Gestisce set di dati molto grandi Lotte oltre poche migliaia di righe
Cluster shape Presuppone gruppi approssimativamente sferici e di dimensioni simili piรน flessibile
Uscita Un set piatto di etichette Un dendrogramma che mostra la struttura annidata
funzione R kmeans(df, k) hclust(dist(df))
# Hierarchical alternative on the same scaled data
hc <- hclust(dist(rescale_df), method = "ward.D2")
plot(hc)
groups <- cutree(hc, k = 7)

Con 6,259 osservazioni, il clustering gerarchico deve costruire una matrice di distanze di circa 19.6 milioni di coppie, motivo per cui k-means รจ la scelta piรน pratica per questo dataset. Si noti inoltre che k-means presuppone cluster di dimensioni simili e di forma approssimativamente sferica; laddove tale presupposto non sia valido, DBSCAN gestisce le forme irregolari e identifica i valori anomali invece di forzare ogni punto in un gruppo.

K-Mezzi Clustering in R: Riferimento alle funzioni

Di seguito รจ riportato l'elenco di tutte le funzioni utilizzate in questo tutorial:

CONFEZIONE Obiettivo Funzione Argomento
base Treno k-significa kmeans () df, k
Raggruppamento di accesso kmeans()$cluster
Cluster centri kmeans()$centri
Cluster Dimensioni kmeans()$dimensione
Totale entro la somma dei quadrati kmeans()$tot.withinss Utilizzato con il metodo del gomito
Tra la somma dei quadrati kmeans()$betweenss
base Esecuzione riproducibile set.seed() valore del seme
base Stabilizzare il risultato kmeans(df, k, nstart = 25) nstart

DOMANDE FREQUENTI

I centroidi iniziali vengono scelti in modo casuale, quindi l'algoritmo puรฒ stabilizzarsi su diversi ottimi locali. Utilizzare set.seed() per rendere l'esecuzione riproducibile e nstart = 25 per conservare il migliore tra molti avvii casuali.

Sรฌ, quando le variabili utilizzano unitร  o intervalli diversi. L'algoritmo K-means misura la distanza, quindi una colonna di prezzi non scalata che si estende su migliaia sovrasterebbe una colonna delle dimensioni dello schermo misurata in pollici.

In alternativa, si puรฒ ricorrere al metodo della silhouette, che valuta quanto bene ogni punto si adatti al suo cluster, oppure alla statistica del gap. Entrambi sono disponibili tramite la funzione fviz_nbclust() nel pacchetto factoextra.

K-means alimenta la segmentazione dei clienti, la quantizzazione del colore delle immagini, il rilevamento delle anomalie e il raggruppamento dei documentipingViene inoltre utilizzato per comprimere le caratteristiche prima che un modello supervisionato venga addestrato su di esse.

Sรฌ. Gli assistenti basati sull'IA possono leggere una tabella di centri di cluster e proporre nomi descrittivi per ciascun segmento. รˆ necessario convalidare ogni etichetta confrontandola con i dati sottostanti, poichรฉ l'algoritmo non assegna mai un significato autonomamente.

Riassumi questo post con: