Scopri il K-Means Clustering, un algoritmo chiave di apprendimento non supervisionato per raggruppare i dati in cluster. Esplora il suo processo, le applicazioni e i confronti!
Il K-Means Clustering è un algoritmo ampiamente utilizzato nel campo dell'apprendimento non supervisionato. dell'apprendimento non supervisionato, progettato per suddividere un in sottogruppi distinti e non sovrapposti. Nel contesto più ampio del dell'apprendimento automatico (ML), questo metodo è essenziale per scoprire per scoprire schemi e strutture nascoste all'interno di dati non etichettati. L'algoritmo funziona organizzando i punti di dati in un numero $K$ di cluster, dove ogni punto appartiene al cluster con la media più vicina, che funge da prototipo del gruppo. gruppo. Questo approccio aiuta a minimizzare la varianza all'interno di ogni cluster, assicurando che i punti di dati nello stesso gruppo siano il più possibile simili, pur mantenendo distinti i diversi gruppi.
Il processo di K-Means è iterativo e inizia con la selezione di $K$ centroidi iniziali, che fungono da punti centrali per i cluster. punti centrali per i cluster. Questi centroidi possono essere scelti in modo casuale o tramite tecniche di inizializzazione più intelligenti, come ad esempio inizializzazione k-means++ per migliorare la velocità di convergenza. L'algoritmo procede poi attraverso due fasi primarie fino a quando i risultati si stabilizzano:
Questo ciclo si ripete fino a quando i centroidi non si spostano più in modo significativo, indicando che l'algoritmo ha convergenza. La determinazione del numero ottimale di cluster è una parte critica del processo, spesso ottenuta utilizzando tecniche come il metodo del metodo del gomito o analizzando il punteggio Silhouette per misurare la distanza di separazione tra i cluster risultanti.
Il clustering K-Means è versatile e trova utilità in vari settori per l'estrazione e l'analisi dei dati. attività di data mining e di analisi.
Mentre i moderni rilevatori di oggetti come Ultralytics YOLO11 spesso utilizzano tecniche di regressione avanzate o teste prive di ancoraggio, K-Means ha svolto un ruolo fondamentale nell'evoluzione dei modelli di rilevamento. modelli di rilevamento. Le prime iterazioni, come YOLOv2 e YOLOv5, hanno utilizzato il clustering K-Means sulle dimensioni del bounding box del set di dati COCO per determinare i parametri ottimali. del datasetCOCO per determinare le caselle di ancoraggio ottimali. caselle di ancoraggio ottimali. Questi ancoraggi precalcolati hanno fornito Il modello ha avuto a disposizione priori migliori per la previsione delle forme degli oggetti, migliorando in modo significativo la stabilità dell'addestramento e il richiamo.
È comune confondere K-Means con K-Nearest Neighbors (KNN), ma le loro funzioni sono fondamentalmente diverse. scopi fondamentalmente diversi.
Un altro concetto correlato è DBSCAN, che raggruppa in base alla densità piuttosto che alla distanza da un punto centrale. A differenza di K-Means, DBSCAN non richiede di specificare in anticipo il numero di il numero di cluster da specificare in anticipo e gestisce meglio gli outlier.
Il seguente esempio Python mostra come utilizzare K-Means per raggruppare i colori dei pixel, una fase comune di preelaborazione dei dati nelle attività di visione. di preelaborazione dei dati nelle attività di visione.
import numpy as np
from sklearn.cluster import KMeans
# Simulate a small image (10x10 pixels) with 3 RGB channels
# In a real scenario, you would load an image using cv2.imread()
image_data = np.random.randint(0, 255, (10, 10, 3), dtype=np.uint8)
pixels = image_data.reshape(-1, 3)
# Apply K-Means to reduce the image to 3 dominant colors (clusters)
kmeans = KMeans(n_clusters=3, n_init="auto", random_state=42).fit(pixels)
# The cluster centers represent the dominant colors
print(f"Dominant RGB Colors:\n{kmeans.cluster_centers_}")