Emark

Predikcie maloobchodného predaja v Qlik Sense

V predchádzajúcom článku som sa pokúsil priblížiť, prečo je dobré posúvať sa za hranice dátovej analytiky smerom k data science. Tento príspevok bude trochu technickejší. Ukážeme si, ako jednoducho sa dá vytvoriť predikcia predaja priamo v BI nástroji Qlik Sense.

Predikcie založené na machine learningových technikách nezvyknú byť natívnou súčasťou BI nástrojov. Oproti tomu open-source programovacie jazyky R a Python, ktoré sú pre machine learning často využívané, sú ideálni kandidáti. Možnosť maticových výpočtov a veľké množstvo balíkov zameraných na machine learning, štatistiku a optimalizačné úlohy ich predurčujú na tento typ zadaní. Výhody ktoré so sebou prináša R/Python by však určite nemali byť výsadou iba data science špecialistov. BI nástroje a data science by sa mali navzájom dopĺňať. Ak nastavíme komunikáciu medzi BI nástrojmi a R/Pythonom, získame dve základné pozitíva:

  • Užívatelia BI nástrojov sa budú môcť rozhodovať na základe modelov, ktoré vytvoria data science špecialisti
  • Užívatelia budú schopní využívať pokročilé štatistické a optimalizačné metódy, bez toho aby museli ovládať syntax jazykov R alebo Python (napríklad predikciu predaja).

Data science v Qliku

V prípade Qliku je komunikácia s externými výpočtovými jazykmi sprostredkovaná pomocou tzv. Server Side Extension (SSE). Veľmi zjednodušene:

  1. Qlik pripraví potrebné dáta a odošle ich do R/Pythonu
  2. V R/Pythone prebehnú výpočty (odhad modelu, vytvorenie výstupy modelov, predikcie, atď.)
  3. R/Python odošle naspäť do Qliku dáta a ten ich následne vizualizuje.

Existuje pritom viacero možností, ako túto komunikáciu vyvolať:

  • V data load editore Qliku (tam kde píšete Qlik skript) napíšete R/Python skript a zadáte, ktoré dáta sa majú z Qliku odoslať. Následne po prebehnutí loadu aplikácie sa R/Python skript vyhodnotí a vráti do Qliku novú tabuľku.
  • Priamo v aplikácii je možné nadefinovať novú metriku, ktorá bude vyrátaná externe v R/Pythone na základe údajov, ktoré pošleme z Qliku
  • Nadefinovaním novej funkcie, ktorá sa bude tváriť rovnako ako natívne Qlik funkcie, ale jej výpočet bude prebiehať externe v R/Pythone. Takúto funkciu je potom možné volať priamo v aplikácii ako metriku alebo v Qlik skripte

Práve poslednú variantu využil Nabeel Asif pre vytvorenie SSE plug-inu PyTools. Je to vlastne súbor Python funkcií pre machine learning, ktoré sa dajú volať z Qliku (postup ako PyTools nainštalovať nájdete tu). Spracoval pri tom aj funkcie pre nástroj Prophet – ten sme využili aj v predchádzajúcom článku.

SSE Qlik
Ukážka volania Python skriptu
SSE Qlik
Ukážka volania predvytvorenej funkcie.

Predikcie predaja malobochodnej spoločnosti

Prejdime k príkladu z minula. Firma so sieťou maloobchodných predajní má potrebu predikovať budúci predaj v konkrétnych dňoch. V tomto príspevku nepôjdeme do hĺbky toho, ako by mal správne vyzerať proces tvorenia a testovania predikčného modelu, ale skôr si ukážeme, aké jednoduché je zavolať takto preddefinovanú funkciu priamo z Qlik aplikácie.

Prophet má niekoľko dobrých vlastností. Jednou z nich je, že sám automaticky detekuje a počíta sezónnosti. Ak mu pošleme z Qliku dáta o historických predajoch, sám automaticky vytvorí ročnú a týždennú sezónnu zložku. Iba na základe tohto časového radu teda vieme jednoducho získať pomerne dobrú predikciu. K tomu ešte pre naše potreby pridáme informáciu o tom, ktoré dni majú promo akcie.

Do predvytvoreného line chartu následne stačí pridať novú metriku: PyTools.Prophet_Multivariate([Date], Sum(#Sales), Promo, ”, ”, ‘freq=D’). V podste iba voláme funkciu Prophet_Multivariate z SSE plug-inu PyTools a posielame dáta z Qliku Date, #Sales, Promo. Parametrom ‘freq=D’ hovoríme, že chceme vytvoriť predikciu s dennou frekvenciou a prázdne úvodzovky sú miestom, kde by sme mohli doplniť ďalšie nepovinné parametre. Výsledok:

Predikcia

Vráťme sa ešte na chvíľu k možnostiam ako vyvolať externý výpočet v R alebo Pythone. Veľkou výhodou komunikácie Qlik – R/Python cez SSE je, že v prípade volania funkcie alebo skriptu z Qlik aplikácie prebieha výpočet až v tom momente. Inými slovami, Qlik aplikácia odošle do R/Pythonu dáta, ktoré máte vyfiltrované. Pre vytvorenie predikcií jednotlivých predajní nám potom stačí tieto predajne iba vyfiltrovať. Na ďalšom obrázku môžeme vidieť, ako sa nový výpočet prerátava v momente aplikovania filtrov. V prípade náročnejších výpočtov je dobré mať toto na pamäti a výsledky predkalkulovať v momente reloadu Qlik aplikácie.

Filtrácia predikcie

Verím, že som vo vás vzbudil záujem o posúvanie hraníc analytiky Qlik Sense. V prípade, že vás predikcie ako téma zaujímajú alebo máte nejaké otázky, neváhajte ma kontaktovať.

Budem vďačný za akékoľvek pripomienky, podnety či inšpirácie v komentoch či e-mailom na juracek@emarkanalytics.com.

Marek Juráček

Freelancer

Share this post:

More posts