Funkcje klasyfikacji szeregów czasowych

43

Rozważam problem klasyfikacji (wieloklasowej) na podstawie szeregów czasowych o zmiennej długości , to znaczy znaleźć funkcję poprzez globalną reprezentację serii czasowej przez zestaw wybranych cech o stałym rozmiarze niezależnym od , a następnie użyj standardowych metod klasyfikacji w tym zestawie funkcji. Ja nie interesuje się prognozowania, czyli przewidywanief ( X T ) = y [ 1 .. K ]Tv i D T ϕ ( X T ) = v 1 , , v DR , x T + 1

f(XT)=y[1..K]for XT=(x1,,xT)with xtRd ,
viDT
ϕ(XT)=v1,,vDR ,
xT+1. Na przykład możemy przeanalizować sposób, w jaki dana osoba idzie, aby przewidzieć płeć osoby.

Jakie standardowe funkcje mogę wziąć pod uwagę? Na przykład możemy oczywiście użyć średniej i wariancji szeregu (lub momentów wyższego rzędu), a także spojrzeć na dziedzinę częstotliwości, jak energia zawarta w pewnym przedziale dyskretnej transformaty Fouriera serii (lub dyskretnej transformaty falkowej ).

Emile
źródło

Odpowiedzi:

45

Proste cechy statystyczne

  • Oznacza w każdym z wymiarówd
  • Odchylenie standardowe dotyczące wymiarachd
  • Skośność , Kurtoza i Szkolnictwa chwile Postanowienie wymiarachd
  • Wartości maksymalne i minimalne

Funkcje związane z analizą serii czasu

  • W korelacji krzyżowych pomiędzy każdym wymiarze i Auto korelacjidd×d1 d
  • Zamówienia części autoregresyjnej (AR), zintegrowanej (I) i średniej ruchomej (MA) szacowanego modelu ARIMA
  • Parametry części AR
  • Parametry części MA

Funkcje związane z domeną częstotliwości

Zobacz Morchen03, aby zapoznać się z badaniem funkcji oszczędzania energii w DFT i DWT

  • częstotliwości pików amplitudy w DFT dla zniekształconych wymiarówdk d
  • k kwantyle tych DFT
Emile
źródło
1
Emile, to pytanie jest podobne do pytania, które właśnie zadałem ( stats.stackexchange.com/questions/51475/… ). Czy byłbyś w stanie opublikować kod R dla funkcji DFT?
B_Miner
Czy istnieje metoda oparta na szarfach dla szeregów czasowych o zmiennej długości?
Simone,
8

Emile, myślę, że funkcje wymienione w twojej odpowiedzi są całkiem dobrym punktem wyjścia, choć jak zawsze uważam, że wiedza specjalistyczna w dziedzinie (lub przynajmniej dobra długa myśl) na temat twojego problemu jest równie ważna.

Możesz rozważyć włączenie funkcji obliczonych na podstawie pochodnych (lub całek) twojego sygnału. Na przykład postawiłbym zakład, że szybkie przyspieszanie / zwalnianie jest względnie dobrym predyktorem podatnej na wypadki jazdy. Ta informacja jest oczywiście nadal obecna w sygnale pozycji, ale nie jest tak wyraźna.

Możesz także rozważyć zastąpienie współczynników Fouriera reprezentacją falkową lub pakietem falkowym. Główną zaletą falek jest to, że pozwalają one zlokalizować cechę zarówno pod względem częstotliwości, jak i czasu, podczas gdy tradycyjne współczynniki Fouriera są ograniczone tylko do czasu. Może to być szczególnie przydatne, jeśli dane zawierają składniki, które nieregularnie włączają się / wyłączają lub mają impulsy prostokątne, które mogą być problematyczne dla metod Fouriera.

Matt Krause
źródło
6

Jak sugerują inne odpowiedzi, istnieje ogromna liczba charakterystyk szeregów czasowych, które można wykorzystać jako potencjalne cechy. Istnieją proste cechy, takie jak średnia, cechy związane z szeregami czasowymi, takie jak współczynniki modelu AR lub wysoce wyrafinowane cechy, takie jak statystyka testowa rozszerzonego testu hipotezy Dickeya.

Kompleksowy przegląd możliwych funkcji szeregów czasowych

Pakiet python tsfresh automatyzuje ekstrakcję tych funkcji. Jego dokumentacja opisuje różne obliczone cechy. Możesz znaleźć stronę z obliczonymi funkcjami tutaj .

Oświadczenie: Jestem jednym z autorów tsfresh.

MaxBenChrist
źródło
5

Sugeruję, aby zamiast klasycznych metod wyodrębniania ręcznie opracowanych funkcji, korzystać z autoencoderów . Autoencodery odgrywają ważną rolę w ekstrakcji funkcji architektury głębokiego uczenia.

Autoencoder próbuje nauczyć się funkcji . Innymi słowy, próbuje nauczyć się przybliżenia funkcji tożsamości, aby uzyskać który jest podobny do .X t X Tf(XT)XTX^TXT

Funkcja tożsamości wydaje się szczególnie trywialną funkcją, której próbuje się nauczyć; ale nakładając ograniczenia na sieć, na przykład ograniczając liczbę ukrytych jednostek, możemy odkryć interesującą strukturę danych.

Ekstraktor funkcji

W ten sposób żądany będzie równoznaczne z wartościami wyjściowymi warstwy najbardziej środkowe w głębokim autoencoder, Jeśli ograniczyć liczbę ukrytych jednostek w najbardziej środkowe do .Dϕ(XT)=v1,,vDRD

Dodatkowo możesz użyć wielu odmian autoencodera, aby znaleźć najlepsze rozwiązanie swojego problemu.

moh
źródło
1

W zależności od długości szeregów czasowych zwykle stosuje się epokę danych na segmenty, np. 10 sekund.

Jednak często przed podzieleniem szeregów czasowych na segmenty konieczne jest wykonanie wstępnego przetwarzania, takiego jak filtrowanie i odrzucanie artefaktów. Następnie możesz obliczyć różne cechy, takie jak te oparte na częstotliwości (tj. Wziąć FFT dla każdej epoki), czasie (np. Średnia, wariancja itp. Szeregów czasowych w tej epoce) lub morfologii (tj. Kształcie sygnału / szeregi czasowe w każdej epoce).

Zazwyczaj funkcje używane do klasyfikowania segmentów (epok) szeregu czasowego / sygnału są specyficzne dla domeny, ale analiza Wavelet / Fouriera to po prostu narzędzia pozwalające badać sygnał w domenach częstotliwość / czas-częstotliwość, a nie same w sobie.

W przypadku problemu z klasyfikacją każda epoka będzie miała etykietę klasową, np. „Szczęśliwa” lub „smutna”, a następnie wyszkolisz klasyfikatora, aby rozróżniał epokę „szczęśliwą” i „smutną” za pomocą 6 cech obliczonych dla każdej epoki.

W przypadku, gdy każda seria czasowa reprezentuje pojedynczy przypadek do klasyfikacji, należy obliczyć każdą cechę we wszystkich próbkach serii czasowej. FFT jest tu istotne tylko wtedy, gdy sygnał jest liniowy niezmienny w czasie (LTI), tj. Jeśli sygnał można uznać za stacjonarny w całym szeregu czasowym, jeśli sygnał nie jest stacjonarny w danym okresie, analiza falkowa może być bardziej odpowiedni. Podejście to oznacza, że ​​za każdym razem szereg czasowy wytworzy jeden wektor cech i będzie stanowić jeden przypadek klasyfikacji.

BGreene
źródło
Zawsze czułem, że dzielenie szeregów czasowych, naturalnie ciągły proces, na dyskretne okresy (lub epoki), powoduje utratę informacji. Jeśli nie ma epok naturalnych w serii, jak wybrać epoki? Można znaleźć epoki, które pasują do każdego pożądanego rezultatu.
Cam.Davidson.Pilon
1
Nie jestem pewien, czy można znaleźć epokę pasującą do każdego wyniku, ale dla każdego praktycznego problemu W przypadku niestacjonarnego sygnału należy znaleźć sposób, aby uwzględnić zmiany czasowe (jeśli szereg sygnałów / szeregów czasowych odpowiednio opisany analitycznie lub liniowy niezmiennik czasowy to nie jest konieczne). Długość epoki jest ponownie specyficzna dla domeny, ale zwykle jest wybierana na tyle krótko, aby sygnał był nieruchomy w odpowiednim okresie (epoce).
BGreene,
BGreene, czy możesz wyjaśnić, jaka jest korzyść z podzielenia serii na epoki w celu wybrania funkcji używanych w klasyfikacji? Widzę to partycjonowanie jako pomocnika do późniejszych obliczeń (tj. FFT), ale nie jako coś związanego z samym wyborem funkcji. Może ma to związek z wspomnianą „morfologią”.
Emile,
Podział na epoki nie ma nic wspólnego z wyborem funkcji. Jeśli masz długi sygnał (np. 10 godzin nagrań próbkowanych przy 100 Hz), to aby zbadać, jak zmienia się sygnał w czasie, musisz podzielić go na epoki. W przypadku problemu z klasyfikacją każda epoka będzie miała etykietę klasową, np. „Szczęśliwa” lub „smutna”, a następnie wyszkolisz klasyfikatora, aby rozróżniał epokę „szczęśliwą” i „smutną” za pomocą 6 funkcji obliczonych dla każdej epoki.
BGreene,
Ok :) To zdecydowanie nie ma związku z moim pierwotnym pytaniem. Rozważam przypadek, w którym klasa opisuje całą serię. Mam zamiar edytować moje pytanie, aby dodać wyjaśniający przykład.
Emile,