Pattern Recognition
Lez.12: Unsupervised
classification: fuzzy C-mean
clustering
Classi “sfumate” (fuzzy)
• Una soluzione ai problemi posti dalla
classificazione “dura” (hard) utilizza il
concetto di “insieme fuzzy”.
• In questo corso non ci occuperemo di
logica fuzzy ma introduciamo solo i
concetti necessari al problema della
classificazione.
Insiemi “classici”, funzione caratteristica
Dato un universo Ω ed un sottoinsieme A di esso
la funzione caratteristica dell’insieme A su Ω è
definita per ogni x in Ω come segue:
χA(x) = 1 se x in A, 0 altrimenti
Un modo per interpretare tale funzione è
osservare che essa definisce il “grado” con cui
un elemento x appartiene all’insieme A.
Nella classificazione “hard” o “crisp” questo grado
può essere o minimo (zero) o massimo (uno).
Insiemi “fuzzy”, funzione caratteristica fuzzy
Dato un universo Ω un sottoinsieme “fuzzy” A può
essere definito da una funzione caratteristica
dell’insieme A, su Ω è definita per ogni x in Ω come
segue:
χA(x) = α con α in [0,1]
Anche in questo caso tale funzione definisce il
“grado” con cui un elemento x appartiene
all’insieme A.
Nel caso di insiemi “fuzzy” questo grado può essere
un numero qualunque tra un minimo (zero) o
massimo (uno).
Esempi di insiemi hard e fuzzy a confronto
• Tra tutte le possibili misure di statura di un uomo quando
siamo in presenza di una statura “alta”?
• Nel caso “hard” possiamo dire che se una statura è
superiore ai 180 cm siamo in presenza di statura alta.
• Ma se un uomo è alto 179 non può essere definito alto in
nessun grado?
• Una funzione caratteristica fuzzy “cattura” e esprime meglio
un concetto “vago” e “qualitativo” e fornisce uno strumento
matematico per lavorare con esso.
χA(x) : fuzzy
χA(x) : hard
0 cm
160 cm
180 cm
230 cm
Classificazione “hard”: nuova formulazione
matematica
• Nel caso “hard” abbiamo definito il problema della
classificazione in termini di “labeling”. Riformuliamolo in
modo da generalizzarlo al caso fuzzy.
• Una classificazione “hard” è una partizione
dell’universo Ω in k sottoinsiemi A1, A2, …, Ak a due a
due disgiunti tali che la loro unione restituisce tutto Ω.
• Usando il linguaggio delle funzioni caratteristiche possiamo
dire che classificare equivale a definire k funzioni
caratteristiche χ1(x), χ2(x), …, χk(x), su Ω soggette al
vincolo che per ciascun elemento x di Ω una ed una sola di
tali funzioni assume il valore 1.
• Un altro modo per esprimere tale vincolo è che per ogni x
in Ω deve risultare:
∑j=1…k χj(x) = 1
Classificazione “fuzzy”: definizione
Una classificazione “fuzzy” è un insieme di
k funzioni caratteristiche fuzzy χ1(x),
χ2(x), …, χk(x), su Ω soggette al vincolo
che per ogni x in Ω deve risultare:
∑j=1…k χj(x) = 1
In pratica un elemento x si distribuisce tra molti sottoinsiemi,
“appartenendo” a ciascuno di essi in grado differente.
Questo formalismo consente una maggiore flessibilità e imita meglio il
ragionamento umano soprattutto quando esso viene condotto
relativamente a concetti vaghi e non definiti in maniera rigida.
(ESISTONO ANCHE ALTRE FORMULAZIONI NON EQUIVALENTI MA
UTILI PER TALUNE APPLICAZIONI)
Partizione “hard” e “fuzzy”
Dividiamo le stature in due classi “alti” e “bassi”.
Nella classificazione “hard” dobbiamo definire due funzioni caratteristiche “complementari”
(in ogni punto la somma deve essere 1)
Appartenenza ai “bassi”
Appartenenza agli “alti”
0 cm
180 cm
230 cm
Dividiamo le stature in due classi fuzzy “alti” e “bassi”.
Nella classificazione “fuzzy” dobbiamo definire due funzioni caratteristiche “complementari”
(in ogni punto la somma deve essere 1)
Appartenenza ai “bassi”
Appartenenza agli “alti”
0 cm
180 cm
230 cm
Come classificare in maniera fuzzy?
• Si può generalizzare al caso fuzzy l’approccio
“hard” che sta alla base dell’algoritmo c-means.
IDEA (non nuova in questo corso!): introdurre una funzione “costo” di una
partizione fuzzy.
Ciascuna classe può essere “rappresentata” dal valore medio delle features
degli oggetti che ne fanno parte (le means). Le medie però dovranno essere
calcolate tenendo conto del “grado” di appartenenza di ciascun elemento
della classe alla classe stessa.
Per ciascuna classe ciascun elemento paga una tassa proporzionale alla
distanza dal centro della classe e proporzionale al grado con cui appartiene
a tale classe.
Il costo complessivo di una partizione fuzzy è dato dall’insieme di tutte le tasse
pagate dai record.
• Una buona partizione fuzzy è una partizione che
minimizza il costo complessivo.
• Anche in questo caso tale ottimizzazione viene
realizzata mediante un algoritmo iterativo.
Fuzzy c-mean algorithm
• Passo 0: (inizializzazione) si assegnano casualmente (o
in base ad una eusristica) dei gradi di appartenenza a
ciascuna classe per ciascun elemento.
• Passo 1: Si calcolano i centroidi delle classi mediante le
medie pesate di tutti gli elementi dell’universo da
classificare.
• Passo 2: Si “aggiornano” le appartenenze di ciascun
elemento a ciascuna classe tenendo conto della
distanza dai centroidi calcolati al passo precedente.
• Passo 3: Si ricalcolano i centroidi. Se essi non si sono
spostati dal passo precedente (o si sono spostati solo di
una quantità minore ad una soglia fissata) terminare.
Altrimenti andare al passo 2.
Dettagli nelle slide seguenti
La matrice delle appartenenze fuzzy
Se gli elementi da classificare sono N e le classi in
cui classificarli sono k la partizione fuzzy sarà
rappresentata da una matrice di k righe e N
colonne U.
Il numero reale ui,j di posto (i,j) in tale matrice è il
grado con cui l’elemento j-esimo appartiene alla
classe i-esima.
Si ha inoltre il vincolo che la somma degli elementi
in ciascuna colonna deve essere pari ad 1.
L’algoritmo di ottimizzazione, in pratica fa evolvere
ad ogni fase la matrice U.
I centroidi fuzzy
Se gli elementi da classificare sono record con m
campi numerici ciascuno il centroide della classe
h-esima si otterrà calcolando la media pesata
per ciascuna delle h componenti usando come
pesi i valori della riga h-esima della matrice U.
Xmedio_h = (Xmedio_h,1 … Xmedio_h,m)
con
Xmedio_h,g = ∑j in Ω uhjxjg
La matrice delle distanze D
La matrice U viene aggiornata tenendo conto della
“distanza” di ciascun elemento da ciascun
centroide.
Tale informazione può a sua volta essere
conservata in una matrice D di k righe e N
colonne. L’elemento dij di posto (i,j) indica la
distanza dell’elemento j-esimo dal centroide iesimo.
Anche nel caso fuzzy i risultati finali dipendono dal
tipo di metrica adottata per valutare queste
distanze.
Aggiornamento della matrice U:
la matematica
• L’aggiornamento della matrice U è il vero passo
critico dell’algoritmo. Omettiamo i dettagli della
derivazione matematica della legge con cui
svolgere tale aggiornamento.
• Tale derivazione si svolge essenzialmente
scrivendo il funzionale del costo e calcolando
mediante il calcolo differenziale in quale
“direzione” devono variare i parametri del nostro
problema per fare decrescere tale funzionale.
Aggiornamento della matrice U:
la formula
Data la matrice U e la matrice D alla fase t-esima la matrice U
nella fase (t+1)-esima si ottiene aggiornando ciascun elemento della matrice
come segue:
1
uij=
(dij2/d1j2)(2/(m-1))+ … + (dij2/dkj2)(2/(m-1))
Il parametro m deve essere maggiore di 1 e si chiama parametro di
fuzzificazione. Maggiore è il suo valore più “sfumata” sarà la partizione fuzzy
alla quale si perverrà al termine dell’algoritmo. La scelta più comune è m=2.
De-fuzzificazione
Sebbene il ragionamento “sfumato” sia utile nella fase di costruzione di una
classificazione in alcune applicazioni esso non è utile.
Se un botanico deve classificare i suoi iris alla fine dovrà comunque scegliere
la classe nella quale inserire i prorpi campioni.
Si deve in questi casi “estrarre” una classificazione “Hard” da una fuzzy. Si
parla di de-fuzzificazione.
Esistono diverse metodologie con la quale tale “assegnamento hard” può
essere fatto.
Un metodo semplice è assegnare ciascun elemento alla classe per la quale
ha il massimo grado di appartenenza.
Un metodo appena più sofisticato è assegnare ciascun elemento alla classe
per la quale ha il massimo grado di appartenenza purchè tale grado sia
superiore ad un certo valore limite e lasciarlo non classificato altrimenti.
Si tenga presente che, in ogni caso, la de-fuzzificazione è un passo opzionale
non legato all’algoritmo di fuzzy c-means.
Esperimento sugli iris di Fisher
Inizializzo:
ogni fiore con grado
di appartenenza
superiore a .33 è
marcato con la tag
corrispondente alla
classe presa in
considerazione
Secondo passo:
la terza classe
comincia ad
emergere
Primo passo:
le prime due
classi cominciano
ad emergere e a
delinearsi
Terzo passo:
la terza classe
occupa il posto
che manterrà fino
alla finale
convergenza
Dopo altri 15 passi…
Iris su cui la
classificazione
rimane incerta
Il perdurare
dell’incertezza
potrebbe
essere usato
come criterio di
rejection per
migliorare la
qualità del
classificatore.
Applichiamo il fuzzy-C-mean ad
una immagine RGB
• Le features sono i tre canali di colore.
• Assegneremo 3 classi in maniera fuzzy.
• Per la visualizzazione coloriamo di rosso,
blu o verde ciascun pixel a seconda della
classe per la quale il pixel ha “grado di
appartenenza” massimo. Se però nessuna
delle classi supera grado di apparteneza
0.5 il pixel resta nero.
Risultati
originale
Animazione dei cluster (un
frame ogni due passi)
Commenti
• Al passo iniziale le classi sono casuali.
• Ri-assegnando con le regole fuzzy le
appartenenze si “omegeinizzano” (frame
nero).
• Successivamente le classi “emergono”
dalla immagine di partenza.
• Restano ampie zone “non classificate”
Ripetiamo l’esperimento ma
usando le PCA dell’immagine
Non tratteremo della “induzione
fuzzy”
• Il potere dell’approccio fuzzy è più
evidente nel momeno in cui si vuole
formalizzare (ed automatizzare) il
ragionamento approssimato.
• Questi temi non possono essere coperti in
questa sede (vedi corso di Intelligenza
Artificiale)
Clustering per “prototipo”
• Sia nel caso “classico” che nel caso “fuzzy” il
clustering è un approccio “filosofico” preciso alla
classificazione.
• Si tratta di raffinare via via, in una interazione tra
le due fasi classi e prototipi.
• Si tratta di una classificazione “positiva”: un
elemento viene assegnato ad una classe se
“somiglia” al prototipo di tale classe.
• Dipende dalla “metrica di similarità” adottata.
Alternativa alla similarità… la
dissimilarità
• Se un prototipo non può essere definito con precisione
un approccio spesso utile è quello di classificare una
popolazione graduando la sua “dissimilarità” rispetto a
certi esempi.
• Per esempio si scelgono alcuni pixel che caratterizzano
in una immagine landsat un bosco. Un approccio alla
classificazione è decidere in che grado tutti gli altri pixel
sono “non-bosco”.
• Quando la definizione in termini positivi delle classi che
si intende creare è difficoltosa questo approccio è più
sensato di quanto sembri a prima vista…
Prossimamente
• Clustering gerarchico
• Miscuglio di Gaussiane
Scarica

lezione 12