Mam zestaw danych złożony z szeregów czasowych (8 punktów) o około 40 wymiarach (więc każdy szereg czasowy to 8 na 40). Odpowiedni wynik (możliwe wyniki dla kategorii) to eitheir 0 lub 1.
Jakie byłoby najlepsze podejście do zaprojektowania klasyfikatora dla szeregów czasowych o wielu wymiarach?
Moja początkowa strategia polegała na wydobyciu cech z tych szeregów czasowych: średniej, standardowej, maksymalnej zmienności dla każdego wymiaru. Otrzymałem zestaw danych, którego użyłem do wyszkolenia RandomTreeForest. Zdając sobie sprawę z całkowitej naiwności tego, i po uzyskaniu słabych wyników, szukam teraz ulepszonego modelu.
Moje potencjalne szanse są następujące: sklasyfikuj serie dla każdego wymiaru (używając algorytmu KNN i DWT), zmniejsz wymiarowość za pomocą PCA i użyj końcowego klasyfikatora wzdłuż kategorii wielowymiarowych. Będąc stosunkowo nowym w ML, nie wiem, czy się całkowicie mylę.
źródło
Odpowiedzi:
Jesteś na dobrej drodze. Spójrz na obliczenie kilku dodatkowych funkcji, zarówno w dziedzinie czasu, jak i częstotliwości. Tak długo, jak liczba próbek >> liczba funkcji, prawdopodobnie nie będzie się przesadzać. Czy jest jakaś literatura na podobny problem? Jeśli tak, to zawsze stanowi doskonały punkt wyjścia.
Wypróbuj ulepszony klasyfikator drzewa, taki jak xgboost lub LightGBM. Zwykle łatwiej je dostroić hiperparametry i zapewniają dobre wyniki przy domyślnych parametrach. Zarówno losowy las, jak i ulepszone klasyfikatory drzew mogą zwracać znaczenie funkcji, dzięki czemu można zobaczyć, które funkcje są istotne dla problemu. Możesz także spróbować usunąć funkcje, aby sprawdzić kowariancję.
Co najważniejsze, jeśli wyniki są nieoczekiwanie słabe, upewnij się, że problem został poprawnie zdefiniowany. Ręcznie sprawdź wyniki, aby upewnić się, że nie ma żadnych błędów w potoku.
źródło
Jeśli korzystasz z Pythona, istnieje kilka pakietów, które mogą automatycznie wyodrębnić setki lub tysiące funkcji z twoich szeregów czasowych, skorelować je z etykietami, wybrać najbardziej znaczące i wyszkolić modele dla Ciebie.
https://github.com/blue-yonder/tsfresh
https://github.com/rtavenar/tslearn
źródło
Możesz dodać więcej funkcji do swojego zestawu danych, jak poniżej.
Możesz wypróbować pakiet nolds, jeśli twoje dane pochodzą z wysoce nieliniowego procesu.
maksymalne, minimalne, średnie, pochylenie, kurtoza i, jeśli to możliwe, niektóre statystyki kroczące.
Pracuję nad czymś podobnym i zadałem powiązane pytanie .
źródło
Zgadzam się z Janem van der Vegtem, normalizacja (np. [-1, 1]) lub normalizacja N (0, 1) w połączeniu z funkcją aktywacji może być bardzo ważna w sieciach neuronowych. Sprawdziłbym rozprawę Pichaid Varoonchotikul: „Prognozowanie powodzi przy użyciu sztucznych sieci neuronowych” dla tajników ANN. Ma bardzo ciekawe zastrzeżenia. W każdym razie próbuję najpierw bez, ale gdy wyniki są niezadowalające, przyzwyczajam się do przeprowadzania prób z jednym i drugim. Nie jestem pewien, czy to pomoże, ale sprawdziłbym pakiet R TSclust i powiązane dokumenty. Autorzy są bardzo uprzejmi i pomogą ci znaleźć określone modele, aby to zrobić. Są ekspertami w analizach szeregów czasowych! Powodzenia!
źródło