Clustering

Cosa si intende per clustering?

Il clustering e le sue applicazioni

Il clustering o analisi dei cluster è un metodo di apprendimento senza supervisione utilizzato nel Machine Learning e nell’analisi dei dati che organizza i dati in modo che i punti di dati dello stesso gruppo (o cluster) siano più simili tra loro rispetto a quelli di altri gruppi. Il clustering aiuta a dare un senso a insiemi di dati complessi e di grandi dimensioni, rivelando pattern e tendenze o effettuando previsioni su dati non etichettati.

Come funziona il clustering

Il clustering prevede diverse fasi principali, tra cui la preparazione dei dati, la definizione di una misura di similarità, la scelta del giusto algoritmo di clustering, la valutazione e il perfezionamento dei cluster.

Grafico del workflow che mostra le fasi del clustering: preparazione dei dati, definizione di misure di similarità, selezione dell’algoritmo di clustering e valutazione dei cluster.

Fasi principali nel clustering

Nel clustering si misura la similarità tra punti di dati e si raggruppano i punti che hanno una misura di similarità maggiore rispetto ai dati di qualsiasi altro cluster. Il concetto di “similarità” varia a seconda del contesto e dei dati ed è un aspetto fondamentale dell’apprendimento senza supervisione. È possibile utilizzare diverse misure di similarità, tra cui quella euclidea, quella probabilistica, la distanza del coseno e la correlazione.

Risultato del clustering mostrato in due dimensioni, dove i cluster sono rappresentati da colori diversi.

Grafico di dispersione dei dati raggruppati in tre cluster creati con la funzione spectralcluster. (Cfr. codice MATLAB.)

Tipi di algoritmi di clustering

Gli algoritmi di clustering si suddividono in due grandi gruppi:

  • Hard clustering: quando ogni punto di dati appartiene a un solo cluster, come il comune metodo k-means.
  • Soft clustering: quando ogni punto di dati può appartenere a più di un cluster, come nel caso dei modelli di mistura gaussiana.
Il metodo di analisi dei cluster <i>k</i>-means mostra cluster discreti di punti di dati con l’aggiunta di una stella per rappresentare il centroide.

Clustering k-means, che rappresenta i gruppi in base al loro centroide, ovvero la media di ogni membro rappresentata dalle stelle.

Il modello di mistura gaussiana mostra due cluster di punti di dati con linee isobare che rappresentano le probabilità di appartenenza al cluster.

Modello di mistura, che assegna le probabilità di appartenenza al cluster, rappresentando la forza di associazione con i diversi cluster.

Esistono diversi algoritmi di clustering e ognuno di essi implica un approccio peculiare al raggruppamento dei dati. Questi metodi presentano ingenti variazioni in termini di meccanica e casi d’uso ideali. I tipi più comuni di algoritmi di clustering utilizzati nel Machine Learning sono i seguenti.

Clustering per apprendimento senza supervisione

L’apprendimento senza supervisione è un tipo di algoritmo di Machine Learning utilizzato per trarre inferenze da dati non etichettati senza l’intervento umano. Il clustering è il metodo di apprendimento senza supervisione più comune. Applica algoritmi di clustering per esplorare i dati e trovare pattern o raggruppamenti nascosti nei dati senza alcuna conoscenza preliminare delle etichette dei gruppi. Utilizzando questi gruppi e pattern, il clustering aiuta a estrarre informazioni utili dai dati non etichettati e a rivelare le strutture intrinseche al loro interno.

La foto originale mostra un cane marrone chiaro su un pavimento piastrellato in bianco e nero; utilizzando il clustering, l’immagine elaborata separa il cane dal pavimento.

Utilizzo del clustering per la segmentazione delle immagini in modo da separare lo sfondo a motivi sul pavimento.

Perché il clustering è importante

Il clustering è un ambito fondamentale dell’intelligenza artificiale. Svolge un ruolo importante in vari domini, offrendo preziose informazioni sui dati e scoprendo modelli e pattern che non sono immediatamente evidenti. In caso di dati non etichettati, in cui la relazione intrinseca tra i punti di dati è nascosta ma necessaria per rivelare informazioni utili, il clustering aiuta a scoprire tali relazioni e a organizzare i dati non etichettati in gruppi significativi.

Raggruppando elementi simili, il clustering riduce la complessità dei dati in modo da potersi concentrare sul comportamento dei gruppi piuttosto che dover gestire una miriade di singoli punti di dati. Il clustering può quindi essere utilizzato per l’analisi esplorativa dei dati e per l’apprendimento con semi-supervisione. In quest’ultimo caso, il clustering viene utilizzato come fase di pre-elaborazione prima dell’apprendimento con supervisione per ridurre la quantità di dati che deve essere elaborata da un modello di Machine Learning e migliorare l’accuratezza della modellazione predittiva.

Il clustering viene utilizzato frequentemente anche in applicazioni come il rilevamento di anomalie, la segmentazione di immagini e il riconoscimento di pattern. In particolare, il clustering può essere applicato nelle seguenti aree per identificare pattern e sequenze:

  • I cluster possono rappresentare i dati invece del segnale grezzo nei metodi di compressione dei dati.
  • I cluster indicano regioni di immagini e nuvole di punti LIDAR negli algoritmi di segmentazione.
  • Il clustering può contribuire a individuare gli outlier o le anomalie all’interno di un set di dati.
  • Nell’imaging medico, gli algoritmi di clustering possono essere utilizzati per separare le immagini in regioni di interesse, ad esempio per differenziare il tessuto sano dai tumori o per segmentare il cervello in materia bianca, materia grigia e liquido cerebrospinale.
  • Il clustering viene utilizzato nei sistemi informativi geografici (GIS) per analizzare le immagini satellitari o le fotografie aeree in modo da individuare l’espansione urbana o i pattern di utilizzo del territorio o monitorare i cambiamenti delle aree urbane nel tempo.
  • Il clustering genetico e l’analisi delle sequenze sono utilizzati in bioinformatica.
Immagine originale del tessuto colorato in tonalità viola con ematossilina ed eosina e immagine elaborata del tessuto segmentato in tre classi.

Sinistra: immagine originale del tessuto colorato con ematossilina ed eosina. Destra: MATLAB ha assegnato tre cluster all’immagine, fornendo una segmentazione del tessuto in tre classi.

Clustering con MATLAB

Utilizzando MATLAB® con Statistics and Machine Learning Toolbox™, è possibile identificare pattern e feature applicando metodi di clustering a propria scelta e dividendo i dati in gruppi o cluster. Con Image Processing Toolbox™ è possibile eseguire il clustering sui dati delle immagini.

Preparazione dei dati

Per ottenere risultati di clustering accurati ed efficienti, è fondamentale pre-elaborare i dati e gestire i valori mancanti e gli outlier. Puoi pulire e pre-elaborare i dati in modo programmatico utilizzando le funzioni integrate o in modo interattivo mediante l’applicazione Data Cleaner.

Algoritmi di clustering

MATLAB supporta tutti i più diffusi algoritmi di clustering, che possono essere applicati con funzioni integrate, come la funzione kmeans. È possibile utilizzare l’attività Cluster Data di Live Editor per eseguire interattivamente clustering k-means e gerarchico. Utilizzando l’attività, è possibile generare automaticamente il codice MATLAB per il live script.

È anche possibile eseguire il clustering nearest-neighbor in Simulink utilizzando il blocco KNN Search. Il blocco accetta un punto di interrogazione e restituisce i punti k nearest-neighbor nei dati osservativi, utilizzando un oggetto di ricerca nearest-neighbor.

Grafico 2D che mostra le misure di larghezza e lunghezza dei petali per tre specie di iris e grafico che mostra i tre cluster risultanti utilizzando il clustering GMM.

Sinistra: grafico a dispersione MATLAB delle misure dei petali di diversi esemplari di tre specie di iris. Destra: misure dei petali segmentate in tre cluster utilizzando la tecnica di clustering del modello di mistura gaussiana (GMM). (Cfr. esempio Statistics and Machine Learning.)

Visualizzazione e valutazione dei risultati del clustering

Quando i dati non contengono divisioni naturali che indicano il numero appropriato di cluster, è possibile utilizzare criteri di valutazione diversi, come gap o silhouette, per determinare quanto i dati si adattano a un particolare numero di cluster. Inoltre è possibile visualizzare i cluster per esaminare i risultati del clustering. Ad esempio, è possibile utilizzare un grafico di un dendrogramma per visualizzare il clustering.

Tutti i punti dei due cluster hanno valori di silhouette elevati (0,8 o superiori), a indicare che i cluster sono ben separati.

Grafico MATLAB creato con la funzione silhouette che mostra che i dati sono divisi in due cluster di uguali dimensioni. (Cfr. codice MATLAB.)

Clustering per immagini

È possibile eseguire la segmentazione di immagini (usando la funzione imsegkmeans) e la segmentazione di volumi (usando la funzione imsegkmeans3) su immagini effettuando il clustering su regioni di pixel in base a similarità di colore o forma. Si può creare un’immagine segmentata etichettata utilizzando un algoritmo di clustering specifico. Ad esempio, nell’imaging medico è possibile rilevare ed etichettare i pixel di un’immagine o i voxel di un volume 3D che rappresentano un tumore nel cervello o in altri organi di un paziente. Utilizzando gli strumenti MATLAB, è possibile elaborare e analizzare le immagini per un’ampia gamma di applicazioni, dalla diagnosi delle malattie alla classificazione del territorio.

Quattro immagini in bianco e nero: immagine di prova, immagine segmentata, rilevamento del tumore e immagine etichettata.

Rilevamento di un tumore cerebrale da un’immagine di risonanza magnetica utilizzando il clustering fuzzy c-means in MATLAB. (Cfr. esempio Fuzzy Logic Toolbox.)