tło
Pracuję nad zestawem danych szeregów czasowych odczytów liczników energii. Długość serii różni się w zależności od metra - dla niektórych mam kilka lat, innych tylko kilka miesięcy itp. Wiele z nich wykazuje znaczną sezonowość, a często wiele warstw - w ciągu dnia, tygodnia lub roku.
Jedną z rzeczy, nad którymi pracowałem, jest grupowanie tych szeregów czasowych. Moja praca jest w tej chwili akademicka i chociaż przeprowadzam również inną analizę danych, mam konkretny cel, aby przeprowadzić grupowanie.
Wykonałem kilka wstępnych prac, w których obliczyłem różne funkcje (procent wykorzystany w weekendy w porównaniu do dnia tygodnia, procent wykorzystany w różnych blokach czasowych itp.). Następnie przeszedłem do korzystania z dynamicznego wypaczania czasu (DTW) w celu uzyskania odległości między różnymi seriami i grupowania w oparciu o wartości różnic, i znalazłem kilka artykułów z tym związanych.
Pytanie
Czy zmiana sezonowości w określonej serii spowoduje, że moje klastrowanie będzie nieprawidłowe? A jeśli tak, jak sobie z tym poradzić?
Obawiam się, że odległości uzyskane przez DTW mogą być mylące w przypadkach, gdy zmienił się wzór w szeregu czasowym. Może to prowadzić do nieprawidłowego grupowania.
W przypadku niejasności powyższe rozważ następujące przykłady:
Przykład 1
Miernik ma niskie odczyty od północy do 8 rano, odczyty następnie gwałtownie wzrastają przez następną godzinę i pozostają wysokie od 9 rano do 17:00, a następnie gwałtownie spadają w ciągu następnej godziny, a następnie pozostają niskie od 18:00 do północy. Miernik kontynuuje ten wzór konsekwentnie codziennie przez kilka miesięcy, ale następnie zmienia się na wzór, w którym odczyty po prostu pozostają na stałym poziomie przez cały dzień.
Przykład 2
Licznik pokazuje w przybliżeniu taką samą ilość energii zużywanej każdego miesiąca. Po kilku latach zmienia się w schemat, w którym zużycie energii jest wyższe w miesiącach letnich, zanim powróci do zwykłej ilości.
Możliwe kierunki
- Zastanawiałem się, czy mogę kontynuować porównywanie całych szeregów czasowych, ale podzielę je i rozważę jako osobną serię, jeśli wzorzec ulegnie znacznej zmianie. Jednak aby to zrobić, musiałbym być w stanie wykryć takie zmiany. Po prostu nie wiem, czy jest to odpowiedni sposób lub praca z danymi.
- Rozważałem także podzielenie danych i rozważenie ich jako wielu oddzielnych szeregów czasowych. Na przykład, każdą kombinację dzień / metr można traktować jako osobną serię. Musiałbym jednak zrobić podobnie, gdybym chciał wziąć pod uwagę wzorce tygodniowe / miesięczne / roczne. Myślę, że to zadziałałoby, ale jest to potencjalnie dość uciążliwe i nie chciałbym iść tą ścieżką, jeśli istnieje lepszy sposób, za którym tęsknię.
Dalsze uwagi
Są to rzeczy, które pojawiły się w komentarzach lub rzeczy, o których myślałem z powodu komentarzy, które mogą być istotne. Umieszczam je tutaj, aby ludzie nie musieli czytać wszystkiego, aby uzyskać odpowiednie informacje.
- Pracuję w Pythonie, ale mam rpy dla tych miejsc, w których R jest bardziej odpowiedni. Jednak niekoniecznie szukam odpowiedzi w języku Python - jeśli ktoś ma praktyczną odpowiedź na to, co należy zrobić, z przyjemnością sam ustalę szczegóły implementacji.
- Mam dużo pracującego „wstępnego szkicu” kodu - wykonałem kilka testów DTW, wykonałem kilka różnych rodzajów grupowania itp. Myślę, że w dużej mierze rozumiem kierunek, w którym podążam, i to, co „ m naprawdę szukanie ma związek z tym, jak przetwarzam moje dane przed znalezieniem odległości, uruchomieniem grupowania itp. Biorąc to pod uwagę, podejrzewam, że odpowiedź byłaby taka sama, niezależnie czy odległości między seriami są obliczane za pomocą DTW, czy prostszej odległości euklidesowej (ED).
- Uważam, że te artykuły są szczególnie pouczające na temat szeregów czasowych i DTW i mogą być pomocne, jeśli potrzebne jest pewne zaplecze w obszarze tematycznym: http://www.cs.ucr.edu/~eamonn/selected_publications.htm
źródło
Odpowiedzi:
Po przeczytaniu twojego pytania zainteresowałem się tematem grupowania szeregów czasowych i dynamicznego dopasowywania czasu (DTW) . Przeprowadziłem zatem ograniczone wyszukiwanie i opracowałem podstawowe zrozumienie (dla mnie) oraz następujący zestaw odnośników IMHO (dla ciebie). Mam nadzieję, że okaże się to przydatne, ale pamiętaj, że celowo pominąłem prace badawcze, ponieważ bardziej interesowały mnie praktyczne aspekty tego tematu.
Zasoby:
źródło
Jeśli chcesz wydobywać sezonowe wzorce, przyjrzyj się autokorelacji . Jeśli szukasz modelu, który może nauczyć się wzorców sezonowych i tworzyć na ich podstawie prognozy, to Holt-Winters to dobry początek, a ARIMA byłaby dobrym rozwiązaniem. Tutaj [pdf] jest samouczek, który oderwał mnie od ziemi.
źródło