Aktienkursvorhersage mit LSTM Neural Networks | von Conor Smith | Juni 2023

0
24


Liniendiagramm von S&P-Daten mit Seaborn

Obwohl dies nicht oft der aufregendste Schritt im MLE-Lebenszyklus ist, ist die Untersuchung von Daten hilfreich, um Erkenntnisse für mögliche Techniken zur Auswahl und Optimierung eines Modells zu gewinnen. Um die Aktiendaten des S&P 500 zu untersuchen, habe ich verschiedene Tabellen untersucht und manipuliert und sie durch mehrere Grafiken visuell dargestellt. Dies half mir, die Daten zu verstehen und löste Ideen für weitere Schritte zur Erstellung eines Modells für maschinelles Lernen aus.

Ich habe einige Modelle getestet, um die optimale Choice für das auszuwählen, was ich bauen wollte:

  • Lineare Regression
  • Zufälliger Wald
  • Neuronale Netze mit langem Kurzzeitgedächtnis (LSTM).

Nach einigen grundlegenden Checks kam ich zu dem Schluss, dass LSTM meine beste Route conflict. Hier ist der Grund:

Ergebnisse der Checks neuronaler LSTM-Netze.

LSTM ist eine Type wiederkehrender neuronaler Netze, die Speicherzellen und mehrere Gatter (Eingabe, Vergessen und Ausgabe) nutzt, um effektive sequentielle Vorhersagen zu treffen. Sein Hauptmerkmal ist seine Fähigkeit, Informationen über lange Sequenzen hinweg zu speichern und abzurufen, wodurch es über einen längeren Zeitraum lernen und sich Informationen merken kann. Aus diesem Grund ist es für die Zeitreihenanalyse sehr effektiv.

Code, der beim Erstellen des LSTM-Modells verwendet wird

Nachdem ich ein Modell ausgewählt hatte, bestand mein nächster Schritt darin, die Hyperparameter abzustimmen. Ich habe mit GridSearchCV angefangen zu testen, aber dieser Prozess erforderte zu viele Iterationen und conflict sehr zeitaufwendig. Um dem entgegenzuwirken, habe ich beschlossen, stattdessen die Bayesianische Optimierung zu testen, die sich als Gewinner herausstellte.

Die Bayes’sche Optimierung wird häufig bei sequentiellen Black-Field-Funktionen verwendet und ist besonders effektiv, wenn traditionellere Optimierungstechniken zeitaufwändig sind. Es verwendet ein Ersatzmodell und eine Erfassungsfunktion, um effizient nach den optimalen Werten einer Black-Field-Funktion zu suchen. Sein Prozess gleicht Exploration und Exploitation aus, um den Eingaberaum iterativ zu erkunden und die Suche mit einer minimalen Anzahl von Funktionsauswertungen auf das globale Optimum einzugrenzen. Die Implementierung dieser Technik spart Zeit beim Coaching und der Implementierung eines Deep-Studying-Modells.

Ich habe dann nach einem Internet-Framework gesucht, das meinen Bereitstellungsanforderungen entspricht, und Flask hat viele dieser Kriterien erfüllt. Flask ist ein leichtes und flexibles Webframework für Python, das Anpassungsmöglichkeiten und Benutzerfreundlichkeit bietet. Es ist effektiv in einer kleinen App wie der, die ich erstellt habe, ist aber bei Bedarf auch skalierbar. Nachdem ich die Flask-App erstellt und sichergestellt habe, dass sie JSON-Dateien mit den relevanten Informationen senden und empfangen kann, füge ich HTML und CSS hinzu, um ihr ein Frontend zu geben. Da der Schwerpunkt dieses Projekts auf der Technik des maschinellen Lernens liegt, habe ich meine Entrance-Finish-Bemühungen begrenzt, um die Again-Finish-Funktionen hervorzuheben.

Nachdem ich die App erfolgreich lokal ausgeführt hatte, wollte ich sie in einen Container umwandeln, damit sie auf jedem Pc in jeder Umgebung ausgeführt werden kann. Dafür habe ich Docker gewählt. Docker ist eine leistungsstarke Containerisierungsplattform, die Anwendungen konsistent in verschiedenen Umgebungen verpackt und ausführt und so die Bereitstellung und Verwaltung von Software program erleichtert. Zu den Vorteilen von Docker gehören verbesserte Portabilität, Ressourceneffizienz, Isolation und vereinfachte Bereitstellung. Um die Plattform nutzen zu können, ist die Erstellung einer „necessities.txt“-Datei und einer „Dockerfile“ erforderlich.

Anforderungen.txt-Datei
  • Die „necessities.txt“ ist eine Liste der in Ihrer Umgebung verwendeten Abhängigkeiten.
  • Bei der „Docker-Datei“ handelt es sich um eine Reihe von Anweisungen, die zum Erstellen des Docker-Photos ausgeführt werden müssen.

Sobald diese Dateien hinzugefügt wurden, ist es wichtig, den Docker-Container zu erstellen und auszuführen, um sicherzustellen, dass er auf dem lokalen Host funktioniert.

Der letzte Schritt beim Erstellen einer MLE-Internet-App ist die Bereitstellung. Ich habe mich für Heroku aufgrund seiner Benutzerfreundlichkeit, Skalierbarkeit und Erschwinglichkeit entschieden. Nachdem ich ein Konto erstellt hatte, nutzte ich die Heroku-Befehlszeilenschnittstelle, um meinen Code zu pushen. Anschließend wurde ich angewiesen, eine „Heroku.yml“-Datei hinzuzufügen, die Anweisungen dazu enthält, wie Heroku die Anwendung ausführen soll. Jetzt bereitgestellt, kann ich direkt zu meiner Anwendung gehen und die Webseite öffnen. Ich habe Heroku auch verwendet, um zwei weitere Add-ons zu implementieren:

  • Postgres SQL-Datenbank: Ich wollte Daten von der API übernehmen und sie einer Tabelle in der Postgres-Datenbank hinzufügen. Ich habe auch eine weitere Tabelle erstellt, die dabei hilft, den Fehler zwischen der Vorhersage meines Modells und der Vorhersage zu berechnen
    Der wahre Wert liegt im S&P 500. Das Hinzufügen einer Datenbank gibt mir die Möglichkeit, Daten zu erfassen und sie in Zukunft in meine Anwendung einzufügen.
  • Heroku-Planer: Ich habe ein tägliches Skript geplant, um den Schluss-S&P hinzuzufügen
    500-Preis für den Tag, berechne meinen Vorhersagefehler und trainiere mein Modell basierend auf den neuen Daten neu. Dieser Prozess läuft mit dem Heroku Scheduler nahtlos ab und hilft bei der Wartung der MLE-Anwendung.
Aktienkursvorhersage-App

Dies conflict ein spannendes Projekt, bei dem ich mehrere für mich neue Techniken erlernte und implementierte und meine erste Full-Stack-Anwendung für maschinelles Lernen bereitstellen konnte. Wenn ich über dieses Projekt nachdenke, denke ich über mehrere Elemente nach.

  • Der erste ist die Schwierigkeit des Scope Creep. Da vieles davon für mich neu conflict, wollte ich Methoden und Optionen erkunden, die über die Notwendigkeit für dieses Projekt hinausgehen. Es ist intestine, lernen und erkunden zu wollen, aber jedes Projekt braucht ein Enddatum, und die Festlegung des angemessenen Umfangs (und dessen Einhaltung!) stellt den Erfolg eines Projekts sicher.
  • Das zweite ist den Wert von Voraussicht in einem komplizierten App-Ökosystem. Die Fähigkeit, im Voraus zu planen und zu modellieren, bietet eine solide Roadmap für die Bewältigung jedes Abschnitts der MLE-Anwendung.
  • Schließlich ist Verständnis der Tiefe jedes Teils einer MLE-Anwendung. Es gibt viele „bewegliche Teile“ und die Erstellung leistungsstarker Unit-Checks kann dabei helfen, Kopfschmerzen vorzubeugen.

Kurz gesagt, ich freue mich, dass ich eine einfache Anwendung zur Stoppvorhersage erstellen konnte. Dies ist der Link zu meiner Aktienvorhersage-App, die ich beschrieben habe. Hier ist mein Github-Repository wenn Sie genauer untersuchen möchten, wie ich das erstellt habe. Bitte kontaktieren Sie mich unter LinkedIn wenn Sie Fragen oder Anregungen haben.



Source link

HINTERLASSEN SIE EINE ANTWORT

Please enter your comment!
Please enter your name here