30.05.2013 Views

WEKA: Machine Learning Algorithms in java

WEKA: Machine Learning Algorithms in java

WEKA: Machine Learning Algorithms in java

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!