K-Means Clustering
Esplora il clustering K-Means per l'apprendimento non supervisionato. Scopri come questo algoritmo suddivide i dati, migliora le applicazioni di AI e fornisce indicazioni ai modelli come Ultralytics YOLO26.
Il clustering K-Means è un algoritmo fondamentale e ampiamente utilizzato nel campo dell'apprendimento non supervisionato, progettato per individuare strutture nascoste all'interno di dati non etichettati. Il suo obiettivo principale è suddividere un dataset in sottogruppi distinti, noti come cluster, in modo che i punti dati all'interno dello stesso gruppo siano il più simili possibile, mentre quelli appartenenti a gruppi diversi siano distinti. In quanto elemento fondamentale 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 organizza gli elementi in K cluster, dove ogni elemento appartiene al cluster con la media, o centroide, più vicina. Questo processo minimizza 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 del dataset viene assegnato al centroide più vicino in base a una metrica di distanza specifica, più comunemente la distanza euclidea.
-
Aggiornamento: i centroidi vengono ricalcolati calcolando la media di tutti i punti dati assegnati a quel cluster.
-
Iterazione: i passaggi 2 e 3 vengono ripetuti finché i centroidi non si spostano più in modo significativo o non viene raggiunto il numero massimo di iterazioni.
Determinare il numero corretto di cluster (K) è un aspetto fondamentale dell'utilizzo di questo algoritmo. Gli esperti utilizzano spesso tecniche come il metodo del gomito o analizzano il punteggio silhouette per valutare quanto siano ben separati i cluster risultanti.
Applicazioni reali nell'IA#
Il clustering K-Means è estremamente versatile e trova applicazione in vari settori per la semplificazione e il preprocessing dei dati.
- Compressione delle immagini e quantizzazione dei colori: nella visione artificiale (CV), K-Means consente di ridurre le dimensioni dei file immagine raggruppando i colori dei pixel. Raggruppando migliaia di colori in un insieme più piccolo di colori dominanti, l'algoritmo esegue efficacemente una riduzione della dimensionalità, preservando al contempo 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 dei clienti: 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 adottare strategie di marketing mirate, una componente fondamentale delle soluzioni di AI nel commercio al dettaglio. Identificando gli acquirenti di alto valore o i clienti a rischio di abbandono, le aziende possono personalizzare efficacemente i propri messaggi.
- Rilevamento delle anomalie: apprendendo la struttura dei cluster di dati "normali", i sistemi possono identificare gli outlier che si trovano lontano da qualsiasi centroide. Questo è utile per il rilevamento delle frodi nel settore finanziario e per il rilevamento delle anomalie nella sicurezza delle reti, contribuendo a segnalare attività sospette che si discostano dai modelli standard.
- Generazione degli anchor box: storicamente, i rilevatori di oggetti come le versioni precedenti di YOLO utilizzavano K-Means per calcolare gli anchor box ottimali a partire dai dataset di addestramento. Sebbene i modelli moderni come YOLO26 utilizzino metodi avanzati senza anchor, la comprensione di K-Means rimane rilevante per l'evoluzione delle architetture di rilevamento.
Esempio di implementazione#
Sebbene i framework di deep learning come la Ultralytics Platform gestiscano pipeline di addestramento complesse, K-Means viene spesso utilizzato per analizzare le statistiche dei dataset. Il seguente frammento di 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 0Confronto con algoritmi correlati#
È importante distinguere K-Means da altri algoritmi con nomi o funzioni simili per assicurarsi di selezionare lo strumento corretto per un progetto.
- K-Means e K-Nearest Neighbors (KNN): questi algoritmi vengono spesso confusi a causa della "K" 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 delle immagini e la regressione, che si basa su dati etichettati per effettuare previsioni in base alla classe maggioritaria dei vicini.
- K-Means e DBSCAN: sebbene entrambi eseguano il clustering dei dati, K-Means presuppone che i cluster siano sferici e richiede che il numero di cluster venga definito in anticipo. DBSCAN raggruppa i dati in base alla densità, può individuare cluster di forme arbitrarie e gestisce meglio il rumore. Questo rende DBSCAN superiore per i dati spaziali complessi presenti nei dataset con strutture irregolari, quando il numero di cluster è sconosciuto.









