330 likes | 623 Views
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
E N D
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 Boaretti Martini Tassinari Classificazione con Weka
KDD – lo scenario …facciamo il giochino di “Ok il prezzo è giusto”… CLASSIFICAZIONE CLUSTERING REGOLE ASSOCIATIVE 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: • costruzione del modello a partire da un insieme predeterminato di classi o concetti (training set) • predizione delle classi per i dati del test set (validazione del modello) • predizione delle classi per nuovi dati NB: Stimare l’accuratezza del classificatore Boaretti Martini Tassinari Classificazione con Weka
Il package weka.classifiers • Contieneimplementazionideglialgoritmipiùcomunementeutilizzati per classificazione e predizionenumerica. • La classepiùimportante è Classifier, chedefinisce la strutturageneraledi un qualsiasi schema diclassificazione o predizione; • Contiene due metodi, buildClassifier() e classifyInstance(), chedebbonoessereimplementatidatuttiglialgoritmidiapprendimento, • Ognialgoritmodiapprendimento è unasottoclassedi Classifier e ridefiniscequestimetodi. Boaretti Martini Tassinari Classificazione con Weka
Tipi di Classificazione (I) 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. Boaretti Martini Tassinari Classificazione con Weka
Tipi di Classificazione (III) Rete Neurale In ogni nodo intermedio il dato di input viene rielaborato secondo determinate funzioni, fino ad ottenere l’output. NODI INTERMEDI INPUT OUTPUT Boaretti Martini Tassinari Classificazione con Weka
Tipi di Classificazione (IV) Lazysomiglianza • Instance-based= classifical’istanzacomparandola ad un database diesempipreclassificati. • Idea di base= istanzesimiliavrannoclassificazione simile • Problema= come definire “istanzesimili” e “classificazionisimili”??? • Alcunialgoritmi: • Nearestneighbour (il più semplice) • IB1, IB2 ecc (continui miglioramenti del precedente) • K* (entropia come misura di distanza) 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. Boaretti Martini Tassinari Classificazione con Weka
Tipi di Classificazione (VI) • Multi - Istanze • È una tecnica di classificazione supervisionata caratterizzata da: • Multi istanze • Una sola classlabel osservabile per tutte le istanze • Formato dei dati: • bag-id - attributonominale; unicoidentificatore per ogni bag • bag - attributorelazionale; contiene le istanze • class - class label • Esempio: • Nell’esempioche segue, gliattributi f1 - f166 sonoraccoltiall’internodi un unicoattributo, quellorelazionale Boaretti Martini Tassinari Classificazione con Weka
FORMATO “TRADIZIONALE” FORMATO MULTI-ISTANZA attributo relazionale
Classificazione con weka (I) • Selezionare il Classificatore e impostare le opzioni “principali” es. Choose>Classifier>tree>j48; Tastosinistro:Options: binarySplits>true; confidenceFactor=0,25.. • Test Options • Training set: il classificatore è valutato in base alla correttezza della predizione effettuata sulle istanze usate per produrre il modello; • Test set supplementare: il classificatore è valutato grazie a un test set supplementare appositamente caricato da file; • 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 • 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 Boaretti Martini Tassinari Classificazione con Weka
Classificazione con weka (II) • 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. • Prova del classificatore - Start Boaretti Martini Tassinari Classificazione con Weka
Classificazione con weka (III) • Output classificatore • Run information: il programma di apprendimento opzioni, nome della relazione, n°istanze, attributi e le modalità di prova che sono stati coinvolti nel processo. • Classifier model (full training set): Il testo del modello di classificazione che è stato prodotto sull’intero training set. • 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). Boaretti Martini Tassinari Classificazione con Weka
Classificazione con weka (IV) • 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: • Visualizzare la Classifier Output • Eliminare il risultato prodotto (canc) • 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 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. 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 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 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. 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. Boaretti Martini Tassinari Classificazione con Weka
M5rules (II) Dove: 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 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 Boaretti Martini Tassinari Classificazione con Weka
Case Study In collaborazione con: Boaretti Martini Tassinari Classificazione con Weka
Case Study 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 Boaretti Martini Tassinari Classificazione con Weka
Case Study Boaretti Martini Tassinari Classificazione con Weka
1- Preparazione dati di input • 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. Boaretti Martini Tassinari Classificazione con Weka
Boaretti Martini Tassinari Classificazione con Weka
2- Creazione del modello di previsione • Si è cercato di individuare: • gli attributi che potessero evidenziare correlazioni esistenti tra i dati (esgiorno 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. 3- Validazione del modello 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à Boaretti Martini Tassinari Classificazione con Weka
4- Sviluppo un eseguibile per eseguire predizioni 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. 5- Forecasting nuovi oggetti E’ stato utilizzato l’eseguibile creato in precedenza per eseguir la predizione del mese di marzo. Boaretti Martini Tassinari Classificazione con Weka
GENNAIO Media afflussi = 122,3 Mean Absolute Error = 17.23 (14,0%) Boaretti Martini Tassinari Classificazione con Weka
FEBBRAIO Media afflussi = 124,1 Mean Absolute Error = 19.30 (15,5%) Boaretti Martini Tassinari Classificazione con Weka
Boaretti Martini Tassinari Boaretti Martini Tassinari Classificazione con Weka