私は最近同様の問題に遭遇しました:すべてが何であるかを前もって知らずに、大規模なデータセットからさまざまな機能を抽出する方法。(平均値を繰り返し計算する場合でも、計算コストがかかります。)さらに、さまざまな機能セットに基づいて予測をどのように管理しますか?つまり、新しい機能を追加した場合、どのモデルで新しい機能をトレーニングするかを知るにはどうすればよいですか?それはすぐに巨大な混乱に雪だるま式に動くことができました。
私の現在の解決策は、ローカルのNoSQLデータベース(MongoDB)ですべてを追跡することです。たとえば、コレクションがありfeatures
、その各エントリには名前、機能の計算方法の説明、抽出を実行したpythonファイルなどがあります。
同様に、コレクションにmodels
はデータで実行されるモデルが含まれます。各エントリには、名前、モデルのトレーニングに使用された機能のリスト、その最終的なパラメーター、保持されたテストセットの予測値、モデルの実行方法のメトリックなどが含まれる場合があります。
私の見解では、これには多くの利点があります。
- 予測を保存することで、後でアンサンブル予測で使用できます。
- 使用された機能を追跡しているので、さらに機能を抽出するときに再トレーニングが必要な機能がわかります。
- モデルの説明を保存することで、自分が何を試したのかを常に知ることができます。「grid-search CVによって設定された正則化パラメーターを使用してLASSOを試したことがありますか?」私はいつでもそれを調べて、どれほど成功したかを見ることができます。
あなたの質問から、このアプローチを問題のワークフローに適合させることができるように思えます。Mongoまたは選択した別のデータベースをインストールしてから、各実験の実行、その入力、その結果、およびプロジェクトの過程で追跡したいその他すべてのものを保存します。少なくとも、これはスプレッドシートよりもはるかに簡単にクエリできるはずです。