Nel contesto della digitalizzazione, l’enorme volume di dati prodotti e raccolti dalle grandi organizzazioni e dalle pubbliche amministrazioni rappresenta una risorsa inestimabile che offre spunti strategici e operativi.
Uno di essi è senz’altro il data cleaning, processo di rilevamento e correzione degli errori sui dati.
Le sfide della gestione dei dati
La gestione dei dati presenta infatti diverse sfide, tra cui la necessità di garantire la loro qualità. Questo è particolarmente importante quando i dati vengono utilizzati per alimentare funzionalità basate sull’intelligenza artificiale, le quali richiedono informazioni accurate e affidabili al fine di funzionare in maniera ottimale. Uno dei problemi più comuni è infatti la presenza di errori nei dati, che possono essere causati da una serie di fattori, tra cui problemi di data entry, l’uso del database in situazioni di emergenza, cattive interpretazioni da parte degli operatori, malfunzionamenti del sistema, problemi di interoperabilità e limiti nell’archiviazione.
È stata quindi avviata una collaborazione tra l’unità di Automatica dell’Università Campus Bio-Medico di Roma, diretta da Roberto Setola, ed il Comando Generale dell’Arma dei Carabinieri, Direzione di Telematica, diretta dal colonnello Marco Mattiucci, con l’obiettivo di analizzare i database attualmente in uso per identificare eventuali criticità e progettare relative strategie di risoluzione.
Un’approfondita analisi ha permesso di evidenziare diverse criticità, come ad esempio: l’utilizzo di nuovi attributi non prevedibili nella progettazione iniziale del database, l’archiviazione limitata che comporta una difficile consultazione accesso ai dati e la mancanza di un percorso che ne identifichi la provenienza portando una duplicazione dei dati, che può essere costosa in termini di spazio di archiviazione e di risorse di elaborazione. Tutto questo porta ad una mancanza di allineamento tra i sistemi con annessi problemi di standardizzazione e normalizzazione.
Da qui è emersa la necessità di un approccio più integrato che prendesse in considerazione l’intero ciclo di vita della pulizia dei dati, dalla rilevazione degli errori alla loro correzione fino alla valutazione della loro qualità.
In questa prospettiva ho implementato un algoritmo che integra sia metodi tradizionali che approcci basati su intelligenza artificiale in grado di gestire autonomamente un’ampia gamma di problemi di qualità, attenendosi alle linee guida stabilite dalle norme UNI ISO/IEC 25012 [1] e 25024 [2] intitolate rispettivamente “Modello di qualità dei dati”, e “Misura della qualità dei dati”.
Materiali e metodi
Inizialmente, si è eseguita un’analisi dei sistemi informativi attualmente in uso presso l’Amministrazione. Sono stati stabiliti sei criteri chiave per guidare le successive tecniche di data quality e data cleaning. I criteri sono basati su aspetti fondamentali della qualità dei dati come la corrispondenza delle informazioni, la completezza e l’unicità dei record, la coerenza interna dei dati, la corrispondenza dei formati e l’assenza di celle vuote. Essi sono poi stati correlati rispetto alle norme UNI ISO/IEC 25012 e 25024, con un focus sulle caratteristiche intrinseche dei dati.
Le metriche considerate includono: accuratezza, completezza, coerenza, credibilità e attualità. Per esaminare le relazioni tra i vari criteri e le metriche identificate, si è utilizzata una matrice di correlazione[3]. L’analisi basata su questa matrice ha facilitato l’identificazione delle correlazioni più forti, permettendo di concentrare l’attenzione su quelle metriche che mostrano una correlazione più significativa con i criteri selezionati. In particolare, sulla base dell’analisi condotta, sono emerse, quali metriche più pertinenti, l’accuratezza, la completezza e la coerenza.
SIMBOLO | CORRELAZIONE | PUNTEGGIO |
Correlazione forte | 9 pt | |
Correlazione media | 3 pt | |
Correlazione debole | 1 pt | |
Figura 1: Correlazioni previste nella matrice delle relazioni |
ACCURATEZZA | COMPLETEZZA | COERENZA | CREDIBILITA | ATTUALITA’ | |
CR1 | |||||
CR2 | |||||
CR3 | |||||
CR4 | |||||
CR5 | |||||
CR6 | |||||
pt | 15 | 18 | 29 | 3 | 9 |
Figura 2: Matrice delle relazioni
Sulla base dei criteri selezionati, è stato sviluppato un algoritmo di analisi dove il back-end dell’algoritmo è stato scritto in linguaggio Python [4].
Fig.3. Flusso dei dati
Parallelamente, è stato sviluppato un front-end per la visualizzazione dei risultati. Come illustrato nella Fig.3, l’algoritmo lavora con un database esistente, accettando in input uno script SQL e un database in formato SQLite [5]. Ricevuti gli input, l’algoritmo inizia un’analisi preliminare estraendo tutte le informazioni fondamentali dallo script e dal database come la struttura, le chiavi primarie, le chiavi esterne e i campi dichiarati come not null.
La funzione chiave in questo processo è stata progettata per ricercare specifiche informazioni relative alla struttura dei database avvalendosi di una libreria che fornisce potenti strumenti per la manipolazione delle stringhe. A seguito di questa fase, il processo si conclude con un’analisi qualitativa dei dati acquisiti. Questo viene fatto attraverso l’implementazione di tre classi utili per misurare sotto forma di percentuali l’accuratezza, la completezza, la coerenza. Un elemento fondamentale del processo è l’applicazione dell’Agglomerative Clustering [6], uno dei metodi avanzati del machine learning. Questa tecnica ha permesso di raggruppare le tabelle con attributi simili, utilizzando la metrica di Jaccard [7] per calcolare le differenze, fornendo un metodo efficace e preciso per categorizzare e organizzare le tabelle sulla base della similarità dei loro contenuti.
Accuratezza, completezza, coerenza
La classe Accuratezza ha il compito di effettuare confronti e analisi per identificare eventuali discrepanze tra lo script SQL e il database SQLite dati in input. Il processo in questione analizza ogni tabella all’interno di ciascun cluster, identificando quelle tabelle che presentano lo stesso nome. Una volta confermata l’identità tra le tabelle, si avvia un’ulteriore fase di analisi che culmina con l’eliminazione delle tabelle duplicate.
La classe Completezza valuta la completezza dei dati contenuti in un database, identificando eventuali lacune informative.
La classe Coerenza invece si occupa di verificare la coerenza all’interno del database eseguendo operazioni di controllo di conformità tra i formati, tra cui l’unicità delle chiavi primarie e le relazioni con le chiavi esterne. Infine, i risultati del processo di data cleaning, dell’analisi qualitativa dei dati e delle immagini generate, vengono rappresentati tramite interfaccia web.
Risultati
Fig.4:Componente Bootstrap
Per la prova, è stata analizzata una porzione del database, composta da dati reali e anonimizzati. Questa sezione comprende 15 tabelle relazionali interconnesse tra loro che ospitano complessivamente circa 161 milioni di record.
L’applicativo si apre con una componente Bootstrap che offre una visione chiara e immediata della qualità dei dati analizzati. Il modulo fornisce informazioni sul volume dell’analisi effettuata, riferendosi al numero totale di tabelle nel database, al numero di tabelle effettivamente analizzate e alla quantità totale di valori presenti. Il database è stato testato su una porzione dei dati disponibili, la cui natura esatta così come la sua analisi non saranno discusse in dettaglio in questo articolo per motivi di riservatezza e sensibilità.
Un’analisi qualitativa dell’efficacia del nostro framework è mostrata nelle figure 5-6. L’analisi qualitativa consente di mostrare come si riduce e si semplifica il grafo delle connessioni. Sfruttando i dati delle chiavi esterne, è stato possibile semplificare e chiarire le complesse interconnessioni esistenti avvelandosi di specifiche librerie per la manipolazione e lo studio dei grafi nonché per la creazione di visualizzazioni interattive. La Fig.5 illustra una parte dei collegamenti tra le tabelle esistenti, dove in rosso sono rappresentati gli schemi ed in blu le tabelle associate. La Fig.6 mostra la stessa struttura dopo l’applicazione del Framework, evidenziando le tabelle ridondanti. Qualitativamente si osserva come il framework ha reso possibile l’eliminazione dei dati duplicati, favorendo una significativa semplificazione dell’intero sistema.
Fig.6: Struttura dopo applicazione del Framework
Fig.5. Grafo delle connessioni
Conclusioni
I risultati, ottenuti sulla base di un numero limitato di criteri come quelli citati, mostrano come l’approccio impiegato rappresenti una valida soluzione per le operazioni di data cleaning in linea con le normative UNI ISO/IEC 25012 – 25024. L’accento posto sulle metriche di accuratezza, completezza e coerenza è risultato fondamentale, permettendo di coprire una vasta gamma di problematiche relative alla qualità e garantendo un’analisi data-driven efficace.
Tuttavia, è importante riconoscere che l’algoritmo utilizzato non è in grado di gestire tutte le possibili tipologie di errori riscontrati. Nonostante le limitazioni, i risultati hanno confermato la versatilità e l’efficacia nel gestire le valutazioni. Risulta necessario approfondire l’equilibrio tra l’implementazione dell’algoritmo e l’impatto computazionale. Un miglioramento nella qualità dei dati può portare ad un aumento della performance, ma l’implementazione di una gestione della qualità dei dati efficace può richiedere un investimento significativo di risorse.
Bibliografia
- [1]Uni iso 25012:2014, ingegneria del software e di sistema – modelli di qualità dei dati. Norma, 2014.
- [2]Uni iso 25024:2016, ingegneria del software e di sistema – misura della qualità dei dati. Norma, 2016.
- [3] Joseph F. Jr Hair, William C. Black, Barry J. Babin, and Rolph E. Anderson. Multivariate Data Analysis. 8th edition, 2019.
- [4] Python Software Foundation. Python language reference. Python Software Foundation, 2023.
- [5] Seyed H. Hashemi. (2015). SQLite Database System Design and Implementation. Second Edition, River Publishers.
- [6] Richard O Duda, Peter E Hart, and David G Stork. Pattern Classification. John Wiley & Sons, 2012. Section on Hierarchical Agglomerative Clustering.
- [7] Christopher D. Manning, Prabhakar Raghavan, and Hinrich Schütze. Introduction to Information Retrieval. Cambridge University Press, 2008.
Tesista: Dott. Camarda Nicola
Relatori: Col. CC. Ing. Marco Mattiucci, Prof. Roberto Setola
CORRELATORE: Ing. Mario Merone