Contabilidad de experimentos y resultados

11

Soy un investigador práctico y me gusta probar soluciones viables, por lo que tiendo a hacer muchos experimentos. Por ejemplo, si estoy calculando un puntaje de similitud entre documentos, me gustaría probar muchas medidas. De hecho, para cada medida podría necesitar hacer varias corridas para probar el efecto de algunos parámetros.

Hasta ahora, he estado rastreando las entradas de ejecución y sus resultados escribiendo los resultados en archivos con tanta información sobre las entradas. El problema es que recuperar un resultado específico se convierte en un desafío a veces, incluso si trato de agregar la información de entrada al nombre del archivo. Intenté usar una hoja de cálculo con enlaces a resultados, pero esto no está haciendo una gran diferencia.

¿Qué herramientas / procesos utilizas para llevar la contabilidad de tus experimentos?

máquina-sabiduría
fuente
1
Quería agregar las mejores prácticas de la etiqueta, pero no puedo porque no tengo 150 puntos de reputación. Para ser honesto, no entiendo cómo un recién llegado puede contribuir de manera efectiva al sitio con todas esas reglas. Veo muchas preguntas para las que sé las respuestas, pero no puedo responder o incluso votar la respuesta si ya está allí.
máquina-sabiduría
Creo que esta es más una pregunta de programación genérica, por lo que StackOverflow podría ser mejor. Puede incluir un fragmento de lo que está tratando de hacer, y por qué es lento, y solicitar optimizaciones sugeridas.
Sean Owen
En realidad, creo que opendata.stackexchange.com encajaría mejor.
Emre
1
Recientemente eché un vistazo rápido al mercado para encontrar productos que pudieran ayudar con eso, y quiero compartir mis hallazgos. Hay dos productos SAAS que pueden ayudar a un equipo de Data Science a compartir análisis realizados en Python y R. Ambos tienen un cuaderno de IPython como IDE, y ambos desarrollan muchas funciones para ejecutar y compartir trabajos. Los encuentro casi idénticos: [Domino Data Lab] [1] y [Sense.io] [2] [1]: dominodatalab.com [2]: sense.io
machine-wisdom
También hay un entorno de Machine Learning para Hadoop, que realiza un seguimiento de las ejecuciones de trabajos; [h2o.ai] [3]. No está destinado a ser una herramienta para racionalizar el trabajo del equipo de datos, pero con algunas convenciones de nomenclatura cuidadosas puede ayudar mucho. Este encaja mejor con [3]: h2o.ai
machine-wisdom

Respuestas:

5

Recientemente me encontré con un problema similar: cómo administrar la extracción de una variedad de características de un gran conjunto de datos, sin saber de antemano cuáles serían todas. (Incluso calcular valores medios repetidamente sería computacionalmente costoso). Además, ¿cómo manejaría las predicciones basadas en diferentes conjuntos de características? Es decir, si agrego una nueva característica, ¿cómo sabría qué modelos entrenar en nuevas características? Podría rápidamente convertirse en una gran bola de nieve.

Mi solución actual es rastrearlo todo en una base de datos NoSQL local (MongoDB). Por ejemplo, podría tener una colección features, cada una de las cuales tiene un nombre, una descripción de cómo se calculó la función, el archivo de Python que ejecutó la extracción, etc.

Del mismo modo, una colección modelsincluye modelos ejecutados en los datos. Cada entrada puede tener un nombre, una lista de características que se usaron para entrenar el modelo, sus parámetros eventuales, valores pronosticados en un conjunto de prueba extendido, métricas de cómo se desempeñó el modelo, etc.

Desde mi punto de vista, esto tiene una serie de beneficios:

  • Al guardar las predicciones, puedo usarlas más tarde en predicciones de conjunto.
  • Debido a que realizo un seguimiento de las funciones que se utilizaron, sé cuáles necesitan capacitación a medida que extraigo más funciones.
  • Al guardar las descripciones de los modelos, me aseguro de saber siempre lo que he intentado. Nunca tengo que preguntarme: "¿He probado LASSO con los parámetros de regularización establecidos por el CV de búsqueda de cuadrícula?" Siempre puedo buscarlo y ver qué tan exitoso fue.

Según su pregunta, parece que podría adaptar este enfoque al flujo de trabajo de su problema. Instale Mongo u otra base de datos de su elección, y luego guarde cada ejecución experimental, sus entradas, sus resultados y cualquier otra cosa que desee rastrear en el transcurso del proyecto. Esto debería ser mucho más fácil de consultar que una hoja de cálculo, como mínimo.

Sean Easter
fuente
Me gustaría votar pero no tengo permiso.
máquina-sabiduría