WEKA: Machine Learning Algorithms in java
WEKA: Machine Learning Algorithms in java
WEKA: Machine Learning Algorithms in java
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>WEKA</strong>: <strong>Mach<strong>in</strong>e</strong> <strong>Learn<strong>in</strong>g</strong> <strong>Algorithms</strong> <strong>in</strong> <strong>java</strong><br />
Ilaria Bord<strong>in</strong>o<br />
Ida Mele
Introduzione a Weka<br />
• Collezione di algoritmi di <strong>Mach<strong>in</strong>e</strong> <strong>Learn<strong>in</strong>g</strong> – Package Java<br />
Open Source.<br />
• Acronimo di Waikato Environment for Knowledge Analysis.<br />
• Scritto <strong>in</strong> <strong>java</strong>, utilizzabile su qualunque sistema operativo<br />
dotato di piattaforma <strong>java</strong>.<br />
• Home page di Weka: http://www.cs.waikato.ac.nz/ml/weka/<br />
dove si può scaricare il software e dataset di esempio.<br />
• Manuale:<br />
http://transact.dl.sourceforge.net/sourceforge/weka/WekaManual-3.6.0.pdf<br />
Weka Pag<strong>in</strong>a 2
Introduzione a Weka (2)<br />
• Collezione estensiva di tool per <strong>Mach<strong>in</strong>e</strong> <strong>Learn<strong>in</strong>g</strong> e<br />
Data M<strong>in</strong><strong>in</strong>g.<br />
• Classificazione: implementazione <strong>java</strong> di tutte le<br />
tecniche di <strong>Mach<strong>in</strong>e</strong> <strong>Learn<strong>in</strong>g</strong> correntemente utilizzate.<br />
• Regressione.<br />
• Regole di associazione.<br />
• Algoritmi di cluster<strong>in</strong>g.<br />
Weka Pag<strong>in</strong>a 3
Weka: schemi per la classificazione<br />
• Decision trees<br />
• Rule learners<br />
• Naïve Bayes<br />
• Decision Tables<br />
• Locally weighted regression<br />
• SVM<br />
• Instance-based learners<br />
• Logistic regression<br />
Weka Pag<strong>in</strong>a 4
Weka: Predizione Numerica<br />
• L<strong>in</strong>ear regression<br />
• Model tree generators<br />
• Locally weighted regressione<br />
• Instance-based learners<br />
• Decision Tables<br />
• Multi-layer perceptron<br />
Weka Pag<strong>in</strong>a 5
Weka: Meta Schemi<br />
• Bagg<strong>in</strong>g<br />
• Boost<strong>in</strong>g<br />
• Stack<strong>in</strong>g<br />
• Regression via classification<br />
• Classification via regression<br />
• Cost sensitive classification<br />
Weka: Schemi per cluster<strong>in</strong>g<br />
• EM<br />
• Cobweb<br />
Weka Pag<strong>in</strong>a 6
Installazione<br />
• Assicurarsi che sulla propria macch<strong>in</strong>a sia presente<br />
una <strong>in</strong>stallazione del JRE.<br />
• Scaricare l’archivio di Weka e decomprimerlo.<br />
• Aprire un term<strong>in</strong>ale ed entrare nella directory di<br />
Weka.<br />
• Digitare il comando:<br />
<strong>java</strong> -Xmx512M -jar weka.jar<br />
Weka Pag<strong>in</strong>a 7
Ambienti operativi<br />
• SimpleCLI: Ambiente a l<strong>in</strong>ea di comando da usare<br />
per <strong>in</strong>vocare direttamente le varie classi da cui Weka<br />
è composto.<br />
• Explorer: ambiente da utilizzare per caricare degli<br />
<strong>in</strong>siemi di dati, visualizzare la disposizione degli<br />
attributi, preprocessare i dati ed eseguire algoritmi di<br />
classificazione, cluster<strong>in</strong>g, selezione di attributi e<br />
determ<strong>in</strong>azione di regole associative.<br />
Weka Pag<strong>in</strong>a 8
Ambienti operativi (2)<br />
• Experimenter: è una versione batch dell'Explorer.<br />
Consente di impostare una serie di analisi, su vari<br />
<strong>in</strong>siemi di dati e con vari algoritmi, ed eseguirle alla<br />
f<strong>in</strong>e tutte <strong>in</strong>sieme. È possibile <strong>in</strong> questo modo<br />
confrontare vari tipi di algoritmi, e determ<strong>in</strong>are quale è<br />
il più adatto a uno specifico <strong>in</strong>sieme di dati.<br />
• Knowledge Flow: una variante dell'Explorer, <strong>in</strong> cui le<br />
operazioni da eseguire si esprimono <strong>in</strong> un ambiente<br />
grafico, disegnando un diagramma che esprime il<br />
“flusso della conoscenza”. È possibile selezionare<br />
varie componenti (sorgenti di dati, filtri, algoritmi di<br />
classificazione) e collegarli <strong>in</strong> un diagramma<br />
tipicamente detto “data-flow”.<br />
Weka Pag<strong>in</strong>a 9
Ambienti operativi: Explorer<br />
Weka Pag<strong>in</strong>a 10
Dati<br />
• Weka può prelevare i propri dati usando 3 funzioni:<br />
– Open File: preleva i dati da un file di testo sul<br />
computer locale, <strong>in</strong> formato ARFF, CSV, C45 o<br />
B<strong>in</strong>ary serialized istances. Il formato standard di<br />
Weka è ARFF.<br />
– Open URL: preleva i dati da un file su web, <strong>in</strong> uno<br />
dei formati di cui sopra.<br />
– Open DB: preleva i dati da un server database<br />
supportato dai driver JDBC.<br />
• C'è anche la possibilità di generare dati artificiali:<br />
– Generate: utilizza dei DataGenerators per creare<br />
dati artificiali.<br />
Weka Pag<strong>in</strong>a 11
Preprocessamento dei dati<br />
• Una volta aperto l'<strong>in</strong>sieme di dati di <strong>in</strong>teresse, <strong>in</strong><br />
basso a s<strong>in</strong>istra compare l'elenco degli attributi che<br />
compongono i dati <strong>in</strong> questione. Cliccando su un<br />
attributo, sul lato destro appaiono delle <strong>in</strong>formazioni<br />
statistiche.<br />
• Per attributi nom<strong>in</strong>ali abbiamo l'elenco dei possibili<br />
valori e, per ognuno di essi, il numero di istanze con<br />
quel valore.<br />
• Per attributi numerici, abbiamo <strong>in</strong>vece <strong>in</strong>formazioni<br />
sul valore massimo, m<strong>in</strong>imo, media e deviazione<br />
standard, oltre a numero di valori diversi, numero di<br />
valori unici e numero di istanze col valore mancante.<br />
Weka Pag<strong>in</strong>a 12
Preprocessamento dei dati<br />
• Sotto le <strong>in</strong>formazioni statistiche abbiamo<br />
un istogramma. Con gli attributi nom<strong>in</strong>ali viene<br />
visualizzato, per ogni valore, una barra di altezza<br />
proporzionale al numero di istanze con quel valore.<br />
• Per gli attributi numerici le <strong>in</strong>formazioni sono simili, ma il<br />
sistema decide automaticamente <strong>in</strong> quanti <strong>in</strong>tervalli<br />
divedere il range dell'attributo e qu<strong>in</strong>di quante barre<br />
visualizzare.<br />
• Una volta caricati i dati, è possibile modificarli<br />
applicando un filtro o una procedura di modifica<br />
<strong>in</strong>terattiva. Esempi: modificare tutte le istanze con un<br />
valore fisso per un attributo, cancellare o r<strong>in</strong>om<strong>in</strong>are<br />
attributi…<br />
Weka Pag<strong>in</strong>a 13
Formato ARFF<br />
• ARFF è il formato dati standard di <strong>WEKA</strong>.<br />
• Un file ARFF è composto da una <strong>in</strong>testazione e dal corpo<br />
dati vero e proprio.<br />
• L’<strong>in</strong>testazione contiene il nome del set dei dati e una<br />
<strong>in</strong>testazione degli attributi.<br />
• Per ogni attributo è possibile specificare il tipo: numerico,<br />
categoriale, str<strong>in</strong>ga o data.<br />
• I dati veri e propri sono forniti creando una riga per ogni<br />
istanza, e separando i campi con delle virgole.<br />
• Ovunque è possibile <strong>in</strong>serire dei commenti, facendoli<br />
precedere dal simbolo %.<br />
Weka Pag<strong>in</strong>a 14
Formato ARFF: esempio<br />
@relation weather<br />
% Relazione weather-data<br />
@attribute outlook {sunny, overcast, ra<strong>in</strong>y}<br />
@attribute temperature real<br />
@attribute humidity real<br />
@attribute w<strong>in</strong>dy {TRUE, FALSE}<br />
@attribute play {yes, no}<br />
@data<br />
sunny,85,85,FALSE,no<br />
sunny,80,90,TRUE,no<br />
overcast,83,86,FALSE,yes<br />
Weka Pag<strong>in</strong>a 15
Formato ARFF: esempio (2)<br />
• Nell’esempio fornito osserviamo che:<br />
– la riga @relation weather specifica un nome<br />
per la relazione.<br />
– la riga @attribute outlook {sunny,<br />
overcast, ra<strong>in</strong>y} specifica che l’attributo di<br />
nome outlook è di tipo categoriale e può assumere i<br />
valori sunny, ra<strong>in</strong>y e overcast.<br />
– la riga @attribute temperature real specifica<br />
che l’attributo di nome temperature è di tipo<br />
numerico.<br />
– la riga @data <strong>in</strong>dica l’<strong>in</strong>izio dei dati veri e propri.<br />
Weka Pag<strong>in</strong>a 16
Formato ARFF<br />
• Si può utilizzare il valore ? come dato per <strong>in</strong>dicare un<br />
valore mancante.<br />
• In generale, ogni volta che serve <strong>in</strong>dividuare un<br />
attributo particolare come la “classe” dell’istanza, ad<br />
esempio nei problemi di classificazione o selezione<br />
degli attributi, l’ultimo attributo gioca questo ruolo.<br />
• Si può comunque sempre specificare un diverso<br />
attributo, caso per caso.<br />
Weka Pag<strong>in</strong>a 17
Architettura<br />
• Elenco dei package pr<strong>in</strong>cipali:<br />
– weka.associations<br />
– weka.attributeSelection<br />
– weka.classifiers<br />
– weka.clusterers<br />
– weka.core<br />
– weka.estimators<br />
– weka.experiment<br />
– weka.filters<br />
– weka.gui.package<br />
– weka.gui.experiment<br />
– weka.gui.explorer<br />
Weka Pag<strong>in</strong>a 18
Il package weka.core<br />
• Il package core è il package centrale del sistema<br />
Weka. Contiene classi a cui quasi tutte le altre classi<br />
fanno accesso.<br />
• Classi pr<strong>in</strong>cipali:<br />
– Attribute: un oggetto di questa classe rappresenta<br />
un attributo. Contiene il nome dell’attributo, il suo<br />
tipo e, <strong>in</strong> caso di attributo nom<strong>in</strong>ale, i possibili valori.<br />
– Instance: un oggetto di questa classe contiene i<br />
valori degli attributi di una particolare istanza.<br />
– Instances: un oggetto di questa classe mantiene un<br />
<strong>in</strong>sieme ord<strong>in</strong>ato di istanze, ovvero un dataset.<br />
Weka Pag<strong>in</strong>a 19
Il package weka.classifiers<br />
• Contiene implementazioni degli algoritmi più<br />
comunemente utilizzati per classificazione e predizione<br />
numerica.<br />
• La classe più importante è Classifier, che def<strong>in</strong>isce la<br />
struttura generale di un qualsiasi schema di<br />
classificazione o predizione.<br />
• Contiene due metodi: buildClassifier() e<br />
classifyInstance(), che debbono essere implementati<br />
da tutti gli algoritmi di apprendimento.<br />
• Ogni algoritmo di apprendimento è una sottoclasse di<br />
Classifier e ridef<strong>in</strong>isce questi metodi.<br />
Weka Pag<strong>in</strong>a 20
Il package Weka.clusterers<br />
• Contiene un’implementazione di due importanti metodi<br />
di apprendimento non supervisionato: COBWEB ed<br />
EM.<br />
Il package Weka.estimators<br />
• Contiene sottoclassi di una generica classe Estimator,<br />
che calcola vari tipi di distribuzioni di probabilità.<br />
Weka Pag<strong>in</strong>a 21
Il package weka.filters<br />
• Tool per il preprocessamento dei dati: discretizzazione,<br />
normalizzazione, resampl<strong>in</strong>g, selezione, trasformazione<br />
o comb<strong>in</strong>azione di attributi.<br />
• La classe Filter def<strong>in</strong>isce la struttura generale di tutte le<br />
classi che contengono algoritmi di filter<strong>in</strong>g.<br />
• Tali classi sono tutte implementate come sottoclassi di<br />
Filter.<br />
Il package weka.attributeSelection<br />
• Mette a disposizione classi per effettuare riduzioni<br />
dimensionali su una collezione di dati.<br />
• Queste classi vengono utilizzate da<br />
weka.filters.attributeSelectionFilter, ma possono<br />
anche essere usate separatemente.<br />
Weka Pag<strong>in</strong>a 22
Classificatori: J48<br />
• Alberi di decisione: metodo di classificazione<br />
supervisionato.<br />
• Un albero di decisione è una semplice struttura <strong>in</strong> cui i<br />
nodi non term<strong>in</strong>ali rappresentano test su uno o più<br />
attributi mentre i nodi term<strong>in</strong>ali riflettono i risultati della<br />
decisione.<br />
• Approccio reso popolare da J.R.Qu<strong>in</strong>lan.<br />
• C4.5 è l’ultima implementazione di pubblico dom<strong>in</strong>io<br />
del modello di Qu<strong>in</strong>lan.<br />
• L’algoritmo J48 è l’implementazione Weka dell’albero<br />
di decisione C4.5.<br />
Weka Pag<strong>in</strong>a 23
Alberi di decisione: approccio generale<br />
• Scegliere un attributo che meglio differenzia i valori<br />
dell’attributo di output.<br />
• Creare nell’albero un ramo separato per ogni possibile<br />
valore dell’attributo scelto.<br />
• Dividere le istanze <strong>in</strong> sottogruppi che riflettano i valori<br />
dell’attributo scelto.<br />
Weka Pag<strong>in</strong>a 24
Alberi di decisione: approccio generale (2)<br />
• Per ogni sottogruppo, term<strong>in</strong>are il processo di<br />
selezione degli attributi se:<br />
– (a) tutti i membri di un sottogruppo hanno lo stesso<br />
valore per l’attributo di output (<strong>in</strong> questo caso il<br />
ramo considerato va etichettato con il valore<br />
specificato);<br />
– (b) il sottogruppo contiene un s<strong>in</strong>golo nodo oppure<br />
non è più possibile <strong>in</strong>dividuare un attributo <strong>in</strong> base<br />
al quale fare differenziazioni. In questo caso, il ramo<br />
considerato viene etichettato con il valore<br />
dell’attributo di output che caratterizza la maggior<br />
parte delle istanze rimanenti.<br />
Weka Pag<strong>in</strong>a 25
Alberi di decisione: approccio generale (3)<br />
• Il processo viene ripetuto per ogni sottogruppo che<br />
non è stato etichettato come term<strong>in</strong>ale.<br />
• L’algoritmo viene applicato ai dati di tra<strong>in</strong><strong>in</strong>g.<br />
• L’albero di decisione creato viene qu<strong>in</strong>di testato su un<br />
dataset di test. Se non sono disponibili dati di test J48<br />
esegue cross validation sui dati di tra<strong>in</strong><strong>in</strong>g.<br />
Weka Pag<strong>in</strong>a 26
J48: Opzioni<br />
• Attributo di output: può essere scelto soltanto tra gli<br />
attributi di categoria.<br />
• Fattore di confidenza: determ<strong>in</strong>a il valore da<br />
utilizzare per fare prun<strong>in</strong>g (rimozione dei rami che<br />
non portano guadagno <strong>in</strong> term<strong>in</strong>i di accuratezza<br />
statistica del modello); default: 25%.<br />
• Numero m<strong>in</strong>imo di istanze per foglia: un valore alto<br />
creerà un modello più generale, un valore basso un<br />
albero più specializzato.<br />
Weka Pag<strong>in</strong>a 27
J48: Opzioni (2)<br />
• Numero di cartelle per cross validation: determ<strong>in</strong>a come<br />
costruire e testare il modello <strong>in</strong> assenza di dati di test.<br />
• Se questo valore è x, 1 – 1/x dei dati di tra<strong>in</strong><strong>in</strong>g viene<br />
usato per costruire il modello e 1/x viene usato per il<br />
test. Il processo viene ripetuto x volte, <strong>in</strong> modo che tutti<br />
I dati di tra<strong>in</strong><strong>in</strong>g siano usati esattamente una volta nei<br />
dati di test. La stima complessiva si ottiene facendo la<br />
media delle x stime d’errore. Valore tipico: 10.<br />
• Test data set: permette di specificare un <strong>in</strong>sieme di dati<br />
di test.<br />
Weka Pag<strong>in</strong>a 28
Alberi di decisione: Vantaggi e Svantaggi<br />
• Vantaggi:<br />
– semplici da comprendere e da convertire <strong>in</strong> un<br />
<strong>in</strong>sieme di regole di produzione;<br />
– possono classificare sia dati numerici che di<br />
categoria, ma l’attributo di output deve essere di<br />
categoria;<br />
– non ci sono assunzioni a priori sulla natura dei dati.<br />
• Svantaggi:<br />
– molteplici attributi di output non sono consentiti;<br />
– gli alberi di decisione sono <strong>in</strong>stabili. Leggere<br />
variazioni nei dati di tra<strong>in</strong><strong>in</strong>g possono produrre<br />
differenti selezioni di attributi ad ogni punto di scelta<br />
all’<strong>in</strong>terno dell’albero.<br />
Weka Pag<strong>in</strong>a 29
Classificatori: parametri generali<br />
• Se si utilizza SimpleCLI si possono <strong>in</strong>vocare le classi di Weka.<br />
Esempio per utilizzare J48:<br />
<strong>java</strong> weka.classifiers.trees.J48 -t data/weather.arff<br />
• I parametri generali sono:<br />
-t: file di tra<strong>in</strong><strong>in</strong>g (formato ARFF)<br />
-T: file di test (formato ARFF). Se questo parametro manca, di<br />
default si esegue 10-fold cross validation<br />
-k: specifica numero di cartelle per cross validation<br />
-c: selezionare la variable classe<br />
-d: salvare il modello generato dopo il tra<strong>in</strong><strong>in</strong>g<br />
-l: caricare un modello salvato <strong>in</strong> precedenza<br />
-i: descrizione dettagliata delle prestazioni<br />
-o: disabilita output human- readable<br />
Weka Pag<strong>in</strong>a 30
Altri classificatori<br />
• bayes.NaiveBayes<br />
• meta.ClassificationViaRegression<br />
• functions.Logistic<br />
• functions.SMO<br />
• lazy.Kstar<br />
• lazy.Ibk<br />
• rules.JRip<br />
Weka Pag<strong>in</strong>a 31
Explorer: Classificatore<br />
Weka Pag<strong>in</strong>a 32
Explorer: Classificatore (2)<br />
Weka Pag<strong>in</strong>a 33
Explorer: Classificatore (3)<br />
Weka Pag<strong>in</strong>a 34
1<br />
2<br />
Explorer: Classificatore (4)<br />
Risultati<br />
Weka Pag<strong>in</strong>a 35
Output di un classificatore<br />
• La prima parte è una descrizione leggibile del<br />
modello generato.<br />
• Il nodo alla radice dell’albero determ<strong>in</strong>a la prima<br />
decisione.<br />
• I numero <strong>in</strong> parentesi alla f<strong>in</strong>e di ogni foglia <strong>in</strong>dicano<br />
il numero di esempi contenuti nella foglia stessa.<br />
• Se una o più foglie non sono pure (tutti esempi della<br />
stessa classe), viene <strong>in</strong>dicato anche il numero di<br />
esempi che non sono stati classificati correttamente.<br />
Weka Pag<strong>in</strong>a 36
Output del classificatore: esempio<br />
J48 pruned tree------------------<br />
outlook = sunny<br />
| humidity 75: no (3.0)<br />
outlook = overcast: yes (4.0)<br />
outlook = ra<strong>in</strong>y<br />
| w<strong>in</strong>dy = TRUE: no (2.0)<br />
| w<strong>in</strong>dy = FALSE: yes (3.0)<br />
Number of Leaves : 5<br />
Size of the tree : 8<br />
Weka Pag<strong>in</strong>a 37
Tempo impiegato per l’apprendimento<br />
• Time taken to build model: 0.05 seconds<br />
• Time taken to test model on tra<strong>in</strong><strong>in</strong>g data: 0 seconds<br />
• Per un albero di decisione l’apprendimento è<br />
piuttosto veloce e la valutazione ancora di più.<br />
• Nel caso di schema di apprendimento lazy, la fase di<br />
test sarebbe sicuramente molto più lunga di quella di<br />
tra<strong>in</strong><strong>in</strong>g.<br />
Weka Pag<strong>in</strong>a 38
Classificatore: valutazione prestazioni<br />
= Error on tra<strong>in</strong><strong>in</strong>g data ==<br />
Correctly Classified Instance 14 100 %<br />
Incorrectly Classified Instances 0 0%<br />
Kappa statistic 1<br />
Mean absolute error 0<br />
Root mean squared error 0<br />
Relative absolute error 0%<br />
Root relative squared error 0%<br />
Total Number of Instances 14<br />
Weka Pag<strong>in</strong>a 39
Classificatore: valutazione prestazioni (2)<br />
== Detailed Accuracy By Class ==<br />
TP Rate FP Rate Precision Recall F-Measure Class<br />
1 0 1 1 1 yes<br />
1 0 1 1 1 no<br />
== Confusion Matrix ==<br />
a b
1<br />
2<br />
Explorer: Classificatore e cross validation<br />
Risultati<br />
Weka Pag<strong>in</strong>a 41
Classificatore: cross validation<br />
== Stratified cross-validation ==<br />
Correctly Classified Instances 9 64.2857 %<br />
Incorrectly Classified Instances 5 35.7143 %<br />
Kappa statistic 0.186<br />
Mean absolute error 0.2857<br />
Root mean squared error 0.4818<br />
Relative absolute error 60%<br />
Root relative squared error 97.6586%<br />
Total Number of Instances 14<br />
Weka Pag<strong>in</strong>a 42
Classificatore: cross validation (2)<br />
• Risultati più realistici: accuratezza <strong>in</strong>torno al 64%.<br />
• Kappa statistic: misura il grado di accordo della<br />
predizione con la vera classe – 1.0 significa accordo<br />
perfetto.<br />
• Le altre metriche d’errore non sono molto significative<br />
ai f<strong>in</strong>i della classificazione, ma possono essere usate<br />
ad esempio per regressione.<br />
• Matrice di confusione: istanze classificate<br />
correttamente su una diagonale.<br />
Weka Pag<strong>in</strong>a 43
Classificatore: cross validation (3)<br />
== Detailed Accuracy By Class ==<br />
TP Rate FP Rate Precision Recall F-Measure Class<br />
0.778 0.6 0.7 0.778 0.737 yes<br />
0.4 0.222 0.5 0.4 0.444 no<br />
== Confusion Matrix ==<br />
a b
Classificatore: valutazione (1)<br />
• Osserviamo la matrice di confusione:<br />
== Confusion Matrix ==<br />
a b
Classificatore: valutazione (2)<br />
• True Positive rate (TP rate) o Recall è la frazione di esempi<br />
classificati come appartenenti alla classe x, fra tutti quelli che<br />
sono realmente della classe x. Nella confusion matrix è<br />
l'elemento diagonale diviso per la somma degli elementi della<br />
riga. Esempio: 7/(7+2)= 0.778 per la classe a e 2/(3+2)=0.4<br />
per la classe b.<br />
• False Positive rate (FP rate) è frazione di esempi classificati<br />
come appartenenti alla classe x, ma che <strong>in</strong> realità<br />
appartengono a un’altra classe, fra tutti quelli che non<br />
appartengono alla classe x. Nella matrice è la somma della<br />
colonna meno l'elemento diagonale diviso per la somma delle<br />
righe nelle altre classi. Esempio: (7+3-7)/(3+2)=3/5=0.6 per la<br />
classe a e (2+2-2)/(7+2)= 2/9=0.222 per la classe a.<br />
Weka Pag<strong>in</strong>a 46
Classificatore: valutazione (3)<br />
• Precision è la frazione di esempi realmente di classe x<br />
fra tutti quelli classificati come x. Nella confusion matrix è<br />
l'elemento diagonale diviso per la somma delle colonne<br />
rilevanti. Esempio: 7/(7+3)=0.7 per la classe a e 2/<br />
(2+2)=0.5 per la classe b.<br />
• F-Measure è una misura standard che riassume<br />
precision e recall: 2*Precision*Recall/(Precision+Recall).<br />
Esempio: 2*0.7*0.778/(0.7+0.778)=0.737 per la classe a<br />
e 2*0.5*0.4/(0.5+0.4)=0.444 per la classe b.<br />
Weka Pag<strong>in</strong>a 47
Cluster<strong>in</strong>g<br />
• Le tecniche di cluster<strong>in</strong>g si applicano per suddividere un<br />
<strong>in</strong>sieme di istanze <strong>in</strong> gruppi che riflettano qualche<br />
meccanismo o caratteristica naturale del dom<strong>in</strong>io di<br />
appartenenza delle istanze stesse.<br />
• Queste proprietà fanno sì che delle istanze siano<br />
accomunate da una “somiglianza” più forte rispetto agli<br />
altri dati nella collezione.<br />
• Il cluster<strong>in</strong>g richiede approcci differenti da quelli usati<br />
per classificazione e regole di associazione.<br />
Weka Pag<strong>in</strong>a 48
Cluster<strong>in</strong>g (2)<br />
• Lo scopo di un algoritmo di cluster<strong>in</strong>g è quello di<br />
suddividere un <strong>in</strong>sieme di documenti <strong>in</strong> gruppi che<br />
siano quanto più possibile coerenti <strong>in</strong>ternamente, e<br />
allo stesso tempo diversi l’uno dall’altro.<br />
• I documenti all’<strong>in</strong>terno di un cluster dovrebbero<br />
essere quanto più possibile diversi da quelli <strong>in</strong>seriti<br />
all’<strong>in</strong>terno di un altro cluster.<br />
• Il cluster<strong>in</strong>g è la forma più comune di<br />
apprendimento non supervisionato: nessun uso di<br />
esperti umani per assegnare le istanze alle classi.<br />
Weka Pag<strong>in</strong>a 49
Cluster<strong>in</strong>g (3)<br />
• Il cluster<strong>in</strong>g è un problema fondamentalmente diverso<br />
dalla classificazione: la classificazione è una forma di<br />
apprendimento supervisionato.<br />
• Lo scopo della classificazione è quello di replicare una<br />
dist<strong>in</strong>zione <strong>in</strong> categorie che un assessor umano ha<br />
imposto sui dati.<br />
• L’<strong>in</strong>put chiave di un algoritmo di cluster<strong>in</strong>g è la misura di<br />
distanza che viene usata per suddividere le istanze <strong>in</strong><br />
gruppi.<br />
Weka Pag<strong>in</strong>a 50
Tipi di cluster<strong>in</strong>g<br />
• Flat cluster<strong>in</strong>g: crea un <strong>in</strong>sieme di cluster piatto, senza<br />
una struttura gerarchica che metta <strong>in</strong> relazione i cluster<br />
l’uno con l’altro.<br />
• Hierarchical cluster<strong>in</strong>g: crea una gerarchia di cluster.<br />
• Hard cluster<strong>in</strong>g: assegna ogni istanza ad esattamente<br />
un cluster.<br />
• Soft cluster<strong>in</strong>g: l’assegnazione di un documento è una<br />
distribuzione su tutti i cluster (es. LSI).<br />
• Term<strong>in</strong>ologia alternativa: cluster partizionale o<br />
esaustivo.<br />
Weka Pag<strong>in</strong>a 51
Cluster<strong>in</strong>g <strong>in</strong> Information Retrieval<br />
• Cluster hypothesis: documenti <strong>in</strong> uno stesso cluster<br />
hanno un comportamento simile rispetto a ciò che è<br />
rilevante per soddisfare le esigenze <strong>in</strong>formative degli<br />
utenti.<br />
• Se un documento è rilevante per una richiesta di<br />
ricerca, assumiamo che anche gli altri documenti<br />
all’<strong>in</strong>terno dello stesso cluster siano rilevanti.<br />
• Il cluster<strong>in</strong>g ha molte applicazioni <strong>in</strong> <strong>in</strong>formation<br />
retrieval. Viene usato per migliorare usabilità,<br />
efficienza ed efficacia del sistema di ricerca.<br />
Weka Pag<strong>in</strong>a 52
Card<strong>in</strong>alità<br />
• Critical issue: determ<strong>in</strong>are K, card<strong>in</strong>alità di un<br />
cluster<strong>in</strong>g.<br />
• Brute force approach: enumera tutti i possibili<br />
cluster<strong>in</strong>g e scegli il migliore (non utilizzabile <strong>in</strong> pratica<br />
per via dell’esplosione esponenziale del numero di<br />
possibili partizioni).<br />
• La maggior parte degli algoritmi procede per<br />
raff<strong>in</strong>amento iterativo di un partizionamento <strong>in</strong>iziale:<br />
trovare un buon punto di partenza è dunque<br />
importante per la qualità della soluzione f<strong>in</strong>ale.<br />
Weka Pag<strong>in</strong>a 53
Valutazione di un cluster<strong>in</strong>g<br />
• Obiettivo generale: alta similarità <strong>in</strong>tra-cluster e<br />
bassa similarità <strong>in</strong>ter-cluster (criterio <strong>in</strong>terno di<br />
qualità).<br />
• Il soddisfacimento di questo criterio non garantisce<br />
la realizzazione di un’applicazione efficace.<br />
• Approccio alternativo: valutazione diretta<br />
nell’applicazione di <strong>in</strong>teresse.<br />
• User study: approccio immediato ma costoso.<br />
• Altra possibilità: confronta i risultati del cluster<strong>in</strong>g<br />
con un golden standard.<br />
Weka Pag<strong>in</strong>a 54
Cluster<strong>in</strong>g: Criteri esterni di qualità<br />
• Purity: assegna ogni cluster alla classe che occorre<br />
più frequentemente nel cluster; accuratezza: frazione<br />
di documenti assegnati correttamente.<br />
• Un cluster<strong>in</strong>g perfetto ha purity 1, mentre un<br />
cluster<strong>in</strong>g di cattiva qualità ha purity prossima a 0.<br />
• Un valore elevato è facile da ottenere quando il<br />
numero di cluster è elevato: purity 1 se ogni<br />
documento è assegnato a un suo proprio cluster.<br />
• Purity non dà <strong>in</strong>fo utili se cerchiamo un trade off tra<br />
la qualità del cluster<strong>in</strong>g e il numero di cluster.<br />
Weka Pag<strong>in</strong>a 55
Cluster<strong>in</strong>g: Criteri esterni di qualità (2)<br />
• Approccio alternativo: vedere il cluster<strong>in</strong>g come una<br />
serie di decisioni, una per ogni coppia di documenti<br />
nella collezione.<br />
• Vogliamo assegnare due documenti ad uno stesso<br />
cluster se sono simili.<br />
• TP: assegna due documenti simili allo stesso cluster<br />
• TN: assegna due documenti non simili a cluster<br />
differenti<br />
• FP: assegna due documenti non simili allo stesso<br />
cluster<br />
• FN: assegna due documenti simili a cluster diversi.<br />
Weka Pag<strong>in</strong>a 56
Criteri esterni di qualità<br />
• Rand Index calcola la percentuale di decisioni<br />
corrette: RI = (TP + TN) / (TP + TN + FP + FN)<br />
• RI assegna uguale peso a FP e FN; a volte<br />
separare documenti simili è considerato più grave<br />
che mettere due documenti diversi <strong>in</strong> uno stesso<br />
cluster;<br />
• F-measure assegna una maggiore<br />
penalizzazione a FN:<br />
F-measure = 2PR / (P+R), con P=TP/(TP+FP) e<br />
R=TP/(TP+FN)<br />
Weka Pag<strong>in</strong>a 57
K-Means<br />
• Flat Cluster<strong>in</strong>g Algorithm più importante.<br />
• Obiettivo: m<strong>in</strong>imizzare il valor medio del quadrato della<br />
distanza euclidea dei documenti dal centro del cluster a<br />
cui sono stati assegnati.<br />
• Il centro di un cluster è def<strong>in</strong>ito come la media di tutti i<br />
documenti presenti nel cluster (centroide).<br />
• Cluster<strong>in</strong>g ideale: una sfera che ha il centroide come<br />
suo centro di gravità.<br />
Weka Pag<strong>in</strong>a 58
K-Means (2)<br />
• Passo 1: scelta di K seed casuali (centri <strong>in</strong>iziali dei<br />
cluster).<br />
• Passo 2: assegna ogni punto al cluster più vic<strong>in</strong>o.<br />
• Passo 3: ricalcola i nuovi centroidi.<br />
• Ripeti i passi 2 e 3 f<strong>in</strong>o al raggiungimento di un<br />
qualche criterio di convergenza:<br />
– esecuzione di un numero di iterazioni prefissato<br />
(limita runtime, ma rischio scarsa qualità);<br />
– assegnazione delle istanze ai cluster non cambia<br />
tra due iterazioni successive (no garanzie su<br />
runtime).<br />
• Nella pratica, comb<strong>in</strong>a una soglia sullo scarto<br />
quadratico medio con un bound sul numero di<br />
iterazioni.<br />
Weka Pag<strong>in</strong>a 59
K-Means (3)<br />
• La convergenza si prova mostrando che RSS<br />
decresce monotonicamente ad ogni iterazione.<br />
• Non è garantito il raggiungimento di un m<strong>in</strong>imo<br />
globale: questo è un problema se l’<strong>in</strong>sieme di <strong>in</strong>put<br />
contiene molti outlier.<br />
• La scelta di un outlier come seed <strong>in</strong>iziale porta<br />
spesso alla creazione di cluster s<strong>in</strong>gleton.<br />
• Occorre utilizzare metodi di <strong>in</strong>izializzazione che<br />
forniscano dei buoni seed.<br />
Weka Pag<strong>in</strong>a 60
K-Means (4)<br />
• Varie soluzioni per una scelta efficace del seed set:<br />
– esclusione degli outlier dal seed set;<br />
– provare molteplici seed e scegliere la soluzione<br />
con m<strong>in</strong>or costo;<br />
– ottenere i centroidi <strong>in</strong>iziali applicando altri metodi<br />
come cluster<strong>in</strong>g gerarchico;<br />
– selezionare un certo numero di punti random per<br />
ogni cluster e scegliere il loro centroide come<br />
centro <strong>in</strong>iziale del cluster.<br />
Weka Pag<strong>in</strong>a 61
K-Means: scelta card<strong>in</strong>alità<br />
• Come scegliere il numero di cluster da creare?<br />
• Approccio naïve: scegli k che m<strong>in</strong>imizza RSS -><br />
creazione di un set di s<strong>in</strong>gleton.<br />
• Euristiche per stimare m<strong>in</strong>ima somma dei quadrati<br />
dei residui <strong>in</strong> funzione di k.<br />
• Introdurre una penalità per ogni nuovo cluster.<br />
• Nella pratica la funzione obiettivo deve comb<strong>in</strong>are<br />
distorsione e complessità del modello.<br />
Weka Pag<strong>in</strong>a 62
Explorer: Clusterer SimpleKMeans<br />
Weka Pag<strong>in</strong>a 63
Explorer: Clusterer SimpleKMeans (2)<br />
Weka Pag<strong>in</strong>a 64
Explorer: Clusterer SimpleKMeans (3)<br />
Weka Pag<strong>in</strong>a 65
1<br />
Explorer: Clusterer SimpleKMeans (4)<br />
2<br />
Risultati<br />
Weka Pag<strong>in</strong>a 66
EM Cluster<strong>in</strong>g<br />
• Generalizzazione di K-Means.<br />
• Model based cluster<strong>in</strong>g: assume che i dati siano stati<br />
generati seguendo un modello e tenta di ricostruire il<br />
modello orig<strong>in</strong>ale a partire dai dati.<br />
• Questo modello def<strong>in</strong>isce qu<strong>in</strong>di i cluster e il modo <strong>in</strong><br />
cui le istanze vengono assegnate ai cluster.<br />
• Criterio std per la stima dei parametri del modello:<br />
Maximum likelihood.<br />
• Modelli di cluster<strong>in</strong>g più flessibili e adattabili a quello<br />
che sappiamo sulla distribuzione dei dati.<br />
Weka Pag<strong>in</strong>a 67
EM Cluster<strong>in</strong>g (2)<br />
• Algoritmo iterativo adattabile a vari tipi di modellazione<br />
probabilistica.<br />
• Goal: determ<strong>in</strong>are una stima a massima verosimiglianza<br />
dei parametri del modello, che dipende da alcune<br />
variabili nascoste.<br />
• Itera un “alternanza” di due passi:<br />
– Expectation: calcola il valore atteso della likelihood <strong>in</strong><br />
base alle stima corrente per la distribuzione dei<br />
parametri<br />
– Maximization: calcola I parametri che massimizzano<br />
la verosimiglianza attesa determ<strong>in</strong>ata al passo<br />
precedente.<br />
• Il passo di expectation determ<strong>in</strong>a un’assegnazione “soft”<br />
delle istanze ai cluster.<br />
Weka Pag<strong>in</strong>a 68
EM Cluster<strong>in</strong>g (3)<br />
• Anche se una iterazione non dim<strong>in</strong>uisce la likelihood<br />
dei dati osservati, non c’è garanzia che l’algoritmo<br />
converga ad una stima di massima verosimiglianza.<br />
• Se I valori <strong>in</strong>iziali dei parametri non sono scelti bene,<br />
l’algoritmo potrebbe convergere a un ottimo locale.<br />
• Per evitare questo si possono applicare varie<br />
euristiche:<br />
– Random restart<br />
– Simulated anneal<strong>in</strong>g<br />
Weka Pag<strong>in</strong>a 69
EM <strong>in</strong> Weka<br />
• Alcune opzioni disponibili:<br />
– numClusters: setta il numero di cluster (default: -1)<br />
– maxIterations: numero massimo di Iterazioni<br />
– seed: numero casuale usato come seed<br />
– m<strong>in</strong>StdDev: m<strong>in</strong>ima deviazione std consentita<br />
Weka Pag<strong>in</strong>a 70
1<br />
Explorer: Clusterer EM<br />
Weka Pag<strong>in</strong>a 71<br />
3<br />
2
1<br />
Explorer: Clusterer EM (2)<br />
2 Risultati<br />
Weka Pag<strong>in</strong>a 72
Feature Selection<br />
• Obiettivo: selezionare un sotto<strong>in</strong>sieme di feature<br />
rilevanti per costruire modelli di learn<strong>in</strong>g robusti.<br />
• Elim<strong>in</strong>a le feature non rilevanti o rilevanti.<br />
• Migliora le prestazioni dei modelli di learn<strong>in</strong>g:<br />
• Allevia problemi dovuti a esplosione dimensionale<br />
• Rafforza la capacità di generalizzazione del modello<br />
• Velocizza il processo di learn<strong>in</strong>g<br />
• Migliora la leggibilità del modello<br />
• Permette di acquisire una migliore conoscenza dei dati<br />
evidenziandone le proprietà più importante.<br />
Weka Pag<strong>in</strong>a 73
Feature Selection (2)<br />
• Teoricamente, una selezione ottimale richiede<br />
l’esplorazione esaustiva dello spazio di tutti i possibili<br />
sotto<strong>in</strong>siemi di feature.<br />
• Nella pratica si seguono due diversi approcci:<br />
• Feature Rank<strong>in</strong>g: usa una metrica per ord<strong>in</strong>are le<br />
feature ed elim<strong>in</strong>a tutte le feature che non ottengono<br />
uno score adeguato.<br />
• Subset Selection: cerca l’<strong>in</strong>sieme di possibili feature<br />
per il sotto<strong>in</strong>sieme ottimale.<br />
Weka Pag<strong>in</strong>a 74
Feature Selection: Subset selection<br />
• Valuta la bontà di un <strong>in</strong>sieme di features.<br />
• Molte euristiche per la ricerca delle feature si basano<br />
su greedy hill climb<strong>in</strong>g: valuta iterativamente un<br />
sotto<strong>in</strong>sieme candidato di feature, qu<strong>in</strong>di modifica<br />
tale <strong>in</strong>sieme e valuta se l’<strong>in</strong>sieme ottenuto è migliore<br />
del precedente.<br />
• La valutazione degli <strong>in</strong>siemi di feature richiede l’uso<br />
di opportune metriche.<br />
• La ricerca esaustiva non è <strong>in</strong> genere praticabile; al<br />
raggiungimento di un criterio di arresto si restituisce<br />
l’<strong>in</strong>sieme di feature che ha ottenuto il punteggio più<br />
alto.<br />
Weka Pag<strong>in</strong>a 75
Feature Selection: Subset Selection (2)<br />
• Possibili euristiche per la ricerca:<br />
• Esaustiva<br />
• Best first<br />
• Simulated anneal<strong>in</strong>g<br />
• Algoritmi genetici<br />
• Greedy forward selection<br />
• Greedy backward elim<strong>in</strong>ation<br />
Weka Pag<strong>in</strong>a 76
Feature Selection: criteri di arresto<br />
• Possibili criteri di arresto:<br />
– lo score assegnato ad un certo <strong>in</strong>sieme supera<br />
una certa soglia;<br />
– il tempo di computazione supera un massimo<br />
prestabilito.<br />
Weka Pag<strong>in</strong>a 77
Explorer: Select Attributes<br />
Weka Pag<strong>in</strong>a 78
Explorer: Select Attributes (2)<br />
Weka Pag<strong>in</strong>a 79
Explorer: Select Attributes (3)<br />
Weka Pag<strong>in</strong>a 80
Explorer: Select Attributes (4)<br />
Weka Pag<strong>in</strong>a 81
Explorer: Select Attributes (5)<br />
Weka Pag<strong>in</strong>a 82
Explorer: Select Attributes (6)<br />
Weka Pag<strong>in</strong>a 83