Tenue de livres des essais et des résultats

11

Je suis un chercheur pratique et j'aime tester des solutions viables, j'ai donc tendance à faire beaucoup d'expériences. Par exemple, si je calcule un score de similitude entre les documents, je pourrais vouloir essayer de nombreuses mesures. En fait, pour chaque mesure, je devrais peut-être effectuer plusieurs analyses pour tester l'effet de certains paramètres.

Jusqu'à présent, j'ai suivi les entrées des exécutions et leurs résultats en écrivant les résultats dans des fichiers avec autant d'informations sur les entrées. Le problème est que la récupération d'un résultat spécifique devient parfois un défi, même si j'essaie d'ajouter les informations d'entrée au nom de fichier. J'ai essayé d'utiliser une feuille de calcul avec des liens vers les résultats, mais cela ne fait pas une énorme différence.

Quels outils / processus utilisez-vous pour la tenue de livres de vos expériences?

sagesse de la machine
la source
1
Je voulais ajouter les meilleures pratiques de la balise mais je ne peux pas car je n'ai pas 150 points de réputation. Pour être honnête, je ne comprends pas comment un nouveau venu peut effectivement contribuer au site avec toutes ces règles. Je vois beaucoup de questions pour lesquelles je connais les réponses, mais je ne peux pas répondre ou même voter la réponse si elle est déjà là.
machine-wisdom
Je pense que c'est plus une question de programmation générique, donc StackOverflow pourrait être mieux. Vous pouvez inclure un extrait de ce que vous essayez de faire et pourquoi c'est lent, et demander des optimisations suggérées.
Sean Owen
En fait, je pense que opendata.stackexchange.com serait mieux adapté.
Emre
1
J'ai récemment jeté un rapide coup d'œil sur le marché des produits qui pourraient aider à cela, et je veux partager mes conclusions. Il existe deux produits SAAS qui peuvent aider une équipe Data Science à partager les analyses effectuées en Python et R. Ils ont tous deux un bloc-notes IPython comme IDE, et ils construisent tous les deux autour de lui de nombreuses fonctionnalités pour exécuter et partager des travaux. Je les trouve presque identiques: [Domino Data Lab] [1] et [Sense.io] [2] [1]: dominodatalab.com [2]: sense.io
machine-wisdom
Il existe également un environnement d'apprentissage automatique pour Hadoop, qui assure le suivi des exécutions de travaux; [h2o.ai] [3]. Il n'est pas destiné à être un outil pour rationaliser le travail de l'équipe de données, mais avec quelques conventions d'attribution de noms, il peut être très utile. Celui-ci convient le mieux à [3]: h2o.ai
machine-wisdom

Réponses:

5

J'ai récemment rencontré un problème similaire: comment gérer l'extraction d'une variété de fonctionnalités d'un grand ensemble de données, sans savoir à l'avance ce que toutes seraient. (Même le calcul répétitif de valeurs moyennes coûterait cher en calcul.) De plus, comment gérer les prédictions en fonction de différents ensembles de fonctionnalités? Autrement dit, si j'ajoutais une nouvelle fonctionnalité, comment saurais-je quels modèles s'entraîner sur de nouvelles fonctionnalités? Cela pourrait rapidement faire boule de neige dans un énorme gâchis.

Ma solution actuelle consiste à tout suivre dans une base de données NoSQL locale (MongoDB). Par exemple, je pourrais avoir une collection features, dont chaque entrée a un nom, une description de la façon dont la fonctionnalité a été calculée, le fichier python qui a exécuté l'extraction, etc.

De même, une collection modelscomprend des modèles exécutés sur les données. Chaque entrée peut avoir un nom, une liste de fonctionnalités qui ont été utilisées pour former le modèle, ses paramètres éventuels, les valeurs prédites sur un ensemble de tests retenu, des métriques pour la performance du modèle, etc.

De mon point de vue, cela présente un certain nombre d'avantages:

  • En sauvegardant les prédictions, je peux les utiliser plus tard dans les prédictions d'ensemble.
  • Parce que je garde une trace des fonctionnalités qui ont été utilisées, je sais lesquelles doivent être recyclées lorsque j'extrais plus de fonctionnalités.
  • En enregistrant les descriptions des modèles, je m'assure de toujours savoir ce que j'ai essayé. Je n'ai jamais à me demander: "Ai-je essayé LASSO avec des paramètres de régularisation définis par un CV de recherche de grille?" Je peux toujours le rechercher et voir à quel point il a réussi.

D'après votre question, il semble que vous puissiez adapter cette approche au flux de travail de votre problème. Installez Mongo ou une autre base de données de votre choix, puis enregistrez chaque exécution expérimentale, ses entrées, ses résultats et tout ce que vous pourriez souhaiter suivre au cours du projet. Cela devrait être beaucoup plus facile à interroger qu'une feuille de calcul, au moins.

Sean Easter
la source
J'aimerais voter mais je ne suis pas autorisé.
machine-wisdom