Odpowiednie techniki grupowania danych czasowych?

13

Mam dane czasowe częstotliwości aktywności. Chcę zidentyfikować klastry w danych, które wskazują różne okresy o podobnych poziomach aktywności. Idealnie chcę zidentyfikować klastry bez określania liczby klastrów a priori.

Jakie są odpowiednie techniki klastrowania? Jeśli moje pytanie nie zawiera wystarczającej ilości informacji, aby odpowiedzieć, jakie informacje muszę podać, aby określić odpowiednie techniki klastrowania?

Poniżej znajduje się ilustracja rodzaju danych / grupowania, które sobie wyobrażam: grupowanie w czasie

histelheim
źródło
Fabuła wygląda na wygładzoną (interpolowaną). To prawdopodobnie wprowadza w błąd. I „podłużne” kojarzyłem z geodanymi, ale najwyraźniej patrzysz na szereg czasowy?
Ma ZAKOŃCZENIE - Anony-Mousse
1
Nie zwracaj zbyt wiele uwagi na fabułę, to tylko przykład. To, co chcę osiągnąć, to identyfikacja różnych epizodów czasu na podstawie zmiennych, które zmieniają się w czasie. Podłużny, w moim umyśle, jest taki sam jak dane czasowe, patrz np en.wikipedia.org/wiki/Longitudinal_study
histelheim
Ponieważ w klastrowaniu zobaczysz ten termin głównie jak w en.wikipedia.org/wiki/Longitude - z twojego pytania nie jest jasne, co chcesz zgrupować. Możesz grupować np. Przedziały czasu, które zachowują się podobnie u „podmiotów” lub przedmiotów, które wykazują ten sam postęp w czasie.
Ma ZAKOŃCZENIE - Anony-Mousse
1
Zmieniłem „podłużny” na „czasowy”, aby uniknąć zamieszania. Używając twoich słów, myślę, że chcę skupić przedziały czasu . Jednak dla mnie ważne jest, aby klastry były odrębnymi, ciągłymi epizodami w czasie.
histelheim
Pomogą Ci wyszukiwania ze słowami kluczowymi „segmentacja szeregów czasowych” lub „modele przełączania reżimu”.
Yves

Odpowiedzi:

6

Z moich własnych badań wynika, że ​​Gaussian Hidden Markov Models może być dobrym dopasowaniem: http://scikit-learn.org/stable/auto_examples/plot_hmm_stock_analysis.html#example-plot-hmm-stock-analysis-py

Zdecydowanie zdaje się znajdować wyraźne epizody działalności.

Gaussian Hidden Markov Model

histelheim
źródło
Nie musisz wiedzieć, ile ukrytych stanów jest przed czasem? Czy można to obejść?
JCWong,
@JCWong Myślę, że możesz użyć nieparametrycznego wariantu bayesowskiego (nieskończony ukryty model Markowa), aby tego uniknąć.
jtobin
Jednak po długim czasie: HMM nie wydaje się czasowo grupować / grupować zdarzeń (co wygląda na rysunku). Ale pytano, jak uzyskać klastry czasowe? Jestem po prostu ciekawa, ponieważ pracuję nad grupowaniem czasowym.
RussellB
3

Twój problem brzmi podobnie do tego , na który patrzę i to pytanie, które jest podobne, ale gorzej wyjaśnione.

Ich odpowiedź prowadzi do dobrego podsumowania wykrywania zmian. W przypadku możliwych rozwiązań szybkie wyszukiwanie w Google znalazło pakiet analizy punktu zmiany w kodzie Google. R ma również kilka narzędzi do tego. bcpPakiet jest dość silny i bardzo proste w użyciu. Jeśli chcesz to robić w locie, gdy napływają dane, artykuł „Wykrywanie punktu wymiany on-line i szacowanie parametrów z zastosowaniem do danych genomowych” opisuje naprawdę wyrafinowane podejście, choć należy pamiętać, że jest to nieco trudne. Jest też strucchangepakiet, ale dla mnie to działało gorzej.

Fozziethebeat
źródło
1

Czy widziałeś już tę stronę: Klasyfikacja / klastrowanie szeregów czasowych UCR ?

Można tam znaleźć zarówno zestawy danych do przećwiczenia, jak i opublikowane wyniki - w celu porównania wydajności własnej implementacji (istnieje link do znanej wydajności dobrze znanych technik uczenia maszynowego). Ponadto na tej stronie przytaczana jest masa krytyczna dokumentów, z których można by kontynuować badania nad najlepszym podejściem, które odpowiada Twojemu problemowi, danym lub potrzebom.

Jest też inny sposób (potencjalnie) na zastosowanie sequitur http: // sequitur.info. Jeśli będziesz w stanie dobrze znormalizować / przybliżyć swoje dane, da ci to gramatykę z tych „różnych okresów z podobnymi poziomami aktywności” zobacz to artykułem i poszukaj innego, ponieważ nie jestem w stanie dodać więcej linków ...

seninp
źródło
3
Czy możesz podać krótkie podsumowanie zasobów dostępnych na tej stronie?
chl
oczywiście, że mogę. zaczynając od tego zakodowałem własnego klasyfikatora
seninp
1

Myślę, że możesz użyć dynamicznego zawijania czasu, aby szukać podobieństw między różnymi szeregami czasowymi. W tym celu może być konieczne zdyskretowanie falki w kolekcje, takie jak tablica. Ale ziarnistość byłaby problemem, a jeśli masz dużą liczbę szeregów czasowych, koszt obliczeń będzie dość duży, aby obliczyć odległość DTM dla każdej pary z nich. Może więc być potrzebny wstępny wybór, aby działać jako etykiety.

Sprawdź to . Pracuję również nad jakimś zadaniem takim jak twoje i ta strona pomogła mi trochę.

Yifan Guo
źródło