470 likes | 581 Views
Analisi di un dataset di perizie assicurative. Esercitazione Data Mining. Ricapitoliamo….
E N D
Analisi di un dataset di perizie assicurative Esercitazione Data Mining
Ricapitoliamo… • L’obiettivo dell’analisi che si intende condurre è l’estrapolazione di un modello per il riconoscimento automatico di perizie assicurative che riguardano casi in cui la compagnia può rivalersi sull’assicurato
Struttura del dataset • Il dateset sul quale si intende effettuare l’analisi è disponibile sotto forma di file txt suddivisi per cartelle • Il dataset è strutturato nelle cartelle • yes: rimborsabili • no: non rimborsabili • Unknown: non ancora classificati
Operazioni sul dataset • I dati vengono puliti da possibili errori o da informazioni inutili. • Cleaning: eliminazione caratteri non alfanumerici • (;,:,?,@,#,,, ecc..) • Stemming: individuazione della radice morfologica della parola • (reserved -> reserv) • Stopwords: parole troppo comuni • (the,if,or,I,you, ecc..)
N-grammi • Sono insiemi costituiti da n parole consecutive • Vengono estratti dal dataset con lo scopo di ottenere una matrice di occorrenze: • Ogni riga è un file di testo • Ogni colonna è un ngramma
Acquisizione Database Documenti testuali
Acquisizione • I dati sono documenti ripartiti in 3 sottocartelle. • In ogni sotto cartella sono presenti una serie di documenti suddivisi in base alla classe assegnatagli o no: • yes; • no; • unknown. • ‘unknown’ non è un etichetta di classe, vuol dire che il documento non è stato classificato. • Per ridurre i tempi di acquisizione e di generazione degli N-Gramma, nel caso di approcci tradizionali, è possibile evitare l’acquisizione di questi dati semplicemente rimuovendo la cartella unknown dal folder principale!
Acquisizione • Si seleziona il folder con i dati, e si forza a Nominal il terzo attributo. • In output sarà creata una tabella con 3 colonne: • 1) Nome del file dal quale il testo è stato acquisito; • 2) Colonna contenente i termini presenti nel documento (StringAttribute); • 3) Colonna di Classe. • N.B. L’etichetta della colonna di classe è data dal nome del folder da cui il documento è estratto.
Distribuzione sui dati • Senza considerare i documenti non etichettati la distribuzione per le classi è la seguente:
Bilanciamo i dati • Facciamo oversampling • Inseriamo nel workflow un filter resample • Size: 2.0 • Bias: 2:1
Generazione degli N-gramma • Per la generazione degli N-Gramma è possibile utilizzare un particolare filtro del tool • Il filtro opera su campi di tipo StringAttribute • Questo campo sarà sostituito con un nuovo campo di tipo EventCollection
StringToNGramFilter • Il filtro ha diversi parametri: • L’indice della colonna dal quale vogliamo estrarre gli N-grammi; • Il linguaggio con sui scritti i testi; • La frequenza minima per gli N-Grammi da estrarre; • La lunghezza massima per gli N-Grammi da estrarre;
StringToNGramFilter • La lista di caratteri da usare per la suddivisione in token del testo; • La lista delle stop word da utilizzare.
EventCollectionAttribute • Un EventCollectionAttribute è un particolare attributo che al suo interno contiene insiemi di oggetti. • Può avere diversi contesti. • I contesti non sono altro che proprietà dell’attributo. • I contesti disponibili al momento sono: • Frequency: indica la frequenza con cui quel N-gramma (event) compare nel documento acquisito; • Length: indica la lunghezza dell’N-gramma.
Estrazione degli Events più promettenti • Non tutti gli eventi rappresentano informazione utile per l’analisi in corso • Per eliminare Eventi poco significativi è possibile utilizzare il filtro Remove Events By scoring function • Il filtro in esame utilizza un indice di qualità per ordinare gli eventi ed estrarre i primi N più promettenti, ove N è un parametro del filtro.
Rimozione del campo Document Name • Come ultimo passo di preprocessing si andrà eliminare l’attributo Document_Name • Questo campo si comporta come un ID della tupla quindi ininfluente per l’analisi di mining • Tale rimozione sarà effettuata tramite il filtro remove Attributes già disponibile nel tool
Estrazione del modello • In questa fase andremo ad estrarre un modello predittivo per i documenti estratti • In particolare si vuole ottenere un modello cross validato, per tale ragione invece di utilizzare un simple mining task sarà utilizzato un cross validation mining task
Che algoritmo utilizzare? • Per l’esempio in esame si è deciso di utilizzare l’algoritmo Rule Learner • Gli algoritmi a regole sono particolarmente accurati in situazioni di sbilanciamento fra le classi
Matrice di Confusione • La matrice di confusione per il modello cross-validato sembra molto promettente
Il test set • Si è deciso a questo punto di verificare l’accuratezza del modello estratto sui dati di test in nostro possesso • Come per il training set i dati sono disponibili sotto forma di documenti
Matrice di Confusione • La matrice di confusione risultante dall’applicazione del modello al test set è la seguente
Analisi in Weka • L’analisi finora condotta e riproducibile anche in Weka trasfomarmando la fonte dati in un formato importabile in Weka • A tal fine è possibile adoperare un semplice programma, il cui sorgente è disponibile in rete, TextDirectoryToArff.java • http://weka.wikispaces.com/file/view/TextDirectoryToArff.java • In questo modo sarà generato un file arff
Analisi in Weka • Se importato in Weka il dataset presenta 3 colonne: • 1) Etichetta di classe; • 2) Testo contenuto nel documento; • 3) Nome del file dal quale il testo è stato acquisito. • Questa tabella non è direttamente trattabile, è necessario fare del pre-processing!
Filtro StringToWordVector • Se si utlizza come tokenizer N-Gramm Tokenizer saranno generati un numero di attributi pari al numero di N-Grammi estratti • Il valore della colonna sarà pari ad 1 o 0 in base alla presenza/assenza di quel N-Gramma all’interno del documento • Utilizzando il filtro è altresì possibile specificare lo stemmer da usare per la fase di estrazione
Filtro StringToWordVector cleaning Stemming No stoplist
NumericToBinary Filter • Gli attributi così estratti si presentano come attributi numerici • Per proseguire con l’analisi è necessario trasformarli in attributi del tipo corretto ossia binari • Per l’esecuzione di questa trasformazione utilizziamo il filtro NumericToBinary
Estrazione degli attributi più promettenti • Anche in questo caso è necessario ridurre il numero di attributi/NGrammi a disposizione, in quanto alcuni poco significativi al fine dell’analisi in corso • Per operare questa operazione è possibile utilizzare un particolare filtro di Weka, l’AttributeSelectionFilter
Estrazione degli attributi più promettenti • Ha 2 parametri: • Indice di qualità da utilizzare per valutare i sotto-insiemi; • Metodo di ricerca da utilizzare.
Che algoritmo utilizzare? • Le operazioni viste finora sono le operazioni necessarie per poter iniziare l’analisi • Da nostre sperimentazioni risultano particolarmente efficaci modelli probabilistici • Sta a voi scegliere il modello che riteniate maggiormente indicato per il caso in questione
Meccanismo di sottomissione dei modelli • Il meccanismo di sottomissione dei modelli è unico ed indipendente dal tool che lo studente deciderà di usare: • Verrà consegnato un dataset NON ETICHETTATO (test set); • Lo studente applicherà il modello estratto sul training al test set generando una colonna con la predizione; • Il test set così etichettato dovrà essere caricato sul sito del torneo.
Concetti/NGrammi • Tra il materiale disponibile è possibile scaricare un file xls di associazione tra gli N-Grammi e dei possibili concetti individuati di esperti di dominio • In particolare la presenza in un dato documento di un certo n-gramma indica che quel concetto è presente nel documento • Ogni concetto può essere associato ad uno o più N-Grammi • L’utilizzo dei concetti potrebbe permettere di migliorare l’accuratezza predittiva
Modelli avanzati • E’ possibile aumentare la qualità del modello? • Possiamo in qualche modo sfruttare la conoscenza fornita dalle tuple ‘unknown’? • Si! Es. Self-training
Self training • Sfruttare le tuple ‘unknown’ per migliorare la qualità del nostro modello • Da cosa partiamo? • modello addestrato sul training set • Classifichiamo con il modello generato le tuple ‘unknown’ • Scegliamo una politica di selezione delle nuove tuple classificate e quindi le uniamo a quelle già presenti nel train • Creiamo un nuovo modello in base al nuovo training set così generato • Ripetiamo questi passi fino al punto fisso Self training
Self training: algoritmo generale • Input:L è il training set dei dati etichettati, U è l’istanza dei dati non etichettati, C è il classificatore istruito, t è il numero delle iterazioni, Θ è il numero delle istanze non etichettate selezionate nella prossima iterazione, M è la metrica di selezione, S(Ut ,Θ ,C , M) è la funzione di selezione, e maxIteration è il numero massimo di iterazioni • Inizialmente: t=0, Lt=L , Ut =U , dove Lt e Ut rappresentano le istanze etichettate e non etichettate alla iterazione t. • Passi dell’algoritmo: • istruisci C su Lt; • St= S(Ut ,Θ ,C , M) , dove St è l’istanza dei dati non etichettati selezionati al passo t • Ut+1=Ut-St ; Lt+1=Lt+St ; • FinchéUt è vuota, oppure abbiamo raggiunto il numero massimo di iterazioni. Politica di selezione
Self training: come selezioniamo le tuple unknown • Non tutte le istanze Unknown sono utili! Pericolo “rumore” • Un approccio possibile: ad ogni passo vogliamo le tuple più “vicine al train set” • Es. Concetto di vicinanza: % di matching del numero di ngrammi in un documento