By Derrick Mwiti, Data Analyst

Image

A szerkesztő megjegyzése: Ez a bemutató azt mutatja be, hogyan kezdhetjük el az idősorok előrejelzését LSTM modellekkel. A tőzsdei adatok remek választásnak bizonyulnak ehhez, mivel eléggé rendszeres és mindenki számára széles körben elérhetőek. Kérjük, ne tekintse ezt pénzügyi tanácsadásnak, és ne használja fel saját ügyletek megkötésére.

Ezzel a bemutatóval egy Python mélytanulási modellt építünk, amely a részvényárfolyamok jövőbeli viselkedését fogja megjósolni. Feltételezzük, hogy az olvasó ismeri a Python mélytanulás fogalmait, különösen a hosszú rövidtávú memóriát.

Míg egy részvény tényleges árfolyamának megjóslása nehéz feladat, építhetünk egy olyan modellt, amely megjósolja, hogy az árfolyam emelkedni vagy csökkenni fog-e vagy sem. A bemutatóhoz használt adatok és notebook itt található. Fontos megjegyezni, hogy mindig vannak más tényezők is, amelyek befolyásolják a részvények árfolyamát, például a politikai légkör és a piac. Ebben a bemutatóban azonban nem ezekre a tényezőkre fogunk koncentrálni.

Bevezetés

A LSTM-ek nagyon erősek a szekvencia-előrejelzési problémákban, mivel képesek múltbeli információkat tárolni. Ez a mi esetünkben azért fontos, mert egy részvény korábbi árfolyama döntő fontosságú a jövőbeli árfolyam előrejelzésében.

Azzal kezdünk, hogy importáljuk a NumPy-t a tudományos számításokhoz, a Matplotlib-et a grafikonok ábrázolásához, és a Pandas-t az adathalmazaink betöltéséhez és manipulálásához.

Az adathalmaz betöltése

A következő lépés a képzési adathalmazunk betöltése és a Open és Highoszlopok kiválasztása, amelyeket a modellezés során használni fogunk.

Ellenőrizzük az adathalmazunk fejlécét, hogy betekintést nyerjünk abba, milyen adathalmazzal dolgozunk.

A Open oszlop a kiindulási árfolyam, míg a Close oszlop a részvény végső árfolyama egy adott kereskedési napon. A High és Low oszlopok az adott nap legmagasabb és legalacsonyabb árfolyamát jelölik.

Feature Scaling

A mélytanulási modellekkel kapcsolatos korábbi tapasztalatainkból tudjuk, hogy az optimális teljesítmény érdekében skáláznunk kell az adatainkat. Esetünkben a Scikit- Learn MinMaxScaler funkcióját fogjuk használni, és nullától egyig terjedő számokra skálázzuk az adathalmazunkat.

Adatok létrehozása időlépésekkel

A LSTM-ek elvárják, hogy adataink egy meghatározott formátumban, általában egy 3D-s tömbben legyenek. Azzal kezdjük, hogy 60 timestepben hozzuk létre az adatokat, és a NumPy segítségével alakítjuk át egy tömbbe. Ezután átalakítjuk az adatokat egy 3D dimenziós tömbbe X_train mintákkal, 60 időbélyeggel és minden lépésnél egy jellemzővel.

Az LSTM építése

Az LSTM építéséhez importálnunk kell néhány modult a Kerasból:

  1. Sequential a neurális hálózat inicializálásához
  2. Dense a sűrűn kapcsolódó neurális hálózati réteg hozzáadásához
  3. LSTM a Long Short-Term Memory réteg hozzáadásához
  4. Dropout a túlillesztést megakadályozó dropout rétegek hozzáadásához

Adjuk hozzá az LSTM réteget, majd később hozzáadunk néhány Dropout réteget a túlillesztés megakadályozására. Az LSTM réteget a következő argumentumokkal adjuk hozzá:

  1. 50 egység, ami a kimeneti tér dimenzionalitása
  2. return_sequences=True ami meghatározza, hogy a kimeneti sorozat utolsó kimenetét vagy a teljes sorozatot
  3. input_shape adjuk vissza a képzési halmazunk alakjaként.

A Dropout rétegek definiálásakor 0,2-t adunk meg, ami azt jelenti, hogy a rétegek 20%-a kiesik. Ezt követően hozzáadjuk a Dense réteget, amely 1 egységnyi kimenetet határoz meg. Ezt követően a népszerű adam optimalizálóval összeállítjuk a modellünket, és a veszteséget a mean_squarred_error értékre állítjuk be. Ez kiszámítja a négyzetes hibák átlagát. Ezután illesztjük a modellt úgy, hogy 100 epochán fusson, 32-es kötegmérettel. Ne feledjük, hogy a számítógépünk specifikációitól függően néhány percig is eltarthat, amíg a futás befejeződik.

Jövőbeli részvények előrejelzése a tesztkészlet segítségével

Először is be kell importálnunk a tesztkészletet, amelyen a jóslatokat fogjuk készíteni.

A jövőbeli részvényárfolyamok előrejelzéséhez a tesztkészlet betöltése után néhány dolgot el kell végeznünk:

  1. El kell végeznünk a képzési halmaz és a tesztkészlet összevonását a 0 tengelyen.
  2. Az időlépést 60-ra állítsuk be (mint korábban láttuk)
  3. A MinMaxScaler segítségével alakítsuk át az új adathalmazt
  4. Az adathalmazt alakítsuk át, ahogy korábban tettük

A jóslatok elkészítése után a inverse_transform segítségével kapjuk vissza a részvényárfolyamokat normál olvasható formátumban.

Eredmények ábrázolása

Végül a Matplotlib segítségével megjelenítjük a megjósolt részvényárfolyam és a valós részvényárfolyam eredményét.

A grafikonból láthatjuk, hogy a valós részvényárfolyam emelkedett, miközben a modellünk azt is megjósolta, hogy a részvényárfolyam emelkedni fog. Ez világosan mutatja, hogy az LSTM-ek milyen erősek az idősorok és a szekvenciális adatok elemzésére.

Következtetés

A részvényárfolyamok előrejelzésére van még néhány más technika is, mint például a mozgóátlagok, a lineáris regresszió, a K-Nearest Neighbours, az ARIMA és a Prophet. Ezek olyan technikák, amelyeket önmagukban is tesztelhetünk, és összehasonlíthatjuk teljesítményüket a Keras LSTM-mel. Ha többet szeretne megtudni a Kerasról és a mélytanulásról, az erről szóló cikkeimet itt és itt találja.

Ezt a bejegyzést a Reddit-en és a Hacker News-on is megvitathatja.

Bio: Derrick Mwiti adatelemző, író és mentor. Minden feladatban nagyszerű eredményeket akar elérni, és a Lapid Leaders Africa mentora.

Original. Reposzted with permission.

Related:

  • Introduction to Deep Learning with Keras
  • Introduction to PyTorch for Deep Learning
  • The Keras 4 Step Workflow

Articles

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.