Intelligenza Artificiale Clustering Francesco Uliana 14 gennaio 2011 Definizione • Il Clustering o analisi dei cluster (dal termine inglese cluster analysis) è un insieme di tecniche di analisi multivariata dei dati volte alla selezione e raggruppamento di elementi omogenei in un insieme di dati. • Tutte le tecniche di clustering si basano sul concetto di distanza tra due elementi Esempio: http://vivisimo.com/ L’idea • Gli algoritmi di clustering raggruppano gli elementi sulla base della loro distanza reciproca, e quindi l'appartenenza o meno ad un insieme dipende da quanto l'elemento preso in esame è distante dall'insieme stesso. Due filosofie • Dal basso verso l'alto (Bottom-Up): – inizialmente tutti gli elementi siano considerati cluster a sé (singleton), e poi l'algoritmo provvede ad unire i cluster più vicini. – L'algoritmo continua ad unire elementi al cluster fino ad ottenere un numero prefissato di cluster, oppure fino a che la distanza minima tra i cluster non supera un certo valore. Due filosofie • Dall'alto verso il basso (Top-Down): – All'inizio tutti gli elementi sono un unico cluster, e poi l'algoritmo inizia a dividere il cluster in tanti cluster di dimensioni inferiori. – Il criterio che guida la divisione è sempre quello di cercare di ottenere elementi omogenei. – L'algoritmo procede fino a che non ha raggiunto un numero prefissato (come?) di cluster. Uno o più cluster per elemento? • Clustering esclusivo: ogni elemento può essere assegnato ad uno ed ad un solo gruppo. I clusters risultanti, quindi, non possono avere elementi in comune. • Clustering non-esclusivo, in cui un elemento può appartenere a più cluster con gradi di appartenenza diversi. algoritmo per dividere lo spazio • Clustering Partitivo (detto anche k-clustering), in cui per definire l'appartenenza ad un gruppo viene utilizzata una distanza da un punto rappresentativo del cluster (centroide, medioide ecc...), avendo prefissato il numero di gruppi della partizione risultato. • Clustering Gerarchico, in cui viene costruita una gerarchia di partizioni caratterizzate da un numero (de)crescente di gruppi, visualizzabile mediante una rappresentazione ad albero (dendrogramma), in cui sono rappresentati i passi di accorpamento/divisione dei gruppi. Clustering gerarchico • Le tecniche di clustering gerarchico non producono un partizionamento flat dei punti, ma una rappresentazione gerarchica ad albero. • Es. 0306-lecture.pdf slide 15 Clustering Agglomerativo • Questi algoritmi assumono che inizialmente ogni cluster (foglia) contenga un singolo punto; ad ogni passo, poi, vengono fusi i cluster più "vicini" fino ad ottenere un singolo grande cluster. Questi algoritmi necessitano di misure per valutare la similarità tra clusters, per scegliere la coppia di cluster da fondere ad ogni passo. • Ogni livello dell’albero è una partizione dei dati • Monotonicità: la similarità tra cluster accoppiati diminuisce progressivamente • La struttura ottenuta prende il nome di dendogramma Dendogramma • fornisce una rappresentazione grafica del processo di raggruppamento delle istanze (o unità statistiche, o records, o elementi dell'insieme), che esprime: – nell'asse delle ascisse, la distanza logica dei clusters secondo la metrica definita – nell'asse delle ordinate, il livello gerarchico di aggregazione (valori interi positivi) • La scelta del livello gerarchico (del valore dell'asse Y) definisce la partizione rappresentativa del processo di aggregazione. Esempio di dendogramma Misure utilizzate nel clustering gerarchico • Single-link proximity: distanza tra due cluster è la distanza minima tra elementi appartenenti a cluster diversi • Average-link proximity: distanza tra due cluster è la media delle distanze tra i singoli elementi: • Complete-link proximity: distanza tra due cluster è la distanza massima tra elementi appartenenti ai due clusters: Clustering partitivo • Gli algoritmi di clustering di questa famiglia creano una partizione delle osservazioni minimizzando una certa funzione di costo: dove k è il numero dei clusters, Cj è il j − esimo cluster e è la funzione di costo associata al singolo cluster. • L'algoritmo più famoso appartenente a questa famiglia è il k-means, proposto da MacQueen nel 1967. K-means K-means Complessità computazionale K-means • il problema di clustering k-means è NP-hard in uno spazio d-dimensionale anche con soli 2 clusters • Se k e d sono fissati, il problema può essere risolto esattamente in tempo O(ndk+1 log n), dove n è il numero di entità da clusterizzare • Per questa ragione sono stati proposti diversi algoritmi euristici. Determinare il miglior valore per k • Utilizzare la cross validation per vari valori di k • Come misurare la qualità del clustering? – distanza media dei punti dai centri dei relativi cluster (da minimizzare) Attenzione! • Le misure migliorano al crescere di k (overfitting). • Bisogna individuare quando l’incremento di k determina un incremento limitato (es. elbow method) Confronto Requisiti • K-means – scelta di k – Funzione per calcolare la distanza tra punti – assegnazione iniziale • Clustering gerarchico – Funzione di similarità tra clusters k-nearest neighbors (k-NN) • riconoscimento di pattern per la classificazione di oggetti basandosi sulle caratteristiche degli oggetti vicini a quello considerato • È l'algoritmo più semplice fra quelli utilizzati nell'apprendimento automatico (machine learning). Il parametro k (k-nn) • Un oggetto è classificato in base alla maggioranza dei voti dei suoi k vicini. k è un intero positivo tipicamente non molto grande. – Se k=1 allora l'oggetto viene assegnato alla classe del suo vicino. – In un contesto binario in cui sono presenti esclusivamente due classi è opportuno scegliere k dispari per evitare di ritrovarsi in situazioni di parità. Il parametro k (k-nn) • Considerando solo i voti dei k oggetti vicini c'è l'inconveniente dovuto alla predominanza delle classi con più oggetti. – Si possono pesare i contributi dei vicini in modo da dare, nel calcolo della media, maggior importanza in base alla distanza dall'oggetto considerato. • La scelta di k dipende dalle caratteristiche dei dati. Generalmente all'aumentare di k si riduce il rumore che compromette la classificazione, ma il criterio di scelta per la classe diventa più labile. L'algoritmo k-nn: fase di training • Lo spazio viene partizionato in regioni in base alle posizioni e alle caratteristiche degli oggetti di training. Questo può essere considerato come il training-set per l'algoritmo L'algoritmo k-nn: Calcolo della distanza • Ai fini del calcolo della distanza gli oggetti sono rappresentati attraverso vettori di posizione in uno spazio multidimensionale. Di solito viene usata la distanza euclidea, ma anche altri tipi di distanza sono ugualmente utilizzabili, ad esempio la distanza Manhattan. Distanza Euclidea • Pari alla distanza fra due punti, ossia la misura del segmento avente per estremi i due punti. – In generale, per due punti in uno spazio ndimensionale, P = (p1,p2,...,pn) e Q = (q1,q2,...,qn), la distanza è calcolata come: Distanza di Manhattan • la distanza tra due punti è la somma delle differenze (in valore assoluto) delle loro coordinate. – nel piano, la distanza L1 tra due punti P1 di coordinate (x1,y1) e il punto P2 di coordinate (x2,y2) è L1(P1,P2) = | x1 − x2 | + | y1 − y2 | . L'algoritmo k-nn: Fase di classificazione • Un punto (che rappresenta un oggetto) è assegnato alla classe C se questa è la più frequente fra i k esempi più vicini all'oggetto sotto esame, la vicinanza si misura in base alla distanza fra punti. • I vicini sono presi da un insieme di oggetti per cui è nota la classificazione corretta. Esempio k-nn • Il punto sotto osservazione è il pallino verde. Le classi sono due: triangolini rossi e quadratini blu. – Se k = 3, allora il pallino verde viene inserito nella stessa classe dei triangolini rossi perché sono presenti 2 triangolini e 1 quadratino. – Se k = 5 allora viene inserito nella stessa classe dei quadratini blu perché sono presenti 3 quadratini e 2 triangolini.