Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

46
Analisi di un dataset di perizie assicurative Esercitazione Data Mining

Transcript of Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

Page 1: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

Analisi di un dataset di perizie assicurative

Esercitazione Data Mining

Page 2: 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

Page 3: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

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

Page 4: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

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..)

Page 5: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

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

Page 6: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

Acquisizione

Documenti testualiDatabase

File testo classe907792215990.txt

I am to subro….

yes

908156218234.txt

Rec subro file…

yes

……………………….. ………………………

………………….

100402235301.txt

No subro file… no

101940233469.txt

Receive subro…

no

…………………………

………………………

………………….

907792215990.txt

Subro receive….

unknown

908156218234.txt

Go to place…. unknown

………………………….

……………………..

……………………

Page 7: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

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!

Page 8: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

Acquisizione: Txt Documents Acquisition

Page 9: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

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.

Page 10: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

Acquisizione

Page 11: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

I dati

Page 12: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

Distribuzione sui dati Senza considerare i documenti non etichettati la

distribuzione per le classi è la seguente:

Valore di classe

Numero di righe

Percentuale

Yes 1766 59,62 %

No 1196 40,38 %

Page 13: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

Distribuzione sui dati

Page 14: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

Bilanciamo i dati

Facciamo oversampling Inseriamo nel workflow un filter

resample Size: 2.0 Bias: 2:1

Page 15: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

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

Page 16: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

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;

Page 17: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

StringToNGramFilter La lista di caratteri da usare per la

suddivisione in token del testo; La lista delle stop word da utilizzare.

Page 18: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

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.

Page 19: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

Statistiche sugli Eventi

Page 20: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

Estrazione degli N-gramma: StringToNGramm Filter

Page 21: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

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.

Page 22: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

Estrazione degli N-gramma più promettenti

Page 23: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

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

Page 24: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

Rimozione campo Document Name

Page 25: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

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

Page 26: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

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

Page 27: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

Risultati del modello cross validato

Page 28: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

Matrice di Confusione

Real/Predicted no yes

no 3899 51

yes 89 1886

La matrice di confusione per il modello cross-validato sembra molto promettente

Page 29: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

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

Page 30: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

Applicazione del modello sul test set

Page 31: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

Risultati del modello sul test set

Page 32: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

Matrice di Confusione

Real/Predicted no yes

no 4108 291

yes 592 1033

La matrice di confusione risultante dall’applicazione del modello al test set è la seguente

Page 33: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

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

Page 34: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

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!

Page 35: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

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

Page 36: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

Filtro StringToWordVector

No stoplist

cleaning

Stemming

Page 37: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

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

Page 38: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

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

Page 39: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

Estrazione degli attributi più promettenti

Ha 2 parametri: Indice di qualità da utilizzare per

valutare i sotto-insiemi; Metodo di ricerca da utilizzare.

Page 40: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

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

Page 41: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

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.

Page 42: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

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

Page 43: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

Modelli avanzati

E’ possibile aumentare la qualità del modello?

Possiamo in qualche modo sfruttare la conoscenza fornita dalle tuple ‘unknown’? Si! Es. Self-training

Page 44: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

1. Sfruttare le tuple ‘unknown’ per migliorare la qualità del nostro modello

2. Da cosa partiamo?• modello addestrato sul training set

3. Classifichiamo con il modello generato le tuple ‘unknown’

4. Scegliamo una politica di selezione delle nuove tuple classificate e quindi le uniamo a quelle già presenti nel train

5. Creiamo un nuovo modello in base al nuovo training set così generato

6. Ripetiamo questi passi fino al punto fissoSelf training

Self training

Page 45: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

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.

Self training: algoritmo generale

Politica di selezione

Page 46: Analisi di un dataset di perizie assicurative Esercitazione Data Mining.

• 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

Self training: come selezioniamo le tuple unknown