Niedawno natknąłem się na podobny problem: jak zarządzać wydobywaniem różnych funkcji z dużego zestawu danych, nie wiedząc z góry, jakie byłyby wszystkie. (Nawet wielokrotne obliczanie średnich wartości byłoby kosztowne obliczeniowo.) Ponadto, w jaki sposób zarządzałbym prognozami na podstawie różnych zestawów cech? Oznacza to, że jeśli dodam nową funkcję, skąd mam wiedzieć, które modele trenować na nowych funkcjach? Mogłoby to szybko przerwać śnieżkę w ogromny bałagan.
Moje obecne rozwiązanie polega na śledzeniu tego wszystkiego w lokalnej bazie danych NoSQL (MongoDB). Na przykład mogę mieć kolekcję features
, której każdy wpis ma nazwę, opis sposobu obliczenia funkcji, plik python, który uruchomił ekstrakcję itp.
Podobnie kolekcja models
zawiera modele działające na danych. Każdy wpis może mieć nazwę, listę funkcji, które zostały użyte do wyszkolenia modelu, jego ostatecznych parametrów, przewidywanych wartości w odłożonym zestawie testowym, metryki dotyczące wydajności modelu itp.
Z mojego punktu widzenia ma to wiele zalet:
- Zapisując prognozy, mogę je później wykorzystać w zestawieniach predykcyjnych.
- Ponieważ śledzę, które funkcje zostały użyte, wiem, które z nich wymagają ponownego przeszkolenia, gdy wydobywam więcej funkcji.
- Zapisując opisy modeli, zapewniam, że zawsze wiem, co próbowałem. Nigdy nie muszę się zastanawiać: „Czy wypróbowałem LASSO z parametrami regularyzacji ustawionymi przez CV z wyszukiwaniem siatki?” Zawsze mogę to sprawdzić i przekonać się, jak udany.
Z twojego pytania wynika, że możesz dostosować to podejście do przebiegu problemu. Zainstaluj Mongo lub inną wybraną bazę danych, a następnie zapisz każdy przebieg eksperymentalny, jego dane wejściowe, wyniki i wszystko, co chcesz śledzić w trakcie realizacji projektu. Przynajmniej powinno to być znacznie łatwiejsze do wykonania zapytania niż arkusza kalkulacyjnego.