Funktionen zur Zeitreihenklassifizierung


43

Ich betrachte das Problem der (Mehrklassen-) Klassifikation basierend auf Zeitreihen variabler Länge , das heißt, eine Funktion über eine globale Darstellung der Zeitreihe durch einen Satz ausgewählter Merkmale fester Größe unabhängig von , und verwenden Sie dann Standardklassifizierungsmethoden für diesen Feature-Set. Ich bin nicht an Prognosen interessiert, dh an der Vorhersage vonf ( 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. Zum Beispiel können wir analysieren, wie eine Person geht, um das Geschlecht der Person vorherzusagen.

Welche Standardfunktionen kann ich berücksichtigen? In einem Beispiel können wir offensichtlich den Mittelwert und die Varianz der Serie (oder Momente höherer Ordnung) verwenden und auch den Frequenzbereich untersuchen, wie die Energie, die in einem Intervall der diskreten Fourier-Transformation der Serie (oder der diskreten Wavelet-Transformation ) enthalten ist.

Antworten:


45

Einfache statistische Funktionen

  • Bedeutet in jeder der Dimensionend
  • Standardabweichungen der Maßed
  • Schiefe , Kurtosis und Momente höherer Ordnung der Dimensionend
  • Maximum und Minimum - Werte

Funktionen für die Zeitreihenanalyse

  • Die -Kreuzkorrelationen zwischen jeder Dimension und den -Autokorrelationendd×d1 d
  • Ordnungen des autoregressiven (AR), integrierten (I) und gleitenden Durchschnitts (MA) Teils eines geschätzten ARIMA- Modells
  • Parameter des AR-Teils
  • Parameter des MA-Teils

Funktionen im Zusammenhang mit dem Frequenzbereich

In Morchen03 finden Sie eine Untersuchung der Energiesparfunktionen von DFT und DWT

  • Frequenzen der Peaks in der Amplitude in den DFTs für die gemessenen Dimensionendk d
  • k -Quantile dieser DFTs

1
Emile, diese Frage ähnelt der Frage, die ich gerade gestellt habe ( stats.stackexchange.com/questions/51475/… ). Könnten Sie einen R-Code für die DFT-Funktionen posten?
B_Miner

Gibt es eine Methode, die auf Shapelets für Zeitreihen variabler Länge basiert?
Simone

8

Emile, ich denke, die in Ihrer Antwort aufgelisteten Funktionen sind ziemlich gute Ausgangspunkte, aber wie immer halte ich einige Fachkenntnisse (oder zumindest lange Überlegungen) zu Ihrem Problem für ebenso wichtig.

Möglicherweise möchten Sie Features berücksichtigen, die aus den Ableitungen (oder Integralen) Ihres Signals berechnet wurden. Zum Beispiel würde ich wetten, dass eine schnelle Beschleunigung / Verzögerung ein vernünftiger Indikator für unfallanfälliges Fahren ist. Diese Information ist offensichtlich immer noch im Positionssignal vorhanden, aber bei weitem nicht so eindeutig.

Möglicherweise möchten Sie auch die Fourier-Koeffizienten durch eine Wavelet- oder Wavelet-Paketdarstellung ersetzen. Der Hauptvorteil von Wavelets besteht darin, dass Sie ein Merkmal sowohl in der Frequenz als auch in der Zeit lokalisieren können, während die herkömmlichen Fourier-Koeffizienten nur auf die Zeit beschränkt sind. Dies kann besonders nützlich sein, wenn Ihre Daten Komponenten enthalten, die sich unregelmäßig ein- und ausschalten oder rechteckförmige Impulse aufweisen, die für Fourier-Methoden problematisch sein können.


6

Wie die anderen Antworten andeuteten, gibt es eine Vielzahl von Zeitreihenmerkmalen, die als potenzielle Merkmale verwendet werden können. Es gibt einfache Merkmale wie den Mittelwert, zeitreihenbezogene Merkmale wie die Koeffizienten eines AR-Modells oder hochentwickelte Merkmale wie die Teststatistik des erweiterten Dickey-Fuller-Hypothesentests.

Umfassender Überblick über mögliche Zeitreihenfunktionen

Das Python-Paket tsfresh automatisiert das Extrahieren dieser Funktionen. In der Dokumentation werden die verschiedenen berechneten Funktionen beschrieben. Die Seite mit den berechneten Features finden Sie hier .

Haftungsausschluss: Ich bin einer der Autoren von tsfresh.


5

Ich schlage vor, dass Sie anstelle von klassischen Ansätzen zum Extrahieren handgefertigter Features Autoencoder verwenden . Autoencoder spielen eine wichtige Rolle bei der Feature-Extraktion von Deep-Learning-Architekturen.

Der Autoencoder versucht eine Funktion zu lernen . Mit anderen Worten, es wird versucht, eine Annäherung an die Identitätsfunktion zu lernen, um , das ähnlich .X T X Tf(XT)XTX^TXT

Die Identitätsfunktion scheint eine besonders triviale Funktion zu sein, um zu lernen; Indem Sie jedoch Einschränkungen für das Netzwerk festlegen, z. B. die Anzahl der verborgenen Einheiten begrenzen, können Sie interessante Strukturen für die Daten ermitteln.

Feature Extractor

Auf diese Weise entspricht Ihr gewünschtes den Ausgabewerten der Mittelebene in einem tiefen Autoencoder, wenn Sie die Anzahl der versteckten Einheiten in der Mittelebene auf begrenzen .ϕ(XT)=v1,,vDRD

Darüber hinaus können Sie verschiedene Autoencoder-Varianten verwenden, um die beste Lösung für Ihr Problem zu finden.



1

Abhängig von der Länge Ihrer Zeitreihe besteht der übliche Ansatz darin, die Daten in Segmente zu unterteilen, z. B. 10 Sekunden.

Vor dem Aufteilen der Zeitreihen in Segmente muss jedoch häufig eine Vorverarbeitung durchgeführt werden, z. B. Filtern und Zurückweisen von Artefakten. Sie können dann eine Vielzahl von Merkmalen berechnen, z. B. anhand der Frequenz (dh einer FFT für jede Epoche), der Zeit (z. B. Mittelwert, Varianz usw. der Zeitreihe in dieser Epoche) oder der Morphologie (dh der Form des Signals) / Zeitreihen in jeder Epoche).

Normalerweise sind die Merkmale, die zur Klassifizierung von Segmenten (Epochen) einer Zeitreihe / eines Signals verwendet werden, domänenspezifisch, aber die Wavelet / Fourier-Analyse ist lediglich ein Hilfsmittel, mit dem Sie Ihr Signal in den Frequenz- / Zeitfrequenzbereichen untersuchen können, anstatt Merkmale für sich zu sein.

Bei einem Klassifizierungsproblem hat jede Epoche eine Klassenbezeichnung, z. B. "glücklich" oder "traurig". Anschließend trainieren Sie einen Klassifizierer, um anhand der 6 für jede Epoche berechneten Merkmale zwischen "glücklich" und "traurig" zu unterscheiden.

Für den Fall, dass jede Zeitreihe einen einzelnen Fall für die Klassifizierung darstellt, müssen Sie jedes Merkmal für alle Stichproben der Zeitreihe berechnen. Die FFT ist hier nur relevant, wenn das Signal linear zeitinvariant (LTI) ist, dh wenn das Signal über die gesamte Zeitreihe als stationär angesehen werden kann, wenn das Signal über den interessierenden Zeitraum nicht stationär ist, kann eine Wavelet-Analyse erfolgen angemessener. Dieser Ansatz bedeutet, dass jede Zeitreihe einen Merkmalsvektor erzeugt und einen Fall für die Klassifizierung darstellt.


Ich hatte immer das Gefühl, dass das Aufteilen von Zeitreihen, einem von Natur aus kontinuierlichen Prozess, in diskrete Perioden (oder Epochen) zu einem Informationsverlust führt. Wie wählt man Epochen aus, es sei denn, die Serie enthält natürliche Epochen? Wahrscheinliche Epochen können gefunden werden, die zu jedem gewünschten Ergebnis passen.
Cam.Davidson.Pilon

1
Wir sind uns nicht sicher, ob für jedes Ergebnis, aber für jedes praktische Problem eine Epoche gefunden werden kann. Bei einem instationären Signal müssen Sie einen Weg finden, um zeitliche Schwankungen zu berücksichtigen (wenn ein Signal / eine Zeitreihe analytisch angemessen beschrieben oder linear zeitinvariant ist) dies ist nicht notwendig). Die Epochenlänge ist wiederum domänenspezifisch, wird jedoch normalerweise so kurz gewählt, dass das Signal während des interessierenden Zeitraums (Epoche) stationär ist.
BGreene

BGreene, können Sie erläutern, welchen Vorteil es hat, die Serie in Epochen zu unterteilen, um die für die Klassifizierung verwendeten Merkmale auszuwählen? Ich sehe diese Partitionierung als Hilfe für spätere Berechnungen (zB FFT), aber nicht als etwas, das mit der Auswahl der Features selbst zusammenhängt. Vielleicht hängt es mit der von Ihnen erwähnten "Morphologie" zusammen.
Emile

Die Unterteilung in Epochen hat nichts mit der Auswahl von Funktionen zu tun. Wenn Sie ein langes Signal haben (z. B. 10 Stunden Aufnahme bei 100 Hz), müssen Sie es in Epochen aufteilen, um zu untersuchen, wie sich das Signal im Laufe der Zeit ändert. Bei einem Klassifizierungsproblem hat jede Epoche eine Klassenbezeichnung, z. B. "glücklich" oder "traurig". Anschließend trainieren Sie einen Klassifizierer, um anhand der 6 für jede Epoche berechneten Merkmale zwischen "glücklich" und "traurig" zu unterscheiden.
BGreene

Ok :) Es hat definitiv nichts mit meiner ursprünglichen Frage zu tun. Ich betrachte den Fall, in dem die Klasse die gesamte Serie beschriftet. Ich werde meine Frage bearbeiten, um ein klarstellendes Beispiel hinzuzufügen.
Emile
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.