szakmai vélemények, ötletek és tanácsok, valamint hírek a vállalati pénzügyek világából szakembereknek, cégtulajdonosoknak és minden érdeklődőnek

vállalati pénzügyek - néhány percben, kávé mellé

vállalati pénzügyek - néhány percben, kávé mellé

bevétel tervezés - Exceltől a gépi tanulásig 2. rész

trend analízis, SARIMA modell és neurális hálózatok eredményei

2020. február 03. - György Gábor

A bejegyzés korábbi részében áttekintettük azokat a fejlett analitikus és gépi tanuláson alapuló módszereket, amelyek a rendelkezésünkre állnak ha "adatalapú" bevétel előrejelzést szeretnénk készíteni. Most egy konkrét,  5 éves értékesítési adatsort felhasználva bemutatjuk, hogy az egyes módszerek milyen eredményre vezettek:

  • először egy Excelben illetve Python programnyelven írt egyszerűbb, trend analízisen alapuló megközelítéssel készült előrejelzéseket fogunk bemutatni
  • ezt követően egy szezonális ARIMA modellt illetve annak eredményeit vizsgáljuk meg
  • végül neurális hálózatokkal készített előrejelzést is megnézünk... ebből rögtön kettőt is: egy multilayer perceptron (MLP) hálózatot és egy long short-term memory (LSTM) hálózatot használunk

A bejegyzésben nem a megvalósításra (Python kódok) fókuszálunk, hanem az eredményeket fogjuk összehasonlítani, főleg vizuálisan.

Trend analízis

Elsőként Excelben végeztük el az adatsor vizsgálatát:

  • havi adatsorról lévén szó először 12 havi mozgó átlaggal „kisimítottuk” az adatsort és megvizsgáltuk a tendenciát (mozgóátlag változását),
  • valamint "simított" adatsor és tényleges értékek viszonya alapján a szezonális hatásokat és ún. "zajokat" kiszűrtük

  • ezután lineáris regresszióval, az időt mint magyarázó változót használva egyszerű előrejelzési modellt készítettünk  

A kapott előrejelzés eredményei láthatóan jól illeszkednek a tény adatokra, valamint az előrejelzési időszakban is a korábbi tendencia valamint szezonális hatások megjelennek: a kék vonal jelöli a tény adatokat, a szaggatott piros/narancssárga pedig a becslést (2014-2018 között) + előrejelzést (2019-2020).

Az átlagos előrejelzési hiba ("mean average percent error - MAPE") 6.6% volt, az értékei -6/+6 sávban mozogtak és erőteljes korrelációt mutattak az idősor dekompozíció során kimutatott véletlen hatással (magyarán modell a véletlen hatások nélkül szinte tökéletesen lekövette volna a tény adatokat):

 

szezonális ARIMA modell

Már az előzőekben is láthattuk, hogy az értékesítés erőteljes szezonalitást mutat illetve látványosan "trendel", így az adatsor vizuális vizsgálata alapján is elvethetjük, az ARMA vagy éppen a nem szezonális típusú ARIMA modellel használatát.

Ehelyett egy szezonális ARIMA (SARIMA) modellt készítettünk Python segítségével (a statsmodel könyvtárat használva), amely az alábbi alakot vette fel:

A kapott modell statisztikai változóinak magyarázatába most nem fogunk belemenni, helyette mutatjuk az előrejelzési eredményt:

A kék vonal itt is a tényleges értékeket jelöli, a narancssárga + zöld pedig a becslést (2014-2018 között) + előrejelzést (2019-2020). Az előrejelzési hiba átlagos értéke 2,6 volt, ami 12% körüli értéket jelent. Összehasonlításul: az előbbi, trend analízisen és lineáris regresszión alapuló modell ennél jobban teljesített, mivel 6.6% volt az átlagos hiba.

 

neurális hálózatok

Végül lássuk neurális hálózatok segítségével készített előrejelzést!

LSTM hálózat

Az LSTM hálózat egy 2 rétegű, ReLu aktivációs függvényeket tartalamzó 'one-to-one' hálózat volt. Az első LSTM cella 256, a második 128, rejtett egységet tartalmazott.

Fontos kiemelni azt is, hogy a neurális háló bemenetként már nemcsak az előző időszaki értéket adtuk meg, hanem a korábbi év hasonló időszakának értékét, valamint azt is, hogy adott hónapban volt-e marketing kampány (0/1 változóval).

A tanuló adatokat nem a teljes adatsorból, hanem csak az első 48 hónap adataiból képeztük és ahogy a képen is látszik, a hiba tanuló adatsoron elhanyagolható volt: a kék és narancssárga vonal teljes átfedésben van, a MAPE érték 1.5% alatti. Ez felveti az ún. overfitting veszélyét, de a teszt időszakban (49-60 hónapok) is jól vizsgázott a hálózat - a zöld vonallal ábrázolt előrejelzési adatsor a teszt adatokhoz is jól illeszkedik.

MLP hálózat

Az MLP hálózat egy 3 rétegű, szintén ReLu aktivációs függvényeket tartalmazó hálózat volt. Az első rétegben 128, a második 64 a harmadik pedig 32 neuront tartalmazott. Ugyanazokkal bementi adatokkal hasonlóan jól teljesített, mint az LSTM hálózat, a MAPE érték itt is 1.5% alatt maradt.

 

Összességében a 3 típúsú előrejelzéi technikát összehasonlítva az látszik, hogy a legjobban a neurális hálózatok teljesítettek, míg a legnagyobb hibával a szezonális ARIMA modell dolgozott. Ugyanakkor még ez is elég jól illeszkedő előrejelzést adott, ráadásul a neurális hálózatok esetében még az ún. overfitting veszélye is felmerült: sokszor problémát okozhat, ha a tanuló adatokhoz túlságosan jól illeszkednek a becsléseink és nem tudják a valóságot jól általánosítva modellezni!

A sorozat 3. részében be fogjuk mutatni, hogy melyek a legfőbb kihívások és milyen problémák jelentkezhetnek a fenti modellekkel készült előrejelzések során.... ld. például az előbb említett "overfitting"!

A bejegyzés trackback címe:

https://vallalatipenzugyek.blog.hu/api/trackback/id/tr6715181112
süti beállítások módosítása