Klasyfikuj szeregi czasowe na wielu odmianach

9

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ę.

AugBar
źródło
To, co robisz, jest całkiem dobrym podejściem. Ile próbek masz w zbiorze danych?
Kasra Manshaei
Mam około 500 000 szeregów czasowych (przypominając, że każdy szereg czasowy ma 8 znaczników czasu * 40 wymiarów)
AugBar
Czy próbowałeś właśnie użyć surowych funkcji 320? 320 cech to niewiele za 500 000 próbek
Jan van der Vegt
@Jan van der Vegt: Wypróbowałem tę metodę za pomocą sieci neuronowej, ale wyniki nie były tak przekonujące - wykorzystałem surowe dane bez żadnego wstępnego przetwarzania. Jakie operacje powinienem zastosować wcześniej na moich zasobach o 320 cechach, aby nakarmić klasyfikatora?
AugBar
1
W przypadku sieci neuronowej normalizacja danych wejściowych jest ważna, w zależności od zakresu funkcji, które mogą mieć znaczenie. Ale po prostu wprowadziłbym surowe funkcje do RF i zobaczyłem, jak dobrze to działa, wymaga mniej tuningu, aby zobaczyć, czy możesz coś z tego łatwo wyciągnąć
Jan van der Vegt

Odpowiedzi:

5

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.

mpotma
źródło
2

Możesz dodać więcej funkcji do swojego zestawu danych, jak poniżej.

  1. Możesz wypróbować pakiet nolds, jeśli twoje dane pochodzą z wysoce nieliniowego procesu.

  2. 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 .

Anurag Upadhyaya
źródło
1

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!

Rafa M. Mas
źródło