Le Voci dell’AI – Episodio 84: k-means: un semplice ma potente algoritmo di raggruppamento

Ciao a tutti, sono Vincenzo Lomonaco, ricercatore e docente all’Università di Pisa.

Nella puntata di oggi parliamo di un algoritmo classico nel contesto dell’intelligenza artificiale, k-means, e di come è possibile identificare raggruppamenti, gruppi di individui con caratteristiche affini a partire da un insieme di dati da una popolazione.

Com’è possibile implementarlo in pratica? E quali sono gli scopi che potremmo avere nella sua applicazione? Scopriamolo insieme in questa puntata di Le Voci dell’AI.

Gli algoritmi di raggruppamento o clustering all’anglosassone sono tecniche di apprendimento automatico che servono a suddividere un insieme di dati in gruppi basati su caratteristiche simili, senza bisogno di sapere in anticipo a quale gruppo ogni dato appartenga.

A differenza quindi dei metodi supervisionati che imparano da esempi già etichettati da esperti del dominio, il clustering lavora su dati così come sono, cercando schemi o connessioni sulla base delle loro caratteristiche intrinseche numeriche.

Esistono poi vari tipi di algoritmi di clustering, quelli partizionali, che dividono i dati in un numero fisso di gruppi, quelli gerarchici che costruiscono invece una vera e propria struttura ad albero di gruppi e quelli basati sulla densità, che trovano dei gruppi concentrati e identificano i punti invece isolati.

Questi algoritmi sono particolarmente utili nei contesto dell’intelligenza artificiale perché permettono di analizzare grandi quantità di dati non etichettati, spesso difficili da organizzare manualmente. Rispetto quindi ad approcci supervisionati che richiedono esempi etichettati manualmente per imparare, il clustering si concentra sulla scoperta automatica di strutture nascoste e pattern, potremmo dire nascosti dei dati.

Tuttavia, i risultati non sempre sono facili da interpretare, proprio perché non ci sono queste etichette che corrispondono a risposte corrette per verificare se un gruppo poi è quello corretto.

Il clustering trova tantissime applicazioni in svariati settori. Per esempio nel marketing è utilizzato per suddividere i clienti in base ai loro interessi, comportamenti e abitudini di acquisto, così da creare offerte più mirate. In biologia il clustering aiuta a raggruppare geni o proteine con funzioni simili e così via.

Altre applicazioni includono, per esempio il riconoscimento delle anomalie, come il rilevamento di frodi bancarie o l’analisi di testi per trovare argomenti comuni in grandi collezioni di documenti.

Tra gli algoritmi più conosciuti c’è k-means, apprezzato proprio per la sua semplicità implementativa e la sua efficienza, anche se richiede di sapere in anticipo quanti gruppi creare – il numero di gruppi.

Un altro esempio è DBSCAN, che è molto utile per trovare gruppi di qualsiasi forma e identificare i punti isolati come rumore, outliers.

Questi strumenti sono fondamentali per trasformare quindi grandi quantità di dati non organizzati in informazioni utili a diversi scopi decisionali, rendendoli parte essenziale del mondo dell’intelligenza artificiale e dell’analisi dei dati moderna.

k-means è uno degli algoritmi di clustering più semplici e utilizzati per raggruppare dati in insiemi basati sulla loro somiglianza. Quindi guardiamolo insieme in questa puntata.

k-means funziona trovando gruppi o cluster di dati dove ogni gruppo è rappresentato dal suo centro o centroide. L’obiettivo è minimizzare la distanza tra i punti e il centro del loro gruppo di appartenenza.

Come vediamo da questa immagine l’algoritmo k-means segue alcuni passaggi fondamentali.

Inizialmente vengono scelti casualmente K centri dove K rappresenta il numero di gruppi considerati, solitamente quindi specificato dall’utente; successivamente ogni punto del dataset viene assegnato al centro più vicino calcolando la distanza con una misura come quella euclidea; siamo in una rappresentazione cartesiana dei punti di interesse.

Una volta assegnati i punti, i centri vengono aggiornati calcolando la media dei punti appartenenti a ciascun gruppo.

Questo processo di assegnazione e aggiornamento poi si ripete fino a quando i centri non subiscono variazioni significative, ovvero è soddisfatto un criterio di arresto come il raggiungimento del numero massimo di iterazioni.

Alla fine, quindi, l’algoritmo restituisce k gruppi con i relativi centroidi.

k-means è molto facile da implementare ed efficace, ma ovviamente ha anche delle pecche.

Può essere influenzato dalla scelta iniziale dei centri inizialmente stabiliti randomicamente e non sempre funziona bene con dei cluster di forma complessa o dimensioni variabili.

Questa immagine invece mostra un esempio applicativo dell’algoritmo k-means nel contesto del famoso dataset Iris, che contiene informazioni su tre specie di piante differenti: Iris setosa, Iris versicolor e Iris virginica.

I dati sono rappresentati in un grafico con le dimensioni del petalo: la Petal Length sulle ascisse che rappresenta rappresenta la lunghezza del petalo, mentre sull’asse delle ordinate la Petal Width che rappresenta la larghezza del petalo.

Quindi ogni punto in questo grafico rappresenta una misurazione diversa di ogni petalo per diverse piante, k-means qui è stato utilizzato per raggruppare i dati in base alla loro similarità, quindi delle dimensioni del petalo, cercando di individuare i cluster naturali senza utilizzare le etichette originali della specie.

I punti colorati rappresentano le tre specie e i cluster trovati dall’algoritmo. Corrispondono quindi i colori: rosso – setosa, verde – versicolor, blu – virginica.

Si nota bene come l’algoritmo riesca a separare setosa dagli altri due gruppi, viste le caratteristiche molto distinte, mentre i cluster per versicolor e virginica hanno una sovrapposizione parziale.

Questo accade perché le dimensioni dei petali di queste due specie sono molto più simili, rendendo più difficile questo processo di separazione in gruppi.

L’uso di k-means in questo contesto dimostra come si possono identificare dei gruppi basati su caratteristiche numeriche anche senza conoscere le etichette originali, quindi rendendo utile l’applicazione di questo algoritmo per l’esplorazione di dati non etichettati o per validare classificazioni preesistenti.

In questa immagine invece vediamo rappresentato un grafico a gomito, elbow-plot, uno strumento comunemente utilizzato per determinare il numero ottimale di cluster K per l’algoritmo che in caso non lo conoscessimo a priori.

Sull’asse orizzontale è riportato il numero di cluster K, mentre sull’asse verticale si nota il valore del WCSS, una metrica – within cluster sum of squares – che misura la somma delle distanze tra i punti e il loro centri di cluster.

k-means funziona bene solo se il numero di cluster è specificato correttamente, quindi è importante trovare un valore che bilanci precisione e semplicità.

Nel grafico si nota che il WCSS diminuisce rapidamente quando K aumenta, perché ogni classe aggiuntiva riduce la distanza media dei punti dai centri.

Tuttavia, oltre un certo punto, in questo caso K = 3, il calo di questa metrica diventa molto meno significativo. Vedete, la curva forma una sorta di gomito.

Questo punto di gomito indica che aggiungere ulteriori cluster, aggiungere ulteriori gruppi, non migliora significativamente il modello, ma aumenta semplicemente la complessità.

Nel caso mostrato, quindi, scegliere K = 3 è ideale perché rappresenta un buon compromesso tra minimizzare il WCS e mantenere un modello semplice e interpretabile.

Questo risultato, infatti, è coerente con i dataset IRIS, che sappiamo già contiene tre specie di piante.

Bene, in questa puntata abbiamo parlato di algoritmi di raggruppamento e di perché questi algoritmi e la loro capacità di rilevare strutture e gruppi di dati siano particolarmente utili nel contesto di soluzioni di intelligenza artificiale.

In particolare, abbiamo illustrato a grandi linee il funzionamento dell’algoritmo k-means, un algoritmo classico in questo contesto, e come esso può essere applicato in contesti e scopi molto diversi, non solo per capire meglio la natura dei nostri dati, ma anche per generare soluzioni più sofisticate di classificazione e personalizzazione basate su questa segmentazione.

Ciao! Alla prossima puntata di Le Voci dell’AI!

Se questo articolo ti è piaciuto e vuoi rimanere sempre informato sulle novità tecnologiche

LASCIA UN COMMENTO

Inserisci il tuo commento
Inserisci il tuo nome