Ich habe einen Datensatz, der aus Zeitreihen (8 Punkte) mit ungefähr 40 Dimensionen besteht (also ist jede Zeitreihe 8 mal 40). Die entsprechende Ausgabe (die möglichen Ergebnisse für die Kategorien) ist entweder 0 oder 1.
Was wäre der beste Ansatz, um einen Klassifikator für Zeitreihen mit mehreren Dimensionen zu entwerfen?
Meine anfängliche Strategie bestand darin, Merkmale aus diesen Zeitreihen zu extrahieren: Mittelwert, Standard, maximale Variation für jede Dimension. Ich habe einen Datensatz erhalten, mit dem ich einen RandomTreeForest trainiert habe. Da ich mir der völligen Naivität bewusst bin und schlechte Ergebnisse erzielt habe, suche ich jetzt nach einem verbesserten Modell.
Meine Leads sind die folgenden: Klassifizieren Sie die Reihen für jede Dimension (unter Verwendung des KNN-Algorithmus und der DWT), reduzieren Sie die Dimensionalität mit PCA und verwenden Sie einen endgültigen Klassifikator entlang der mehrdimensionalen Kategorien. Da ich für ML relativ neu bin, weiß ich nicht, ob ich völlig falsch liege.
quelle
Antworten:
Du bist auf dem richtigen Weg. Schauen Sie sich die Berechnung einiger weiterer Funktionen im Zeit- und Frequenzbereich an. Solange die Anzahl der Beispiele >> die Anzahl der Funktionen beträgt, ist es unwahrscheinlich, dass Sie überanpassen. Gibt es Literatur zu einem ähnlichen Problem? Wenn ja, ist dies immer ein guter Ausgangspunkt.
Versuchen Sie es mit einem Boosted Tree Classifier wie xgboost oder LightGBM. Sie sind in der Regel einfacher zu optimieren und liefern mit Standardparametern gute Ergebnisse. Sowohl Random Forest- als auch Boosted Tree-Klassifizierer können die Wichtigkeit von Features zurückgeben, sodass Sie sehen können, welche Features für das Problem relevant sind. Sie können auch versuchen, Funktionen zu entfernen, um nach Kovarianzen zu suchen.
Am wichtigsten ist jedoch, dass Sie sicherstellen, dass Ihr Problem richtig definiert ist, wenn Ihre Ergebnisse unerwartet schlecht sind. Überprüfen Sie Ihre Ergebnisse manuell, um sicherzustellen, dass Ihre Pipeline keine Fehler enthält.
quelle
Wenn Sie sich in Python befinden, gibt es einige Pakete, mit denen Sie automatisch Hunderte oder Tausende von Features aus Ihren Zeitreihen extrahieren, mit Ihren Labels korrelieren, die wichtigsten auswählen und Modelle für Sie trainieren können.
https://github.com/blue-yonder/tsfresh
https://github.com/rtavenar/tslearn
quelle
Sie können Ihrem Datensatz weitere Funktionen hinzufügen (siehe unten).
Sie können das Nolds-Paket ausprobieren, wenn Ihre Daten aus einem stark nichtlinearen Prozess stammen.
max, min, mean, skew, kurtosis und wenn möglich einige rollende Statistiken.
Ich arbeite an etwas Ähnlichem und habe eine verwandte Frage gestellt .
quelle
Ich stimme Jan van der Vegt zu, Standardisierung (z. B. [-1, 1]) oder Normalisierung N (0, 1) in Kombination mit der Aktivierungsfunktion können bei neuronalen Netzen sehr wichtig sein. Ich würde die Dissertation von Pichaid Varoonchotikul überprüfen: "Hochwasservorhersage mit künstlichen neuronalen Netzen" für die Vor- und Nachteile von ANNs. Es hat sehr interessante Vorbehalte. Wie auch immer, ich versuche es zuerst ohne, aber wenn die Ergebnisse unbefriedigend sind, bin ich es gewohnt, Versuche mit beiden zu machen. Ich bin mir nicht sicher, ob es helfen wird, aber ich würde das R-Paket TSclust und die zugehörigen Dokumente überprüfen . Die Autoren sind sehr freundlich und helfen Ihnen, bestimmte Modelle dafür zu finden. Sie sind Experten für Zeitreihenanalysen! Viel Glück!
quelle