Buchführung von Versuchsläufen und Ergebnissen

11

Ich bin ein praktischer Forscher und teste gerne praktikable Lösungen, daher neige ich dazu, viele Experimente durchzuführen. Wenn ich beispielsweise eine Ähnlichkeitsbewertung zwischen Dokumenten berechne, möchte ich möglicherweise viele Maßnahmen ausprobieren. Tatsächlich muss ich für jede Maßnahme möglicherweise mehrere Läufe durchführen, um die Wirkung einiger Parameter zu testen.

Bisher habe ich die Läufeingaben und ihre Ergebnisse verfolgt, indem ich die Ergebnisse in Dateien mit möglichst vielen Informationen zu den Eingaben geschrieben habe. Das Problem ist, dass das Abrufen eines bestimmten Ergebnisses manchmal zu einer Herausforderung wird, selbst wenn ich versuche, die Eingabeinformationen zum Dateinamen hinzuzufügen. Ich habe versucht, eine Tabelle mit Links zu Ergebnissen zu verwenden, aber das macht keinen großen Unterschied.

Welche Tools / Prozesse verwenden Sie für die Buchführung Ihrer Experimente?

Maschinenweisheit
quelle
1
Ich wollte die Best Practices für Tags hinzufügen, kann dies aber nicht, da ich nicht über 150 Reputationspunkte verfüge. Um ehrlich zu sein, verstehe ich nicht, wie ein Neuling mit all diesen Regeln effektiv einen Beitrag zur Website leisten kann. Ich sehe viele Fragen, auf die ich die Antworten kenne, aber ich kann die Antwort nicht beantworten oder sogar abstimmen, wenn sie bereits vorhanden ist.
Maschinenweisheit
Ich denke, dies ist eher eine generische Programmierfrage, daher könnte StackOverflow besser sein. Sie können einen Ausschnitt dessen einfügen, was Sie versuchen und warum es langsam ist, und nach vorgeschlagenen Optimierungen fragen.
Sean Owen
Eigentlich denke ich, dass opendata.stackexchange.com besser passt.
Emre
1
Ich habe mich kürzlich kurz auf dem Markt nach Produkten umgesehen, die dabei helfen könnten, und möchte meine Erkenntnisse teilen. Es gibt zwei SAAS-Produkte, mit denen ein Data Science-Team in Python und R durchgeführte Analysen gemeinsam nutzen kann. Beide verfügen über ein IPython-Notizbuch wie IDE und bauen darauf zahlreiche Funktionen zum Ausführen und Freigeben von Jobs auf. Ich finde sie beide fast identisch: [Domino Data Lab] [1] und [Sense.io] [2] [1]: dominodatalab.com [2]: sense.io
Maschinenweisheit
Es gibt auch eine maschinelle Lernumgebung für Hadoop, in der Jobläufe verfolgt werden. [h2o.ai] [3]. Es ist nicht dazu gedacht, die Arbeit des Datenteams zu rationalisieren, aber mit einigen sorgfältigen Namenskonventionen kann es sehr hilfreich sein. Dieser passt am besten zu [3]: h2o.ai
Maschinenweisheit

Antworten:

5

Ich bin kürzlich auf ein ähnliches Problem gestoßen: Wie man das Extrahieren einer Vielzahl von Funktionen aus einem großen Datensatz verwaltet, ohne vorher zu wissen, wie sie alle aussehen würden. (Selbst die wiederholte Berechnung von Mittelwerten wäre rechenintensiv.) Wie würde ich Vorhersagen basierend auf verschiedenen Funktionssätzen verwalten? Das heißt, wenn ich eine neue Funktion hinzufügen würde, wie würde ich wissen, welche Modelle für neue Funktionen trainiert werden sollen? Es könnte schnell zu einem großen Durcheinander werden.

Meine aktuelle Lösung besteht darin, alles in einer lokalen NoSQL-Datenbank (MongoDB) zu verfolgen. Zum Beispiel könnte ich eine Sammlung haben features, deren Eintrag einen Namen hat, eine Beschreibung, wie das Feature berechnet wurde, die Python-Datei, in der die Extraktion ausgeführt wurde usw.

Ebenso enthält eine Sammlung modelsModelle, die auf den Daten ausgeführt werden. Jeder Eintrag kann einen Namen, eine Liste von Funktionen haben, die zum Trainieren des Modells verwendet wurden, seine möglichen Parameter, vorhergesagte Werte in einem Testsatz, Metriken für die Leistung des Modells usw.

Aus meiner Sicht hat dies eine Reihe von Vorteilen:

  • Durch das Speichern von Vorhersagen kann ich sie später in Ensemble-Vorhersagen verwenden.
  • Da ich nachverfolge, welche Funktionen verwendet wurden, weiß ich, welche neu geschult werden müssen, wenn ich weitere Funktionen extrahiere.
  • Durch das Speichern von Modellbeschreibungen stelle ich sicher, dass ich immer weiß, was ich versucht habe. Ich muss mich nie fragen: "Habe ich LASSO mit Regularisierungsparametern ausprobiert, die durch den Lebenslauf der Rastersuche festgelegt wurden?" Ich kann es immer nachschlagen und sehen, wie erfolgreich es war.

Aus Ihrer Frage geht hervor, dass Sie diesen Ansatz an den Workflow Ihres Problems anpassen können. Installieren Sie Mongo oder eine andere Datenbank Ihrer Wahl und speichern Sie dann jeden Versuchslauf, seine Eingaben, seine Ergebnisse und alles andere, was Sie im Verlauf des Projekts verfolgen möchten. Dies sollte zumindest viel einfacher abzufragen sein als eine Tabelle.

Sean Easter
quelle
Ich würde gerne upvoten, aber ich darf nicht.
Maschinenweisheit