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 models
Modelle, 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.