Нещодавно я зіткнувся з подібною проблемою: як керувати вилученням різноманітних функцій з великого набору даних, не знаючи наперед, якими вони будуть. (Навіть обчислення середніх значень неодноразово було б обчислювально дорогим.) Далі, як я можу керувати прогнозами на основі різних наборів функцій? Значить, якщо я додав нову функцію, як я можу знати, у яких моделях тренуватися за новими функціями? Це може швидко сніжним кулькою перетворитися на величезний безлад.
Моє поточне рішення - відстежувати все це у локальній базі даних NoSQL (MongoDB). Наприклад, у мене може бути колекція features
, кожен запис якої має ім’я, опис того, як обчислювалася функція, файл python, який здійснював вилучення тощо.
Так само колекція models
включає в себе моделі, запущені на даних. Кожен запис може мати назву, перелік функцій, які використовувались для тренування моделі, її можливих параметрів, передбачувані значення на наборі тестового набору, метрики того, як виконувала модель тощо.
З моєї точки зору, це має ряд переваг:
- Зберігаючи передбачення, я можу їх пізніше використовувати в ансамблевих прогнозах.
- Оскільки я відстежую, які функції використовувались, я знаю, які з них потрібно перекваліфікувати, оскільки я отримую більше функцій.
- Зберігаючи описи моделей, я гарантую, що я завжди знаю, що спробував. Мені ніколи не варто замислюватися: "Чи пробував я LASSO з параметрами регуляризації, встановленими резюме для пошуку в сітці?" Я завжди можу це подивитися і побачити, наскільки це було успішно.
З вашого запитання здається, що ви могли адаптувати такий підхід до робочого процесу вашої проблеми. Встановіть Mongo або іншу базу даних за вибором, а потім збережіть кожен експериментальний цикл, його вхідні дані, результати та все, що ви хочете відстежити протягом проекту. Це має бути набагато простіше запиту, ніж принаймні електронну таблицю.