446 votes

Quelles statistiques devrait un programmeur (ou informaticien) connaître ?

Je suis un programmeur avec un bon fond en mathématiques et en informatique. J'ai étudié à la compilation, la théorie des graphes, algèbre linéaire, algèbre abstraite, les algorithmes, et un peu de probabilités et statistiques (par le biais de quelques CS classes) au niveau du premier cycle.

Je pense, cependant, que je ne sais pas assez sur les statistiques. Les statistiques sont de plus en plus utile dans le calcul de statistiques, traitement du langage naturel carburant de aide de certains des algorithmes de Google pour la recherche et la traduction automatique, avec l'analyse des performances du matériel, des logiciels et des réseaux ayant besoin de la bonne statistique de mise à la terre pour être crédible, et avec des champs comme la bioinformatique répand de plus en plus chaque jour.

J'ai lu sur la façon dont Google utilise le filtrage Bayésien à la façon dont Microsoft utilise l'instruction if", et je sais que la puissance de même assez naïf, simple statistique des approches aux problèmes de Paul Graham est Un Plan pour le Spam et Mieux Filtrage Bayésien, mais je voudrais aller au-delà.

J'ai essayé de regarder en apprendre plus dans les statistiques, mais j'ai eu un peu perdu. L' article de Wikipédia a une longue liste de sujets connexes, mais je ne suis pas sûr que je devrais regarder dans. J'ai envie de partir de ce que j'ai vu, beaucoup de statistiques fait l'hypothèse que tout est une combinaison de facteurs qui combiner linéairement, en plus de certains de bruit aléatoire dans une distribution Gaussienne; je me demandais ce que je devrais apprendre au-delà de la régression linéaire, ou si je dois passer du temps à vraiment comprendre avant de passer à d'autres techniques. J'ai trouvé un peu long listes de livres à regarder; où dois-je commencer?

Alors je me demandais où aller à partir d'ici; ce que à apprendre, et où à apprendre. En particulier, j'aimerais savoir:

  1. Quel genre de problèmes dans la programmation, génie logiciel et de l'informatique sont des méthodes statistiques bien adapté pour? Où vais-je obtenir les plus gros gains?
  2. Ce genre de méthodes statistiques dois-je passer mon temps d'apprentissage?
  3. Quelles ressources dois-je utiliser pour apprendre? Des livres, des documents, des sites web. J'apprécierais une discussion de ce que chaque livre (ou autres ressources), et pourquoi il est pertinent.

Pour clarifier ce que je recherche, je m'intéresse à ce que les problèmes que les programmeurs doivent généralement faire face avec peut bénéficier d'une approche statistique, et ce genre d'outils statistiques peuvent être utiles. Par exemple:

  • Les programmeurs ont souvent besoin de traiter de grandes bases de données de texte dans les langues naturelles, et de les aider à catégoriser, classer, rechercher et traiter autrement. Ce que les techniques statistiques sont utiles ici?
  • Plus généralement, l'intelligence artificielle a été s'éloigne de discret, symbolique, les approches et les vers des techniques statistiques. Quelles statistiques AI approches ont le plus à offrir, maintenant, pour le travail du programmeur (par opposition au cours d'une recherche qui peut ou ne peut pas fournir des résultats concrets)?
  • Les programmeurs sont souvent amenés à produire des systèmes à haute performance, qui à l'échelle sous la charge. Mais on ne peut pas vraiment parler de performance, sauf si vous pouvez le mesurer. Quel type de design expérimental et outils statistiques devez-vous utiliser pour être en mesure de dire avec confiance que les résultats sont significatifs?
  • Simulation de systèmes physiques, comme en infographie, implique souvent une approche stochastique.
  • Existe-il d'autres problèmes couramment rencontrés par les programmeurs qui pourraient bénéficier d'une approche statistique?

227voto

Ian Fellows Points 8013

Question intéressante. En tant que statisticien dont l'intérêt est de plus en plus aligné avec l'informatique je pourrais peut-être donner quelques idées...

  1. Ne pas apprendre fréquentiste tests d'hypothèse. Bien que la majeure partie de mon travail se fait dans ce paradigme, il ne correspond pas aux besoins de l'entreprise ou de l'exploration de données. Les scientifiques ont généralement des hypothèses spécifiques à l'esprit, et souhaitant évaluer la probabilité que, compte tenu de leur hypothèse n'est pas vrai, les données sont aussi extrêmes que c'est. Ce qui est rarement le type de réponse d'un informaticien veut.

  2. Bayésien est utile, même si vous ne savez pas pourquoi vous êtes en supposant que les prieurs que vous utilisez. Un baysian analyse peut vous donner une probabilité exacte de l'apparition de l'estimation pour diverses éventualités, mais il est important de réaliser que la seule raison pour laquelle vous avez cette estimation précise est parce que vous avez fait une décision floue quant à la probabilité a priori. (Pour ceux qui ne sont pas dans le savoir, avec baysian inférence, vous pouvez spécifier un arbitraire de probabilité a priori, et de mettre à jour en se fondant sur les données recueillies pour obtenir une meilleure estimation).

L'apprentissage de la Machine et de la classification pourrait être un bon endroit pour commencer. La machine d'apprentissage de la littérature est plus axé sur l'informatique des problèmes, si c'est la mission est presque identique à celle de la statistique ( voir: http://anyall.org/blog/2008/12/statistics-vs-machine-learning-fight/ ).

Puisque vous avez parlé de grandes bases de données avec un grand nombre de variables, voici quelques algorithmes de pratique dans ce domaine.

  • adaboost: Si vous avez un grand nombre de merde classificateurs, et que vous voulez en faire un classificateur. (voir aussi logit boost)
  • Machines à Vecteurs de Support: Un outil puissant et flexible classificateur. Peut apprendre des modèles non-linéaires (bien linéaire au non-linéaire de l'espace du noyau si vous voulez être pointilleux à ce sujet).
  • k-plus proche voisin: Un simple mais puissant algorithme. Il n'est pas bien, mais il y a d'approximatif du voisin le plus proche des solutions de rechange qui ne sont pas pathologiques.
  • PANIER: Cet algorithme partitions de la base de données sur un certain nombre de variables prédictives. Il est particulièrement bon si il y a des variables d'interactions, ou qu'il existe un très bon prédicteur qui ne fonctionne que sur un sous-ensemble de données.
  • Moins d'angle de régression: si la valeur de ce que vous essayez de prévoir est continue et vous avez beaucoup de données et de beaucoup de facteurs prédictifs.

Ce n'est pas complète, mais devrait vous donner un bon point de départ. Un très bon et accessible livre sur le sujet est Duda, Hart, la Cigogne: Schéma de Classification

Aussi, une grande partie des statistiques descriptives, des visualisations et d'analyse. Ces sont d'un intérêt particulier pour le programmeur, car ils lui permettent de transmettre des informations à l'utilisateur. Dans R, ggplot2 est mon paquet de choix pour la création de visualisations. Sur l'analyse descriptive côté (et utile dans l'analyse de texte) est multi-dimensionnel de la mise à l'échelle, ce qui peut donner un espace d'interprétation de la non-spatiale de données (par exemple les idéologies de sénateurs http://projecteuclid.org/DPubS?service=UI&version=1.0&verb=Display&handle=euclid.aoas/1223908041).

102voto

Stefano Borini Points 36904

Tout comme un point, non pas comme une critique, mais votre question doit être formulée de façon différente: "ce que les statistiques doivent toute personne le sais?".

Le fait est, malheureusement, nous faisons tous face à la statistique. C'est un fait de la vie. Des sondages, des prévisions météo, l'efficacité de la drogue, des assurances, et, bien sûr, certaines parties de l'informatique. Être capable d'analyser de façon critique les données présentées donne la ligne entre le choix de la bonne compréhension ou d'être victime d'une arnaque, quoi que cela signifie.

Dit, je pense que les points suivants sont importants pour comprendre

  • moyenne, médiane, écart type d'un échantillon, et la différence entre l'échantillon et de la population (ce qui est très important)
  • les distributions, et pourquoi la distribution gaussienne est si important (le théorème de la limite centrale)
  • Ce qu'il est chargé avec le test d'Hypothèse Nulle.
  • Qu'est-ce que la variable de transformation, corrélation, régression, analyse multivariée.
  • Qu'est-ce que les statistiques bayésiennes.
  • Traçage des méthodes.

Tous ces points sont essentiels non seulement pour vous en tant qu'informaticien, mais aussi comme un être humain. Je vais vous donner quelques exemples.

  • L'évaluation de l'hypothèse nulle est critique pour le test de l'efficacité d'une méthode. Par exemple, si un médicament est efficace, ou si un correctif à votre matériel a un résultat concret ou c'est juste une question de chance. Dites vous souhaitez améliorer la vitesse d'une machine, et de changer le disque dur. Ce changement? vous pourriez faire de l'échantillonnage de la performance avec l'ancien et le nouveau disque dur, et de vérifier les différences. Même si vous trouvez que la moyenne avec le nouveau disque est plus faible, cela ne signifie pas que le disque dur a un effet à tous. Ici, entre l'hypothèse Nulle de test, et il vous donnera un intervalle de confiance, pas de réponse définitive, comme : il y a une probabilité de 90% que le fait de changer le disque dur a un effet concret sur les performances de votre machine.

  • La corrélation est important de savoir si les deux entités, le "changement de la même façon". Comme l'internet mantra "corrélation n'est pas causalité" enseigne, il doit être pris avec précaution. Le fait que deux variables aléatoires montrent la corrélation ne signifie pas que l'un entraîne l'autre, ni qu'ils sont liés par une troisième variable (qui ne sont pas de mesure). Ils pourraient simplement se comporter de la même manière. Regardez pour les pirates et le réchauffement climatique à comprendre le point. Une corrélation signale un possible signal, il ne fait pas état d'une constatation.

  • Bayésien. Nous savons tous que le filtre anti-spam. mais il y a plus. Supposons que vous allez à un examen médical et le résultat indique que vous avez un cancer (j'ai sérieusement ne l'espère pas, mais c'est pour illustrer un point). Le fait est: la plupart des gens à ce point, pense que "j'ai un cancer". Ce n'est pas vrai. Un test positif pour le cancer déplace votre probabilité d'avoir un cancer de la ligne de base pour la population (par exemple, 8 par des milliers de personnes ont le cancer, choisi hors de l'air mince) à une valeur plus élevée, ce qui n'est pas à 100 %. Quel est ce nombre dépend de la précision du test. Si le test est moche, vous pourriez être juste un faux positif. Plus la précision de la méthode est d'autant plus élevée que le déphasage, mais pas encore à 100 %. Bien sûr, si plusieurs tests indépendants confirment toutes que vous avez un cancer, alors il est très probable que vous avez effectivement il, mais c'est toujours pas à 100 %. c'est peut-être à 99,999 %. C'est un point que beaucoup de gens ne comprennent pas les statistiques bayésiennes.

  • Traçage des méthodes. C'est une autre chose qui est toujours laissé sans surveillance. L'analyse des données ne signifie rien si vous ne pouvez pas transmettre efficacement ce qu'ils veulent dire par l'intermédiaire d'un tracé simple. En fonction des informations que vous souhaitez mettre en évidence, ou le type de données que vous avez, vous préférez un xy de la parcelle, un histogramme, un violon parcelle de terrain, ou d'un graphique à secteurs.

Maintenant, passons à vos questions. Je pense que j'ai abusé dans juste une note rapide, mais depuis que ma réponse a été voté à beaucoup, je pense que c'est mieux si je réponds correctement à vos questions autant que mes connaissances permet (et ici, c'est les vacances, donc je peux livrer autant que je veux)

Quel genre de problèmes dans la programmation, génie logiciel et de l'ordinateur les sciences sont des méthodes statistiques bien adapté pour? Où vais-je obtenir les plus gros gains?

Normalement, tout ce qui a à voir avec la comparaison des données qui implique numérique (ou réduit à numérique) entrée provenant de sources non fiables. Un signal provenant d'un instrument, un tas de pages et le nombre de mots qu'ils contiennent. Quand vous avez ces données, et de trouver un distillée réponse du groupe, alors vous avez besoin de statistiques. Pensez par exemple à l'algorithme pour effectuer la détection de clics sur l'iphone. Vous êtes à l'aide d'un tremblement, de la graisse stylet pour faire référence à une icône qui est beaucoup plus petit que le stylet lui-même. Clairement, le matériel (écran capacitif) vous enverra un tas de données sur le doigt, en plus d'un tas de données sur le bruit aléatoire (de l'air? ne sais pas comment cela fonctionne). Le conducteur doit faire sens de ce désordre et de vous donner une coordonnée x,y sur l'écran. Qui a besoin d'un peu (beaucoup) de statistique.

Ce genre de méthodes statistiques dois-je passer mon temps d'apprentissage?

Ceux que je vous ai dit est plus que suffisant, aussi parce que, pour les comprendre, vous avez à marcher à travers d'autres trucs.

Quelles ressources dois-je utiliser pour en apprendre plus cette? Des livres, des documents, des sites web. J'avais apprécier une discussion de ce que chaque livre (ou autres ressources), et pourquoi il est pertinent.

J'ai appris des statistiques pour la plupart à partir de la norme à des cours universitaires. Mon premier livre était "l'accident de train du livre", et il est très bon. J'ai aussi essayé cette une, qui met l'accent sur la R mais il ne me plaisait pas particulièrement. Vous devez savoir les choses et les R d'obtenir à travers elle.

Les programmeurs ont souvent besoin pour faire face avec de grandes bases de données de texte dans les langues naturelles, et de les aider à catégoriser, classer, rechercher et sinon le traiter. Quelles statistiques les techniques sont utiles ici?

Cela dépend de la question que vous devez répondre à l'aide de votre jeu de données.

Les programmeurs sont le plus fréquemment posées produire des systèmes à haute performance, qui à l'échelle sous la charge. Mais vous ne pouvez pas vraiment parler de performance, à moins que vous pouvez le mesurer. Quel genre de la conception expérimentale et statistique les outils que vous devez utiliser pour être en mesure de dire avec confiance que les résultats sont-ils significatifs?

Il y a beaucoup de problèmes avec la mesure. La mesure est une fine et délicate de l'art. La bonne mesure est presque au-delà de l'homme. Le fait est que l'échantillonnage introduit un biais, soit à partir de l'échantillonneur, ou de la méthode ou de la nature de l'échantillon, ou de la nature de la nature. Un bon sampler connaît ces choses et tente de réduire les préjugés que beaucoup dans une distribution aléatoire.

Les exemples de ce blog, que vous avez posté sont pertinentes. Disons que vous avez un temps de démarrage d'une base de données. Si vous prenez des mesures de rendement dans ce délai, toutes les mesures seront biaisées. Il n'y a pas de statistiques sur la méthode qui peut vous dire ceci. Seulement vos connaissances du système.

Existe-il d'autres problèmes couramment rencontrées par les programmeurs qui serait bénéficier d'une approche statistique?

Chaque fois que vous avez un ensemble de producteurs de données, vous avez les statistiques, le calcul scientifique et l'analyse des données est évidemment une place. Folksonomy et le réseautage social est à peu près toutes les statistiques. Même stackoverflow est, dans un certain sens, de la statistique. Le fait que la réponse est très voté ne veut pas dire que c'est la bonne. Cela signifie qu'il y a une forte probabilité qu'est le droit, selon l'évaluation d'un ensemble statistique des évaluateurs indépendants. Comment ces évaluateurs se comporter de faire la différence entre stackoverflow, reddit et digg.

28voto

MaD70 Points 2902

Je n'ai pas grand-chose à ajouter, mais il se trouve que j'ai juste commencé à lire ce livre: D. S. Sivia avec J. Skilling, ‘Analyse des Données Bayésienne tutoriel', 2e Édition, 2006, Oxford University Press.

Ce qui a attiré mon attention est la préface, où l'auteur se réfère à une commune de l'insatisfaction de ceux qui s'approchent de l'étude de la statistique:

Préface

Comme un étudiant de premier cycle, j'ai toujours trouvé l'objet de statistiques plutôt mystérieuse. Ce sujet n'était pas entièrement nouveau pour moi, comme nous l'avait enseigné une peu de probabilité plus tôt à l'école secondaire; par exemple, j'ai été déjà familier avec la loi binomiale, Poisson et des distributions normales. La plupart des de ce fait sens, mais ne semblait se rapportent à des choses comme des roulement de dés, le retournement des pièces de monnaie, brouiller les cartes, et ainsi de sur. Cependant, ayant des aspirations de devenir un scientifique, ce que j'ai vraiment voulais savoir comment analyser les données expérimentales. Donc, je me suis empressée d' se réjouissait de la des conférences sur la les statistiques. Malheureusement, ils ont été d'une grande la déception. Bien que de nombreux les essais et les procédures exposées ont été intuitivement raisonnable, il n'y a quelque chose de profondément insatisfaisante sur l'ensemble de l'affaire: il ne semble pas y être sous-jacente, l'principes de base! Par conséquent, le cours sur la probabilité et les statistiques", a conduit à une malheureuse dichotomie: probabilité de sens, mais était qu'un jeu; statistique a été important, mais il est d'une incroyable la collecte des tests avec peu de évident rime ni raison. Alors que pas heureux de cette situation, j'ai décidé mettre de côté le sujet et se concentrer sur la vraie science. Après tous, la situation était juste un reflet de mes propres insuffisances et Je venais d'avoir à travailler à lui lors de la le temps est venu pour vraiment analyser mes données.

L'histoire ci-dessus n'est pas seulement mon propre, mais c'est le trop d'expérience commune de nombreux scientifiques. Heureusement, il n'a pas à être comme ça. Ce que nous on n'a pas dit dans notre premier cycle des conférences est qu'il n'y est une l'approche alternative à l'ensemble de la l'objet de l'analyse de données qui utilise seulement la théorie de la probabilité. Dans un sens, il fait le sujet de statistiques totalement superflu. Dans de l'autre, il fournit la logique justification pour beaucoup de la répandue tests statistiques et procédures, de rendre explicites les les conditions et les approximations l'hypothèse implicite dans leur utilisation.

Ce livre est destiné à être un tutoriel guide d'alternative à ce Bayésienne approche, modernes, y compris des évolutions telles que l'entropie maximale.

...

J'espère que ce livre permettra de maintenir ses promesses.

Il ya un couple de l'aperçu des chapitres de la première édition ici, à partir d'un cours de Psychologie Cognitive/IA où ce livre a été adoptée, et d'autres matières du même cours ici. Logiciels y relatifs, par le deuxième auteur ici. Également une plus longue aperçu dans Google Livres ici.

23voto

Mike Dunlavey Points 25419

Garçon, certaines de ces réponses sont bonnes. Je suis venu de la même arrière-plan, et qui ont dû entrer dans la biostatistique en grande partie par les livres et par osmose inverse de leurs collègues. Voici mes recommandations:

  • Commencez avec une solide connaissance de base en probabilités, y compris la probabilité conditionnelle, le théorème de Bayes, les modèles de Markov, et une partie de la base des distributions statistiques.

  • Si vous ne l'avez pas, faire de l'algèbre linéaire, afin de ne pas être effrayés par des matrices. Si vous êtes confronté au délicat de l'algèbre et du calcul, retrousser les manches et de travailler à travers elle. Il en vaut la peine.

  • La théorie de la statistique se divise en deux camps, fréquentiste et Bayésienne. Fréquentiste est plus ancienne et solide. Bayésien est plus récent, plus souple, et plus excitant. En particulier, il y a les choses passionnantes qui peut être fait avec la Chaîne de Markov Monte-Carlo et les techniques connexes.

Dans ma région, pharmacometrics, il y a une forte récompense à être en mesure d'extraire des résultats significatifs rares et coûteux de données, de sorte que la capacité statistique est très important.

Ajout: Voici quelques livres préférés (liste non exhaustive):

20voto

Mitch Wheat Points 169614

Plus de probabilité que des statistiques, mais Bayésien Probabilty peut être très utile (il sous-tend les filtres anti-spam) et de l'OMI, de plus le logiciel devrait l'utiliser pour en déduire un utilisateur de ses habitudes.

La tête la Première, les Statistiques est un excellent livre pour apprendre les statistiques (un mathématicien/statisticien m'informe qu'il n'a pas tellement quelques erreurs, mais quelques simplications de la théorie des trucs).

J'ai presque oublié de mentionner: Comment Mentir avec les Statistiques

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X