[PYTHON] RNN_LSTM1 Zeitreihenanalyse

Aidemy 2020/11/10

Einführung

Hallo, es ist ja! Ich bin eine knusprige Literaturschule, aber ich war an den Möglichkeiten der KI interessiert, also ging ich zur AI-spezialisierten Schule "Aidemy", um zu studieren. Ich möchte das hier gewonnene Wissen mit Ihnen teilen und habe es in Qiita zusammengefasst. Ich freue mich sehr, dass viele Menschen den vorherigen zusammenfassenden Artikel gelesen haben. Vielen Dank! Dies ist der erste Beitrag von RNN_LSTM. Freut mich, dich kennenzulernen.

Was diesmal zu lernen ・ ・

Überprüfung des tiefen Lernens

Was ist tiefes Lernen?

(Für tiefes Lernen lernen Sie aus "Deep Learning Basics") -__ Deep Learning __ bezieht sich auf ein Modell __, in dem die __ Zwischenschicht (verborgene Schicht) des neuronalen Netzwerks tief gesetzt ist. ・ Das neuronale Netzwerk ist eines der maschinellen Lernprogramme, das den Mechanismus der Gehirnübertragung anwendet und aus __ "Eingabeschicht", "Zwischenschicht" und "Ausgabeschicht" __ besteht.

Bestimmen der Anzahl der Schichten und der Anzahl der Einheiten

-Eine der Dinge, die beim Erstellen eines Modells für ein neuronales Netzwerk berücksichtigt werden müssen, ist __ "Anzahl der Schichten" __ und __ "Anzahl der Einheiten" __. Da es keine Formel gibt, um diese zu bestimmen, müssen Sondierungsentscheidungen getroffen werden. -Das offensichtlichste ist die Anzahl der Einheiten (Anzahl der Dimensionen) __ in der Ausgabeebene. Hierzu kann die Anzahl der zu klassifizierenden Kategorien (Anzahl der Klassen) unverändert festgelegt werden.

Überlernen von Maßnahmen

・ __ "DropOut ()" __ ist die erste Methode, um Überlernen zu verhindern, dh __ zu verallgemeinern. Dies ist eine Verallgemeinerungsmethode, bei der Knoten nicht mit einem festen Verhältnis gelernt werden. Stellen Sie im Allgemeinen das Verhältnis __50% __ ein. -Dropout kann mit __ "model.add (Dropout (ratio))" __ durchgeführt werden.

-Eine andere Methode zur Verallgemeinerung ist __ "Early Stopping" __. Dies ist eine Methode, um Überlernen zu verhindern, indem das Lernen gestoppt wird, wenn sich die Genauigkeit beim wiederholten Lernen nicht verbessert. ・ Man kann sagen, dass die Genauigkeit am besten ist, wenn der Fehler zwischen den Trainingsdaten und den Testdaten ungefähr gleich ist.

RNN/LSTM

Über RNN

(Erfahren Sie mehr über RNN mit "Zeitreihenanalyse") -__ RNN__ ist ein __neurales Netzwerk, das __Zeitreihendaten verarbeiten kann. Vergangene Informationen werden im Modell beibehalten, um das Konzept der Zeit in das neuronale Netzwerk zu integrieren. ・ Mit fortschreitender Zeitreihe kann der Gradient jedoch verschwinden oder der Rechenaufwand kann explosionsartig ansteigen __ "Gradientenexplosion" __, sodass er nicht für langfristiges Lernen geeignet ist __ Es gibt einen Punkt. -Für die Gradientenexplosion gibt es eine Lösung namens "Gradientenbeschneidung" __, die besagt: "Korrigieren Sie den Gradienten, wenn der Gradientenwert den Schwellenwert überschreitet".

Über LSTM

-Die Lösung für das oben genannte RNN-Problem lautet __ "LSTM" __. Durch Ersetzen der mittleren Schicht von RNN durch einen LSTM-Block kann der Kontext für eine lange Zeit beibehalten werden.

UNIQLO-Bestandsdatenprognose

Definieren Sie den Prozess bis zur Modellerstellung mit einer Funktion

・ Für diese Daten wird __ "Unichrome Stock Price Data" __ verwendet. Dieses Mal werden wir "Vorhersagen der Daten __ des nächsten Tages __ aus den Daten __ vor 15 Tagen" durchführen.

・ Code![Screenshot 2020-11-08 19.58.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/db6ea786-8bb8-0e75- ba35-7560071141e8.png)

スクリーンショット 2020-11-08 19.59.12.png

Skalenanpassung (Standardisierung)

-Implementieren Sie das Modell mit den vorhandenen Funktionen. Laden Sie die Daten mit __ "data_load () __", ermitteln Sie den Schlusskurs, teilen Sie die Daten mit __ "split_train_test ()" __ und skalieren Sie die Daten __, bevor Sie die Daten an das Modell __ übergeben. Dieses Mal werden wir Standardisierung durchführen. -Für die Standardisierung erstellen Sie eine Instanz mit __ "StandardScaler ()" __, berechnen Sie die durchschnittliche Verteilung der Daten mit __ "fit_transform ()" __ für Trainingsdaten und standardisieren Sie diese sowie für Test und Daten __ Nur mit "transform ()" standardisieren __ (da Testdaten bei der Definition der Standardisierung weniger genau sind).

・ Wenn Sie die durch Vorhersage dieser Zeit vorhergesagten Daten mit den Testdaten in einem Diagramm vergleichen möchten, können Sie die Daten mit __ "inverse_transform ()" __ wiederherstellen und dann __ "plt.plot ()" __ verwenden, um sie zu veranschaulichen. gut.

・ Code![Screenshot 2020-11-08 19.59.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/480715aa-ab35-a829- 9d3c-fd0f8d167ca7.png)

・ Ergebnis![Screenshot 2020-11-08 20.00.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/968fe309-e9e8-1b95- a559-fcc04896b00c.png)

(Entwicklung) Schlusskurs nach 10 Tagen vorhersagen

・ Im vorherigen Abschnitt war der Schlusskurs, der vorhergesagt werden konnte, einen Tag wert. Wenn Sie diese Vorhersage jedoch um einen Tag verschieben und zehn Tage lang durchführen, kann ein Modell erstellt werden, das den Schlusskurs in 10 Tagen vorhersagt. ..

-Code (nur zusätzliche Punkte, start_point ist optional)![Screenshot 2020-11-08 20.00.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0 / 698700 / 06cccc3c-ee9b-b899-fc52-707d067f2bdb.png)

スクリーンショット 2020-11-08 20.01.14.png

・ Ergebnis![Screenshot 2020-11-08 20.01.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/7c8466ff-487c-66b3- 6e70-7c101d483e7d.png)

Zusammenfassung

Diese Zeit ist vorbei. Vielen Dank für das Lesen bis zum Ende.

Recommended Posts

RNN_LSTM1 Zeitreihenanalyse
Python: Zeitreihenanalyse
Zeitreihenanalyse 1 Grundlagen
Zeitreihenanalyse Teil 4 VAR
Zeitreihenanalyse Teil 3 Prognose
Zeitreihenanalyse Teil 1 Autokorrelation
Python: Zeitreihenanalyse: Vorverarbeitung von Zeitreihendaten
Zeitreihenanalyse 3 Vorverarbeitung von Zeitreihendaten
Zeitreihenzerlegung
Zeitreihenanalyse 2 Stabilität, ARMA / ARIMA-Modell
Ich habe versucht, Zeitreihen zu analysieren! (AR-Modell)
Zeitreihenanalyse Teil 2 AR / MA / ARMA
Zeitreihenanalyse 4 Konstruktion des SARIMA-Modells
Zeitreihenanalyse Nr. 6 Gefälschte Rückkehr und republikanischer Teil
Python: Zeitreihenanalyse: Erstellen eines SARIMA-Modells
Python: Zeitreihenanalyse: Konstanz, ARMA / ARIMA-Modell
Python-Zeitreihenfrage
TOPIX-Zeitreihen anzeigen
Zeitreihendiagramm / Matplotlib
[Python] Zeichnen Sie Zeitreihendaten
Eine Lernmethode für Anfänger zum Erlernen der Zeitreihenanalyse
Herausforderung für die zukünftige Umsatzprognose: ⑤ Zeitreihenanalyse von Prophet
Herausforderung für die zukünftige Umsatzprognose: ① Was ist Zeitreihenanalyse?
Berechnung der Zeitreihen-Kundenbindung
Einfache Vorhersage von Zeitreihen mit Prophet
Zeitreihenplot gestartet ~ Python Edition ~
Über Zeitreihendaten und Übertraining
[Statistik] [Zeitreihenanalyse] Zeichnen Sie das ARMA-Modell und erfassen Sie die Tendenz.
Differenzierung von Zeitreihendaten (diskret)
Bewegungsstatistik zur Vorhersage von Zeitreihen
LSTM (1) zur Zeitreihenvorhersage (für Anfänger)
Veranschaulichen Sie sofort die vorherrschende Periode in Zeitreihendaten mithilfe der Spektralanalyse
Vorhersage von Zeitreihendaten durch Simplex-Projektion
Vorhersage von Zeitreihendaten mit einem neuronalen Netzwerk
So vergleichen Sie Zeitreihendaten-Derivative DTW, DTW-
[Python] Beschleunigt das Laden von Zeitreihen-CSV
Erkennung von Zeitreihendatenanomalien für Anfänger
matplotlib Schreiben Sie Text in ein Zeitreihendiagramm
Umgang mit Zeitreihendaten (Implementierung)
OpenFOAM-Zeitreihendaten lesen und Daten einstellen
Einführung in die Zeitreihenanalyse ~ Saisonales Anpassungsmodell ~ In R und Python implementiert
Herausforderung für die zukünftige Umsatzprognose: ④ Zeitreihenanalyse unter Berücksichtigung der Saisonalität nach Statistikmodellen