Недавно я столкнулся с похожей проблемой: как управлять извлечением различных функций из большого набора данных, не зная заранее, какими они будут. (Даже повторное вычисление средних значений было бы вычислительно дорогостоящим.) Кроме того, как бы я управлял прогнозами, основанными на разных наборах функций? То есть, если бы я добавил новую функцию, как бы я узнал, какие модели обучать новым функциям? Это может быстро превратиться в огромный снежный ком.
Мое текущее решение - отслеживать все это в локальной базе данных NoSQL (MongoDB). Например, у меня может быть коллекция features
, каждая запись которой имеет имя, описание того, как была рассчитана функция, файл python, который выполнял извлечение, и т. Д.
Аналогично, коллекция models
включает модели, работающие с данными. У каждой записи может быть имя, список функций, которые использовались для обучения модели, ее возможные параметры, прогнозируемые значения в удерживаемом наборе тестов, показатели эффективности работы модели и т. Д.
С моей точки зрения, это имеет ряд преимуществ:
- Сохраняя прогнозы, я могу использовать их позже в ансамблевых прогнозах.
- Поскольку я отслеживаю, какие функции были использованы, я знаю, какие из них необходимо переподготовить, поскольку я извлекаю больше функций.
- Сохраняя описания моделей, я гарантирую, что всегда буду знать, что я пробовал. Мне никогда не приходится задаваться вопросом: «Пробовал ли я LASSO с параметрами регуляризации, установленными CV для поиска в сетке?» Я всегда могу посмотреть на это и увидеть, насколько успешно это было.
Исходя из вашего вопроса, кажется, что вы могли бы адаптировать этот подход к рабочему процессу вашей проблемы. Установите Mongo или другую выбранную базу данных, а затем сохраните каждый экспериментальный прогон, его входные данные, его результаты и все остальное, что вы, возможно, захотите отслеживать в ходе проекта. Это должно быть гораздо проще, чем электронная таблица, по крайней мере.