SlideShare a Scribd company logo
1 of 12
Download to read offline
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 no
in base ai dati forniti dal satellite Quickbird. QuickBird è il satellite secondo migliore al mondo ad
alta risoluzione. Lanciato in orbita dalla DigitalGlobe il 18 ottobre 2001 dalla base Vandenberg Air
Force CA, fino al 2007 ha offerto alle industrie leader del settore un risoluzione delle immagini
multispettrale 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 mean
texture (Pan
band)
Mean green value Mean red value Mean NIR value Standard
deviation
(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 numeri
reali positivi. Seguendo l'approccio sugli attributi a valori continui di Tom Mitchell (Machine
Learning capitolo 3 par. 3.7.2), definiamo per ciascun attributo A un nuovo attributo booleano Ac
che assumerà il valore true se Ac < c, false altrimenti. Con c indichiamo un valore di soglia da
determinare. 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 che
assume l'attributo sul taining sample con target value 1 e V0(A) è il valore che assume
l'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 suo
equivalente booleano in base alle soglie individuate.
Spazio delle ipotesi
Con la rappresentazione dei dati definita, lo spazio delle ipotesi può essere rappresentato attraverso
congiunzioni 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 della
soglia, quello del terzo al di sopra della soglia e l'ultimo al di sotto della soglia ,soddisferanno
l'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 ciascun
attributo 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 per
l'implementazione è il classico single point. In questa versione dell'algoritmo la riproduzione da
vita ad un singolo figlio e la popolazione viene mantenuta costante. L'implementazione fornita in
questo progetto varia questo aspetto producendo due figli. Mantenendo fissa la politica di cross
over, sono state realizzate, all'interno del codice, altre due varianti di algoritmi genetici. La prima
modifica l'algoritmo di Russell Norvig sostituendo alla funzione RANDOM-SELECTION una
funzione RANK-SELECTION che seleziona di volta in volta, per la riproduzione, le due ipotesi con
il miglior valore di fitness. La seconda variante implementa invece l'algoritmo di GABIL ( Machine
Learning par. 9.2 capitolo 9). In questa implementazione un'ipotesi viene selezionata con una
probabilità pari a :
P(Hi) = FitnessFN(Hi) / ∑ FitnessFN ( H j)
Dove FitnessFN(Hi) indica il valore di fitness dell'ipotesi Hi . La funzione di fitness è definita
come la percentuale di dati di training classificati correttamente da un'ipotesi(individuo della
popolazione). 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 W
e 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 il
template 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 di
classificazione booleano con valori booleani sugli attributi. La struttura per rappresentare la stringa
di bit del cromosoma dell'ipotesi, è rappresentata da un oggetto della classe BitSet adatta a
rappresentare sequenze di bit. La classe mantiene inoltre come variabili di istanza il suo fitness
value e la lunghezza della stringa del cromosoma. La classe presenta il metodo astratto
satisfy(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'algoritmo
genetico visto precedentemente. Mantiene come variabili di istanza la popolazione corrente, la sua
dimensione, la percentuale di soglia da raggiungere sulla classificazione dei corretta dei dati , che
fa quindi terminare l'algoritmo, ed infine la probabilità di mutazione di un child dopo la
riproduzione 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 del
singolo bit di un'ipotesi, il calcolo del valore di fitness di un'ipotesi. WiltGA si occupa di estendere
GA implementando questi metodi. WiltGAHypothesis estende GAHypothesis implementando il
metodo 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. I
risultati ottenuti evidenziano una mancanza di stabilità nel fornire la soluzione migliore da parte
dell'algoritmo con selezione random. Questo risultato dipende probabilmente dal fatto che non
vengono propagate in avanti le soluzioni più promettenti, affidando di volta in volta ad una
selezione casuale la costruzione della generazione successiva. Con la modalità rank e roulette wheel
selection si ottengono risultati migliori, queste implementazioni tendono stabilmente a fornire la
migliore soluzione che si attesta intorno al 83% e 79% circa di accuratezza nella
classificazione,rispettivamente, di dati di training e di test.
Genetic Algorithm random selection
Test A
75.0% testing accuracy
81.34216% training accuracy
GA string:0001001010
Mutazione con probabilità del 5%
Genetic Algorithm random selection
Test B
55.0% testing accuracy
78.52397% training accuracy
GA string:1001110101
Mutazione con probabilità del 5%
Genetic Algorithm rank selection
Test A
78.4% testing accuracy
82.56456% training accuracy
GA string:1001001111
Mutazione con probabilità del 5%
Genetic Algorithm rank selection
78.4% testing accuracy
82.56456% training accuracy
GA string:1001001011
Mutazione con probabilità del 5%
Genetic Algorithm roulette wheel selection
Test A
78.4% testing accuracy
82.56456% training accuracy
GA string:1101001111
Elementi della popolazione che sopravvivono 20/100
Mutation rate del 5%
Genetic Algorithm roulette wheel selection
Test B
78.4% testing accuracy
82.56456% training accuracy
GA string:1101001111
Elementi della popolazione che sopravvivono 30/100
Mutation rate del 10%

More Related Content

Viewers also liked

SOPA - BreakingNews HongKong
SOPA - BreakingNews HongKongSOPA - BreakingNews HongKong
SOPA - BreakingNews HongKongJames Pomfret
 
Ik ben aanwezig admin 3.0
Ik ben aanwezig   admin 3.0Ik ben aanwezig   admin 3.0
Ik ben aanwezig admin 3.0Tim Engelaar
 
Los más famosos
Los más famososLos más famosos
Los más famososMAjoE77
 
Nandor_english_CV_2015
Nandor_english_CV_2015Nandor_english_CV_2015
Nandor_english_CV_2015N Urbanovics
 
Yo c 2015 voter registration
Yo c 2015 voter registrationYo c 2015 voter registration
Yo c 2015 voter registrationmeljeffs
 
Create a Company
Create a CompanyCreate a Company
Create a Companyreyquintt
 
عرض أهم الأعمال
عرض أهم الأعمالعرض أهم الأعمال
عرض أهم الأعمالAbeer Salem
 
Organizational environment and developing countries
Organizational environment and developing countriesOrganizational environment and developing countries
Organizational environment and developing countriesRobius Bagoka
 

Viewers also liked (16)

SOPA - BreakingNews HongKong
SOPA - BreakingNews HongKongSOPA - BreakingNews HongKong
SOPA - BreakingNews HongKong
 
Ik ben aanwezig admin 3.0
Ik ben aanwezig   admin 3.0Ik ben aanwezig   admin 3.0
Ik ben aanwezig admin 3.0
 
CV - Paulus Poniman
CV - Paulus PonimanCV - Paulus Poniman
CV - Paulus Poniman
 
Doc2qqq
Doc2qqqDoc2qqq
Doc2qqq
 
Los más famosos
Los más famososLos más famosos
Los más famosos
 
Pomfretfeatures2009
Pomfretfeatures2009Pomfretfeatures2009
Pomfretfeatures2009
 
Nandor_english_CV_2015
Nandor_english_CV_2015Nandor_english_CV_2015
Nandor_english_CV_2015
 
pcuse-cltrx
pcuse-cltrxpcuse-cltrx
pcuse-cltrx
 
Yo c 2015 voter registration
Yo c 2015 voter registrationYo c 2015 voter registration
Yo c 2015 voter registration
 
Pieter CV
Pieter CVPieter CV
Pieter CV
 
Resume
ResumeResume
Resume
 
Create a Company
Create a CompanyCreate a Company
Create a Company
 
CONCEPTOS BÁSICOS
CONCEPTOS BÁSICOSCONCEPTOS BÁSICOS
CONCEPTOS BÁSICOS
 
Travail Groupe
Travail GroupeTravail Groupe
Travail Groupe
 
عرض أهم الأعمال
عرض أهم الأعمالعرض أهم الأعمال
عرض أهم الأعمال
 
Organizational environment and developing countries
Organizational environment and developing countriesOrganizational environment and developing countries
Organizational environment and developing countries
 

Similar to Classification and genetic algorithms

Umano vs Computer: un esempio pratico
Umano vs Computer: un esempio praticoUmano vs Computer: un esempio pratico
Umano vs Computer: un esempio praticoFrancesco Sblendorio
 
Extended Summary of "Genetic Programming Approaches To Learning Fair Classifi...
Extended Summary of "Genetic Programming Approaches To Learning Fair Classifi...Extended Summary of "Genetic Programming Approaches To Learning Fair Classifi...
Extended Summary of "Genetic Programming Approaches To Learning Fair Classifi...alicesantoro4
 
COUGAR: Clustering Of Unknown malware using Genetic Algorithm Routines
COUGAR: Clustering Of Unknown malware using Genetic Algorithm RoutinesCOUGAR: Clustering Of Unknown malware using Genetic Algorithm Routines
COUGAR: Clustering Of Unknown malware using Genetic Algorithm RoutinesDavidePanarella
 
Mobile price classification
Mobile price classificationMobile price classification
Mobile price classificationMircoBarbero
 

Similar to Classification and genetic algorithms (6)

Umano vs Computer: un esempio pratico
Umano vs Computer: un esempio praticoUmano vs Computer: un esempio pratico
Umano vs Computer: un esempio pratico
 
Extended Summary of "Genetic Programming Approaches To Learning Fair Classifi...
Extended Summary of "Genetic Programming Approaches To Learning Fair Classifi...Extended Summary of "Genetic Programming Approaches To Learning Fair Classifi...
Extended Summary of "Genetic Programming Approaches To Learning Fair Classifi...
 
Il modello Logistico
Il modello LogisticoIl modello Logistico
Il modello Logistico
 
COUGAR: Clustering Of Unknown malware using Genetic Algorithm Routines
COUGAR: Clustering Of Unknown malware using Genetic Algorithm RoutinesCOUGAR: Clustering Of Unknown malware using Genetic Algorithm Routines
COUGAR: Clustering Of Unknown malware using Genetic Algorithm Routines
 
Java lezione 7
Java lezione 7Java lezione 7
Java lezione 7
 
Mobile price classification
Mobile price classificationMobile price classification
Mobile price classification
 

Recently uploaded

Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA GiorgioGiornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA GiorgioServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO AndreaGiornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO AndreaServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO AntonioGiornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO AntonioServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO SimoneGiornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO SimoneServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI DanieleGiornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI DanieleServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' DavideGiornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' DavideServizi a rete
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI GiovanniGiornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI GiovanniServizi a rete
 

Recently uploaded (7)

Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA GiorgioGiornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | SERRA Giorgio
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO AndreaGiornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO AntonioGiornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DISCIPIO Antonio
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO SimoneGiornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | DI DOMENICO Simone
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI DanieleGiornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | RENZI Daniele
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' DavideGiornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ROMANO' Davide
 
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI GiovanniGiornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
Giornata Tecnica da Piave Servizi, 11 aprile 2024 | CADEI Giovanni
 

Classification and genetic algorithms

  • 1. 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 no in base ai dati forniti dal satellite Quickbird. QuickBird è il satellite secondo migliore al mondo ad alta risoluzione. Lanciato in orbita dalla DigitalGlobe il 18 ottobre 2001 dalla base Vandenberg Air Force CA, fino al 2007 ha offerto alle industrie leader del settore un risoluzione delle immagini multispettrale 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 mean texture (Pan band) Mean green value Mean red value Mean NIR value Standard deviation (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
  • 2. Rappresentazione dei dati Gli attributi che definiscono i dati sono a valori continui, e più precisamente, in questo caso numeri reali positivi. Seguendo l'approccio sugli attributi a valori continui di Tom Mitchell (Machine Learning capitolo 3 par. 3.7.2), definiamo per ciascun attributo A un nuovo attributo booleano Ac che assumerà il valore true se Ac < c, false altrimenti. Con c indichiamo un valore di soglia da determinare. 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 che assume l'attributo sul taining sample con target value 1 e V0(A) è il valore che assume l'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 suo equivalente booleano in base alle soglie individuate.
  • 3. Spazio delle ipotesi Con la rappresentazione dei dati definita, lo spazio delle ipotesi può essere rappresentato attraverso congiunzioni 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 della soglia, quello del terzo al di sopra della soglia e l'ultimo al di sotto della soglia ,soddisferanno l'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 ciascun attributo 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.
  • 4. 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 per l'implementazione è il classico single point. In questa versione dell'algoritmo la riproduzione da vita ad un singolo figlio e la popolazione viene mantenuta costante. L'implementazione fornita in questo progetto varia questo aspetto producendo due figli. Mantenendo fissa la politica di cross over, sono state realizzate, all'interno del codice, altre due varianti di algoritmi genetici. La prima modifica l'algoritmo di Russell Norvig sostituendo alla funzione RANDOM-SELECTION una funzione RANK-SELECTION che seleziona di volta in volta, per la riproduzione, le due ipotesi con il miglior valore di fitness. La seconda variante implementa invece l'algoritmo di GABIL ( Machine Learning par. 9.2 capitolo 9). In questa implementazione un'ipotesi viene selezionata con una probabilità pari a : P(Hi) = FitnessFN(Hi) / ∑ FitnessFN ( H j) Dove FitnessFN(Hi) indica il valore di fitness dell'ipotesi Hi . La funzione di fitness è definita come la percentuale di dati di training classificati correttamente da un'ipotesi(individuo della popolazione). Nel nostro caso la definiamo come: F(h) = ( correctW(x) + correctN(x) ) / 2
  • 5. dove correctW(x) restituisce la percentuale di dati di training classificati correttamente come tipo W e 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 il template 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 di classificazione booleano con valori booleani sugli attributi. La struttura per rappresentare la stringa di bit del cromosoma dell'ipotesi, è rappresentata da un oggetto della classe BitSet adatta a rappresentare sequenze di bit. La classe mantiene inoltre come variabili di istanza il suo fitness value e la lunghezza della stringa del cromosoma. La classe presenta il metodo astratto satisfy(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'algoritmo genetico visto precedentemente. Mantiene come variabili di istanza la popolazione corrente, la sua dimensione, la percentuale di soglia da raggiungere sulla classificazione dei corretta dei dati , che fa quindi terminare l'algoritmo, ed infine la probabilità di mutazione di un child dopo la riproduzione 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 del singolo bit di un'ipotesi, il calcolo del valore di fitness di un'ipotesi. WiltGA si occupa di estendere GA implementando questi metodi. WiltGAHypothesis estende GAHypothesis implementando il metodo satisfy() ed aggiungendo i metodi classify() e getWiltRepresentation() per,rispettivamente, classificare un dato ed ottenere una stampa informativa dell'ipotesi nel seguente formato:
  • 6. 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. I risultati ottenuti evidenziano una mancanza di stabilità nel fornire la soluzione migliore da parte dell'algoritmo con selezione random. Questo risultato dipende probabilmente dal fatto che non vengono propagate in avanti le soluzioni più promettenti, affidando di volta in volta ad una selezione casuale la costruzione della generazione successiva. Con la modalità rank e roulette wheel selection si ottengono risultati migliori, queste implementazioni tendono stabilmente a fornire la migliore soluzione che si attesta intorno al 83% e 79% circa di accuratezza nella classificazione,rispettivamente, di dati di training e di test.
  • 7. Genetic Algorithm random selection Test A 75.0% testing accuracy 81.34216% training accuracy GA string:0001001010 Mutazione con probabilità del 5%
  • 8. Genetic Algorithm random selection Test B 55.0% testing accuracy 78.52397% training accuracy GA string:1001110101 Mutazione con probabilità del 5%
  • 9. Genetic Algorithm rank selection Test A 78.4% testing accuracy 82.56456% training accuracy GA string:1001001111 Mutazione con probabilità del 5%
  • 10. Genetic Algorithm rank selection 78.4% testing accuracy 82.56456% training accuracy GA string:1001001011 Mutazione con probabilità del 5%
  • 11. Genetic Algorithm roulette wheel selection Test A 78.4% testing accuracy 82.56456% training accuracy GA string:1101001111 Elementi della popolazione che sopravvivono 20/100 Mutation rate del 5%
  • 12. Genetic Algorithm roulette wheel selection Test B 78.4% testing accuracy 82.56456% training accuracy GA string:1101001111 Elementi della popolazione che sopravvivono 30/100 Mutation rate del 10%