Analisi di Metriche e Algoritmi per la Qualit`a dei Dati. Progettazione

UNIVERSITÀ DEGLI STUDI DI MILANO - BICOCCA
Dipartimento di Informatica Sistemistica e Comunicazione
Facoltà di Scienze Matematiche, Fisiche e Naturali
Corso di Laurea in Informatica
Analisi di Metriche e Algoritmi
per la Qualità dei Dati.
Progettazione e Realizzazione di un Framework
per l’Assessment della Qualità.
Docenti:
Prof. Carlo BATINI
Ing. Andrea MAURINO
Dott. Daniele BARONE
Corso di Sistemi Informativi
Esercitazione di Laboratorio
Anno Accademico 2006-2007
Indice
1 Realizzazione di un Framework per la valutazione della qualità
dei dati
2
1.1 Obiettivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.2 Strumenti da Utilizzare . . . . . . . . . . . . . . . . . . . . .
2
1.3 Funzionalità offerte e Struttura del Framework . . . . . . . .
3
1.3.1 Funzionalità . . . . . . . . . . . . . . . . . . . . . . . .
3
1.3.2 Struttura . . . . . . . . . . . . . . . . . . . . . . . . .
4
1.4 Specifiche per le Metriche da Implementare nel Framework .
4
1.4.1 Completezza . . . . . . . . . . . . . . . . . . . . . . .
4
1.4.2 Accuratezza Sintattica . . . . . . . . . . . . . . . . . .
7
1.5 Localizzazione e Correzione di Errori . . . . . . . . . . . . . . 14
1.5.1 Il Framework: Attività di Localizzazione e Correzione 14
A Appendice: Close Word Assumption
18
B Accuratezza
20
C Funzioni di Similarità
C.1 Principali Funzioni di Similarità
Bibliografia
21
. . . . . . . . . . . . . . . . 21
24
1
Capitolo 1
Realizzazione di un
Framework per la valutazione
della qualità dei dati
1.1
Obiettivi
Lo scopo dell’esercizio è la realizzazione di un framework che permetta
l’assessment della qualità dei dati di uno specifico database. In letteratura [1], il numero di dimensioni di qualità presenti è molto elevato, il framework che si vuole sviluppare deve implementare le seguendi dimensioni di
qualità: la completeness e la syntactic accuracy.
1.2
Strumenti da Utilizzare
Il framework deve esser realizzato utilizzando tecnologie e strumenti di
sviluppo open source; in particolare, il linguaggio di programmazione Java [23] con l’ausilio di un’ambiente di sviluppo integrato (IDE) quale Eclipse [20];
e come Database management system (DBMS) il DMBS relazionale MySQL [19].
Con il linguaggio Java sarà possibile utilizzare librerie esterne open
source che svolgono un ruolo importante, elenchiamole:
• Java Database Connectivity (JDBC) [24]: le API per la connessione
indipendente ai database tra un programma in linguaggio Java e una
vasta gamma di database, tra cui MySQL. Forniscono API per l’accesso tramite il linguaggio SQL. Nel framework è utilizzata per la
connessione al database MySQL e per tutti gli accessi e gestione dei
dati ricavati dal database.
• SimMetrics [25]: è una libreria Java open source per funzioni di similarità o distanza, ad esempio Levenshtein distance; tutte le funzioni
2
CAPITOLO 1. REALIZZAZIONE DI UN FRAMEWORK PER LA VALUTAZIONE DELLA QUAL
forniscono un risultato compreso tra 0 e 1. Nel framework è utilizzata in alcune metriche per fornire le funzioni di similarità utili
all’assessment della dimensione.
• JFreeChart [26]: è una libreria Java open source che fornisce classi
per lo sviluppo di diagrammi professionali; supporta molti tipi di diagrammi e di output tra cui componenti Swing, file immagine (PNG
e JPEG), file di grafica vettoriale (EPS, PDF e SVG). Nel framework
è utilizzata per la creazione di grafici a torta, per la visualizzazione
grafica dei risultati. OPZIONALE: Questa libreria si utilizza solo nel
caso si volesse approfondire l’esercizio e si volesse visualizzare i risultati
attraverso opportuni grafici (es. istogrammi, torte, etc.).
1.3
Funzionalità offerte e Struttura del Framework
In questo paragrafo forniamo una breve descrizione delle funzioni che il
framework deve offrire e della sua struttura (ovvero le principali classi Java
che devono esser definite).
1.3.1
Funzionalità
Connessione:
La prima funzione che deve essere offerta è la connessione/disconnesione
al/dal database sul quale deve essere effettuato l’assessment della qualità.
E’ possibile scegliere un qualsiasi database relazionale ma è consigliato l’utilizzo del DBMS MySQL. OPZIONALE: Se si vogliono memorizzare i risultati dell’attività di assessment sara necessario creare una conessione ad uno
specifico database che contenga questi risultati.
Informazioni Generali Database:
Questa funzione permette di visualizzare informazioni generali sul database.
Le informazioni relative al database sono ad esempio (i) il numero e il
nome delle tabelle che contiene, e (ii) per ogni tabella il numero, il nome e
il tipo degli attributi che essa contiene.
Valutazione e Visualizzazione dei Risultati:
Sono presenti le funzioni per la valutazione delle dimensioni di qualità
a diversi livelli di granularità (singoli valori, tuple, attributi, tabelle e intero database) e loro visualizzazione. La visualizzazione può esser effettuata attraverso interfaccia testuale cosi come la scelta delle funzionalità. Le
specifiiche per la valutazione delle dimensioni della qualità sono trattate nei
paragrafi successivi.
CAPITOLO 1. REALIZZAZIONE DI UN FRAMEWORK PER LA VALUTAZIONE DELLA QUAL
1.3.2
Struttura
Il framework è organizzato in due livelli, un livello di front-end che rappresenta ciò che vede l’utente, ovvero l’interfaccia grafica testuale con la scelta
delle funzionalità. Un livello di back-end che costituisce il framework vero e
proprio, costituita dagli algoritmi e dalla connesione al database. Nel seguito viena fornita una breve descrizione delle principali classi Java che devono
comporre il framework:
• MainWindow.java: è una classe fondamentale e realizza l’interfaccia
principale del framework.
• Completeness.java: classe per l’implementazione delle metriche della
dimensione completezza.
• FrequencySynAcc.java: classe per l’implementazione della metrica della dimensione accuratezza sintattica dell’attributo, basata sulla frequenza dei valori.
• SyntacticAccuracy.java: classe per l’implementazione della metrica
della dimensione accuratezza sintattica dell’attributo, basata sulla lookup
table.
• RecordLinkage.java: classe per l’implementazione della metrica dell’accuratezza sintattica di tuple e relazione.
1.4
Specifiche per le Metriche da Implementare
nel Framework
In questo paragrafo vengono illustrate le dimensioni che devono esser considerate nel framework; per ognuna di esse vengono analizzate le relative
metriche da implementare.
1.4.1
Completezza
La dimensione completezza è calcolata nei seguenti livelli di granularità:
• Relazione
• Attributo
• Tupla
La metrica è basata sull’assunzione del modello a valori nulli e rispetta
la closed world assumption CWA, spiegata in dettaglio nell’ Appendice A.
La valutazione della completezza avviene utilizzando una delle tre forme
CAPITOLO 1. REALIZZAZIONE DI UN FRAMEWORK PER LA VALUTAZIONE DELLA QUAL
funzionali [4] (Simple Ratio, Min or Max Operation, Weighted Average); si
propone l’utilizzo della Simple Ratio illustrata di seguito.
L’algoritmo utilizzato nel framework deve basarsi sulla combinazione del
modello a valori nulli, dell’assunzione CWA e della forma simple ratio.
Simple Ratio
La simple ratio, ovvero il rapporto semplice misura il rapporto tra i risultati
desiderati e il numero totale di risultati (prima forma); tuttavia una forma migliore è il numero di risultati non desiderati diviso il numero totale,
sottratto a uno (seconda forma). Il simple ratio aderisce alla convenzione
che 1 rappresenta il risultato migliore e 0 quello peggiore.
Le due forme di simple ratio, risultati non desiderati e risulati desiderati,
danno le stesse informazioni ma nella pratica si preferisce un rapporto che
mostra i risultati positivi, quindi la seconda forma, poichè questa forma è
utile per confronti longitudinali che mostrano tendenze di miglioramento.
Per quanto riguarda la completezza, questa dimensione può essere vista
da diverse prospettive che implicano metriche diverse. Ad un livello di massima astrazione, si può definire il concetto di completezza dello schema che
esprime il grado con cui entità e attributi risultano presenti nello schema.
Al livello dei dati si può definire la completezza della colonna come funzione
dei valori mancanti in una colonna della tabella. Un terzo tipo di metrica è
chiamata completezza della popolazione. Se una colonna deve contenere almeno un’occorrenza di tutti i 50 possibili stati (valori), ma, per esempio, ne
contiene solo 43 stati, abbiamo che la popolazione è incompleta. Ciascuna
di queste tre metriche può essere misurata tramite il rapporto tra il numero
di oggetti incompleti e il numero totale e successivamente sottraendolo a
uno.
Completezza Attributo
Dopo aver selezionato l’attributo della relazione sul quale effettuare la misurazione, l’algoritmo inizia la ricerca dei valori nulli: inizializza a zero un
contatore, per ogni tupla della relazione controlla il corrispondente valore
dell’attributo, se risulta nullo, incrementa il contatore. Al termine della
ricerca il contatore conterrà il numero di valori nulli relativi all’attributo.
Successivamente viene applicato il simple ratio, riportandoci alla terminologia, i valori nulli rappresentano i risultati non desiderati, il numero di tuple
della relazione il totale dei risultati; viene effettuato il rapporto tra i valori
nulli e il numero di tuple e dopo sottratto a uno. Il risultato è un valore
compreso tra 0 e 1 che viene espresso in percentuale moltiplicandolo per 100.
Questo tipo di completezza è chiamata anche completezza verticale.
In formula:
Nvn
CA = 1 −
Nt
CAPITOLO 1. REALIZZAZIONE DI UN FRAMEWORK PER LA VALUTAZIONE DELLA QUAL
dove CA è la completezza dell’attributo, Nvn è il numero di valori nulli e Nt
è il numero di tuple.
Completezza Relazione
Effettuata la scelta della relazione, l’algoritmo anche in questo caso ricerca
i valori nulli, però riferendosi all’intera relazione, infatti per ogni attributo
viene conteggiato il numero di valori nulli e poi effettuata una somma totale
che rappresenta il numero di valori nulli dell’intera relazione. A questo punto
viene utilizzata la prima forma del simple ratio, il rapporto è tra i risultati
desiderati, numero valori non nulli (ricavato dalla differenza tra il totale dei
valori e il numero di nulli), e il totale dei risultati ovvero il numero massimo
di valori che una relazione potenzialmente può contenere che corrisponde
alla grandezza della relazione data dal prodotto tra il numero di attributi
per il numero di tuple.
Questo tipo di completezza è chiamata anche completezza orizzontale.
In formula:
Nvnn
CR =
N
dove CR è la completezza della relazione, Nvnn è il numero di valori non
nulli e N è il numero massimo di valori possibili per la relazione.
Completezza Tupla
L’algoritmo, scelta la relazione, restituisce per ogni tupla il valore di completezza con una singola misurazione. Vediamo come lavora in dettaglio.
Prendiamo in considerazione il caso di una singola tupla, visto che il calcolo
si ripete in modo uguale sulle altre; la completezza è misurata tramite la
seconda forma del simple ratio. Prima di tutto vengono analizzati i valori di
tutti i campi della tupla e calcolato il numero di valori nulli, dopo viene effettuato il rapporto tra questo numero e il totale di attributi della relazione,
il rapporto viene poi sottratto a uno.
Facciamo alcune considerazioni. La misurazione effettuata dall’algoritmo
può essere vista come una misura dell’informazione contenuta attualmente,
rispetto alla massima informazione che una tupla potenzialmente può contenere, questo implica che tutti i valori della tupla contribuiscono allo stesso
modo nel determinare il valore di completezza ovvero tutti gli attributi hanno lo stesso peso, questo è il nostro caso ma è possibile che gli attributi
abbiamo pesi differenti e contribuiscano in modo diverso al risultato finale,
questo perchè un valore nullo in un attributo è più importante che in un
altro. OPZIONALE: Modificare l’algoritmo in modo che permetta la valutazione pesata.
In formula:
Nvn
CT = 1 −
Na
CAPITOLO 1. REALIZZAZIONE DI UN FRAMEWORK PER LA VALUTAZIONE DELLA QUAL
dove CT è la completezza della tupla, Nvn è il numero di valori nulli e Na
è il numero di attributi.
1.4.2
Accuratezza Sintattica
La dimensione accuratezza, come è possibile notare dalla letterarura presente, si divide in accuratezza semantica e accuratezza sintattica. L’accuratezza semantica spesso non è direttamente valutabile in quanto necessità
di un confronto diretto con il mondo reale. L’accuratezza sintattica al contrario è più facilmente valutabile, anche se la sua valutazione non è proprio
diretta, nel senso che, riferendoci al modello relazione, il risultato non è ottenibile analizzando i soli valori della relazione ma necessità di informazioni
aggiuntive che assumono un ruolo importante nella valutazione, come vedremo in seguito nel dettaglio degli algoritmi. Si è cercato di trovare algoritmi in grado di svincolare la valutazione da queste informazioni aggiuntive
ma sono state trovate poche soluzioni alternative, la consultazione di queste
informazioni durante il calcolo per alcune metriche è indispensabile.
Definiamo meglio il concetto, dalla definizione di accuratezza sintattica
(si veda Appendice B)si capisce come si rende necessaria la presenza di un
dominio di definizione D in modo da poter calcolare la vicinanza tra un valore
v e gli elementi del corrispondente dominio D. Dal punto di vista implementativo, il dominio può essere visto come una sorgente dati di riferimento
che viene consultata durante la valutazione, chiameremo questo dominio,
LookUp Table, in modo da mettere in evidenza la sua implementazione
tramite tabelle relazionali e la sua funzione di consultazione (dall’inglese
lookup, consultare).
Funzioni di Similarità
E’ noto che le metriche per l’accuratezza sintattica si basano sull’utilizzo
di funzioni di similarità che valutano la distanza tra un valore v e gli elementi del dominio. Esistono molte funzioni [13], ad esempio distanza di
edit, distanza pesata, soundex, distanza con peso basato sulla frequenza e
molte altre, approfondiremo le funzioni esistenti nell’Appendice C. In questo
paragrafo ci si concentrerà su due in particolare che possono essere utilizzate
negli algoritmi: la Jaro e la Soundex.
• Jaro: Introduce una funzione di confronto tra stringhe che tiene conto
di inserimenti, cancellazioni e trasposizioni. L’algoritmo di Jaro cerca
il numero di caratteri comuni e il numero di caratteri trasposti nelle due
stringhe. Un carattere comune è un carattere che appare in entrambe
le stringhe con una distanza pari alla metà della lunghezza della stringa
più corta. Un carattere trasposto è un carattere comune che appare
in posizioni differenti. Come esempio consideriamo le stringhe Smith
CAPITOLO 1. REALIZZAZIONE DI UN FRAMEWORK PER LA VALUTAZIONE DELLA QUAL
e Simth, ci sono cinque caratteri comuni, due dei quali sono trasposti.
La scala di confronto tra le stringhe per Jaro è data da:
f (s1 , s2 ) =
Nc
lengthS1
+
Nc
lengthS2
Nt
+ 0.5 N
c
3
dove s1 e s2 sono stringhe di lunghezza lengthS1 e lengthS2 rispettivamente, Nc è il numero di caratteri comuni tra le due stringhe (dove
la distanza per caratteri comuni è la metà della lunghezza minima di
s1 e s2 e Nt è il numero di trasposizioni).
• Soundex: Lo scopo della funzione soundex è quello di raggruppare
nomi che hanno suoni simili. Produce un codice, detto codice soundex.
Per esempio il codice soundex di Hilbert e Heilbpr è simile. Un codice
soundex contiene di regola quattro caratteri. La prima lettera del nome
diventa il primo carattere del codice, i restanti tre caratteri sono dati
dall’ordine sequenziale del nome, consultando una tabella predefinita.
Per esempio il codice soundex di Hilbert e Heilbpr è H416. Una volta
che il limite di quattro caratteri è raggiunto, le restanti lettere vengono
ignorate.
La Dimensione Accuratezza Sintattica è calcolata nei seguenti livelli di
granularità:
• Attributo
• Tupla
• Relazione
Accuratezza Sintattica Attributo
Per l’accuratezza sintattica dell’attributo vengono proposte due metriche,
la prima si basa sul concetto di lookup table e la seconda sul concetto di
frequenza dei valori.
Per quanto riguarda la prima metrica, si assume che esista la lookup table relativa all’attributo che si vuole dare in input all’algoritmo. La lookup
table è definita una relazione composta da due campi: un campo chiave
contenente i valori che rappresentano gli elementi del dominio, un campo
opzionale frequenza che indica la frequenza assoluta con cui quel valore è
di solito presente in scenari reali(ad esempio il nome Mario è molto più frequente del nome Gilberto). Un esempio di lookup table relativa al dominio
dei nomi può essere:
CAPITOLO 1. REALIZZAZIONE DI UN FRAMEWORK PER LA VALUTAZIONE DELLA QUAL
Nome Persona
Luca
Marco
Paolo
Giacomo
John
Frequenza
60
50
35
25
5
Dopo queste informazioni preliminari, vediamo in dettaglio l’algoritmo.
La prima operazione che viene effettuata è quella di dividere i valori dell’
attributo accurati da quelli non accurati (prima analisi), che saranno poi
sottoposti ad un ulteriore analisi; ogni valore v dell’attributo viene confrontato con tutti i valori v’ della lookup table, se risulta v = v’ allora v può
considerarsi accurato in quanto presente nel dominio, se v non corrisponde
a nessun v’ allora entra a far parte dell’insieme dei valori non accurati, da
analizzare nuovamente. Su questo insieme facciamo una considerazione, esso
contiene quei valori v che evidentemente dopo la prima analisi non risultano
nel dominio, tutto quello che si può fare e una seconda analisi di vicinanza
di questi v a quelli del dominio, con la speranza che il più vicino sia il valore che v vuole rappresentare con l’eccezione che v ha al suo interno degli
errori sintattici. Riprendendo la descrizione, viene inizializzato e incrementato un contatore per i valori non accurati. A questo punto entra in gioco la
funzione di similarità Jaro, ogni valore non accurato viene confrontato con
tutti i valori della lookup table tramite la funzione, per ogni confronto viene
restituito un valore di similarità compreso tra 0 e 1, tra tutti viene preso
il massimo valore di similarità e contemporaneamente viene memorizzato il
valore della lookup table più vicino. Questo procedimento viene ripetuto
per ogni valore non accurato, come detto in precedenza. Ogni valore non
accurato avrà quindi associato un valore di similarità e il relativo valore del
dominio più vicino.
Questo è un primo risultato che l’algoritmo restituisce, ovvero un accuratezza sintattica relativa ad ogni valore dell’attributo. Un secondo risultato è
relativo all’accuratezza dell’attributo nel suo complesso che viene calcolato
con la seconda forma del simple ratio, il rapporto tra il totale di valori non
accurati e il numero di tuple della relazione, sottratto a uno.
La seconda metrica è basata sulla frequenza dei valori e svincola completamente la valutazione dalla presenza di una lookup table per l’attributo.
Tutto quello che viene fatto è un’analisi dei valori con l’utilizzo questa volta
di due funzioni di similarità. Il dominio di definizione Df viene costruito
dall’algoritmo; non è un dominio di possibili valori per l’attributo, come
ad esempio, il dominio dei nomi di persona, ma è un dominio di confronto,
ovvero un insieme costruito dall’algoritmo e utilizzato per confrontare i valori.
Procediamo con la descrizione.
Si analizzano i valori dell’attributo e per ognuno si contano le occorren-
CAPITOLO 1. REALIZZAZIONE DI UN FRAMEWORK PER LA VALUTAZIONE DELLA QUAL
ze; si passa alla creazione del dominio Df: i valori con numero di occorrenze
maggiore o uguale a 2 (l’algoritmo deve permettere la parametrizzazione del
valore) entrano a far parte di Df, i valori con numero di occorrenze pari a
1, vengono considerati valori a bassa frequenza che indichiamo con vlf (low
frequency value) e vengono analizzati. Ogni vlf viene confrontato con ogni
elemento di Df tramite la funzione di similarità Jaro; ogni operazione di
confronto restituisce un risultato e tra tutti questi viene preso il massimo
che indichiamo con maxsv (max similatity value) e contemporaneamente il
valore di Df più vicino che chiamiamo vcl (close value). Si analizza maxsv
e se risulta maggiore di una soglia posta a 0.8, vlf risulta accurato sintatticamente e può esser considerato un valore di Df ammissibile. Se invece
maxsv è minore o uguale a 0.80, vlf viene analizzato tramite la funzione di
similarità Soundex che prende come secondo argomento vcl.
Facciamo una considerazione sui valori di soglia 2 e 0.8. Il valore 2 che
permette di creare il dominio Df, è stato scelto in quanto si è pensato al
fatto che un valore, presente come minimo due volte, può esser considerato
“corretto”, invece se presente una volta può darsi che sia un valore uguale
a quelli presenti ma con errori al suo interno oppure un valore “corretto”.
Il valore 0.8 è frutto di prove sperimentali sulla funzione di distanza Jaro.
Abbiamo notato che con similarità uguali o superiori a 0.8, due valori possono esser considerati simili con buona probabilità, invece con valori minori
di 0.8 si ha una scarsa probabilità.
La scelta della funzione soundex non è casuale, proprio per le sue caratteristiche di raggruppare nomi con suoni simili, a questo stadio della misurazione in cui abbiamo dopo una prima analisi dei valori considerati non
accurati ma con una piccola probabilità che essi siano dei valori del dominio
con almeno uno o più errori sintattici, permette di scoprire con un margine
di errore accettabile se due valori rappresentano o meno lo stesso oggetto
del mondo reale, nel caso dei nomi, ad esempio, permette di arrivare alla
conclusione che palo e paolo sono lo stesso nome di una persona con nome
proprio paolo e che palo è un nome con un evidente errore sintattico. Quindi, la funzione soundex permette di verificare se vlf è vcl a meno di qualche
errore di accuratezza, oppure se vlf non è vcl e quindi vlf è accurato ed
un valore ammissibile di Df. Al termine dell’applicazione di questa seconda
funzione si avrà un insieme di valori non sintatticamente corretti.
Infine si procede col determinare il valore dell’accuratezza sintattica dell’attributo tramite la seconda forma del simple ratio che effettua il rapporto
tra il numero di valori non accurati e il numero totale di valori, sottratto a
uno.
Accuratezza Sintattica Tuple
La misurazione dell’accuratezza sintattica a questo livello di dettaglio si
differenzia molto dal livello dell’attributo, la metrica che deve essere imple-
CAPITOLO 1. REALIZZAZIONE DI UN FRAMEWORK PER LA VALUTAZIONE DELLA QUAL
mentata prevede due fasi, una prima fase di configurazione della misurazione
e una seconda che coincide con la misurazione vera e propria. L’algoritmo
si ispira alla tecnica del Record Linkage.
Il problema del Record Linkage, conosciuto anche come record matching o meglio object identification problem, consiste nell’identificare se due
record o tuple che non corrispondono tra loro accuratamente, possono tuttavia riferirsi allo stesso oggetto del mondo reale.
Per fare questo e per capire se due record in due database sono tra loro
equivalenti, si deve definire una funzione che misura la distanza tra i due
record; un caso, che è quello adattato nel framework, è che il record con
cui fare il confronto si trovi in una sorgente dati (relazione) diversa, che si
suppone contenga le stesse tuple, ma corrette. La indicheremo sempre con
il nome lookup table.
Un tipico algoritmo di record linkage si sviluppa nei seguenti passi:
1. Normalizzazione dei formati: riorganizza i record e i valori secondo un
formato standard e comune;
2. Blocking con riduzione dello spazio di ricerca;
3. Scelta della formula di distanza;
4. Per un campione di record già accoppiati, calcola per ogni valore di
distanza la frequenza di matching e non matching;
5. Scelta, a partire dalla distribuzione di cui al punto 4 di due distanze
di soglia min e max.
Prima Fase: Configurazione della misurazione
Ispirandoci alla tecnica del record linkage, come detto in precedenza si
rende necessaria una lookup table, di fondamentale importanza per effettuare il confronto. Con riferimento all’algoritmo sopra riportato, questa
fase potrebbe definirsi anche di normalizzazione dei formati.
In ana prima possibile versione dell’algoritmo la lookup table assume la
forma di una relazione identica a quella da valutare e contenente i valori
corretti.
Una considerazione può essere fatta a questo punto. La parola identica
implica che la lookuptable oltre a contenere gli stessi valori, però corretti,
deve avere anche la stessa struttura ovvero lo stesso numero di attributi e
perfino nello stesso ordine. Per svincolare la valutazione dalle strutture delle
relazioni è necessario una fase di configurazione, in cui definire sia per la relazione che per la lookup table, gli attributi che comporanno la struttura,
tutti o un sottoinsieme e anche l’ordine; in questo modo l’utente non deve
avere una lookup table identica ma simile e può adattare la struttura di una
all’altra.
CAPITOLO 1. REALIZZAZIONE DI UN FRAMEWORK PER LA VALUTAZIONE DELLA QUAL
Facciamo un esempio, prendiamo in considerazione il caso degli indirizzi,
data la seguente relazione
ID
1
Tipo
Corso
Nome
Vittorio Emanuele
Città
Milano
Provincia
Mi
nel caso di lookup table identica, l’algoritmo per funzionare dovrebbe consultare una relazione come la seguente
Key
1
Dug
Corso
Name
Vittorio Emanuele
Comune
Milano
Provincia
Mi
notiamo che i vincoli per il corretto funzionamento sono: ugual numero
e stesso ordine di attributi. Il nome degli attributi è irrilevante. Altro vicolo
importante è che anche la chiave primaria delle relazioni deve essere la stessa
ovvero dello stesso tipo, ad esempio numerica (Integer), questo molto spesso
non è possibile.
Con la procedura di configurazione, la misurazione diventa più flessibile e
possono essere prese in considerazione diverse strutture di lookup table. Facciamo alcuni esempi
TipoNome
Corso Vittorio Emanuele
Città
Milano
Provincia
Mi
oppure
ID
3
Indirizzo
Corso Vittorio Emanuele Milano Mi
Inoltre, con la prima versione non è possibile scegliere un sottoinsieme di
attributi ma, bisogna considerare tutti gli attributi della relazione, inclusa
la chiave primaria. Al contrario, con la seconda versione è possibile far si
che i campi che compongono la tupla non siano tutti, ma un sottoinsieme
scelto.
Seconda Fase: Misurazione
L’algoritmo, da sviluppare per verificare il grado di vicinanza di una tupla
con la tupla corrispondente nella lookup table, si articola nei seguenti passi:
1. si concatenano in un unico campo, dopo aver rimosso gli spazi vuoti,
tutti i valori degli attributi della tupla da valutare e si effettua la
medesima operazione per la tupla della lookup table. La rimozione
degli spazi vuoti serve ad evitare eventuali problemi connessi ai differenti formati di acquisizione delle informazioni in fase di inserimento,
che possono anche non prevedere la possibilità d’includere spazi;
2. si definisce una lunghezza prefissata, ad esempio 3(l’algoritmo deve
CAPITOLO 1. REALIZZAZIONE DI UN FRAMEWORK PER LA VALUTAZIONE DELLA QUAL
permettere la parametrizzazione di questo valore), e si individuano
nella stringa (ottenuta al passo 1) della tupla della lookup table tutte
le sottostringhe di tale lunghezza costituite da sequenze consecutive
di caratteri. Tale operazione viene effettuata anche per la tupla da
valutare.
3. si pone pari a 0 uno specifico contatore. Si adotta un algoritmo di
tipo sequenziale. Si considera la prima delle sottostringhe (identificate al passo 2) della tupla della lookup table e la si confronta in
modo sequenziale con ciascuna delle sottostringhe della tupla da valutare. Ogni volta che si verifica l’uguaglianza delle sottostringhe si
incrementa di uno un contatore. La sequenza viene iterata per la seconda sottostringa della tupla della lookup table, fino a considerare
l’ultima sottostringa. Ad ogni iterazione viene aggiornato il valore del
contatore;
4. l’indicatore complessivo di accuratezza sintattica per la generica tupla
i è ottenuto come rapporto tra il valore del contatore, calcolato al
passo precedente, e il numero di sottostringhe della tupla della lookup
table identificate al passo (2).
Facciamo una considerazione sulla lunghezza delle sottostringhe, che nel
framework è uguale a 3. Ispirandosi alla metodologia ISTAT, questo valore
è uguale a quello utilizzato nella metodologia. Ma la lunghezza in questione è
quella ottimale nel caso di dati toponomastici, ricavata da una serie di analisi
empiriche. Nel nostro caso non è propriamente ottimale ma al contempo
non sottostima l’accuratezza effettiva (la definizione della lunghezza ottima
richiede uno studio lungo e approfondito), infatti in alcuni casi, vengono
assegnati punteggi elevati di accuratezza per alcune tuple, che superano il
100%; ma questo inconveniente può esser superato in fase di visualizzazione
e report dei risultati, considerando inaccurate le tuple con valori minori di
100%.
I passi precedentemente descritti vengono effettuati per ogni tupla della
relazione, che viene confrontata con ogni tupla della lookup table. Come
valore di accuratezza sintattica viene preso il massimo valore prodotto dalla
serie dei confronti e allo stesso tempo deve esser tenuta traccia (per esser
visualizzata successivamente) della tupla della lookup table che è più vicina. Al termine dell’esecuzione dell’algoritmo si avrà un insieme di tuple
sintatticamente accurate, con valore pari al 100% e un insieme di tuple non
accurate, dove ognuna avrà il proprio valore di accuratezza e la relativa tupla
della lookup table più vicina.
Accuratezza Sintattica Relazione
La valutazione dell’accuratezza sintattica a questo livello di granularità, è
identica alla misurazione per le tuple, con un calcolo aggiuntivo. La pro-
CAPITOLO 1. REALIZZAZIONE DI UN FRAMEWORK PER LA VALUTAZIONE DELLA QUAL
cedura per le tuple, abbiamo detto che restituisce un insieme di tuple non
accurate, si considera la cardinalità di tale insieme ovvero il numero di tuple
non accurate della relazione e lo si divide per il numero totale di tuple, sottraendo il tutto a uno. Quello appena descritto non è altro che la seconda
forma del simple ratio.
1.5
Localizzazione e Correzione di Errori
Nell’ambito delle attività e delle tecniche per la DQ, è presente un attività
in particolare, relativa alla localizzazione e correzione degli errori. Questa
attività si rende utile ogni volta che si ha un insieme di dati proveniente da
una fonte di cui non si è certi dell’affidabilità. Gli errori nei dati possono
essere espressi attraverso un gran numero di dimensioni; per alcune sono
state fornite delle metriche di valutazione nei paragrafi precedenti. I metodi
di localizzazione e correzione dipendono dal tipo di dimensione che si vuole
analizzare e valutare.
1.5.1
Il Framework: Attività di Localizzazione e Correzione
Il framework svolge principalmente un’attività di assessment della qualità,
la fase successiva alla valutazione corrisponde a quella di miglioramento (improvement) attraverso la localizzazione e correzione degli errori che degradano
la qualità dei dati. Il framework svolge un attività di localizzazione e correzione degli errori per alcune dimensioni implementate, ovvero contemporaneamente alla misurazione vengono localizzati gli errori e le relative correzioni; ad esempio nel misurare l’accuratezza sintattica dell’attributo, viene
restituito il valore di accuratezza in percentuale e allo stesso tempo l’insieme
di valori non accurati e i relativi valori del domino più vicini, con i quali i
valori inaccurati potrebbero essere corretti.
In particolare, vedremo in dettaglio il caso, (i) per l’accuratezza sintattica dell’attributo con la metrica basata sulla frequenza dei valori, (ii) per
l’accuratezza sintattica dell’attributo con la metrica che utilizza la lookup
table e (iii) per l’accuratezza sintattica delle tuple con la metrica che utilizza la lookup table. La correzione implementata è una proposta di possibile
miglioramento che viene visualizzata e (OPZIONALE) memorizzata in un
database contenente tutti i risultati dell’attività di assessmente. Nel seguito verranno descritte per ogni dimensione le localizzazioni e le proposte di
possibili correzioni da implementare nel framework.
Accuratezza Sintattica
Nella misurazione dell’ accuratezza sintattica dell’attributo con la metrica
basata sulla frequenza dei valori, per ogni valore dell’attributo con frequenza bassa (frequenza relativa minore di 2) che risulta non accurato, secondo
CAPITOLO 1. REALIZZAZIONE DI UN FRAMEWORK PER LA VALUTAZIONE DELLA QUAL
la prima metrica di similarità Jaro, viene proposto un valore del “dominio
ricavato” (insieme di valori dell’attributo con frequenza relativa maggiore o
uguale a 2) che è il più vicino, per la seconda funzione di similarità Soundex,
al valore inaccurato. Chiariamo con un esempio. Supponiamo di avere una
relazione Impiegati illustrata in tabella 1.1,
NumeroImpiegato
0100
0200
0300
0400
0500
0600
0700
Nome
Jack
Jack
Paolo
Paolo
Palo
Steve
Paolo
Cognome
Murphy
Bauer
Rossi
Bianchi
Bow
Barrow
Baggio
email
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
Tabella 1.1: Relazione Impiegati
eseguiamo l’algoritmo sull’attributo Nome, il “dominio ricavato” è illustrato
in tabella 1.2, ed è l’insieme dei valori di Nome il cui numero di occorrenze
è maggiore o uguale a 2 (frequenza relativa maggiore o uguale a 2), ed è
utilizzato per il confronto tramite le funzioni di similarità; è differente dal
dominio dell’attributo Nome, insieme dei nomi, valori possibili che l’attributo può assumere.
Dominio Ricavato
Jack
Paolo
Frequenza Relativa
2
3
Frequenza Assoluta
2/7
3/7
Tabella 1.2: Dominio Ricavato dell’Attributo Nome
I valori dell’attributo con frequenza bassa sono Palo e Steve, ma solo Palo
risulta avere problemi di accuratezza, invece Steve è un valore possibile del
dominio. Appurato il problema di qualità l’algoritmo suggerisce che il valore
del dominio più vicino a Palo è Paolo e quindi una possibile correzione può
essere apportata. Una snapshot generica del framework è mostrata in figura
1.1.
Figura 1.1: Accuratezza sintattica attributo, metrica frequenza valori.
Nella misurazione dell’ accuratezza sintattica dell’attributo con la metrica
basata sull’utilizzo della lookup table, per ogni valore dell’attributo che non
appartiene al dominio dei possibili valori, rappresentato dalla lookup table,
quindi con probabili errori di accuratezza viene effettuato un confronto con
CAPITOLO 1. REALIZZAZIONE DI UN FRAMEWORK PER LA VALUTAZIONE DELLA QUAL
gli elementi del domino, tramite la funzione di similarità Jaro, per ricavare
il valore di accuratezza e il valore del dominio più vicino. Una snapshot del
framework è mostrata in figura 1.2.
Figura 1.2: Accuratezza sintattica attributo, metrica lookup table.
Nella misurazione dell’ accuratezza sintattica delle tuple con la metrica basata sull’utilizzo della lookup table, ogni tupla viene confrontata con le tuple
della lookup table e per tutte quelle non accurate viene fornito il valore
di accuratezza e la relativa tupla corretta. Una snapshot del framework è
mostrata in figura 1.3.
Figura 1.3: Accuratezza sintattica tuple.
Appendice A
Appendice: Close Word
Assumption
La completezza di una relazione può esser definita come il grado con il
quale la relazione rappresenta la corrispondente parte del mondo reale. Nel
modello relazionale, la completezza è definita in base a:
1. la presenza/assenza e significato dei valori nulli.
2. la validità di una delle due assunzioni chiamate rispettivamente open
world assumption e closed world assumption
In un modello con valori nulli, la presenza di un valore nullo ha il significato generale di valore mancante, ma è importante capire perchè tale valore
non è presente. I significati che si possono dare sono:
• il valore non è presente perchè esiste nel mondo reale ma non è conosciuto.
• il valore non è presente perchè non esiste in generale.
• il valore non è presente perchè potrebbe esistere ma attualmente non
si è a conoscenza del fatto che esista oppure no.
Nei modelli logici come quello relazionale, ci sono due assunzioni per
la completezza dei dati di una istanza r di relazione. La closed world assumption (CWA) indica che solo i valori attualmente presenti in una tabella
relazionale r e nessun altro valore rappresentano i fatti veri del mondo reale.
Nella open world assumption (OWA) non possimo indicare ne la verità ne
la falsità dei fatti non rappresentati nelle tuple di r.
Dalle quattro possibili combinazioni, considerare/non considerare i valori
nulli e OWA/CWA vengono fuori due casi:
1. modello senza valori nulli che rispetta OWA.
17
APPENDICE A. APPENDICE: CLOSE WORD ASSUMPTION
18
2. modello con valori nulli che rispetta CWA.
Nel modello con valori nulli che rispetta CWA, la completezza può esser
definita considerando la granularità degli elementi del modello: valore, tupla,
attributo e relazione come mostrato in figura A.1. E’ possibile definire:
Figura A.1: Completezza di differenti elementi del modello relazionale
• Completezza del Valore: rileva la presenza di valori nulli per alcuni
campi di una tupla.
• Completezza della Tupla: definita per una tupla, in base ai valori di
tutti i suoi campi.
• Completezza dell’Attributo: misura il numero di valori nulli di un
particolare attributo in una relazione.
• Completezza della Relazione: rileva la presenza di valori nulli in una
relazione.
Appendice B
Accuratezza
L’accuratezza è definita come la vicinanza tra un valore v e un valore v’,
considerato la corretta rappresentazione dell’evento del mondo reale che v
vuole rappresentare. Per esempio se il nome di una persona è John, il
valore v’ =John è corretto, invece il valore v =Jhn non è corretto. Esistono
due tipi di accuratezza chiamati rispettivamente, accuratezza sintattica e
accuratezza semantica.
L’accuratezza sintattica è la vicinanza di un valore v agli elementi del
corrispondente dominio di definizione D. Nell’accuratezza sintattica non si
è interessati a confrontare v con il vero valore v’ ; piuttosto, si è interessati
a controllare se v è uno dei valori in D. Ad esempio, se v =Jack, anche se
v’ =John, v è considerato sintatticamente corretto e Jack è un valore ammissibile nel dominio dei nomi di persona. Nel capitolo 3 vengono approfonditi i
metodi per misurare l’accuratezza sintattica, ma diamo uno sguardo generale
alle possibili misurazioni; si possono utilizzare delle funzioni di distanza che
valutano la distanza tra v e i valori in D, i vari tipi di funzioni sono descritte
in dettaglio nell’Appendice C. Consideriamo la tabella ?? introdotta precedentemente che descrive una relazione Movies, il valore Rman Holiday del
Title del movie 3 è sintatticamente inaccurato, in quanto non corrisponde
a nessun titolo di movie. Roman Holiday è il titolo di movie più vicino a
Rman Holiday.
L’accuratezza semantica è la vicinanza del valore v al vero valore v’.
Consideriamo nuovamente la relazione Movies mostrata in tabella ??. Lo
scambio di director per le tuple 1 e 2 è un esempio di errore di accuratezza
semantica. Per quanto riguarda la misurazione, mentre per l’accuratezza
sintattica è ragionevole utilizzare funzioni di confronto, per l’accuratezza
semantica è più accettabile un dominio come <corretto, non corretto> per
la sua misurazione. A differenza dell’accuratezza sintattica, la misurazione
di quella semantica di un valore v necessita che il vero valore di v sia noto.
L’accuratezza semantica è di solito più complessa da misurare.
19
Appendice C
Funzioni di Similarità
C.1
Principali Funzioni di Similarità
Le funzioni di similarità, specialmente quelle relative al confronto tra stringhe,
vengono elencate nel seguito. Vediamo le principali. Alcune, precisamante
la Jaro e la Soundex sono state approfondite precedentemente, in quanto
proposte per la realizzazione di alcuni algoritmi del framework.
• Distanza di Edit: La distanza di edit tra due stringhe A e B è il numero
minimo di modifiche per trasformare una stringa A in B o viceversa.
Per una modifica si intende l’inserimento, la cancellazione o la sostituzione di un carattere. A ciascuna di queste modifiche è assegnato
un costo. Per esempio, assumiamo che i costi di inserimento e cancellazione siano pari ad 1, la distanza di edit tra due stringhe Smith e
Sitch è 2, in quanto Smith è ottenuta inserendo m e cancellando c da
Sitch.
• Distanza di Hamming: La distanza di Hamming conta il numero di
discrepanze tra due numeri. Per esempio, il codice di Hamming tra
00185 e 00155 è 1.
• Smith-Waterman: L’algoritmo di Smith-Waterman, date due sequenze, utilizza la programmazione dimamica per trovare il più basso costo
per convertire una stringa in un’altra. I costi per i singoli inserimenti
e cancellazioni sono i parametri dell’algoritmo.
• n-grams, bi-grams, q-grams: La funzione di distanza n-grams forma
l’insieme di tutte le sottostringhe di lunghezza n p
per
stringa.
Pciascuna
0 − f 00 | dove
La distanza tra le due stringhe è definita come:
|f
s
∀x s
fs0 e fs00 sono il numero di occorrenze delle sottostringhe x nelle due
stringhe s0 e s00 , rispettivamente. La funzione Bi-grams (n=2) è largamente utilizzato e è efficacie, con minori errori tipografici.
20
APPENDICE C. FUNZIONI DI SIMILARITÀ
21
I q-grams posizionali sono ottenuti slittando di una finestra di lunghezza q i caratteri di una stringa s.
• TF-IDF: Il Token Frequency-Inverse Document Frequency (TF-IDF)
o cosine similarity per il confronto di stringhe simili nei documenti.
L’idea di base è assegnare un peso alto ai token che appaiono frequentemente in un documento (TF weight), e assegnare un peso basso
ai token che appaiono frequentemente in un intero insieme di documenti (IDF weight). Per un termine i in un documento j il peso wi,j
è:
N
wi,j = (tf i, j) × log( )
dfi
dove tf i, j è il numero di occorrenze di i in j, dfi è il numero di
documenti contenenti i e N è il numero totale di documenti. La similarità tra due documenti è dopo calcolata con il coseno tra i loro
rispettivi vettori con i termini di peso. Più precisamente, essendo
V = {w1 , ..., wn } e U = {w1 , ..., wn } i vettori con i pesi, la similarità è:
V ·U
|V | · |U |
Per completezza d’informazione, riportiamo nuovamente anche la Jaro e la
Soundex:
• Jaro: Introduce una funzione di confronto tra stringhe che tiene conto
di inserimenti, cancellazioni e trasposizioni. L’algoritmo di Jaro cerca
il numero di caratteri comuni e il numero di caratteri trasposti nelle due
stringhe. Un carattere comune è un carattere che appare in entrambe
le stringhe con una distanza pari alla metà della lunghezza della stringa
più corta. Un carattere trasposto è un carattere comune che appare
in posizioni differenti. Come esempio consideriamo le stringhe Smith
e Simth, ci sono cinque caratteri comuni, due dei quali sono trasposti.
La scala di confronto tra le stringhe per Jaro è data da:
f (s1 , s2 ) =
Nc
lengthS1
+
Nc
lengthS2
Nt
+ 0.5 N
c
3
dove s1 e s2 sono stringhe di lunghezza lengthS1 e lengthS2 rispettivamente, Nc è il numero di caratteri comuni tra le due stringhe (dove
la distanza per caratteri comuni è la metà della lunghezza minima di
s1 e s2 e Nt è il numero di trasposizioni).
• Soundex: Lo scopo della funzione soundex è quello di raggruppare
nomi che hanno suoni simili. Produce un codice, detto codice soundex.
Per esempio il codice soundex di Hilbert e Heilbpr è simile. Un codice
soundex contiene di regola quattro caratteri. La prima lettera del nome
APPENDICE C. FUNZIONI DI SIMILARITÀ
22
diventa il primo carattere del codice, i restanti tre caratteri sono dati
dall’ordine sequenziale del nome, consultando una tabella predefinita.
Per esempio il codice soundex di Hilbert e Heilbpr è H416. Una volta
che il limite di quattro caratteri è raggiunto, le restanti lettere vengono
ignorate.
Bibliografia
[1] Carlo Batini, Monica Scannapieco. Data Quality: Concepts, Methodologies and Techniques. Springer, 2006.
[2] Thomas C. Redman. Data Quality For The Information Age. Artech
House, 1996.
[3] Fellegi I.P., Sunter A.B. A Theory for Record Linkage. Journal of the
American Statistical Association, vol. 64, 1969.
[4] Pipino L.L., Lee Y.W., Wang R.Y. Data Quality Assessment.
Communications of the ACM, vol.45, no.4, 2002.
[5] Wang R.Y., Strong D.M. Beyond Accuracy: What Data Quality Means
to Data Consumers. Journal of Management Information System, vol.12,
no.4, 1996.
[6] Nielsen J. Usability Engineering. Academic Press, 1993.
[7] Dix A., Finley J., Abowd G., Beale R. Human-Computer Interaction.
Second Edition. Prentice Hall, 1998.
[8] William R. Durrell. Data Administration: A Practical Guide to Data
Administration. McGraw-Hill, 1985
[9] Storey V., Wang R. Extending the ER Model to Represent Data Quality Requirements. Data quality (R. Wang, M. Ziad, and W. Lee, eds.),
Kluver Academic Publishers, 2001.
[10] F. De Amicis, D. Barone, C. Batini. An Analytical Framework To
Analyze Dependencies Among Data Quality Dimension. ICIQ - 11th
International Conference on Information Quality, November 2006.
[11] Shankaranarayan G.R., Wang R.Y., Ziad M. Modeling the Manufacture
of an Information Product with IP-MAP. Conference on Information
Quality. Massachussets Institute of Technology, 2000.
[12] Ballou D.P., Wang R.Y, Pazer H., Tayi G.K. Modeling Information Manufacturing Systems to determine Information Product Quality.
Management Science, vol.44, no.4, 1998.
23
BIBLIOGRAFIA
24
[13] G. Navarro. A Guided Tour of Approximate String Matching. ACM
Computing Surveys 31 (2001), 31-88.
[14] Atzeni P., Ceri S., Paraboschi S., Torlone R. Basi di dati: Modelli e
linguaggi di interrogazione. McGraw-Hill, 2002.
[15] Wand Y., Wang, R.Y. Anchoring data quality dimensions in ontological
foundations. Communication of ACM, vol. 39, no. 11, 1996.
[16] Wang R.Y. A Product Perspective on Total Data Quality Management.
Communication of the ACM, vol. 41, no. 2, 1998.
[17] Diane M. String, Yang W. Lee, Richard Y. Wang. Data Quality in
Contex. Communication of the ACM, vol. 40, no. 5, 1997.
[18] Eclipse Birt, http://www.eclipse.org/birt/phoenix/.
[19] MySQL, http://www.mysql.com/.
[20] Eclipse, http://www.eclipse.org/.
[21] XML, http://www.w3.org/XML/.
[22] SWT: The Standard Widget Toolkit, http://www.eclipse.org/swt/.
[23] Java, http://java.sun.com/.
[24] JDBC, http://java.sun.com/javase/technologies/database/index.jsp.
[25] SimMetrics, http://www.dcs.shef.ac.uk/ sam/stringmetrics.html.
[26] JFreeChart, http://www.jfree.org/jfreechart/.
[27] BrowserLauncher2, http://sourceforge.net/projects/browserlaunch2/.
[28] Data Warehousing Institute, http://www.dw-institute.com/.