a.a. 2008/2009
Sistemi Informativi per le Decisioni LS
Classificazione con Weka
Boaretti Martini Tassinari
indice
0 – Introduzione
1 – Principi base di classificazione
2 – Il package weka.classifier
3 – Algoritmi di classificazione: J48, RepTree e M5rules
4 – Classificazione con Weka.. Operativamente..
5 – Case study: Supporto alla gestione di call center
17/03/2009
Sistemi Informativi per le Decisioni
2
Boaretti Martini Tassinari
Classificazione con Weka
KDD – lo scenario
…facciamo il
giochino di “Ok
il prezzo è
giusto”…
CLASSIFICAZIONE
CLUSTERING
REGOLE ASSOCIATIVE
17/03/2009
Sistemi Informativi per le Decisioni
3
Boaretti Martini Tassinari
Classificazione con Weka
Principi base di classificazione
Obiettivo: estrarre modelli che descrivono classi di dati per:
– predire valori categorici
– predire valori continui
Processo:
1.costruzione del modello a partire da un insieme predeterminato di classi o
concetti (training set)
2.predizione delle classi per i dati del test set (validazione del modello)
3.predizione delle classi per nuovi dati
NB: Stimare l’accuratezza del classificatore
17/03/2009
Sistemi Informativi per le Decisioni
4
Boaretti Martini Tassinari
Classificazione con Weka
Il package weka.classifiers
• Contiene implementazioni degli algoritmi più comunemente
utilizzati per classificazione e predizione numerica.
• La classe più importante è Classifier, che definisce la struttura
generale di un qualsiasi schema di classificazione o
predizione;
• Contiene due metodi, buildClassifier() e classifyInstance(), che
debbono essere implementati da tutti gli algoritmi di
apprendimento,
• Ogni algoritmo di apprendimento è una sottoclasse di
Classifier e ridefinisce questi metodi.
17/03/2009
Sistemi Informativi per le Decisioni
5
Boaretti Martini Tassinari
Classificazione con Weka
Tipi di Classificazione (I)
Categoria di classificatore
Strumenti usati
Bayes
Reti bayesiane
Functions
Regressione lineare,reti neurali, SVM
Lazy
Somiglianza
Meta
Bagging, Boosting, Stacking, Regression via classification,
Classification via regression, Cost sensitive classification
Mi
Algoritmi per dati multi-istanze
Misc
Creazione di intervalli di caratteristiche e assegnazione
di punteggi alla classe in base alle caratteristiche
presenti per l’istanza (peso locale)
Trees
Alberi decisionali
Rules
Regole associative
17/03/2009
Sistemi Informativi per le Decisioni
6
Boaretti Martini Tassinari
Classificazione con Weka
Tipi di Classificazione (II)
Reti Bayesane
 Una Rete Bayesiana (Bayesian Network) rappresenta la distribuzione della probabilità
congiunta di un insieme di variabili.
La B.N. viene risolta mediante specifici algoritmi, basandosi sullo stato delle variabili osservabili e
delle probabilità a-priori rappresentate dagli archi nelle relazioni fra variabili, valutando le
probabilità a-posteriori degli stati incogniti. In questo senso le B.N. possono essere considerate
come uno strumento di investigazione e previsione.
Matematicamente, una Rete Bayesiana è
un grafo aciclico orientato in cui:
• nodi = variabili o stati;
• archi = relazioni di dipendenza statistica
tra le variabile e le distribuzioni locali di
probabilità dei nodi foglia rispetto ai valori
dei nodi padre.
Schema della relazione fra un nodo ed i padri in una generica rete bayesiana.
• La mancanza di un arco fra due nodi riflette la loro indipendenza condizionale.
• Al contrario, la presenza di un arco dal nodo Xi al nodo Xj può essere interpretata come il fatto
che Xi sia causa diretta di Xj.
17/03/2009
Sistemi Informativi per le Decisioni
7
Boaretti Martini Tassinari
Classificazione con Weka
Tipi di Classificazione (III)
Rete Neurale
INPUT
17/03/2009
Sistemi Informativi per le Decisioni
In ogni nodo
intermedio il dato di
input viene
rielaborato secondo
determinate
funzioni, fino ad
ottenere l’output.
NODI INTERMEDI
OUTPUT
8
Boaretti Martini Tassinari
Classificazione con Weka
Tipi di Classificazione (IV)
Lazy
somiglianza
• Instance-based= classifica l’istanza comparandola ad un
database di esempi preclassificati.
• Idea di base= istanze simili avranno classificazione simile
• Problema= come definire “istanze simili” e “classificazioni
simili”???
• Alcuni algoritmi:
 Nearest neighbour (il più semplice)
 IB1, IB2 ecc (continui miglioramenti del precedente)
 K* (entropia come misura di distanza)
17/03/2009
Sistemi Informativi per le Decisioni
9
Boaretti Martini Tassinari
Classificazione con Weka
Tipi di Classificazione (V)
Meta
=metodo euristico per la risoluzione di una classe di problemi di calcolo mediante la combinazione di dati-utente e una
procedura black-box - di solito l'euristica stessa - nella speranza di ottenere una più efficiente o più robusta
procedura. Il nome unisce il prefisso greco "meta" ( "oltre", qui nel senso di "livello superiore") e "euristico" (da
ευρισκειν, heuriskein, "per trovare").
Esempi:
•
Bootstrap aggregation (bagging) è un meta-algoritmo per migliorare l'apprendimento automatico di classificazione
e modelli di regressione in termini di stabilità e precisione di classificazione. Si riduce anche la varianza e
contribuisce a evitare overfitting. Anche se di solito è applicato a modelli di albero di decisione, esso può essere
utilizzato con qualsiasi tipo di modello.
Dato un training set D di dimensione n, bagging genera m Di nuovi insiemi di dimensione n' ≤ n, con istanze di
campionamento da D in modo uniforme e con la sostituzione. Con il campionamento con la sostituzione, è
probabile che alcune istanze saranno ripetute in ogni Di. Se n' = n, allora per n grande il set Di dovrebbe avere il
63,2% di esempi unici di D, il resto sono doppioni.
Il risultato è detto campione di bootstrap. Gli m modelli sono adattati con gli m campioni di bootstrap e combinati con
una media di uscita (per regressione) o in fase di voto (per la classificazione).
•
Boosting è un algoritmo di machine learning per l'esecuzione di algoritmi di apprendimento supervisionato. Si
basa sulla questione posta da Kearns: può una serie di weak learners creare un unico strong learner? Un weak
learner è definito come un classificatore che è solo di poco correlato con la vera classificazione. Al contrario, un
strong learner è un classificatore che arbitrariamente è ben correlato con la vera classificazione.
La maggior parte degli algoritmi di boosting consiste nel potenziare iterativamente i classificatori deboli nei
confronti di una distribuzione e aggiungerli ad un classificatore forte finale. Quando vengono aggiunti sono
tipicamente ponderati in qualche modo, che è di solito legato alla precisione del weak learner stesso. Dopo che un
weak learner è aggiunto, i dati vengono nuovamente pesati: istanze classificate male guadagno di peso, quelle
classificate correttamente perdono peso. Pertanto, i futuri weak learners si concentrano maggiormente sulle
istanze che i precedenti weak learners classificavano erroneamente.
17/03/2009
Sistemi Informativi per le Decisioni
10
Boaretti Martini Tassinari
Classificazione con Weka
Tipi di Classificazione (VI)
Multi - Istanze
È una tecnica di classificazione supervisionata caratterizzata da:
-Multi istanze
-Una sola class label osservabile per tutte le istanze
Formato dei dati:
 bag-id - attributo nominale; unico identificatore per ogni bag
 bag - attributo relazionale; contiene le istanze
 class - class label
Esempio:
Nell’esempio che segue, gli attributi f1 - f166 sono raccolti all’interno di un unico
attributo, quello relazionale
17/03/2009
Sistemi Informativi per le Decisioni
11
Boaretti Martini Tassinari
Classificazione con Weka
FORMATO “TRADIZIONALE”
FORMATO MULTI-ISTANZA
attributo relazionale
Classificazione con weka (I)
1. Selezionare il Classificatore e
impostare le opzioni “principali”
es. Choose>Classifier>tree>j48;
Tastosinistro:Options:
binarySplits>true; confidenceFactor=0,25..
2. Test Options
a) Training set: il classificatore è valutato in base alla correttezza della
predizione effettuata sulle istanze usate per produrre il modello;
b) Test set supplementare: il classificatore è valutato grazie a un
test set supplementare appositamente caricato da file;
c) Cross-validation: i record vengono suddifisi in un certo numero di
folds (inserito tramite il campo Folds). Ogni fold “a turno” funge da test
set (la parte restante dei dati fa il train) e infine si calcola il mean square
error
d) Percentage split: il classificatore è valutato in base alla correttezza
della predizione effettuata su una % di dati tenuti da parte
appositamente per il testing. La % desiderata è inserita tramite il campo
Percentage Split.
NB: sarebbe utile in fase di preprocessign andare ad applicare il filtro
“randomize” per “mescolare” l’ordine delle tuple.
Altre opzioni possono essere selezionate tramite il tasto More options
17/03/2009
Sistemi Informativi per le Decisioni
13
Boaretti Martini Tassinari
Classificazione con Weka
Classificazione con weka (II)
3. Selezionare la Class Attribute
Abbiamo diversi tipi di classificatori in Weka: alcuni
possono predire soltanto attributi Categorici, altri
predicono soltanto attributi Numerici (Regression
Tree), alcuni riescono a predire entrambe le
tipologie di dati. Di default come Class Attribute
(ovvero l’attributo oggetto della predizione) viene
preso l’ultimo attributo presente nella base dati.
Tuttavia è possibile selezionarne uno diverso dalla
lista apribile sotto la Test Option.
4. Prova del classificatore - Start
17/03/2009
Sistemi Informativi per le Decisioni
14
Boaretti Martini Tassinari
Classificazione con Weka
Classificazione con weka (III)
5. Output classificatore
a) Run information: il programma di apprendimento
opzioni, nome della relazione, n°istanze, attributi e le
modalità di prova che sono stati coinvolti nel processo.
b) Classifier model (full training set): Il testo del modello di
classificazione che è stato prodotto sull’intero training
set.
c) I risultati della scelta sulle Test Options sono così ripartiti:
c.1 Summary. un elenco di statistiche che riassume come
il classificatore è stato in grado di predire la classe delle
istanze del Test set
c.2. Detailed Accuracy By Class: informazioni dettagliate
sulla precisione ci ogni classe di predizione
c.3. Confusion Matrix: mostra il numero di casi che sono
stati assegnati a ciascuna classe. In particolare sulla
diagonale si indivuano i valori classificati correttamente,
vicerversa nelle restanti celle si individuano gli errori di
predizione.
c.4. Source code: codice sorgente (opzionale tramite
More Options).
17/03/2009
Sistemi Informativi per le Decisioni
15
Boaretti Martini Tassinari
Classificazione con Weka
Classificazione con weka (IV)
6. Lista dei Risultati – Result List
In tale lista (in basso a sinistra) sono disponibili i risultati
ottenuti coi diversi classificatori provati. Ogni voce della lista
permette di:
a) Visualizzare la Classifier Output
b) Eliminare il risultato prodotto (canc)
c) Effettuare una delle seguenti operazioni disponibili
cliccando il pulsante destro del mouse:
View in main/separate window
Save result buffer
Save/Load model
Re-evaluate model on current test set.
Visualize classifier errors
Visualize tree or Visualize graph
Visualize margin curve
Visualize threshold curve
Visualize cost curve
Plugins
17/03/2009
Sistemi Informativi per le Decisioni
16
Boaretti Martini Tassinari
Classificazione con Weka
J48 (I)
Class for generating a pruned or unpruned C4.5 decision tree
Il classificatore J48 è un discendente del C4.5 classifier, il quale si basa sul seguente
algoritmo:
1. si utilizza un sottoinsieme del dataset (chiamato “finestra") scelto casualmente
come training set;
2. si utilizza la finestra corrente per la costruzione di un albero di decisione con
tecniche che fanno uso della teoria dell'informazione;
3. si verifica l'errore di classicazione dell'albero costruito sui dati rimanenti (test set);
4. si incrementa la dimensione della finestra aggiungendo dei pattern che sono stati
classificati erroneamente, fino a un numero massimo stabilito;
5. si ripetono iterativamente i passi 2, 3 e 4 fino a quando si ottiene un albero che
classifica correttamente tutti i pattern del training set, oppure quando il tasso
d'errore dell'ultimo albero costruito risulta maggiore a o uguale a quello dell'albero
precedente;
6. si può poi effettuare un'operazione di pruning sull'albero di decisione ottenuto.
17/03/2009
Sistemi Informativi per le Decisioni
17
Boaretti Martini Tassinari
Classificazione con Weka
J48 (II)
ID3 (l’algoritmo base del C4.5) usa l’Information Gain per ordinare gli attributi sui quali costruire
l’albero:
dove
freq(Ci,S) è la frequenza della classe Ci nel set S
Ti rappresenta un subset del set T (assumendo di splittare su X)
L’approccio è di scegliere per lo split l’attributo X col massimo Gain.
Questo criterio può essere migliorato perché produce una forte distorsione a favore delle prove
che hanno molti risultati. Così C4.5 cerca di normalizzare questo fenomeno nel seguente modo:
Gain-ration(X) = Gain(X)/ Split-info(X)
Quando l’albero è costruito e non è possibile farlo crescere ulteriormente inizia la fase di
“potatura”:
Pruning: consiste nel sostituire con un nodo foglia un sottoalbero. La sostituzione è opportuna
quando il tasso di errore previsto nel subtree è maggiore rispetto a quello della singola foglia. Per
fare Pruning si utilizza il confidenceFactor
17/03/2009
Sistemi Informativi per le Decisioni
18
Boaretti Martini Tassinari
Classificazione con Weka
J48 (III)
OPTIONS
• binarySplits : da la possibilità di fare split categorici.
• confidenceFactor : è usato per il pruning: serve per decidere se tagliare o meno un
determinato sottoalbero; a valori maggiori del condence-factor corrisponde un
albero più complesso;
• Debug : se vero, il classificatore può dare informazioni addizionali in console.
• minNumObj : il numero minimo di istanze per foglia.
• numFolds : determina la quantità di dati usati per ridurre l’errore dovuto al
pruning. Una partizione (fold) è usata per il pruning, il resto per sviluppare l’albero.
• reducedErrorPruning : se tale campo viene settato, si effettua un reduced-error
pruning invece del pruning di default C.4.5 pruning.
• saveInstanceData : per salvare il training set per la visualizzazione.
• Seed : il seme usato per mescolare i dati quando il “reduced-error pruning” viene
settato.
• subtreeRaising : serve per “raccogliere” il sottoalbero che è stato potato.
• unpruned :se non si vuole “potare”.
• useLaplace : attenuazione basata su Laplace
17/03/2009
Sistemi Informativi per le Decisioni
19
Boaretti Martini Tassinari
Classificazione con Weka
REPtree
Fast decision tree learner
Costruisce un decision o regression tree usando l’information gain (o variance) e pota i rami
usando un reduced-error pruning. Genera solo valori per attibuti numerici. I valori mancanti
sono trattati dalla suddivisione in pezzi delle corrispondenti istanze.
OPTIONS
• Debug
• maxDepth : la massima profondità di albero (-1 per nessuna restrizione).
• minNum : il minimo peso totale di peso delle istanze in una foglia.
• minVarianceProp : la minima proporzione della varianza su tutti i dati che ha bisogno di
essere presente in un nodo, al fine di poter effettuare lo split negli alberi di regressione.
• noPruning : per effettuare o no potature.
• numFolds : Determina la quantità di dati usati per il pruning. (Solo una partizione di dati è
usata per fare pruning, il resto dei dati vengono usati per ricavare le regole.)
• seed : Il seme utilizzato per “randomizzare” i dati.
17/03/2009
Sistemi Informativi per le Decisioni
20
Boaretti Martini Tassinari
Classificazione con Weka
M5rules (I)
•
•
•
•
•
Questo motodo permette di generare Regole associative da Alberi di decisione.
Un tree learner è applicato interamente al training dataset in modo da sviluppare
un albero con potature (pruned).
Successivamente si va alla ricerca della miglior foglia tramite le regole ai nodi, in
modo da poter scartare le parti di albero non selezionate dal dato. Tutte le istanze
corrispondenti alla regola sono rimosse dal dataset. Il processo è applicato
ricorsivamente alle istanze rimanenti e termina quando tutte le istanze sono
scoperte da una o più regole.
L’approccio sul quale si basa M5rules è di costruire un modello di sottoalbero da
ogni nodo e trovare la miglior foglia della regola.
Costruire alberi parziali permette di migliorare l’efficienza computazionale, allo
stesso modo non si va ad intaccare l’accuratezza e il peso delle regole.
17/03/2009
Sistemi Informativi per le Decisioni
21
Boaretti Martini Tassinari
Classificazione con Weka
M5rules (II)
OPTIONS
•
•
•
•
•
buildRegressionTree : se si vuole generare delle regression tree/rule invece di un
semplice model tree/rule.
debug : se vero, il classificatore può dare informazioni addizionali in console.
minNumInstances : il minimo numero di istanze da consentire a un nodo foglia.
unpruned : se devono essere generati alberi/regole non potate
useUnsmoothed : se vogliamo usare predizioni “non smorzate”.
Come si misura la bontà delle regole generate?
Accanto a ogni regola sono presenti due valori:
[coverage / % root mean square error]
• Coverage: copertura, cioè il numero di istanze che soddisfano tale regola
Dove:
•
17/03/2009
Sistemi Informativi per le Decisioni
22
Yi = actual class value for example i
yi = class value predicted by the linear model at a leaf
Nr = the number of examples covered by a leaf
Y = is the mean class value
N = is the total number of examples
Boaretti Martini Tassinari
Classificazione con Weka
In collaborazione con:
17/03/2009
Sistemi Informativi per le Decisioni
Boaretti Martini Tassinari
Classificazione con Weka
Obiettivo
Sviluppo di un software per la previsione, l’ottimizzazione e la simulazione al fine
del supporto alla gestione di call center e sportelli.
Problema iniziale
Studio di fattibilità per lo sviluppo di uno strumento di forecasting delle richieste, si
vuole prevedere le chiamate al call center o gli arrivi allo sportello in ogni mezzora
dell’orario di apertura.
In fase di analisi del problema è stata considerata la possibilità di predire tale
fenomeno, che risulta influenzato da molte dimensioni, con la tecnica della
classificazione quantitativa (tramite metodologie di regressione lineare).
Utilizzo di Weka come software per la creazione dell’albero di decisione
17/03/2009
Sistemi Informativi per le Decisioni
24
Boaretti Martini Tassinari
Classificazione con Weka
FASE 1
FASE 2
• Preparazione dei dati di input
• Creazione del modello di previsione (WEKA)
• Validazione del modello tramite test set
FASE 3 • Scelta del modello di classificazione più opportuno
FASE 4
FASE 5
• Sviluppo di un eseguibile per effettuare previsioni
• Forecasting di nuovi oggetti (previsione di nuove richieste)
17/03/2009
Sistemi Informativi per le Decisioni
25
Boaretti Martini Tassinari
Classificazione con Weka
Dipendenze del fenomeno
• Mese (gennaio, febbraio, ecc);
• Giorno del mese (1,2,3,ecc);
• Giorno della settimana (lunedì, martedì, ecc);
• Giorno festivo o feriale;
• Numero di fascia (orario) di arrivo;
• Numero di giorni trascorsi dall’ultima bollettazione.
Sono disponibili i dati consuntivi di un call center per i mesi di gennaio e
febbraio, questi dati vengono estratti dal database di HeraComm (GEMI) e
convertiti in un file arff, formato utilizzato da Weka per la generazione
dell’albero.
E’ stato anche creato un file csv con gli stessi dati, questo verrà utilizzato in
futuro come input per l’eseguibile di previsione.
17/03/2009
Sistemi Informativi per le Decisioni
26
Boaretti Martini Tassinari
Classificazione con Weka
17/03/2009
Sistemi Informativi per le Decisioni
27
Boaretti Martini Tassinari
Classificazione con Weka
Si è cercato di individuare:
• gli attributi che potessero evidenziare correlazioni esistenti tra i dati (es giorno della
settimana modellato come attributo categorico);
• un set di algoritmi che meglio modellassero il fenomeno delle chiamate al call center;
• i parametri che permettessero una maggiore generalità del problema.
Analisi comparativa di test set error e training set error per ogni algoritmo selezionato
in precedenza.
Selezione dell’algoritmo (e quindi del modello) con cui modellare la realtà
17/03/2009
Sistemi Informativi per le Decisioni
28
Boaretti Martini Tassinari
Classificazione con Weka
E’ stato realizzato un eseguibile (scritto in C) che permettesse di leggere in ingresso un
file csv (creato nella fase 1) contenente dei record (nuovi oggetti) rappresentanti
nuove fasce orarie per cui determinare la quantità di chiamata e ne effettuasse la
predizione.
E’ stato utilizzato l’eseguibile creato in precedenza per eseguir la predizione del mese
di marzo.
17/03/2009
Sistemi Informativi per le Decisioni
29
Boaretti Martini Tassinari
Classificazione con Weka
GENNAIO
DATO CONSUNTIVO
DATO FORECAST
450
400
350
300
250
200
150
100
50
0
-50
Media afflussi = 122,3
Mean Absolute Error = 17.23 (14,0%)
17/03/2009
Sistemi Informativi per le Decisioni
30
Boaretti Martini Tassinari
Classificazione con Weka
FEBBRAIO
DATO CONSUNTIVO
DATO FORECAST
350
300
250
200
150
100
50
0
-50
Media afflussi = 124,1
Mean Absolute Error = 19.30 (15,5%)
17/03/2009
Sistemi Informativi per le Decisioni
31
Boaretti Martini Tassinari
Classificazione con Weka
Grazie per l’attenzione!
17/03/2009
Sistemi Informativi per le Decisioni
Boaretti Martini Tassinari
33
Boaretti Martini Tassinari
Classificazione con Weka