K-significa Clustering con Julia

Feb 07 2023
using Clustering.jl Che cos'è K-mean Clustering? Il clustering K-mean è una metodologia di apprendimento automatico non supervisionata utilizzata per la classificazione dei punti dati.

utilizzando Clustering.jl

Foto di Tolga Ulkan su Unsplash

Che cos'è il clustering K-significa?

Il clustering K-mean è una metodologia di apprendimento automatico non supervisionata utilizzata per la classificazione dei punti dati. Un insieme di N punti dati è suddiviso in k cluster, ( k è il numero di cluster ). Ogni cluster è focalizzato sul suo centroide ( valore medio ) e i punti/osservazioni nel cluster sono vicini al centroide ( il valore medio ).

Qual è lo scopo?

Lo scopo del clustering K-mean è quello di suddividere un insieme di N punti dati in K cluster con l'obiettivo di ridurre le distanze tra la somma delle distanze al quadrato tra ciascun punto dati e il centro del cluster assegnato (centroide).

Fondamentalmente questo raggrupperà i punti ( con centroidi simili ) insieme.

Con il clustering K-means, la distanza tra un punto dati e un centroide del cluster rappresenta la somiglianza tra il punto dati e il cluster.

Più in generale , il clustering K-means viene utilizzato per vari scopi, come la segmentazione delle immagini, la segmentazione del mercato, il rilevamento delle anomalie, il raggruppamento, ecc...

Come funziona?

Quando i punti dati sono stati assegnati ai cluster, l'algoritmo k significa aggiorna i centroidi calcolando la media dei punti dati assegnati a ciascun cluster. Il centroide aggiornato diventa il nuovo centro del cluster, che rappresenta la media di tutti i punti in quel cluster.

Ogni punto dati nel cluster è stato assegnato dal centroide più vicino al punto dati. Questo viene fatto calcolando le distanze tra ogni punto dati e tutti i centroidi e quindi selezionando il centroide con la distanza minima.

Diamo un'occhiata a un esempio e ad alcune trame...

Di seguito è la mia configurazione.

Aggiungo un seme casuale che rende l'esperimento riproducibile e ho creato alcuni dati, X e Y.

using Clustering, Random, Plots, DataFrames
Random.seed!(1)
X = rand(200);
Y = rand(200)

      
                

scatter(X,Y, legend=false , title = "Random Points")

      
                

Z  = [X Y]'

      
                

k = 4

Quindi aggiungo le iterazioni, che limiteranno il numero di iterazioni eseguite dall'algoritmo.

iter = 50
Result = kmeans(Z, k; maxiter=iter, display=:iter)

Convergenza dopo 8 iterazioni!

Controllo se ci sono 4 cluster:

nclusters(Result) == 4

      
                

Posso anche guardare le assegnazioni del cluster:

h = assignments(Result)

      
                

Posso ottenere le dimensioni del cluster:

c = counts(Result)

      
                

mu = Result.centers

      
                

Trame

scatter(X,Y
,legend=false 
,title = "Random Points with black centroids"
,xlabel = "X" 
,ylabel = "Y"
,group = h
,markersize = 8
);
scatter!(mu[1,:],mu[2,:]
,color = :black 
,markersize = 12
)

      
                

Conclusione

K-means clustering è un utile algoritmo di apprendimento automatico non supervisionato che classifica i punti dati in base alle loro distanze tra i centroidi dei punti dati. Ciò causerà il raggruppamento di punti dati simili.

Le misure di distanza utilizzate potrebbero essere la distanza euclidea o la distanza di Manhattan , che dipenderà dal tipo di dati da raggruppare e questa scelta potrebbe anche avere un impatto significativo sui risultati del clustering K-medie.

Spero che l'articolo ti sia piaciuto e che ti sia stato utile!

Connettiamoci su Linkedin , o github , o seguimi per altri articoli su Julia, R, Python e statistiche applicate!