@DATA 5.1,3.5,1.4,0.2,Iris-setosa 4.9,3.0,1.4,0.2,Iris-setosa 4.7,3.2,1.3,0.2,Iris-setosa 4.6,3.1,1.5,0.2,Iris-versicolor 5.0,3.6,1.4,0.2,Iris-versicolor 5.4,3.9,1.7,0.4,Iris-versicolor 4.6,3.4,1.4,0.3,Iris-virginica 5.0,3.4,1.5,0.2,Iris-virginica 4.4,2.9,1.4,0.2,Iris-virginica 4.9,3.1,1.5,0.1,Iris-virginica
Dall'Explorer di Weka, tutte le operazioni di pre-elaborazioni si possono eseguire dalla scheda "Pre-process".
Caricare i dati nell'Explorer
Carichiamo i dati nell'Explorer e analizziamoli con tecniche di machine learning: cliccando su "open file" carichiamo il file ARFF di esempio creato precedentemente ("iris.arff"). A questo punto l'interfaccia mostra alcune informazioni fondamentali del dataset (figura 5): 10 istanze e 5 attributi. Un istogramma in basso a destra mostra la frequenza dei valori della classe (attributo class) corrispondentemente al valore dell'attributo selezionato. Per gli attributi numerici, l'explorer fornisce i valori di minimo, massimo, media e deviazione standard. È possibile ispezionare i dati caricati attraverso la funzionalità di editing (pulsante edit) al fine di cercare uno specifico valore per modificare/cancellare il suo corrispondente attributo o istanza.
Costruire un classificatore
Analizziamo a titolo esemplificativo e del tutto generico un learner costituito da un albero di decisione: nello specifico Weka integra al suo interno l'algoritmo J48.
Che cos'è un albero di decisione? Tentiamo di dare una breve descrizione: gli alberi di decisione costituiscono il modo più semplice di classificare degli "oggetti" in un numero finito di classi. Essi vengono costruiti suddividendo ripetutamente i record in sottoinsiemi omogenei rispetto alla variabile risposta. La suddivisione produce una gerarchia ad albero, dove i sottoinsiemi (di record) vengono chiamati nodi e, quelli finali, foglie.
In particolare, i nodi sono etichettati con il nome degli attributi, gli archi (i rami dell'albero) sono etichettati con i possibili valori dell'attributo sovrastante, mentre le foglie dell'albero sono etichettate con le differenti modalità dell'attributo classe le quali descrivono le classi di appartenenza. Un oggetto è classificato seguendo un percorso lungo l'albero che porti dalla radice a una foglia. I percorsi sono rappresentati dai rami dell'albero che forniscono una serie di regole.
Anche se gli alberi di decisione forniscono la rappresentazione compatta di una procedura di classificazione, spesso risulta difficile spiegare, ad esempio a persone non esperte, una struttura del tipo di quella presentata in figura 6; quindi si preferisce utilizzare una rappresentazione equivalente, ma più intuitiva, con l'ausilio di "regole di classificazione", che possono essere ricavate facilmente dall'albero e che, nel caso dell'esempio in questione, potrebbero essere espresse nel modo seguente:
IF petallength > 1.4 then Iris-versicolor ELSE IF sepallength > 4.6 then Iris-setosa ELSE Iris-virginica
Cliccando sul tab "classify" è sufficiente selezionare il classificatore attraverso il pulsante "choose" (nella sezione trees troviamo l'algoritmo J48). Cliccando sul bottone "start", il classificatore lavorerà fintanto che il piccolo uccello in basso a destra si muove; produrrà infine l'output che esamineremo nel prossimo paragrafo.
Esaminare l'output
Esaminando l'output generato da Weka per il dataset con il classificatore J48, nella parte iniziale troviamo un riassunto del dataset, e la metodologia con il quale il classificatore viene valutato (nel caso di default è la 10-fold-cross validation). Subito dopo troviamo l'albero di decisione generato in formato testuale.
=== Run information === Scheme: weka.classifiers.trees.J48 -C 0.25 -M 2 Relation: iris Instances: 10 Attributes: 5 sepallength sepalwidth petallength petalwidth class Test mode: 10-fold cross-validation === Classifier model (full training set) === J48 pruned tree ------------------ petallength <= 1.4 | sepallength <= 4.6: Iris-virginica (2.0) | sepallength > 4.6: Iris-setosa (4.0/1.0) petallength > 1.4: Iris-versicolor (4.0/2.0) Number of Leaves: 3 Size of the tree: 5
L'output fornisce, come risultato finale, uno strumento noto in letteratura come "matrice di confusione" che può essere molto interessante per misurare le potenzialità del modello generato. Associare una matrice di confusione a ogni modello permette di scegliere il modello migliore che non necessariamente coincide con quello avente il tasso di accuratezza maggiore.
Essa è una matrice di dimensione kxk, con k numero di classi nella quale sulle colonne si hanno il numero reale di record appartenenti a ciascuna classe e sulle righe il numero previsto di records appartenenti ad una data classe.
=== Confusion Matrix === a b c <-- classified as 2 0 0 | a = Iris-setosa 0 2 2 | b = Iris-versicolor 0 0 1 | c = Iris-virginica
In questo modo i valori presenti sulla diagonale principale sono quelli che rappresentano il numero di casi classificati correttamente dall'algoritmo, mentre ogni valore fuori dalla diagonale principale rappresenta un errore di classificazione.
Conclusioni
In questo articolo abbiamo esaminato il framework Weka. Abbiamo analizzato preliminarmente l'ambiente, per poi eseguire un semplice processo di classificazione e inferenza mediante un modello chiamato Albero di Decisione (nella fattispecie, l'algoritmo J48). Abbiamo infine imparato a esaminare l'output generato per capire e interpretare il livello di accuratezza del classificatore costruito.
Riferimenti
- [1] I. Witten - E. Frank, "Data Mining: Practical Machine Learning Tools and Techniques with Java Implementation", Morgan Kauffman 2005
- [2] Weka Home Site
http://www.cs.waikato.ac.nz/ml/weka/
- [3] Weka Sourceforge Site
http://sourceforge.net/projects/weka/
