# Data cleaning

In informatica, con il termine data cleaning (in italiano traducibile come "pulizia dei dati" o "bonifica dei dati" o "correzione dei dati") si fa riferimento ad un generico processo capace di garantire, con una certa soglia di affidabilità, la correttezza di una grande quantità di dati (database, data warehouse, dataset, ...). Tale terminologia è stata utilizzata in passato per definire il "filtraggio" alla base del data mining: tale procedimento precede l'effettiva estrazione (mining) di quantità di informazione potenzialmente utile e precedentemente ignota, al fine di produrre conoscenza. A volte si preferisce il termine "bonifica" inteso come processo di correzione e/o rimozione e/o integrazione di dati incompleti e/o obsoleti all'interno di un database.

## Descrizione

Oggi il data cleaning si è affermato come area di ricerca a sé stante: infatti è stato rilevato che buona parte del lavoro di progettisti e ricercatori in data mining viene svolto nell'acquisizione e depurazione di dati che siano corretti con un certo margine. Per specificare tale concetto, si sfrutta una definizione di qualità dei dati (data quality o DQ). Effettuare un buon data cleaning equivale, di fatto, ad elevare di un certo livello la qualità dei dati in esame: ciò presuppone di specificare una o più dimensioni di DQ da migliorare (ad es.: accuratezza, precisione, interpretabilità, universalità...).
Per fare ciò, esistono delle tecniche per rilevare, in modo automatico, il "rumore" presente nei dati, che è di natura tipicamente casuale. Diverse complicazioni sorgono se si aggiunge la necessità di integrare, da più fonti, dati omogenei. A titolo di esempio, si pensi alle informazioni anagrafiche presenti su più "nodi" di diverse amministrazioni: se si desidera garantire una corretta ed efficace opera di cooperazione, al fine di scambio/confronto/integrazione di dati, è essenziale assicurare un certo livello di qualità dei dati interscambiati. Un ulteriore esempio potrebbe essere la correzione dell'elenco di iscritti ad una newsletter, per garantire che le notizie arrivino effettivamente a destinazione (tramite verifica degli indirizzi email)
Più semplicemente, un nominativo scritto male ("mrio rossi" invece di "Mario Rossi") è indice di scarsa accuratezza sintattica, mentre un termine come "Patrizia Rossi" al posto di "Patrizio Rossi" è indice di non accuratezza semantica. Tali errori possiedono un'entità solo apparentemente piccola, in quanto è possibile rilevare dati non desiderati, scorretti, inesatti: più in generale, non è garantita l'accuratezza delle query eseguite.

### Qualità dei dati

I criteri qualitativi che deve rispettare una bonifica di un sistema informativo, sono:
* Accuratezza
* Integrità
* Completezza
* Validità
* Consistenza
* Uniformità
* Densità
* Unicità

### Tecniche

In sostanza, si opera da una parte per cercare di unificare gli schemi sottostanti i dati (con evidente vantaggio, ad es., in termini di flessibilità ed usabilità), dall'altra si cerca di rilevare errori "atomici" (nel senso di isolati, o non sistematici) come possono essere, ad es., errori di battitura (misspelling).
Nella pratica, sono state proposte diverse tecniche di correzione, spesso molto diverse tra di loro, ma riassumibili, a grandi linee, in due grandi filoni:
1) approccio schema-level, con il quale si cerca di stabilire una corrispondenza tra diverse strutture di file o database, sfruttandone somiglianze opportunamente definite. Un esempio potrebbe essere il merging di due tabelle
Sarà ad es. necessario stabilire le corrispondenze:
per ottenere così lo schema "integrato"
che conterrà, secondo varie tecniche, i dati provenienti da entrambe le fonti.
Un ulteriore esempio significativo di questa casistica è la verifica dei vincoli di integrità in un database.
2) approccio instance-level, mediante cui si cerca tipicamente di individuare delle "metriche" per misurare la "somiglianza", ad es. tra le tuple di un database, o più generalmente i singoli "item" ivi presenti (record, token). Un algoritmo classico (e disponibile in numerose varianti), relativo a dati alfanumerici, prevede di ordinare le tuple in base a delle "chiavi" (tipo codice fiscale) opportunamente definite: si ordina la tabella in base a tale attributo aggiuntivo e successivamente, mediante dei confronti su sottoinsiemi consecutivi di lunghezza fissata, si tenta di effettuare una suddivisione dei dati in un certo numero di gruppi "somiglianti". Di fatto, ciò significa effettuare un clustering dei dati, col risultato di ottenere (con un certo margine di probabilità) nel medesimo cluster istanze "somiglianti", ovvero che fanno riferimento alla stessa entità reale (ad es. "gino rossi", "luigi rossi", "gigi rossi" indicano la persona fisica "Luigi Rossi").
I software professionali che effettuano data cleaning utilizzano spesso algoritmi che fanno uso di una combinazione dei due: tuttora la ricerca nel settore è in corso, e sono stati recentemente proposti nuovi approcci di data cleaning applicabili ai casi più diversi.