Ich verfüge über ein wenig Autodidakt-Wissen in der Arbeit mit Algorithmen des maschinellen Lernens (das grundlegende Material vom Typ Random Forest und Linear Regression). Ich beschloss, mich zu verzweigen und mit Keras RNNs zu lernen. Wenn ich mir die meisten Beispiele ansehe, bei denen es sich in der Regel um Bestandsvorhersagen handelt, konnte ich keine grundlegenden Beispiele für die Implementierung mehrerer Funktionen finden, mit Ausnahme von 1 Spalte als Funktionsdatum und der anderen als Ausgabe. Gibt es eine wichtige grundlegende Sache, die mir fehlt oder etwas?
Wenn jemand ein Beispiel hat, würde ich es sehr schätzen.
Vielen Dank!
machine-learning
neural-network
keras
Rjay155
quelle
quelle
multiple features
hier eine genauere Frage zur Verwendung von RNN für Zeitreihenvorhersagen mit Features, die numerische und nicht numerische Daten enthalten, ausgearbeitet .Antworten:
Rekurrente neuronale Netze (RNNs) dienen zum Lernen von Sequenzdaten. Wie Sie sich denken, können sie definitiv mehrere Funktionen als Eingabe verwenden! Keras 'RNNs nehmen 2D-Eingaben ( T , F ) von Zeitschritten T und Features F auf (ich ignoriere die Batch-Dimension hier).
Sie müssen oder möchten jedoch nicht immer die Zwischenzeitschritte t = 1, 2 ... ( T - 1). Daher unterstützt Keras beide Modi flexibel. Um alle T Zeitschritte ausgeben zu lassen, übergeben
return_sequences=True
Sie diese beim Bau an Ihre RNN (z. B.LSTM
oderGRU
). Wenn Sie nur den letzten Zeitschritt t = T möchten , verwenden Siereturn_sequences=False
(dies ist die Standardeinstellung, wenn Sie nichtreturn_sequences
an den Konstruktor übergeben).Nachfolgend finden Sie Beispiele für diese beiden Modi.
Beispiel 1: Lernen der Sequenz
Hier ist ein kurzes Beispiel für das Training eines LSTM (RNN-Typs), bei dem die gesamte Sequenz beibehalten wird. In diesem Beispiel hat jeder Eingangsdatenpunkt 2 Zeitschritte mit jeweils 3 Merkmalen. Die Ausgabedaten haben 2 Zeitschritte (weil
return_sequences=True
) mit jeweils 4 Datenpunkten (weil das die Größe ist, an die ich übergebeLSTM
).Beispiel 2: Lernen des letzten Zeitschritts
Wenn Sie andererseits einen LSTM trainieren möchten, der nur den letzten Zeitschritt in der Sequenz ausgibt, müssen Sie ihn setzen
return_sequences=False
(oder ihn einfach ganz aus dem Konstruktor entfernen), daFalse
die Standardeinstellung ist). Und dann müssen Ihre Ausgabedaten (data_y
im obigen Beispiel) neu angeordnet werden, da Sie nur den letzten Zeitschritt angeben müssen. In diesem zweiten Beispiel hat jeder Eingangsdatenpunkt also noch 2 Zeitschritte mit jeweils 3 Merkmalen. Die Ausgabedaten sind jedoch nur ein einziger Vektor für jeden Datenpunkt, da wir alles auf einen einzigen Zeitschritt reduziert haben. Jeder dieser Ausgabevektoren hat jedoch immer noch 4 Merkmale (da dies die Größe ist, an die ich übergebeLSTM
).quelle
data_x
würden , dann würde dies einfach einen einzelnen Datenpunkt enthalten, und dieser Datenpunkt würde vier Zeitschritte mit jeweils drei Dimensionen aufweisen (und ähnlich müssten Siedata_y
auf die gleiche Weise zusammenführen). Die Anzahl der Zeitschritte, die Sie verwenden, hängt einfach davon ab, was Sie modellieren möchten (und wie viele Zeitschritte für diesen Prozess relevant sind).