Quelles sont les compétences requises pour effectuer des analyses statistiques à grande échelle?

107

De nombreux emplois statistiques demandent une expérience avec des données à grande échelle. Quelles sont les compétences statistiques et informatiques nécessaires pour travailler avec de grands ensembles de données? Par exemple, qu’en est-il de la construction de modèles de régression à partir d’un ensemble de données contenant 10 millions d’échantillons?

bit-question
la source
1
Quelques bons indicateurs ici .
Radek
Il serait utile que vous résumiez ceux qui vous semblent les meilleurs.
rolando2
La discussion connexe sur le test des hypothèses avec de grands ensembles de données est également intéressante: stats.stackexchange.com/q/2516/919
whuber

Réponses:

115

De bonnes réponses sont déjà apparues. Je partagerai donc simplement quelques réflexions basées sur l'expérience personnelle: adaptez les pertinentes à votre propre situation en fonction des besoins.

Pour le fond et le contextePour que vous puissiez prendre en compte les préjugés personnels qui pourraient s’insérer dans ce message, une grande partie de mon travail a consisté à aider les gens à prendre des décisions importantes en fonction de jeux de données relativement restreints. Elles sont petites parce que les données peuvent être coûteuses à collecter (10 000 dollars pour le premier échantillon d’un puits de surveillance des eaux souterraines, par exemple, ou plusieurs milliers de dollars pour des analyses de produits chimiques inhabituels). Je suis habitué à tirer le maximum de toutes les données disponibles, à les explorer à mort et à inventer de nouvelles méthodes pour les analyser si nécessaire. Cependant, au cours des dernières années, je me suis engagé à travailler sur des bases de données assez volumineuses, telles que des données socio-économiques et techniques couvrant l’ensemble des États-Unis au niveau du bloc de recensement (8,5 millions d’enregistrements,

Avec de très grands ensembles de données, toute l'approche et l'état d'esprit changent . Il y a maintenant trop de données à analyser. Parmi les implications évidentes immédiates (et rétrospectives) (en mettant l’accent sur la modélisation par régression), citons:

  • Toute analyse que vous envisagez de faire peut prendre beaucoup de temps et de calculs. Vous devrez développer des méthodes de sous - échantillonnage et de travail sur des ensembles de données partiels afin de pouvoir planifier votre flux de travail lors du calcul avec l'ensemble de données. (Le sous-échantillonnage peut être compliqué, car vous avez besoin d'un sous-ensemble représentatif de données aussi riche que l'ensemble du jeu de données. Et n'oubliez pas la validation croisée de vos modèles avec les données conservées.)

    • Pour cette raison, vous passerez plus de temps à documenter ce que vous faites et à tout écrire dans un script (afin que cela puisse être répété).

    • Comme @dsimcha vient de le noter, de bonnes compétences en programmation sont utiles. En fait, vous n'avez pas besoin de beaucoup d'expérience dans les environnements de programmation, mais vous avez besoin de volonté de programmer, de savoir reconnaître quand la programmation vous aidera (à chaque étape, vraiment) et de bien comprendre les éléments de base de l'informatique, telle que la conception de structures de données appropriées et l'analyse de la complexité de calcul d'algorithmes. C'est utile pour savoir à l'avance si le code que vous prévoyez d'écrire sera mis à l'échelle pour l'intégralité du jeu de données.

    • Certains jeux de données sont volumineux car ils comportent de nombreuses variables (des milliers ou des dizaines de milliers, toutes différentes). Attendez-vous à passer beaucoup de temps à résumer et à comprendre les données . Un dictionnaire ou un dictionnaire de données , ainsi que d’autres formes de métadonnées , deviennent essentiels.

  • Une grande partie de votre temps est consacrée au simple déplacement des données et à leur reformatage. Vous avez besoin de compétences pour traiter de grandes bases de données et de résumer et de représenter graphiquement de grandes quantités de données. ( Le petit multiple de Tufte apparaît ici.)

  • Certains de vos outils logiciels préférés échoueront. Oubliez les feuilles de calcul, par exemple. Beaucoup de logiciels open source et académiques ne seront tout simplement pas en mesure de gérer de grands ensembles de données: le traitement durera une éternité ou le logiciel plantera. Attendez-vous à cela et assurez-vous de disposer de plusieurs façons d'accomplir vos tâches principales.

  • Presque tous les tests statistiques que vous exécuterez seront si puissants qu'il est presque certain d'identifier un effet "significatif". Vous devez vous concentrer davantage sur l’ importance statistique , telle que la taille de l’effet, que sur l’importance.

  • De même, la sélection du modèle est gênante, car presque toutes les variables et toutes les interactions que vous pourriez envisager auront l’air significatif. Vous devez vous concentrer davantage sur la signification des variables que vous choisissez d'analyser.

  • Il y aura plus qu'assez d'informations pour identifier les transformations non linéaires appropriées des variables. Savoir comment faire cela.

  • Vous aurez suffisamment de données pour détecter les relations non linéaires, les changements de tendance, la non-stationnarité, l'hétéroscédasticité , etc.

  • Vous ne serez jamais fini . Il y a tellement de données que vous pourriez les étudier pour toujours. Il est donc important d’établir vos objectifs analytiques dès le départ et de les garder constamment à l’esprit.

Je terminerai par une courte anecdote qui illustre une différence inattendue entre la modélisation par régression avec un grand ensemble de données et un plus petit. À la fin de ce projet avec les données du recensement, un modèle de régression que j'avais développé devait être implémenté dans le système informatique du client, ce qui impliquait l'écriture de code SQL dans une base de données relationnelle. Il s'agit d'une étape de routine, mais le code généré par les programmeurs de base de données impliquait des milliers de lignes de code SQL. Cela rendait presque impossible de garantir que le logiciel était exempt de bogues - même si nous pouvions détecter les bogues (les résultats des tests étaient différents), les trouver était un autre problème. (Tout ce dont vous avez besoin, c'est d'une erreur typographique dans un coefficient ...) Une partie de la solution consistait à écrire un programme générant les commandes SQL directement à partir des estimations du modèle. . Cela garantissait que ce qui était sorti du paquet de statistiques était exactement ce qui était dans le SGBDR. En prime, quelques heures consacrées à l'écriture de ce script ont éventuellement remplacé plusieurs semaines de codage et de test SQL. Ceci est une petite partie de ce que cela signifie pour le statisticien de pouvoir communiquer ses résultats.

whuber
la source
3
+1, je vais partager cette merveilleuse réponse (et l'imprimer pour avoir à proximité ^ _ ^)
Dmitrij Celov
1
+1, c'est ce que je vais certainement rappeler à mes étudiants de nombreuses années à venir.
Mpiktas
2
L'anecdote m'a rappelé le moment où j'ai dû transférer le modèle d'Eviews vers R. Le modèle original a été créé dans Eviews. Le résultat était d'environ 20 équations. Je devais présenter les résultats dans la page Web avec une interface interactive. Comme le modèle était un travail en cours, j'ai écrit un code traduisant la sortie de code Eviews en code R avec le même objectif que le modèle exact était utilisé à la fois dans Eviews et dans R. Très bien travaillé, j'ai même fini par différencier le code traduit. pour le calcul du gradient analytique.
Mpiktas
2
Il est généralement considéré comme plus constructif (voire simplement par courtoisie) lorsque les commentaires négatifs sont justifiés dans un commentaire, sauf s’il existe des raisons évidentes de ne pas le faire (par exemple, réponse vague à une ligne, pas de réponse à la demande de mise à jour d’une réponse fausse, comportement offensant). Cela contribue à améliorer la qualité d'une réponse lorsque des arguments valides sont formulés. Dans ce cas particulier, je ne vois aucune raison pour un vote négatif!
chl
2
+1 pour l'automatisation réduit l'erreur: " écrivez un programme qui a généré les commandes SQL directement à partir des estimations du modèle ".
Orion
18

Votre question devrait donner de bonnes réponses. Voici quelques points de départ.

  1. Une capacité à travailler avec les compromis entre la précision et les exigences imposées à la puissance de calcul.

  2. Installation dotée de techniques d’exploration de données pouvant servir d’outil de présélection avant la régression. Par exemple, chaid, charrette ou réseaux de neurones.

  3. Une compréhension profonde de la relation entre la signification statistique et la signification pratique. Un large répertoire de méthodes de sélection variable.

  4. L'instinct de validation croisée.

rolando2
la source
Je voudrais également combiner les points 4 et 1: il est important de savoir valider sans dépasser vos ressources informatiques.
Zach
1
Pourriez-vous expliquer votre 2ème point? Comment utiliseriez-vous CHAID / CART / réseaux de neurones comme outils de dépistage pour la régression?
Raegtin
2
@raegtin - Je connais le mieux CHAID, qui propose des "interactions" qui sont souvent les effets principaux qui se font passer pour des interactions, car c'est la seule façon dont la procédure les "laissera entrer". (Dans CHAID, il ne peut y avoir qu'un seul effet principal identifié en tant que tel, de sorte que tous les autres effets principaux sont regroupés dans des cellules "d'interaction".) Mais CHAID a l'avantage de pouvoir contrôler de nombreuses interactions. Donc, une fois que quelques prometteurs sont identifiés, ils peuvent être incorporés dans une régression ou anova, avec tous leurs composants d’ordre inférieur, et on peut tester ceux qui sont vraiment utiles.
rolando2
1
+1 Je suis intrigué par la possibilité d'utiliser l'exploration de données (en particulier CHAID) pour explorer les effets potentiels. Il serait intéressant de voir une application, comme avec le jeu de données artificiel (et petit), à l' adresse stats.stackexchange.com/q/10363/919
whuber
12

De bonnes compétences en programmation sont indispensables. Vous devez être capable d’écrire du code efficace capable de traiter d’énormes quantités de données sans s’étouffer, et peut-être de pouvoir paralléliser ledit code pour le faire fonctionner dans un laps de temps raisonnable.

Dsimcha
la source
4
Le codage est indispensable, mais il est également important de savoir comment travailler avec le système d'exploitation. Vous devez comprendre que le fractionnement du travail entraîne parfois des coûts supplémentaires, car l'accès aux disques et aux réseaux entraîne des coûts supplémentaires. Vous devez comprendre différentes manières de bloquer, d'attendre et de faire de la communication interprocessus. J'ai vu des codes scientifiques géniaux qui passaient le plus clair de leur temps à attendre la fin de certains appels système. Devenez l'ami du système de votre système, vous pouvez obtenir beaucoup d'aide pour l'optimisation de vos systèmes en leur apportant du café;)
Marcin
2
Parfois, il est préférable d’écrire «Code inefficace» si cela permet de créer des structures de données qui anticipent des questions supplémentaires qui seront probablement posées ultérieurement.
Ralph Winters
1
@Ralph: +1, je suis tout à fait d'accord et j'ai appris cela à la dure. Je ne voulais pas dire que vous devriez toujours écrire du code efficace, quels que soient les compromis, mais que vous sachiez comment faire.
Dsimcha
5

J'ajouterais également que les données à grande échelle introduisent également le problème des "données incorrectes" potentielles. Non seulement les données manquantes, mais aussi les erreurs de données et les définitions incohérentes introduites par chaque élément d'un système ayant jamais touché les données. Donc, en plus des compétences statistiques, vous devez devenir un nettoyeur expert de données, à moins que quelqu'un d'autre ne le fasse pour vous.

-Ralph Winters

Ralph Winters
la source
3
Ce sont de bons points. Les valeurs aberrantes et autres problèmes de données nuisent à tous les ensembles de données, qu’ils soient grands ou petits. D'après mon expérience, ils sont en fait plus faciles à identifier et à traiter dans de grands ensembles de données, car vous avez le pouvoir de les distinguer de la masse de données et, surtout si vous utilisez des méthodes robustes, elles sont moins susceptibles d'influencer les résultats. BTW, vous faites toujours "le nettoyage des données" tout au long de votre analyse. Ce n'est pas quelque chose qui peut être séparé et renvoyé à un spécialiste pour être traité une fois pour toutes. Une valeur aberrante n'est qu'une valeur aberrante dans le contexte d'un modèle particulier.
whuber
2
Découvrez google affiner en tant que nettoyeur de données semi-automatique qui permet d’éviter les pièges de l’édition manuelle.
mindless.panda
5
  1. Encadrer le problème dans le cadre Map-réduire .
  2. Le problème technique , par exemple, est-il pénible d’utiliser une précision plus faible pour les paramètres, ou une sélection de modèle basée non seulement sur la généralisation, mais aussi sur les coûts de stockage et de calcul.
bande passante élevée
la source
Pourriez-vous fournir un lien pertinent vers le cadre Map-réduire que vous avez mentionné?
mindless.panda
@ sugar.panda, lien wiki ajouté!
highBandWidth
+1 pour avoir mentionné une précision moindre, bien que ce soit loin d'être une prérogative d'ingénierie. Plus la précision est faible, plus nous sommes susceptibles de prendre de mauvaises décisions. Ceci est étroitement lié à l'erreur de type I / II et couvre plusieurs disciplines, mais concerne principalement la statistique, la science de la décision et l'économie. Les fonctions d’utilité doivent être pensées à l’avance et faire partie du processus de réflexion pour identifier une méthodologie appropriée.
Thomas Speidel