Ensembles de données comprenant les meilleures pratiques

13

Je suis un étudiant en master CS en data mining. Mon superviseur m'a dit une fois qu'avant d'exécuter un classificateur ou de faire quoi que ce soit avec un ensemble de données, je dois bien comprendre les données et m'assurer que les données sont propres et correctes.

Mes questions:

  • Quelles sont les meilleures pratiques pour comprendre un ensemble de données (de grande dimension avec des attributs numériques et nominaux)?

  • Des pratiques pour vous assurer que l'ensemble de données est propre?

  • Des pratiques pour vous assurer que l'ensemble de données n'a pas de valeurs erronées?

Jack Twain
la source

Réponses:

8

Il y a des choses de base que vous pouvez faire avec n'importe quel ensemble de données:

  1. Valider les valeurs (tolérance de longueur de chaîne, type de données, masques de mise en forme, présence de champ obligatoire, etc.)
  2. Exactitude de la plage (ces données apparemment correctes correspondent-elles aux plages de valeurs attendues)
  3. Traitement préliminaire (si j'essaie d'analyser ces données, puis-je effectuer les bases sans rencontrer d'erreurs)
  4. Rapports préliminaires (exécutez un rapport sur un ensemble de données et assurez-vous qu'il réussit un test d'intégrité)
  5. Définir null vs vide vs zero vs faux pour une colonne donnée de données
  6. Identifier les données qui ne sont pas à leur place (valeurs numériques radicalement différentes des autres valeurs d'un ensemble de données, valeurs de chaîne qui semblent être mal orthographiées, etc.)
  7. Éliminer ou corriger des données manifestement erronées

Comprendre les données pour identifier les erreurs est un jeu de balle complètement différent, et c'est très important.

Par exemple, vous pouvez avoir une règle qui dit qu'un numéro de série doit être présent dans un ensemble de données donné et que le numéro de série doit être alphanumérique avec une longueur de chaîne maximale de 255 et une longueur de chaîne minimale de 5.

En regardant les données, vous pouvez trouver une valeur de numéro de série particulière qui "PLEASE ENTER SERIAL" est parfaitement valide, mais erronée.

C'est un peu évident, mais disons que vous traitez les données sur les stocks et que vous aviez une fourchette de prix pour 1000 actions qui était inférieure à un dollar. Beaucoup de gens ne sauraient pas qu'un cours boursier si bas est invalide sur certains échanges et parfaitement valable sur d'autres. Vous avez besoin de connaissances sur vos données pour comprendre si ce que vous voyez est problématique ou non.

Dans le monde réel, vous n'avez pas toujours le luxe de comprendre intimement vos données.

La façon dont j'évite les problèmes consiste à tirer parti des gens qui m'entourent. Pour les petits ensembles de données, je peux demander à quelqu'un d'examiner les données dans leur intégralité. Pour les plus grands, il est plus approprié de tirer un ensemble d'échantillons aléatoires et de demander à quelqu'un de faire un contrôle de santé mentale sur les données.

De plus, il est impératif de remettre en question la source des données et la fiabilité de cette source de données. J'ai souvent plusieurs sources de données conflictuelles et nous créons des règles pour déterminer la "source de vérité". Parfois, un ensemble de données contient d'excellentes données dans un aspect donné, mais d'autres ensembles de données sont plus solides dans d'autres domaines.

Les données saisies manuellement sont généralement ce qui me préoccupe le plus, mais dans certains cas, elles sont plus fortes que tout ce qui peut être acquis via l'automatisation.

Steve Kallestad
la source
5

J'aime beaucoup la réponse de @Kallestad, mais j'aimerais ajouter une méta-étape: assurez-vous que vous comprenez comment les données ont été collectées et quels types de contraintes existent. Je pense qu'il est très courant de penser qu'il n'y a pas d'étapes non évidentes lorsque les données sont collectées, mais ce n'est pas le cas: la plupart du temps, certains processus ou processus individuels ont quelque chose à voir avec les données, et ces étapes peuvent et vont influencer la forme des données.

Deux exemples: j'ai eu une étude récemment où les données ont été collectées par divers contractants du monde entier. Je n'étais pas au briefing, donc c'était opaque pour moi. Malheureusement, les mesures étaient absentes pour certaines parties de la France: les gens aimaient tous la glace, mais nous nous attendions à une distribution aléatoire. Il n'y avait aucune raison évidente à cette uniformité, alors j'ai commencé à chasser les erreurs. Lorsque j'ai interrogé les entrepreneurs, on avait mal compris le briefing et sélectionné uniquement les amateurs de glaces dans sa base de données.

La deuxième erreur était plus difficile: lors d'une analyse géographique, j'ai constaté que beaucoup de gens avaient des mouvements extrêmement importants, ce qui suggérait que beaucoup d'entre eux voyageaient de Munich à Hambourg en quelques minutes. Lorsque j'ai parlé avec des personnes en amont, ils ont trouvé un bug subtil dans leur logiciel d'agrégation de données, qui n'était pas remarqué auparavant.

Conclusions:

  • Ne présumez pas que vos données ont été collectées par des processus / humains parfaits.
  • Essayez de comprendre les limites de vos fournisseurs de données.
  • Examinez les modèles / valeurs individuels et essayez de déterminer s'ils sont logiques (faciles pour les données de mouvement / géographiques)
Christian Sauer
la source
4

Je prends habituellement une approche en deux étapes

  1. calculer des statistiques récapitulatives univariées (variable par variable) telles que la moyenne, la plage, la variance, le nombre de manquants, la cardinalité, etc. pour chaque variable et rechercher les bizarreries (par exemple, plage non plausible compte tenu de la signification de la variable). Tracer des histogrammes pour ces variables impaires.

  2. divisez les données en sous-ensembles gérables (choisissez une variable significative et divisez les données en fonction d'elle, par exemple tous les exemples positifs et tous négatifs) et explorez-les visuellement (par exemple avec ggobi ). Utilisez en particulier des outils tels que le brossage et les diagrammes de dispersion pour comprendre comment les variables sont liées entre elles.

Et lorsque vous commencez à créer des modèles, assurez-vous de tracer les résidus, en recherchant les erreurs extrêmes qui pourraient être dues à une valeur aberrante, ou regardez la matrice de confusion et assurez-vous qu'elle est équilibrée. Utilisez la validation croisée k-fold pour optimiser vos modèles et examinez la variance de l'erreur d'apprentissage pour chaque pli.Si un pli fonctionne bien moins bien que les autres, il peut contenir des valeurs aberrantes.

damienfrancois
la source
4

Vous trouverez ci-dessous une copie de ma réponse à une question connexe (cependant, axée sur l'aspect du nettoyage des données) ici sur Data Science StackExchange ( /datascience//a/722/2452 ), fournie dans son intégralité pour commodité pour les lecteurs. Je pense que cela répond également partiellement à votre question et j'espère que cela vous sera utile. Bien que la réponse se concentre sur l' Récosystème, des packages et / ou des bibliothèques similaires peuvent être trouvés pour d'autres environnements d'analyse de données . De plus, bien que les deux articles sur la préparation des données cités contiennent également des exemples en R, ces articles présentent un flux de travail général (cadre) et les meilleures pratiques applicables à tout environnement d'analyse des données.

R contient des standards fonctions pour la manipulation de données, qui peuvent être utilisés pour le nettoyage des données, dans sa base de paquet ( gsub, transform, etc.), ainsi que dans divers logiciels tiers, tels que stringr , Reshape , reshape2 et plyr . Des exemples et les meilleures pratiques d'utilisation de ces packages et de leurs fonctions sont décrits dans le document suivant: http://vita.had.co.nz/papers/tidy-data.pdf .

De plus, R propose des packages spécifiquement axés sur le nettoyage et la transformation des données:

Une approche complète et cohérente du nettoyage des données dans R, y compris des exemples et l'utilisation de règles d' édition et de packages de déductibilité , ainsi qu'une description du flux de travail ( cadre ) du nettoyage des données dans R, est présentée dans le document suivant, que je recommande fortement: http : //cran.r-project.org/doc/contrib/de_Jonge+van_der_Loo-Introduction_to_data_cleaning_with_R.pdf .

Aleksandr Blekh
la source
1

J'ajouterai une chose - si possible, faites une vérification du caractère raisonnable en comparant vos données avec une autre source. Il semble que chaque fois que je ne le fais pas, je me brûle :(

JenSCDC
la source