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


Stemming: individuazione della radice morfologica
della parola


(;,:,?,@,#,,, ecc..)
(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
File
testo
classe
907792215990.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
………………………
….
……………………..
……………………
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: Txt Documents
Acquisition
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.
Acquisizione
I dati
Distribuzione sui dati

Senza considerare i documenti non etichettati
la distribuzione per le classi è la seguente:
Valore di
classe
Yes
No
Numero di Percentuale
righe
1766
59,62 %
1196
40,38 %
Distribuzione sui dati
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 Ngramma (event) compare nel documento
acquisito;
Length: indica la lunghezza dell’N-gramma.
Statistiche sugli Eventi
Estrazione degli N-gramma:
StringToNGramm Filter
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.
Estrazione degli N-gramma più
promettenti
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
Rimozione campo Document
Name
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
Risultati del modello cross
validato
Matrice di Confusione

La matrice di confusione per il modello
cross-validato sembra molto promettente
Real/Predicted
no
yes
no
3899
51
yes
89
1886
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
Applicazione del modello sul
test set
Risultati del modello sul test
set
Matrice di Confusione

La matrice di confusione risultante
dall’applicazione del modello al test set è
la seguente
Real/Predicted
no
yes
no
4108
291
yes
592
1033
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/TextDirector
yToArff.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ù NGrammi

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
1.
2.
3.
4.
5.
6.
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