« Nettoyage de données » : différence entre les versions

Un article de Wikipédia, l'encyclopédie libre.
Contenu supprimé Contenu ajouté
PAC2 (discuter | contributions)
mise à jour
Rsommerard (discuter | contributions)
Aucun résumé des modifications
Ligne 1 : Ligne 1 :
Le '''nettoyage des données''' permet de vérifier et de corriger les données (postales par exemple) tout en assurant la standardisation des formats des bases de données des entreprises. Les procédés de nettoyage de données postales permettent d’optimiser la qualité de l’ensemble des données (prospects, clients, fournisseurs) des entreprises.
Le '''nettoyage de données''' est l'opération de détection et de correction (ou suppression) d'erreurs présentes sur des données stockées dans des [[Base de données|bases de données]] ou dans des [[Fichier informatique|fichiers]].

Le nettoyage de données est un des problèmes majeurs des [[Entrepôt de données|entrepôts de données]]<ref>{{harvsp|Rahm|Hai Do|2000|loc=Introduction|p=2|id=DataCleaningPAndCA}}</ref>.

Les données présentes dans les bases de données peuvent avoir plusieurs types d'erreurs comme des erreurs de frappe, des informations manquantes, des imprécisions etc. La partie impropre de la donnée traitée peut être remplacée, modifiée ou supprimée. Le processus de nettoyage identifie les données erronées et les corrige automatiquement avec un [[programme informatique]] ou les propose à un humain pour qu'il effectue les modifications.

Le nettoyage de données est différent de la validation de données. La validation de données est l'étape qui consiste à vérifier et rejeter les données qui ne respectent pas certaines règles avant l'ajout en base de données, alors que le nettoyage intervient après (sur des données déjà présentes en base de données).

Les approches classiques de nettoyage utilisent les contraintes d'intégrité, les statistiques ou l'[[apprentissage automatique]] pour nettoyer les données<ref>{{harvsp|Chu|Morcos|Ilyas|Ouzzani|Papotti|Tang|Ye|2015|loc=Abstract|p=1|id=Katara}}</ref>.

== Problématique ==

Les problèmes liés au nettoyage de données sont apparues au début des années 2000 avec l'explosion d'Internet et des entrepôts de données.

Les entrepôts de données sont utilisés pour la prise de décision. Ceci implique que les données doivent être fiables. Des données incorrectes ou incohérentes peuvent conduire à de fausses conclusions et à de mauvaises prises de décision<ref>{{harvsp|Rahm|Hai Do|2000|loc=Introduction|p=1|id=DataCleaningPAndCA}}</ref> .

Par exemple, le gouvernement peut vouloir analyser les chiffres du recensement de la population pour décider quelles régions exigent davantage de dépenses et d'investissements en infrastructures et services. Dans ce cas, il est important d'avoir accès à des données fiables pour éviter des décisions budgétaires erronées.

Les erreurs dans les données coûtent aux entreprises l'équivalent de 10 à 20% de leur budget d’implémentation. De plus, on estime que 40 à 50% du budget temps d'un projet est dépensé dans la correction d'erreurs dans les données<ref>{{harvsp|Yakout|Berti-Équille|Elmagarmid|2013|loc=Introduction|p=1|id=Scared}}</ref>.

== Types d'erreurs ==

Les erreurs sur les données peuvent être de toutes sortes. Par exemple, une erreur peut apparaître lors d'une saisie (donnée manquante, données dupliquées, erreur de saisie, mauvais format, etc.)

{| class="wikitable center"
|+Exemple d'erreurs multiples
!Prénom
!Age
!Sexe
!Taille
|-
|Alice
|150
|F
|1'70
|-
|Bob Joe
|34
|M
|
|-
|Charlie
|19
|1'67
|
|}

=== Erreurs de syntaxe ===

==== Erreurs lexicales ====

Une erreur lexicale est une divergence entre le nom de la donnée attendu et le format spécifié.

{| class="wikitable center"
|+Exemple d'erreur lexicale
!Prénom
!Age
|-
|Alice
|F
|-
|Bob
|M
|-
|Charlie
|21
|}

==== Erreurs de formatage ====

Une erreur de formatage est une entrée qui ne correspond pas à un modèle donné.

{| class="wikitable center"
|+Exemple d'erreur de formatage
!Nom
|-
|Doe, John
|-
|John Smith
|}

==== Erreurs d'irrégularité ====

Une erreur d'irrégularité se produit lorsqu'une donnée n'est pas représentée de façon régulière, en suivant le même schéma, la même suite logique d'écriture. Cela peut intervenir pour la représentation de distance par exemple en utilisant différents systèmes métriques.

{| class="wikitable center"
|+Exemple d'irrégularité
!Distance
|-
|25 km
|-
|23 km
|-
|20 mi
|}

=== Erreurs sémantiques ===

==== Violation des contraintes d'intégrité ====

Ce sont les erreurs qui ne respectent pas les règles d'intégrité du schéma de données.

Ce sont souvent des règles de bon sens comme la vérification d'une valeur supérieure à 0 pour l'âge d'une personne ou encore la vérification de l'unicité d'une clé primaire dans une base de données.

==== Erreurs de contradiction ====

Les erreurs de contradiction sont des contradictions dans les données.

Par exemple une erreur de contradiction peut intervenir lorsque l'âge spécifié ne correspond pas à la date de naissance.

==== Erreurs de duplication ====

Les erreurs de duplication surviennent lorsque plusieurs occurrences de la même donnée sont stockées.

Ces erreurs peuvent être vues comme un cas spécifique des erreurs de contradiction.

==== Erreurs de donnée invalide ====

Ce sont des entrées qui sont dites invalides mais qui ne sont pas détectables par la mise en place de contraintes. Ce sont des erreurs qui sont spécifiques au domaine.

=== Erreurs de couverture ===

==== Valeur manquante ====

Ce type d'erreur provient d'une omission d'un champs de la donnée, lorsque la valeur attendue est manquante.

{| class="wikitable center"
|+Exemple de valeur manquante
!Prénom
!Age
!Sexe
!Taille
|-
|Alice
|23
|F
|1'70
|-
|Bob
|34
|M
|1'82
|-
|Charlie
|19
|M
|
|}

==== Donnée manquante ====

Ce type d'erreur provient lorsqu'une donnée est vide ou manquante.

{| class="wikitable center"
|+Exemple de donnée manquante
!Prénom
!Age
!Sexe
!Taille
|-
|Alice
|
|F
|1'70
|-
| Bob
|
| M
| 1'86
|-
|Charlie
|
|M
|1'68
|}

== Méthodes existantes ==

On distingue deux types d'approches :
* Celles des entreprises, qui utilisent généralement des nettoyeurs de type[[Extract-transform-load| ETL]]<ref>{{harvsp|Geerts|Mecca|Papotti|Santoro|2013|p=636|loc=Related work|id=Llunatic}}</ref>. Ce type d'approche a été le premier à avoir vu le jour.
* Celles des scientifiques, qui explorent de nouvelles approches qui se basent sur les contraintes d'intégrité<ref>{{harvsp|Bohannon|Fan|Flaster|Rastogi|2005|id=CostBasedModel}}</ref><ref>{{harvsp|Chiang|Miller|2011|id=UnifiedModel}}</ref><ref>{{harvsp|Chu|Ilyas|Papotti|2013|id=Holistic}}</ref><ref>{{harvsp|Geerts|Mecca|Papotti|Santoro|2013|id=Llunatic}}</ref><ref>{{harvsp|Song|Cheng|Yu|Chen|2014|id=Vertex}}</ref>, les statistiques<ref>{{harvsp|Mayfield|Neville|Prabhakar|2010|id=ERACER}}</ref>, l'apprentissage automatique<ref>{{harvsp|Yakout|Berti-Équille|Elmagarmid|2013|id=Scared}}</ref> ou encore le [[crowdsourcing]]<ref name="katara">{{harvsp|Chu|Morcos|Ilyas|Ouzzani|Papotti|Tang|Ye|2015|id=Katara}}</ref>.
Le nettoyage de données se décompose en 3 phases :
* Analyser les données afin de détecter les potentiels problèmes
* Choisir le type de transformations à effectuer
* Appliquer ces informations aux données

=== Parsing ===

La méthode de [[parsing]] est utilisée pour la détection d'erreurs de syntaxe. Un [[parseur]] décide de l'acceptabilité de la donnée représentée par une chaîne de caractères. Il s'assure que la donnée suit la spécification.

Ce type d'approche requiert un set de données qui peut être converti en distance pour pouvoir être comparé.

Cette approche a ses limites. En effet, celle-ci se base généralement sur des [[expressions régulières]] pour déterminer la validité d'une entrée. Ce processus de vérification peut être amélioré avec des techniques d'apprentissage automatique.

=== Transformation de donnée ===

La transformation de donnée est une opération qui regroupe plusieurs champs en un seul.

Par exemple, la décomposition d'une date en plusieurs champs (année, mois et jour) ou encore la transformation d'une entrée de type booléen en entier (true = 1).

=== Renforcement des contraintes d'intégrité ===
Les contraintes d'intégrité sont au départ utilisées pour prévenir des erreurs sur les données, cependant il se peut qu'elles ne suffisent pas et que des erreurs sur les données se manifestent au fil du temps. Dans certains cas, le meilleur moyen d'améliorer la qualité des données n'est pas de corriger les données corrompues, mais plutôt de modifier les contraintes d'intégrité car la sémantique des données ou de l'application peut avoir évoluée.

Le but de cette méthode n'est pas de modifier les données de manière directe mais de trouver et modifier les contraintes d'intégrité douteuses afin qu'elles s'accordent mieux avec les données.

=== Méthode statistique ===
Malgré les recherches faites sur les contraintes d'intégrité ainsi que sur d'autres méthodes visant à améliorer la qualité des données, les bases de données peuvent encore contenir un certain nombre d'erreurs subtiles, syntaxiques ou sémantiques, qu'il est difficile voire impossible d'exprimer (et détecter) en utilisant les contraintes générales offertes dans les [[SGBD]] actuels.

L'utilisation des statistiques permet d'obtenir des corrections d'erreurs plus fiables. En identifiant de potentielles dépendances statistiques entre les paires de données similaires et en développant des algorithmes que l'on peut greffer simplement dans les SGBD standards, on peut estimer automatiquement ces dépendances. Cette méthode permet par exemple de déduire des valeurs correctes même en présence de valeurs manquantes ou corrompues.

Les méthodes statistiques peuvent être utilisées pour l'analyse des données et/ou leur correction.

=== Crowdsourcing ===

Il peut arriver que les méthodes précédentes n'aient pas assez d'éléments de preuve pour pouvoir identifier et corriger les erreurs<ref>{{harvsp|Chu|Morcos|Ilyas|Ouzzani|Papotti|Tang|Ye|2015|p=1247|loc=Introduction|id=Katara}}</ref>.

Une approche basée sur le crowdsourcing permet d'utiliser des [[Base_de_connaissance|bases de connaissance]] externes qui permettent d'identifier plus d'erreurs automatiquement.

Les erreurs détectées qui ne peuvent être réparées automatiquement sont proposées à un humain qui les corrige manuellement.

== Solutions existantes ==
La recherche permet d'apporter de nouvelles solutions qui utilisent les approches citées précédemment. En voici quelques unes :

=== Potter's Wheel ===

Potter's wheel<ref>{{harvsp|Raman|Hellerstein|2001|id=PottersWheel}}</ref> est une méthode de nettoyage de données interactive qui permet la détection et la transformation de données.

Cette solution permet à l'utilisateur de construire des transformations lorsque celles-ci se présentent et d'ainsi améliorer itérativement la détection et la transformation. Ceci sans écrire de programmes complexes ou de perdre du temps de développement<ref>{{harvsp|Raman|Hellerstein|2001|p=381|loc=Abstract|id=PottersWheel}}</ref>.

Potter's wheel fournit des transformations les plus générales possibles et assez puissantes pour faire la plupart des tâches de transformation sans programmation<ref>{{harvsp|Raman|Hellerstein|2001|p=382|loc=Potter's Wheel Approach|id=PottersWheel}}</ref>.
Les utilisateurs saisissent des expressions régulières ou des expressions grammaticales pour spécifier les transformations à effectuer<ref>{{harvsp|Raman|Hellerstein|2001|p=382|loc=Interactive Transformation|id=PottersWheel}}</ref>.

Avec Potter's wheel, c'est à l'utilisateur de choisir le résultat qu'il désire en sortie<ref>{{harvsp|Raman|Hellerstein|2001|p=382|loc=Interactive Transformation|id=PottersWheel}}</ref>.

Le problème de l'approche de Potter's Wheel est de trouver une expression régulière qui ressemble le plus à la valeur à modifier sans pour autant lui être trop spécifique. Il faut garder à l'esprit que celle-ci peut avoir des variantes<ref>{{harvsp|Raman|Hellerstein|2001|p=382|loc=Extensible Discrepancy Detection|id=PottersWheel}}</ref>.

===AJAX===

AJAX<ref>{{harvsp|Galhardas|2005|id=AJAX}}</ref> est un [[framework]] qui tente de séparer la partie '''logique''' (design et spécification du workflow) de la partie '''physique''' (implémentation). AJAX modélise la logique de nettoyage de données par un graphe orienté de transformations. Il prend comme entrée des données contenant des erreurs et revoie des données propres<ref>{{harvsp|Galhardas|2005|p=329|loc=Introduction|id=AJAX}}</ref>.

Le but majeur est de transformer des données existantes venant d'une ou plusieurs collections en un schéma cible tout en éliminant les doublons pendant le processus. Le processus se décompose en '''5 transformations''' : ''mapping, view, matching, clustering'' et ''merging'''''.''' Le matching operator est notamment important dans la détection des doublons.

AJAX possède :
* des opérateurs logiques (extension d'algèbre relationnelle)
* des algorithmes d’exécution physique
* un langage déclaratif pour les opérateurs logiques

Ce langage consiste en des requêtes [[Structured Query Language|SQL]] enrichies par des primitives spécifiques. Son aspect déclaratif est hérité du SQL et garantit un déploiement ainsi qu'une maintenance facile des programmes de nettoyage de données. Il n'est cependant pas complètement déclaratif de par la présence de code impératif servant à la customisation pour un programme particulier si besoin.

=== IntelliClean ===

IntelliClean<ref>{{harvsp|Lee|Ling|Low|2000|id=IntelliClean}}</ref> est une approche fondée sur des règles essentiellement centrées sur l'élimination des doublons.

Cette solution consiste en '''3 étapes''' :
* ''Pré-processing'' : élimination des erreurs syntaxiques, standardisation des formats et abréviations utilisées.
* ''Processing'' : évaluation des règles de nettoyage sur les données qui spécifie une action à effectuer sous certaine condition.
* ''Human Verification/Validation'' : les deux premières étapes produisent des logs de leur exécution qui permettent lors de la troisième étape à des humains de les étudier afin de vérifier et/ou corriger les précédentes actions effectuées.
Il y a 4 types de règles pour l'étape ''Processing :''
* ''Duplicate identification'' : ces règles spécifient les conditions qui permettent d'affirmer quels tuples sont des doublons.
* ''Merge/Purge'' : ces règles indiquent comment les doublons doivent être gérés.
* Update Rules : ces règles indiquent comment les données doivent être gérées dans certaines conditions, elles permettent notamment la spécification de règles de renforcement des contraintes d'intégrité en indiquant la manière dont les valeurs manquantes doivent être remplies.
* ''Alert rules'' : ces règles spécifient les conditions pour lesquelles l'utilisateur est notifié.

=== FraQL ===
FraQL<ref name="ProbMetCal">{{harvsp|Müller|Freytag|2003|id=ProbMetCal}}</ref> est un autre langage déclaratif permettant la spécification d'un processus de nettoyage de données. Il est similaire à AJAX par le fait que c'est également une extension du SQL. FraQL permet de spécifier transformations de schémas et de données, standardisations/normalisations de valeurs grâce à des fonctions crées par l'utilisateur.

Grâce à la combinaison de ces fonctions utilisateurs avec les opérateurs de jointure et d'union, FraQL permet l'identification et l'élimination des doublons. Enfin cette solution permet le remplissage de valeurs manquantes ainsi que l'élimination de tuples invalides par la détection du bruit dans les données.

=== ARKTOS ===
ARKTOS<ref>{{harvsp|Vassiliadis|Vagena|Skiadopoulos|Karayannidis|Sellis|2000|id=Arktos}}</ref> est un framework capable d’exécuter de [[Extract-transform-load|l'ETL]] pour la création de [[Entrepôt de données|data warehouse]]. En effet, les auteurs de cette solution considèrent le nettoyage de données comme une part de l'ETL. Les étapes individuelles du processus sont appelées activités. Chaque activité est liée à une entrée et une sortie. La logique d'une activité est décrite par une requête SQL. Chaque requête est associée à un type d'erreur et une règle qui indique le comportement en cas de rencontre d'une telle erreur.

Il y a 6 types d'erreurs possibles dans un processus ETL, PRIMARY KEY VIOLATION, UNIQUENESS VIOLATION et REFERENCE VIOLATION sont des cas particuliers de violation de contraintes d'intégrité. Le type d'erreur NULL EXISTENCE est lié à l’élimination des valeurs manquantes. Les types d'erreurs restantes sont DOMAIN MISMATCH et FORMAT MISMATCH qui font référence au lexique et aux erreurs de formatage.

Les comportements qu'il est possible d'associer à une erreur sont IGNORE, qui ne va pas marquer le tuple comme erroné, DELETE, WRITE TO FILE et INSERT TO TABLE avec la sémantique attendue. Seuls les deux derniers permettent une interaction avec l'utilisateur.

La qualité du nettoyage peut être mesurée pour chaque activité en exécutant une requête SQL similaire qui va compter le ratio matching/violating des tuples.

ARKTOS définit deux langages déclaratifs servant à spécifier le processus ETL. Il est également muni d'un constructeur de scénarii graphiques.

===KATARA===

KATARA<ref name="katara"></ref> est un système qui fait le pont entre les [[bases de connaissance]] et le crowdsourcing pour un nettoyage des données de bonne qualité.

Contrairement à d'autres approches, KATARA utilise un algorithme pour retrouver les types des données et les relations entre celles-ci. Grâce à ces informations, KATARA utilise une approche probabiliste pour déterminer la correction la plus cohérente à faire. Ces probabilités sont déterminées grâce aux bases de connaissances.

La recherche des données corrompues est un problème difficile. Pour améliorer cette recherche, la qualité des nettoyages ainsi que la précision des réparations, KATARA améliore les bases de connaissances avec les nouvelles entrées nettoyées et vérifiées par des humains<ref>{{harvsp|Chu|Morcos|Ilyas|Ouzzani|Papotti|Tang|Ye|2015|p=1248|loc=Introduction|id=Katara}}</ref>.

KATARA permet aux entreprises de faire des économies. En effet, faire appel au crowdsourcing implique qu'il n'est pas nécessaire d'avoir un expert du domaine pour réparer une donnée corrompue<ref>{{harvsp|Chu|Morcos|Ilyas|Ouzzani|Papotti|Tang|Ye|2015|p=1247|loc=Introduction|id=Katara}}</ref>.

== Notes et références ==

{{Références|colonnes=4}}

== Bibliographie ==

* {{article
| lang = en
| id = Llunatic
| prénom1 = F.
| nom1 = Geerts
| prénom2 = G.
| nom2 = Mecca
| prénom3 = P.
| nom3 = Papotti
| prénom4 = D.
| nom4 = Santoro
| titre = The LLUNATIC Data-Cleaning Framework
| périodique = PVLDB
| volume = 6
| numéro = 9
| année = 2013
| mois = juillet
| pages = 625-636
| url = http://www.vldb.org/pvldb/vol6/p625-mecca.pdf
}}

* {{article
| lang = en
| id = Katara
| prénom1 = X.
| nom1 = Chu
| prénom2 = J.
| nom2 = Morcos
| prénom3 = I. F.
| nom3 = Ilyas
| prénom4 = M.
| nom4 = Ouzzani
| prénom5 = P.
| nom5 = Papotti
| prénom6 = N.
| nom6 = Tang
| prénom7 = Y.
| nom7 = Ye
| titre = KATARA: A Data Cleaning System Powered by Knowledge Bases and Crowdsourcing
| périodique = SIGMOD
| année = 2015
| pages = 1247-1261
| isbn = 978-1-4503-2758-9
| doi = 10.1145/2723372.2749431
| url = https://cs.uwaterloo.ca/~ilyas/papers/ChuSIGMOD2015.pdf
}}

* {{article
| lang = en
| id = UnifiedModel
| prénom1 = F.
| nom1 = Chiang
| prénom2 = R. J.
| nom2 = Miller
| titre = A Unified Model for Data and Constraint Repair
| périodique = ICDE
| année = 2011
| mois = avril
| pages = 446-457
| isbn = 978-1-4244-8958-9
| issn = 1063-6382
| doi = 10.1109/ICDE.2011.5767833
| url = http://dblab.cs.toronto.edu/~fchiang/docs/icde11.pdf
}}

* {{article
| lang = en
| id = Holistic
| prénom1 = X.
| nom1 = Chu
| prénom2 = I. F.
| nom2 = Ilyas
| prénom3 = P.
| nom3 = Papotti
| titre = Holistic Data Cleaning: Putting Violations Into Context
| périodique = ICDE
| année = 2013
| mois = avril
| pages = 458-469
| isbn = 978-1-4673-4908-6
| issn = 1063-6382
| doi = 10.1109/ICDE.2013.6544847
| url = https://cs.uwaterloo.ca/~x4chu/ICDE2013.pdf
}}

* {{article
| lang = en
| id = Vertex
| prénom1 = S.
| nom1 = Song
| prénom2 = H.
| nom2 = Cheng
| prénom3 = J.
| nom3 = Xu Yu
| prénom4 = L.
| nom4 = Chen
| titre = Repairing Vertex Labels under Neighborhood Constraints
| périodique = PVLDB
| année = 2014
| mois = juillet
| volume = 7
| numéro = 11
| pages = 987-998
| url = http://www.vldb.org/pvldb/vol7/p987-song.pdf
}}

* {{article
| lang = en
| id = Scared
| prénom1 = M.
| nom1 = Yakout
| prénom2 = L.
| nom2 = Berti-Équille
| prénom3 = A. K.
| nom3 = Elmagarmid
| titre = Don't be SCARed: Use SCalable Automatic REpairing with Maximal Likelihood and Bounded Changes
| périodique = SIGMOD
| année = 2013
| mois = Juin
| pages = 553-564
| isbn = 978-1-4503-2037-5
| doi = 10.1145/2463676.2463706
| url = http://www.researchgate.net/profile/Laure_Berti-Equille/publication/251572507_Mohamed_Yakout_Laure_Berti-quille_and_Ahmed_Elmagarmid_Don't_be_SCAREd_Use_SCalable_Automatic_REpairing_with_Maximal_Likelihood_and_Bounded_Changes_Proceedings_of_the_2013_ACM_SIGMODPODS_New_York_June_2013/links/02e7e51f781a87addb000000.pdf
}}

* {{article
| lang = en
| id = ERACER
| prénom1 = C.
| nom1 = Mayfield
| prénom2 = J.
| nom2 = Neville
| prénom3 = S.
| nom3 = Prabhakar
| titre = ERACER: A Database Approach for Statistical Inference and Data Cleaning
| périodique = SIGMOD
| année = 2010
| mois = Juin
| pages = 75-86
| isbn = 978-1-4503-0032-2
| doi = 10.1145/1807167.1807178
| url = http://orion.cs.purdue.edu/docs/eracer.pdf
}}

* {{article
| lang = en
| id = CostBasedModel
| prénom1 = P.
| nom1 = Bohannon
| prénom2 = W.
| nom2 = Fan
| prénom3 = M.
| nom3 = Flaster
| prénom4 = R.
| nom4 = Rastogi
| titre = A Cost-Based Model and Effective Heuristic for Repairing Constraints by Value Modification
| périodique = SIGMOD
| année = 2005
| mois = Juin
| pages = 143-154
| isbn = 1-59593-060-4
| doi = 10.1145/1066157.1066175
| url = http://homepages.inf.ed.ac.uk/wenfei/papers/sigmod05.pdf
}}

* {{article
| lang = en
| id = DataCleaningMethods
| prénom1 = W. E.
| nom1 = Winkler
| titre = Data Cleaning Methods
| périodique = SIGKDD
| année = 2003
| mois = Août
| url = http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.1.2066&rep=rep1&type=pdf
}}

* {{article
| lang = en
| id = PottersWheel
| prénom1 = V.
| nom1 = Raman
| prénom2 = J. M.
| nom2 = Hellerstein
| titre = Potter's Wheel: An Interactive Data Cleaning System
| périodique = VLDB
| année = 2001
| pages = 381-390
| isbn = 1-55860-804-4
| url = http://control.cs.berkeley.edu/pwheel-vldb.pdf
}}

* {{article
| lang = en
| id = AJAX
| prénom1 = H.
| nom1 = Galhardas
| titre = Data cleaning and transformation using the AJAX framework
| périodique = GTTSE
| année = 2005
| pages = 327-343
| isbn = 978-3-540-45778-7
| doi = 10.1007/11877028_12
| url = http://algos.inesc-id.pt/~jpa/InscI/poisson/varwwwhtml/portal/ficheiros/publicacoes/3522.pdf
}}

* {{article
| lang = en
| id = DataCleaningPAndCA
| prénom1 = E.
| nom1 = Rahm
| prénom2 = H.
| nom2 = Hai Do
| titre = Data Cleaning: Problems and Current Approaches
| périodique = IEEE
| année = 2000
| pages = 3-13
| volume = 23
| numéro = 4
| url = http://betterevaluation.org/sites/default/files/data_cleaning.pdf
}}

* {{article
| lang = en
| id = ContinuousDataCleaning
| prénom1 = M.
| nom1 = Volkovs
| prénom2 = F.
| nom2 = Chiang
| prénom3 = J.
| nom3 = Szlichta
| prénom4 = R. J.
| nom4 = Miller
| titre = Continuous data cleaning
| périodique = IEEE
| année = 2014
| pages = 244-255
| doi = 10.1109/ICDE.2014.6816655
| url = http://disi.unitn.it/~pavel/OM/articles/Volkovs_icde14.pdf
}}

* {{article
| lang = en
| id = IntelliClean
| prénom1 = M. L.
| nom1 = Lee
| prénom2 = T. W.
| nom2 = Ling
| prénom3 = W. L.
| nom3 = Low
| titre = IntelliClean: a knowledge-based intelligent data cleaner
| périodique = SIGKDD
| année = 2000
| pages = 290-294
| isbn = 1-58113-233-6
| doi = 10.1145/347090.347154
| url = http://delivery.acm.org/10.1145/350000/347154/p290-lee.pdf
}}

* {{article
| lang = en
| id = Arktos
| prénom1 = P.
| nom1 = Vassiliadis
| prénom2 = Z.
| nom2 = Vagena
| prénom3 = S.
| nom3 = Skiadopoulos
| prénom4 = N.
| nom4 = Karayannidis
| prénom5 = T.
| nom5 = Sellis
| titre = Arktos: A Tool For Data Cleaning and Transformation in Data Warehouse Environments
| périodique = IEEE
| année = 2000
| pages = 42-47
| doi = 10.1.1.109.2911
| url = http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.109.2911&rep=rep1&type=pdf
}}

* {{ouvrage
| lang = en
| id = ProbMetChal
| prénom1 = H.
| nom1 = Müller
| prénom2 = J-C.
| nom2 = Freytag
| titre = Problems, Methods, and Challenges in Comprehensive Data Cleansing
| année = 2003
| url = http://www.dbis.informatik.hu-berlin.de/fileadmin/research/papers/techreports/2003-hub_ib_164-mueller.pdf
}}

== Voir aussi ==


== En savoir plus ==
* [[Audit de données]]
* [[Audit de données]]
* [[Saisie de données]]
* [[Saisie de données]]
Ligne 7 : Ligne 593 :
* [[Gestion des données]]
* [[Gestion des données]]


== Liens externes ==
{{Portail|informatique|probabilités et statistiques}}

*[https://www.coursera.org/course/getdata Cours sur le nettoyage de donnée (en)]
*[http://openrefine.org/ OpenRefine de Google]
*[https://msdn.microsoft.com/fr-fr/library/gg524800%28v=sql.120%29.aspx Data Quality service de Microsoft]


{{Portail|informatique}}
[[Catégorie:Science des données]]
[[Catégorie:Science des données]]
[[Catégorie:Application de base de données]]
[[Catégorie:Application de base de données]]

Version du 5 janvier 2016 à 10:49

Le nettoyage de données est l'opération de détection et de correction (ou suppression) d'erreurs présentes sur des données stockées dans des bases de données ou dans des fichiers.

Le nettoyage de données est un des problèmes majeurs des entrepôts de données[1].

Les données présentes dans les bases de données peuvent avoir plusieurs types d'erreurs comme des erreurs de frappe, des informations manquantes, des imprécisions etc. La partie impropre de la donnée traitée peut être remplacée, modifiée ou supprimée. Le processus de nettoyage identifie les données erronées et les corrige automatiquement avec un programme informatique ou les propose à un humain pour qu'il effectue les modifications.

Le nettoyage de données est différent de la validation de données. La validation de données est l'étape qui consiste à vérifier et rejeter les données qui ne respectent pas certaines règles avant l'ajout en base de données, alors que le nettoyage intervient après (sur des données déjà présentes en base de données).

Les approches classiques de nettoyage utilisent les contraintes d'intégrité, les statistiques ou l'apprentissage automatique pour nettoyer les données[2].

Problématique

Les problèmes liés au nettoyage de données sont apparues au début des années 2000 avec l'explosion d'Internet et des entrepôts de données.

Les entrepôts de données sont utilisés pour la prise de décision. Ceci implique que les données doivent être fiables. Des données incorrectes ou incohérentes peuvent conduire à de fausses conclusions et à de mauvaises prises de décision[3] .

Par exemple, le gouvernement peut vouloir analyser les chiffres du recensement de la population pour décider quelles régions exigent davantage de dépenses et d'investissements en infrastructures et services. Dans ce cas, il est important d'avoir accès à des données fiables pour éviter des décisions budgétaires erronées.

Les erreurs dans les données coûtent aux entreprises l'équivalent de 10 à 20% de leur budget d’implémentation. De plus, on estime que 40 à 50% du budget temps d'un projet est dépensé dans la correction d'erreurs dans les données[4].

Types d'erreurs

Les erreurs sur les données peuvent être de toutes sortes. Par exemple, une erreur peut apparaître lors d'une saisie (donnée manquante, données dupliquées, erreur de saisie, mauvais format, etc.)

Exemple d'erreurs multiples
Prénom Age Sexe Taille
Alice 150 F 1'70
Bob Joe 34 M
Charlie 19 1'67

Erreurs de syntaxe

Erreurs lexicales

Une erreur lexicale est une divergence entre le nom de la donnée attendu et le format spécifié.

Exemple d'erreur lexicale
Prénom Age
Alice F
Bob M
Charlie 21

Erreurs de formatage

Une erreur de formatage est une entrée qui ne correspond pas à un modèle donné.

Exemple d'erreur de formatage
Nom
Doe, John
John Smith

Erreurs d'irrégularité

Une erreur d'irrégularité se produit lorsqu'une donnée n'est pas représentée de façon régulière, en suivant le même schéma, la même suite logique d'écriture. Cela peut intervenir pour la représentation de distance par exemple en utilisant différents systèmes métriques.

Exemple d'irrégularité
Distance
25 km
23 km
20 mi

Erreurs sémantiques

Violation des contraintes d'intégrité

Ce sont les erreurs qui ne respectent pas les règles d'intégrité du schéma de données.

Ce sont souvent des règles de bon sens comme la vérification d'une valeur supérieure à 0 pour l'âge d'une personne ou encore la vérification de l'unicité d'une clé primaire dans une base de données.

Erreurs de contradiction

Les erreurs de contradiction sont des contradictions dans les données.

Par exemple une erreur de contradiction peut intervenir lorsque l'âge spécifié ne correspond pas à la date de naissance.

Erreurs de duplication

Les erreurs de duplication surviennent lorsque plusieurs occurrences de la même donnée sont stockées.

Ces erreurs peuvent être vues comme un cas spécifique des erreurs de contradiction.

Erreurs de donnée invalide

Ce sont des entrées qui sont dites invalides mais qui ne sont pas détectables par la mise en place de contraintes. Ce sont des erreurs qui sont spécifiques au domaine.

Erreurs de couverture

Valeur manquante

Ce type d'erreur provient d'une omission d'un champs de la donnée, lorsque la valeur attendue est manquante.

Exemple de valeur manquante
Prénom Age Sexe Taille
Alice 23 F 1'70
Bob 34 M 1'82
Charlie 19 M

Donnée manquante

Ce type d'erreur provient lorsqu'une donnée est vide ou manquante.

Exemple de donnée manquante
Prénom Age Sexe Taille
Alice F 1'70
Bob M 1'86
Charlie M 1'68

Méthodes existantes

On distingue deux types d'approches :

  • Celles des entreprises, qui utilisent généralement des nettoyeurs de type ETL[5]. Ce type d'approche a été le premier à avoir vu le jour.
  • Celles des scientifiques, qui explorent de nouvelles approches qui se basent sur les contraintes d'intégrité[6][7][8][9][10], les statistiques[11], l'apprentissage automatique[12] ou encore le crowdsourcing[13].

Le nettoyage de données se décompose en 3 phases :

  • Analyser les données afin de détecter les potentiels problèmes
  • Choisir le type de transformations à effectuer
  • Appliquer ces informations aux données

Parsing

La méthode de parsing est utilisée pour la détection d'erreurs de syntaxe. Un parseur décide de l'acceptabilité de la donnée représentée par une chaîne de caractères. Il s'assure que la donnée suit la spécification.

Ce type d'approche requiert un set de données qui peut être converti en distance pour pouvoir être comparé.

Cette approche a ses limites. En effet, celle-ci se base généralement sur des expressions régulières pour déterminer la validité d'une entrée. Ce processus de vérification peut être amélioré avec des techniques d'apprentissage automatique.

Transformation de donnée

La transformation de donnée est une opération qui regroupe plusieurs champs en un seul.

Par exemple, la décomposition d'une date en plusieurs champs (année, mois et jour) ou encore la transformation d'une entrée de type booléen en entier (true = 1).

Renforcement des contraintes d'intégrité

Les contraintes d'intégrité sont au départ utilisées pour prévenir des erreurs sur les données, cependant il se peut qu'elles ne suffisent pas et que des erreurs sur les données se manifestent au fil du temps. Dans certains cas, le meilleur moyen d'améliorer la qualité des données n'est pas de corriger les données corrompues, mais plutôt de modifier les contraintes d'intégrité car la sémantique des données ou de l'application peut avoir évoluée.

Le but de cette méthode n'est pas de modifier les données de manière directe mais de trouver et modifier les contraintes d'intégrité douteuses afin qu'elles s'accordent mieux avec les données.

Méthode statistique

Malgré les recherches faites sur les contraintes d'intégrité ainsi que sur d'autres méthodes visant à améliorer la qualité des données, les bases de données peuvent encore contenir un certain nombre d'erreurs subtiles, syntaxiques ou sémantiques, qu'il est difficile voire impossible d'exprimer (et détecter) en utilisant les contraintes générales offertes dans les SGBD actuels.

L'utilisation des statistiques permet d'obtenir des corrections d'erreurs plus fiables. En identifiant de potentielles dépendances statistiques entre les paires de données similaires et en développant des algorithmes que l'on peut greffer simplement dans les SGBD standards, on peut estimer automatiquement ces dépendances. Cette méthode permet par exemple de déduire des valeurs correctes même en présence de valeurs manquantes ou corrompues.

Les méthodes statistiques peuvent être utilisées pour l'analyse des données et/ou leur correction.

Crowdsourcing

Il peut arriver que les méthodes précédentes n'aient pas assez d'éléments de preuve pour pouvoir identifier et corriger les erreurs[14].

Une approche basée sur le crowdsourcing permet d'utiliser des bases de connaissance externes qui permettent d'identifier plus d'erreurs automatiquement.

Les erreurs détectées qui ne peuvent être réparées automatiquement sont proposées à un humain qui les corrige manuellement.

Solutions existantes

La recherche permet d'apporter de nouvelles solutions qui utilisent les approches citées précédemment. En voici quelques unes :

Potter's Wheel

Potter's wheel[15] est une méthode de nettoyage de données interactive qui permet la détection et la transformation de données.

Cette solution permet à l'utilisateur de construire des transformations lorsque celles-ci se présentent et d'ainsi améliorer itérativement la détection et la transformation. Ceci sans écrire de programmes complexes ou de perdre du temps de développement[16].

Potter's wheel fournit des transformations les plus générales possibles et assez puissantes pour faire la plupart des tâches de transformation sans programmation[17]. Les utilisateurs saisissent des expressions régulières ou des expressions grammaticales pour spécifier les transformations à effectuer[18].

Avec Potter's wheel, c'est à l'utilisateur de choisir le résultat qu'il désire en sortie[19].

Le problème de l'approche de Potter's Wheel est de trouver une expression régulière qui ressemble le plus à la valeur à modifier sans pour autant lui être trop spécifique. Il faut garder à l'esprit que celle-ci peut avoir des variantes[20].

AJAX

AJAX[21] est un framework qui tente de séparer la partie logique (design et spécification du workflow) de la partie physique (implémentation). AJAX modélise la logique de nettoyage de données par un graphe orienté de transformations. Il prend comme entrée des données contenant des erreurs et revoie des données propres[22].

Le but majeur est de transformer des données existantes venant d'une ou plusieurs collections en un schéma cible tout en éliminant les doublons pendant le processus. Le processus se décompose en 5 transformations : mapping, view, matching, clustering et merging. Le matching operator est notamment important dans la détection des doublons.

AJAX possède :

  • des opérateurs logiques (extension d'algèbre relationnelle)
  • des algorithmes d’exécution physique
  • un langage déclaratif pour les opérateurs logiques

Ce langage consiste en des requêtes SQL enrichies par des primitives spécifiques. Son aspect déclaratif est hérité du SQL et garantit un déploiement ainsi qu'une maintenance facile des programmes de nettoyage de données. Il n'est cependant pas complètement déclaratif de par la présence de code impératif servant à la customisation pour un programme particulier si besoin.

IntelliClean 

IntelliClean[23] est une approche fondée sur des règles essentiellement centrées sur l'élimination des doublons.

Cette solution consiste en 3 étapes :

  • Pré-processing : élimination des erreurs syntaxiques, standardisation des formats et abréviations utilisées.
  • Processing : évaluation des règles de nettoyage sur les données qui spécifie une action à effectuer sous certaine condition.
  • Human Verification/Validation : les deux premières étapes produisent des logs de leur exécution qui permettent lors de la troisième étape à des humains de les étudier afin de vérifier et/ou corriger les précédentes actions effectuées.

Il y a 4 types de règles pour l'étape Processing :

  • Duplicate identification : ces règles spécifient les conditions qui permettent d'affirmer quels tuples sont des doublons.
  • Merge/Purge : ces règles indiquent comment les doublons doivent être gérés.
  • Update Rules : ces règles indiquent comment les données doivent être gérées dans certaines conditions, elles permettent notamment la spécification de règles de renforcement des contraintes d'intégrité en indiquant la manière dont les valeurs manquantes doivent être remplies.
  • Alert rules : ces règles spécifient les conditions pour lesquelles l'utilisateur est notifié.

FraQL

FraQL[24] est un autre langage déclaratif permettant la spécification d'un processus de nettoyage de données. Il est similaire à AJAX par le fait que c'est également une extension du SQL. FraQL permet de spécifier transformations de schémas et de données, standardisations/normalisations de valeurs grâce à des fonctions crées par l'utilisateur.

Grâce à la combinaison de ces fonctions utilisateurs avec les opérateurs de jointure et d'union, FraQL permet l'identification et l'élimination des doublons. Enfin cette solution permet le remplissage de valeurs manquantes ainsi que l'élimination de tuples invalides par la détection du bruit dans les données.

ARKTOS

ARKTOS[25] est un framework capable d’exécuter de l'ETL pour la création de data warehouse. En effet, les auteurs de cette solution considèrent le nettoyage de données comme une part de l'ETL. Les étapes individuelles du processus sont appelées activités. Chaque activité est liée à une entrée et une sortie. La logique d'une activité est décrite par une requête SQL. Chaque requête est associée à un type d'erreur et une règle qui indique le comportement en cas de rencontre d'une telle erreur.

Il y a 6 types d'erreurs possibles dans un processus ETL, PRIMARY KEY VIOLATION, UNIQUENESS VIOLATION et REFERENCE VIOLATION sont des cas particuliers de violation de contraintes d'intégrité. Le type d'erreur NULL EXISTENCE est lié à l’élimination des valeurs manquantes. Les types d'erreurs restantes sont DOMAIN MISMATCH et FORMAT MISMATCH qui font référence au lexique et aux erreurs de formatage.

Les comportements qu'il est possible d'associer à une erreur sont IGNORE, qui ne va pas marquer le tuple comme erroné, DELETE, WRITE TO FILE et INSERT TO TABLE avec la sémantique attendue. Seuls les deux derniers permettent une interaction avec l'utilisateur.

La qualité du nettoyage peut être mesurée pour chaque activité en exécutant une requête SQL similaire qui va compter le ratio matching/violating des tuples.

ARKTOS définit deux langages déclaratifs servant à spécifier le processus ETL. Il est également muni d'un constructeur de scénarii graphiques.

KATARA

KATARA[13] est un système qui fait le pont entre les bases de connaissance et le crowdsourcing pour un nettoyage des données de bonne qualité.

Contrairement à d'autres approches, KATARA utilise un algorithme pour retrouver les types des données et les relations entre celles-ci. Grâce à ces informations, KATARA utilise une approche probabiliste pour déterminer la correction la plus cohérente à faire. Ces probabilités sont déterminées grâce aux bases de connaissances.

La recherche des données corrompues est un problème difficile. Pour améliorer cette recherche, la qualité des nettoyages ainsi que la précision des réparations, KATARA améliore les bases de connaissances avec les nouvelles entrées nettoyées et vérifiées par des humains[26].

KATARA permet aux entreprises de faire des économies. En effet, faire appel au crowdsourcing implique qu'il n'est pas nécessaire d'avoir un expert du domaine pour réparer une donnée corrompue[27].

Notes et références

Bibliographie

  • (en) F. Geerts, G. Mecca, P. Papotti et D. Santoro, « The LLUNATIC Data-Cleaning Framework », PVLDB, vol. 6, no 9,‎ , p. 625-636 (lire en ligne)
  • (en) S. Song, H. Cheng, J. Xu Yu et L. Chen, « Repairing Vertex Labels under Neighborhood Constraints », PVLDB, vol. 7, no 11,‎ , p. 987-998 (lire en ligne)
  • (en) W. E. Winkler, « Data Cleaning Methods », SIGKDD,‎ (lire en ligne)
  • (en) V. Raman et J. M. Hellerstein, « Potter's Wheel: An Interactive Data Cleaning System », VLDB,‎ , p. 381-390 (ISBN 1-55860-804-4, lire en ligne)
  • (en) E. Rahm et H. Hai Do, « Data Cleaning: Problems and Current Approaches », IEEE, vol. 23, no 4,‎ , p. 3-13 (lire en ligne)
  • (en) P. Vassiliadis, Z. Vagena, S. Skiadopoulos, N. Karayannidis et T. Sellis, « Arktos: A Tool For Data Cleaning and Transformation in Data Warehouse Environments », IEEE,‎ , p. 42-47 (DOI 10.1.1.109.2911, lire en ligne)
  • (en) H. Müller et J-C. Freytag, Problems, Methods, and Challenges in Comprehensive Data Cleansing, (lire en ligne)

Voir aussi

Liens externes