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:
machine-learning
clustering
histelheim
źródło
źródło
Odpowiedzi:
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.
źródło
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.
bcp
Pakiet 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żstrucchange
pakiet, ale dla mnie to działało gorzej.źródło
Fale mogą pomóc w identyfikacji okresów o różnych właściwościach. Nie jestem jednak pewien, czy istnieją metody, które podzieliłyby twoje szeregi czasowe na odrębne okresy. I wydaje się, że jest wiele teorii do przebicia, o których jestem dopiero na początku. Nie mogę się doczekać, aby przeczytać inne sugestie ..
Bezpłatny wstępny rozdział na temat falek.
Pakiet R do badania istotności za pomocą falek.
źródło
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 ...
źródło
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ę.
źródło