RNNs eignen sich bemerkenswert gut zur Erfassung der Zeitabhängigkeit sequentieller Daten. Was passiert jedoch, wenn die Sequenzelemente nicht zeitlich gleich verteilt sind?
Beispielsweise erfolgt die erste Eingabe in die LSTM-Zelle am Montag, dann keine Daten von Dienstag bis Donnerstag und schließlich neue Eingaben für jeden Freitag, Samstag, Sonntag. Eine Möglichkeit wäre, für Dienstag bis Donnerstag eine Art NULL-Vektor zu speisen, aber das scheint eine dumme Lösung zu sein, sowohl weil die NULL-Einträge die Daten kontaminieren als auch weil es eine Verschwendung von Ressourcen ist.
Irgendwelche Ideen? Wie gehen RNNs mit solchen Fällen um? Wenn es andere Methoden als RNNs gibt, begrüße ich diese Vorschläge ebenfalls.
Antworten:
Wenn Sie zum Zeitpunkt , besteht die einfache Lösung darin, eine One-Hot-Codierung des Wochentags und dann einfach die Verkettung von und in das Netzwerkvt t dt vt dt . Das Zeit / Datum-Codierungsschema kann komplizierter sein, wenn das Zeitformat komplizierter ist als nur der Wochentag.
Abhängig davon, wie spärlich und unregelmäßig die Daten sind, sollten NULL-Einträge eine vernünftige Lösung sein. Ich vermute, dass das Eingangsgatter eines LSTM es dem LSTM ermöglichen würde, die Informationen eines NULL-Eintrags richtig abzulesen, ohne die Daten (den Speicher / den verborgenen Zustand) zu kontaminieren, wie Sie es ausgedrückt haben.
quelle
quelle
Ich denke es kommt auf die Daten an. Wenn Sie beispielsweise Zählungen verarbeiten und an einigen Tagen nur vergessen haben, diese zu messen, besteht die beste Strategie darin, die fehlenden Werte (z. B. durch Interpolation oder Gauß-Prozesse) zu unterstellen und dann die unterstellten Zeitreihen mit einem RNN zu verarbeiten. Durch die Anrechnung würden Sie Wissen einbetten.
Wenn das Fehlen von Bedeutung ist (es war zu heiß, um an einigen Tagen die Anzahl zu messen), ist es am besten, vielleicht zu unterstellen und auch einen Indikatorvektor anzuhängen, der 1 ist, wenn der Wert fehlt, und ansonsten 0.
quelle