Upload
alessandro-zoia
View
102
Download
2
Embed Size (px)
Citation preview
Wilt Data Classification
Algoritmi Genetici per problemi di classificazione
Autore: Zoia Alessandro
Introduzione
Il concetto da apprendere è rappresentato dalla classificazione di un albero come malato oppure noin base ai dati forniti dal satellite Quickbird. QuickBird è il satellite secondo migliore al mondo adalta risoluzione. Lanciato in orbita dalla DigitalGlobe il 18 ottobre 2001 dalla base Vandenberg AirForce CA, fino al 2007 ha offerto alle industrie leader del settore un risoluzione delle immaginimultispettrale pancromatica e a 4 bande (i.e. blue, green, red and near-infrared) .
I dati che costituiscono l'insieme di training e di testing, sono caratterizzati dai seguenti attributi :
GLCM_Pan Mean_G Mean_R Mean_NIR SD_Pan
GLCM meantexture (Panband)
Mean green value Mean red value Mean NIR value Standarddeviation(Pan band)
Tabella attributi
Mentre l'attributo di classificazione è indicato con class è può assumere il valore w se l'albero
è classificato malato oppure n se non lo è.
Immagine dal sito https://apollomapping.com
Rappresentazione dei dati
Gli attributi che definiscono i dati sono a valori continui, e più precisamente, in questo caso numerireali positivi. Seguendo l'approccio sugli attributi a valori continui di Tom Mitchell (MachineLearning capitolo 3 par. 3.7.2), definiamo per ciascun attributo A un nuovo attributo booleano Acche assumerà il valore true se Ac < c, false altrimenti. Con c indichiamo un valore di soglia dadeterminare. Procedendo in questo modo definiamo per ogni attributo il suo equivalente booleano
GLCM_Pan_b Mean_G_b Mean_R_b Mean_NIR_b SD_Pan_b
true/false true/false true/false true/false true/false
Per ciascun attributo i valori di soglia vengono determinati attraverso le seguenti fasi:
• I dati di training vengono ordinati in modo crescente sull'attributo considerato.• Si individuano i punti adiacenti in corrispondenza dei quali il target value cambia di valore
da una classe all'altra ( w → n oppure n → w).• Se indichiamo con w=1 e n=0 i due possibili valori booleani che il target value può
assumere, il valore di soglia si calcola come ( V1(A)+V0(A) ) / 2. Dove V1(A) è il valore cheassume l'attributo sul taining sample con target value 1 e V0(A) è il valore che assumel'attributo sul training sample con target value 0.
• Dall'insieme dei valori cosi ottenuti , vogliamo selezionare quello che massimizza l'information gain. Calcoliamo quindi per ciascun valore di soglia T il suo gain:
gain(S,T) = ( Entropy(S) - [ (|T+| / |S| ) * Entropy(T+) + (|T-|/ |S| ) * Entropy(T-) ] )
Dove S è l'insieme dei dati di training,T+ il sottoinsieme di S rappresentato dagli elementi che assumono un valore al di sotto della soglia T sull'attributo considerato, mentre T- rappresenta il sottoinsieme di S degli elementi al di sopra della soglia T, sempre sull'attributo considerato.
• Selezioniamo per l'attributo la soglia T che massimizza il gain. Tutti i valori dell'attributo al di sotto di questa soglia avranno ,nel nuovo attributo discreto associato, valore true, false altrimenti.
Si costruisce cosi un nuovo insieme di dati di training dove ciascun attributo è sostituito dal suoequivalente booleano in base alle soglie individuate.
Spazio delle ipotesi
Con la rappresentazione dei dati definita, lo spazio delle ipotesi può essere rappresentato attraversocongiunzioni di vincoli sugli attributi del seguente tipo:
1) Valore true , il vincolo impone all''attributo che il suo valore sia al di sotto della sua soglia
2) Valore false, il vincolo impone all'attributo che il suo valore sia al di sopra della sua soglia
3) Valore indifferente true o false, nessuna imposizione sul valore dell'attributo. Indichiamo questo caso con il simbolo *.
Un esempio di ipotesi è la seguente:
H = < * , true, false, *, true>
1° 2° 3° 4° 5°
In questo caso tutti i dati di training per i quali il valore del secondo attributo è al di sotto dellasoglia, quello del terzo al di sopra della soglia e l'ultimo al di sotto della soglia ,soddisferannol'ipotesi e saranno classificati dalla stessa come positivi (albero malato).
Per la rappresentazione dell'ipotesi come stringa di bit , si è scelto di utilizzare 2 bit per ciascunattributo codificando nel seguente modo i valori true,false,indifferente :
a) Coppia di bit 01 true
b) Coppia di bit 00 false
c) Coppia di bit 11 indifferente
d) Coppia di bit 10 indifferente
Con questa rappresentazione l'ipotesi H = < * , true, false, *, true> si codifica con uno dei seguenti cromosomi:
1) 11 01 00 11 01
2) 11 01 00 10 01
3) 10 01 00 11 01
4) 10 01 00 10 01
Nell'algoritmo la popolazione sarà costituita da sequenze binarie di questo tipo.
Genetic Algorithm
Decidiamo di affrontare il problema di classificazione partendo dall'algoritmo genetico cosi come presentato da Russell/Norvig ( Artificial Intelligence a Modern approach, capitolo 4 par 4.1.4). In questa versione l'algoritmo è descritto dalla seguente funzione scritta in pseudo codice:
function GENETIC-ALGORITHM ( population , FITNESS-FN ) return an individual
inputs: population, a set of individuals
FITNESS-FN, a function that measures the fitness of an individual
repeat
new_population ← empty set
for i:=1 to SIZE(population) do
x ← RANDOM-SELECTION(population,FITNESS-FN)
y ← RANDOM-SELECTION(population,FITNESS-FN)
child ← REPRODUCE(x,y)
if( small random probability ) then child ← MUTATE(child)
add child to new_population
population ← new_population
until some individual is fit enough, o enough time has elapsed
return the best individual in population, according to FITNESS-FN
La selezione degli individui avviene in modo random, mentre il tipo di cross over scelto perl'implementazione è il classico single point. In questa versione dell'algoritmo la riproduzione davita ad un singolo figlio e la popolazione viene mantenuta costante. L'implementazione fornita inquesto progetto varia questo aspetto producendo due figli. Mantenendo fissa la politica di crossover, sono state realizzate, all'interno del codice, altre due varianti di algoritmi genetici. La primamodifica l'algoritmo di Russell Norvig sostituendo alla funzione RANDOM-SELECTION unafunzione RANK-SELECTION che seleziona di volta in volta, per la riproduzione, le due ipotesi conil miglior valore di fitness. La seconda variante implementa invece l'algoritmo di GABIL ( MachineLearning par. 9.2 capitolo 9). In questa implementazione un'ipotesi viene selezionata con unaprobabilità pari a :
P(Hi) = FitnessFN(Hi) / ∑ FitnessFN ( H j)
Dove FitnessFN(Hi) indica il valore di fitness dell'ipotesi Hi . La funzione di fitness è definitacome la percentuale di dati di training classificati correttamente da un'ipotesi(individuo dellapopolazione). Nel nostro caso la definiamo come:
F(h) = ( correctW(x) + correctN(x) ) / 2
dove correctW(x) restituisce la percentuale di dati di training classificati correttamente come tipo We correctN(x) la percentuale di dati di training classificati correttamente di tipo N.
Genetic Algorithm, implementazione in Java
Partendo dalla soluzione descritta da Russel/Norvig, definiamo un insieme di classi che realizzano iltemplate generale dell'algoritmo e che lo specializzano al caso dei dati Wilt:
Classe astratta GA Template dell'algoritmo
Classe astratta GAHypothesis Modella un'ipotesi come stringa di bit
Classe WiltGA Specializza GA al caso Wilt
Classe WiltGAHypothesis Specializza GAHypothesis al caso Wilt
Classi TrainingSet e TestingSet Classi per il caricamento dei dati
Classe Main Classe principale per il lancio del programma
Classe Plotter Classe per il plotting dei dati
La classe GAHypothesis modella la struttura generale di un ipotesi per un problema diclassificazione booleano con valori booleani sugli attributi. La struttura per rappresentare la stringadi bit del cromosoma dell'ipotesi, è rappresentata da un oggetto della classe BitSet adatta arappresentare sequenze di bit. La classe mantiene inoltre come variabili di istanza il suo fitnessvalue e la lunghezza della stringa del cromosoma. La classe presenta il metodo astrattosatisfy(boolean[] values) che lascia alla sottoclasse il compito di specializzare il come un'ipotesi èsoddisfatta dai dati in input.
GA è la classe che, attraverso il pattern Template, realizza la struttura generica dell'algoritmogenetico visto precedentemente. Mantiene come variabili di istanza la popolazione corrente, la suadimensione, la percentuale di soglia da raggiungere sulla classificazione dei corretta dei dati , chefa quindi terminare l'algoritmo, ed infine la probabilità di mutazione di un child dopo lariproduzione da due ipotesi genitore. Richiede l'implementazione dei seguenti metodi astratti:
protected abstract void generatePopulation();
protected abstract GAHypothesis reproduce(GAHypothesis h1,GAHypothesis h2);
protected abstract void mutate(GAHypothesis h);
protected abstract void computeFitnessValue(GAHypothesis h);
Per la generazione della popolazione iniziale, la riproduzione di due ipotesi, la mutazione delsingolo bit di un'ipotesi, il calcolo del valore di fitness di un'ipotesi. WiltGA si occupa di estendereGA implementando questi metodi. WiltGAHypothesis estende GAHypothesis implementando ilmetodo satisfy() ed aggiungendo i metodi classify() e getWiltRepresentation() per,rispettivamente,classificare un dato ed ottenere una stampa informativa dell'ipotesi nel seguente formato:
Wilt Hypothesis : [ <value> GLCM_pan Threshold=126.83133 ]
[ <value> Mean_Green Threshold=233.90659 ]
[ <value> Mean_Red Threshold=117.292435 ]
[ <value> Mean_NIR Threshold=534.1047 ]
[ <value> SD_pan Threshold=24.924597 ]
dove si indicano i nomi degli attributi, il valore di soglia di un attributo e il parametro <value> che può essere una delle seguenti stringhe: Up, Down, *. Con Up diciamo che l'ipotesi impone il vincolo maggiore del valore di soglia, con Down minore del valore di soglia, con * indifferente.
Come il nome suggerisce le classi TrainingSet e TestingSet permettono di caricare i dati presenti nei file training.csv e testing.csv, fornendo metodi di accesso ai dati caricati.La classe Main lancia permette di lanciare l'algoritmo per mostrare i risultati ottenuti.
Test e analisi dell'algoritmo
Le pagine che seguono illustrano diversi lanci dell'algoritmo nelle diverse implementazioni. Irisultati ottenuti evidenziano una mancanza di stabilità nel fornire la soluzione migliore da partedell'algoritmo con selezione random. Questo risultato dipende probabilmente dal fatto che nonvengono propagate in avanti le soluzioni più promettenti, affidando di volta in volta ad unaselezione casuale la costruzione della generazione successiva. Con la modalità rank e roulette wheelselection si ottengono risultati migliori, queste implementazioni tendono stabilmente a fornire lamigliore soluzione che si attesta intorno al 83% e 79% circa di accuratezza nellaclassificazione,rispettivamente, di dati di training e di test.
Genetic Algorithm random selection
Test A75.0% testing accuracy81.34216% training accuracyGA string:0001001010
Mutazione con probabilità del 5%
Genetic Algorithm random selection
Test B55.0% testing accuracy78.52397% training accuracyGA string:1001110101
Mutazione con probabilità del 5%
Genetic Algorithm rank selection
Test A78.4% testing accuracy82.56456% training accuracyGA string:1001001111
Mutazione con probabilità del 5%
Genetic Algorithm rank selection
78.4% testing accuracy82.56456% training accuracyGA string:1001001011
Mutazione con probabilità del 5%
Genetic Algorithm roulette wheel selection
Test A78.4% testing accuracy82.56456% training accuracyGA string:1101001111
Elementi della popolazione che sopravvivono 20/100Mutation rate del 5%
Genetic Algorithm roulette wheel selection
Test B78.4% testing accuracy82.56456% training accuracyGA string:1101001111
Elementi della popolazione che sopravvivono 30/100Mutation rate del 10%