Clustering K-Means
Esplora il clustering K-Means per l'apprendimento non supervisionato. Scopri come questo algoritmo suddivide i dati, migliora le applicazioni di IA e alimenta modelli come Ultralytics .
Il clustering K-Means è un algoritmo fondamentale e ampiamente utilizzato nel campo dell'
apprendimento non supervisionato, progettato per scoprire
strutture nascoste all'interno di dati non etichettati. Il suo obiettivo principale
è quello di suddividere un set di dati in sottogruppi distinti, noti come cluster, in modo tale che i punti dati all'interno dello stesso
gruppo siano il più simili possibile, mentre quelli di gruppi diversi siano distinti. Come pietra miliare del
data mining e dell'analisi esplorativa, K-Means consente ai
data scientist di organizzare automaticamente informazioni complesse in categorie gestibili senza la necessità di
etichette predefinite o supervisione umana.
Come funziona l'algoritmo
Il funzionamento di K-Means è iterativo e si basa su metriche di distanza per determinare il raggruppamento ottimale dei
dati di addestramento. L'algoritmo opera organizzando gli
elementi in K cluster, dove ogni elemento appartiene al cluster con la media più vicina, o centroide. Questo
processo riduce al minimo la varianza all'interno di ciascun gruppo. Il flusso di lavoro
segue generalmente questi passaggi:
-
Inizializzazione: l'algoritmo seleziona K punti iniziali come centroidi. Questi possono essere scelti
casualmente o tramite metodi ottimizzati come k-means++ per accelerare
la convergenza.
-
Assegnazione: ogni punto dati nel set di dati viene assegnato al centroide più vicino in base a una specifica
metrica di distanza, più comunemente la
distanza euclidea.
-
Aggiornamento: i centroidi vengono ricalcolati prendendo la media (media aritmetica) di tutti i punti dati assegnati a
quel cluster.
-
Iterazione: i passaggi 2 e 3 vengono ripetuti fino a quando i centroidi non si spostano più in modo significativo o viene raggiunto un numero massimo
di iterazioni.
Determinare il numero corretto di cluster (K) è un aspetto critico dell'utilizzo di questo algoritmo. I professionisti
spesso utilizzano tecniche come il metodo Elbow o
analizzano il
punteggio Silhouette
per valutare quanto siano ben separati i cluster risultanti.
Applicazioni del mondo reale nell'IA
Il clustering K-Means è altamente versatile e trova utilità in vari settori per la semplificazione e la
pre-elaborazione dei dati.
-
Compressione delle immagini e quantizzazione dei colori: nella
visione artificiale (CV), K-Means aiuta a ridurre le
dimensioni dei file delle immagini raggruppando i colori dei pixel. Raggruppando migliaia di colori in un insieme più piccolo di colori dominanti
, l'algoritmo esegue efficacemente la
riduzione della dimensionalità,
preservando la struttura visiva dell'immagine. Questa tecnica viene spesso utilizzata prima dell'addestramento di modelli avanzati di
rilevamento degli oggetti per normalizzare i dati di input.
-
Segmentazione della clientela: le aziende sfruttano il clustering per raggruppare i clienti in base alla cronologia degli acquisti,
ai dati demografici o al comportamento sul sito web. Ciò consente di attuare strategie di marketing mirate, una componente fondamentale dell'
intelligenza artificiale nelle soluzioni di vendita al dettaglio. Identificando gli acquirenti di alto valore
o i rischi di abbandono, le aziende possono personalizzare i propri messaggi in modo efficace.
-
Rilevamento delle anomalie: apprendendo la struttura dei cluster di dati "normali", i sistemi possono
identificare i valori anomali che si discostano notevolmente da qualsiasi centroide. Ciò è
prezioso per il rilevamento delle frodi in ambito finanziario e
il rilevamento delle anomalie nella sicurezza della rete, aiutando a
segnalare attività sospette che si discostano dai modelli standard.
-
Generazione di anchor box: storicamente, i rilevatori di oggetti come YOLO precedenti YOLO utilizzavano K-Means per
calcolare gli anchor box ottimali dai set di dati di addestramento
. Mentre i modelli moderni come YOLO26 utilizzano metodi avanzati
senza anchor, la comprensione di K-Means rimane rilevante per l'evoluzione delle architetture di rilevamento.
Esempio di implementazione
Mentre i framework di deep learning come la Ultralytics gestiscono
pipeline di formazione complesse, K-Means viene spesso utilizzato per analizzare le statistiche dei set di dati. Il seguente Python
mostra come raggruppare coordinate 2D, simulando i centroidi degli oggetti, utilizzando la popolare
libreria Scikit-learn.
import numpy as np
from sklearn.cluster import KMeans
# Simulated coordinates of detected objects (e.g., from YOLO26 inference)
points = np.array([[10, 10], [12, 11], [100, 100], [102, 101], [10, 12], [101, 102]])
# Initialize K-Means to find 2 distinct groups (clusters)
kmeans = KMeans(n_clusters=2, random_state=0, n_init="auto").fit(points)
# Output the cluster labels (0 or 1) for each point
print(f"Cluster Labels: {kmeans.labels_}")
# Output: [1 1 0 0 1 0] -> Points near (10,10) are Cluster 1, near (100,100) are Cluster 0
Confronto con algoritmi simili
È importante distinguere K-Means da altri algoritmi con nomi o funzioni simili per garantire la scelta dello strumento corretto
per un progetto.
-
K-Means vs. K-Nearest Neighbors (KNN): Questi algoritmi vengono spesso confusi a causa della "K" presente nei loro
nomi. K-Means è un algoritmo non supervisionato utilizzato per il clustering di dati non etichettati. Al contrario,
K-Nearest Neighbors (KNN) è un
algoritmo di apprendimento supervisionato utilizzato per la
classificazione e la regressione delle immagini, che si basa
su dati etichettati per effettuare previsioni basate sulla classe maggioritaria dei vicini.
-
K-Means vs. DBSCAN: Sebbene entrambi raggruppino i dati, K-Means presuppone che i cluster siano sferici e richiede che
il numero di cluster sia definito in anticipo.
DBSCAN
raggruppa i dati in base alla densità, è in grado di individuare cluster di forme arbitrarie e gestisce meglio il rumore. Ciò rende DBSCAN
superiore per i dati spaziali complessi presenti in set di dati con
strutture irregolari in cui il numero di cluster è sconosciuto.