Ostatnio dużo czytałem o Dynamic Time Warping (DTW). Jestem bardzo zaskoczony, że w ogóle nie ma literatury na temat zastosowania DTW do nieregularnych szeregów czasowych, a przynajmniej nie mogłem jej znaleźć.
Czy ktoś mógłby podać mi odniesienie do czegoś związanego z tym problemem, a może nawet jego wdrożenie?
Odpowiedzi:
O ile rozumiem, przez nieregularne szeregi czasowe masz na myśli nierównomiernie rozmieszczone szeregi czasowe , zwane również szeregami nieregularnie próbkowanymi . Ponieważ ogólnie jestem ciekawy szeregów czasowych, przeprowadziłem krótkie badania na temat twojego (i teraz mojego) zainteresowania. Wyniki są następujące.
Pomimo dużej popularności podejścia do dynamicznego dopasowywania czasu (DTW) w analizie szeregów czasowych, grupowaniu i klasyfikacji, nieregularne szeregi czasowe stanowią pewne wyzwanie dla bezpośredniego zastosowania DTW do takiego typu danych (na przykład, patrz ten artykuł i ten artykuł ). Opierając się na moich stosunkowo krótkich wysiłkach badawczych, nie jest dla mnie całkowicie jasne, czy niemożliwe jest bezpośrednie zastosowanie DTW, ponieważ niektóre badania sugerują inaczej (zobacz także ten artykuł / rozdział ). Dla większej kompleksowości chciałbym również wspomnieć o doskonałym IMHO i odpowiednim do tematu pracy na temat nieregularnych szeregów czasowych .
Wydaje się jednak, że temat ten jest w większości objęty następującymi dwoma strumieniami badań :
Na koniec chciałbym poruszyć temat oprogramowania open source , dostępnego do badań lub wdrażania systemu , skoncentrowanego na DTW i wspierającego niektóre z wyżej wymienionych algorytmów dla nieregularnych szeregów czasowych. Takie oprogramowanie obejmuje oparty na Python / NumPy projekt modułu cDTW, a także projekt CUDA-DTW oparty na GPU . Dla
R
entuzjastów należy również wspomnieć o kompleksowym projekcie Dynamic Time Warp ( odpowiedni pakietdtw
jest dostępny w CRAN). Chociaż w tej chwili może nie obsługiwać wielu algorytmów DTW dla nieregularnych szeregów czasowych (choć myślę, że obsługuje cDTW), myślę, że to tylko kwestia czasu, zanim ten projekt zaoferuje bardziej kompleksową obsługę algorytmów DTW, skoncentrowanych na tego typu danych. Mam nadzieję, że podobało wam się czytanie mojej odpowiedzi tak samo, jak czerpanie przyjemności z badania tematu i pisania tego postu.źródło
Z powodzeniem zaimplementowałem DTW w „C” w zastosowaniu do dynamicznej weryfikacji podpisów. Użyłem testowej bazy danych podpisów chińskich i holenderskich do weryfikacji EER i uzyskałem bardzo imponujące wyniki. Obecnie jest wdrażany jako wersja demo na iPadzie. Mój algorytm został ręcznie zakodowany na podstawie kilku opublikowanych opisów. Podzielę się kodem, jeśli istnieje sposób, aby go dostarczyć. Jedną z rzeczy, które również przyczyniły się do sukcesu, była „normalizacja” danych wejściowych. To znacznie ułatwiło porównywanie różnych danych przy różnych częstotliwościach próbkowania.
źródło
Dopiero wchodzę do DTW i osobiście nie korzystałem z pakietów, o których mowa poniżej, ale mam nadzieję, że poniższe informacje mogą ci pomóc.
Projekt Cran.R, w szczególności: • „ts” jest podstawową klasą dla regularnie rozmieszczonych szeregów czasowych z wykorzystaniem numerycznych znaczników czasu. • Pakiet „zoo” zapewnia infrastrukturę dla szeregów czasowych regularnie I NIEPRAWIDŁOWO z wykorzystaniem dowolnych klas znaczników czasu. Jest zaprojektowany tak, aby był jak najbardziej spójny z „ts”. • zoo: infrastruktura S3 dla szeregów czasowych regularnych i nieregularnych (obserwacje uporządkowane przez Z)
Odnośniki: http://cran.r-project.org/web/views/TimeSeries.html i http://cran.r-project.org/web/packages/zoo/index.html
Wszystkiego najlepszego.
źródło
TSdist ma funkcję, która określa odległość przez dtw. Akceptuje nieregularne szeregi czasowe zoo
źródło