Prognózovanie je technika, ktorá využíva historické údaje a udalosti na zostavenie odhadov o budúcich trendoch, potenciálnych katastrofách a celkovom správaní sa každého subjektu. Prognózy možno použiť ako pravdepodobnostnú podporu pre analýzu rozhodnutí, na odhad výdavkov, výnosov a rozpočtových plánov.
Prognózy v podnikaní možno rozdeliť do dvoch samostatných kategórií: kvalitatívne predpovedanie a kvantitatívne prognózy .
Viac informácií nájdete na Finančné prognózy Investopedia najprv.
Oba typy predpovedí ukázali veľa prísľubu a dokázali vytvoriť obchodné vylepšenia pre mnoho subjektov.
Ak sa chcete dozvedieť viac o tom, ako môže prognóza ovplyvniť rozhodnutia na trhu, je dobré začať Predikčné trhy: Základy, dizajny a aplikácie Stefan Luckner a kol.
Jedným z problémov, ktoré môžeme vyriešiť pomocou kvantitatívnych prognóz, je prognóza dopytu alebo prognóza predaja.
Predpokladajme, že ste maloobchodníkom prevádzkujúcim veľa obchodov a každý obchod má statický systém doplňovania zásob produktu založený na ľudských rozhodnutiach, ktoré sú založené na určitých udalostiach, ako sú ročné obdobia a trendy na trhu.
Príležitostne narazíte na jeden z týchto problémov, ktorý môže viesť k dvom hlavným problémom:
primárnym významom dizajnu v umení je
Podľa prieskum skupiny IHL medzi 600 domácnosťami a maloobchodníkmi , maloobchodníci každoročne strácajú takmer 1 bilión dolárov z dôvodu problémov s vypredaním zásob.
„Podľa správy, ktorá bola odoslaná e-mailom na adresu Retail Dive, sa zákazníci stretávajú s vypredaním zásob až u jednej z troch nákupných ciest. V maloobchodoch s potravinami, drogami a hromadnými výrobkami sa stretnú s tovarom, ktorý nie je na sklade, v jednej z piatich ciest, v obchodných domoch a v špecializovaných maloobchodoch v jednom zo štyroch a v obchodoch s elektronikou jeden v troch, “ Bola nájdená skupina IHL.
Ako sa zdá, oba tieto problémy vedú k zníženiu výnosov, pretože sme buď stratili pravdepodobnosť predaja, alebo sme investovali viac peňazí do nepredaných produktov, čo znamená, že na kompenzáciu svojich nákladov budú mať aktíva, ktoré tak skoro neprinesú výnosy.
To je zjavne škodlivé pre peňažné toky účtovnej jednotky a na riešenie tohto rizika potrebujeme dve veci:
Otázka teda znie: Aké sú náznaky, ktoré potrebujete, aby ste vo svojej spoločnosti prijali AI, aby ste pomohli procesu predpovedania?
Aby ste sa mohli rozhodnúť, potrebujete odborné odpovede na nasledujúce otázky:
Odpovede na tieto otázky by mali byť jasným signálom, ktorý vám pomôže rozhodnúť sa, či do svojich prognostických stratégií začnete využívať AI.
AI preukázala vynikajúce výsledky v prekonávaní predpovedí ľudí v mnohých spoločnostiach, čo umožnilo rýchlejšie rozhodovanie a plánovanie, ako aj spoľahlivejšie stratégie riadenia rizík. To je dôvod, prečo špičkové spoločnosti prijímajú pri plánovaní AI .
Pri riešení problému predpovedania dopytu je možné na predpovedanie predaja každého produktu použiť metódu predpovedania časových radov, čo umožňuje spoločnostiam optimalizovať doplnenie zásob a minimalizovať výskyt vyššie uvedených problémov. Mnoho modelov však zápasí s prognózami na úrovni jednotlivého produktu alebo kategórie produktu z dôvodu nedostatku potrebných funkcií. Otázka teda znie: Ako môžeme dosiahnuť, aby fungoval a vyťažil z našich údajov maximum?
Pre maloobchodníkov v reálnom živote nie sú tieto problémy nič iné ako malicherné. Buď máte viac ako 1 000 produktov, ktoré do súboru údajov zavádzajú veľa nelinearity a multivariačné závislosti , alebo musíte byť upozornení na množstvo plánovaného doplnenia zásob s dostatočným predstihom, aby ste ich mohli vyrobiť alebo kúpiť, alebo urobiť všetko, čo potrebujete, aby ste ich získali, kým sa dopyt nestane skutočnosťou.
V tomto prípade klasické modely ako ARIMA a STE VY nebude fungovať a budeme potrebovať robustnejšiu metódu ako RNN a XGBoost , a preto potrebujeme veľa riešení, aby sme tento problém zvládli.
Aby to fungovalo, musíme:
V záujme tohto článku si vezmeme XGBoost ako príklad takého modelu.
Množina funkcií potrebných pre tento problém je rozdelená do štyroch hlavných skupín:
Na rozdiel od hlboké učenie (rekurentná neurónová sieť) , modely strojového učenia nemôžu získať dlhodobé alebo krátkodobé závislosti v časovej rade bez vytvorenia vrstvy na manuálnu extrakciu funkcií pre Dátum Čas vlastnosť.
Od dátumu je možné extrahovať veľa funkcií, napríklad:
Mnoho prístupov iba extrahuje tieto časové funkcie a používa ich ako vstupy a modely školení, ale je možné vykonať ďalšie inžinierstvo. Ako vidíme, funkcie (deň, hodina, denný týždeň) sú periodické, čo znamená, že majú rozsah opakujúcich sa hodnôt. Ako sa s tým môže modelka vyrovnať?
ako sa naučiť c+
Krátka odpoveď je, že nemôže, pretože model vidí, že od 00:00 je do hodiny 23:00 23 hodín, ale v skutočnosti je to jedna hodina. Jedným zo spôsobov riešenia tohto problému je prevod týchto funkcií na cyklickú transformáciu.
Pomocou konceptu sínus a kosínus alebo vektorovej reprezentácie je možné každú hodinu (24 hodín) premeniť na uhol a ich sin a kosínus výrazne uľahčí modelu detekciu skutočných proporcií medzi hodinami bez ohľadu na to, periodicity.
Týmto sa odstráni nespojitosť, ktorá sa vyskytuje vo funkciách periodického času alebo akýchkoľvek periodických funkciách.
Pre náš článok použijeme Vzorová množina údajov v obchode Superstore sa našla verejne a pokúsiť sa predpovedať cieľový mesačný predaj pre určitú kategóriu výrobkov.
Budeme tiež používať prostredie Python 3.7 s nasledujúcimi knižnicami:
Teraz vám ukážem, ako zostaviť funkciu prevádzania funkcií obdobia a vyskúšať, či to bolo užitočné alebo nie.
def convert_periodic(val,period): theta = 2*np.pi*val/period sin_period = np.sin(theta) cos_period = np.cos(theta) return sin_period,cos_period def convert_month(x): return convert_periodic(x,12) df['sin_month'], df['cos_month'] = zip(*df['month'].map(convert_month))
Keď to urobíme, sme pripravení vyskúšať, či pridaná funkcia zlepší výkon alebo nie.
X = df.drop(['Order Date','Sales','sin_month', 'cos_month'],axis = 1) y = np.log1p(df['Sales']) X_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 0.2, shuffle=False)
Ako vidíme, pre cieľovú funkciu predaja sme vykonali transformáciu protokolu 1p, pretože ide o skreslenú funkciu (nie je bežne distribuovaná).
Teraz na dáta zmestíme regresora XGBoost.
y_pred = model.predict(X_test) print(f'Loss without cyclic conversion on testing set is {sqrt(mean_squared_error(y_pred,y_test))}') Loss without cyclic conversion on testing set is 0.4313676193485837
Ďalej to skúsime s nami vytvorenou funkciou.
X = df.drop(['Order Date','Sales'],axis = 1) y = np.log1p(df['Sales']) X_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 0.2, shuffle=False) y_pred = model.predict(X_test) print(f'Loss with cyclic conversion on testing set is {sqrt(mean_squared_error(y_pred,y_test))}') Loss with cyclic conversion on testing set is 0.33868030449130826
Ako vidíme, strata sa zlepšila z 0,43 RMSE na 0,33 RMSE.
Niektoré ďalšie funkcie súvisiace s časom, na ktoré môžete myslieť, v závislosti od vášho problému, sú:
Toto je hlavná vstupná funkcia nevyhnutná na predpovedanie nášho predaja, tak ako čo najlepšie využiť údaje o predaji? To môžeme dosiahnuť pomocou konceptu oneskorenia a autokorelácie.
Funkcie oneskorenia sú historické záznamy o predaji výrobkov. Napríklad, ak sme pre vstup do nášho modelu na predpovedanie predaja pre máj 2020 použili funkciu 12-mesačného mesačného predaja, znamená to, že modelu poskytneme dátové záznamy v období od mája 2019 do apríla 2020. To môže byť skutočne užitočné.
Môže sa tiež interpretovať pomocou autokorelačných grafov na kontrolu toho, ako korelovaný je cieľový objekt s jeho zaostalými prvkami. To tiež pomáha vybrať iba korelované funkcie medzi oneskorenými funkciami, takže znižujeme využitie pamäte a redundanciu funkcií.
Takto môžeme do nášho dátového rámca pridať oneskorené funkcie:
for i in range(3): df[f'lag_{i+1}'] = df['Sales'].shift(i+1) df = df.dropna() df.head()
pomocou malinového pi ako servera
Tu som si vybral hodnotu funkcie troch oneskorení, ktorá má byť zahrnutá do našej tréningovej sady. Táto vlastnosť je hyperparameter - môžete si ju zvoliť na základe autokorelačného grafu alebo vyskúšaním mnohých hodnôt a výberom toho najlepšieho vo fáze ladenia.
X = df.drop(['Order Date','Sales'],axis = 1) y = np.log1p(df['Sales']) X_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 0.2, shuffle=False) y_pred = model.predict(X_test) print(f'Loss with lag features on testing set is {sqrt(mean_squared_error(y_pred,y_test))}') Loss with lag and aggregated sales features on testing set is 0.2862175857169188
Teraz sa RMSE zlepšila na 0,28, pričom využívala funkcie oneskorenia aj cyklické konverzie.
Niektoré ďalšie funkcie spojené s predajom, ktoré môžete pridať:
Seniorita je koncept zavedený na priraďovanie úrovne seniority novým položkám v obchode:
Jednoduchým argumentom je, že jednou z priamych príčin rastu a poklesu predaja sú cena a propagácia. Cena je jedným z najlepších spôsobov, ako rozlíšiť rôzne kategórie, podkategórie a nadkategórie výrobkov.
Napríklad za predpokladu, že každému produktu bola priradená kategória a podkategória, je možné vytvoriť nasledujúce cenové vlastnosti:
Túto agregáciu je možné vykonať niekoľkokrát pomocou mnohých zoskupení podľa subjektov (za predpokladu, že sa zameriavame na predikciu mesačného dopytu), ako napríklad:
Môžu byť pridané aj ďalšie funkcie okrem Mesačne zoskupenie na celkové štúdium správania sa cien.
Toto nie je také bežné medzi maloobchodníkmi a predpovedačmi predaja, ale výrazne sa líši v predpovedných modeloch predaja. Skladové dátové súbory majú hlavne inventárne údaje každého produktu, každý deň v každom obchode. Z tohto dôvodu ho môžeme kombinovať s údajmi o predaji a získať tak mesačný pomer obratu pre každý produkt. Tento pomer bude ukazovať na to, ako rýchlo sa úplne predajú zásoby produktu, a má dve hlavné výhody:
Potrebujete na to denné údaje o zásobách každého produktu spolu s údajmi o predaji a potom môžete pomer obratu zásob vypočítať takto:
Tip: Tieto agregácie sa uskutočňujú na základe časového rozsahu. Napríklad, ak pracujeme na predpovedaní mesačného predaja, bude sa ITO počítať ako celkový predaj za posledný mesiac nad priemernú hodnotu inventára počas toho istého mesiaca.
nie ziskové dôchodkové komunity
Stručne povedané, predpovedanie predaja môže pomôcť firmám zvýšiť príjmy a dosiahnuť zisk za predpokladu, že majú správne dátové kanály a používajú správne metódy inžinierstva funkcií. Tento článok bol pokusom, ktorý ukázal, že pri riešení tohto problému môžu byť užitočné všetky druhy údajov.
Každá spoločnosť by mala preskúmať, či je AI nevyhnutná pre jej problémy s prognózami, a v prípade, že bude potrebovať, bude na vytvorenie vlastného systému predpovedania predaja potrebovať odborných inžinierov AI a rady od technikov strojového učenia.
Ak ste spoločnosťou / maloobchodníkom ochotným použiť túto techniku predpovedania predaja, začnite zhromažďovaním všetkých údajov, ktoré môžete, najmä denný predaj, denný inventár a denné transakcie.
Len čo budete mať tieto údaje k dispozícii, môžete ich použiť na zvýšenie výnosov a optimalizáciu stratégií doplňovania zásob, čo umožní vášmu podniku dosiahnuť čo najväčší zisk s dostupnými zdrojmi, ako je to demonštrované v niekoľkých vyššie uvedených príkladoch, ako aj postupoch predpovedania predaja používaných poprednými maloobchodníkmi. .
Množina údajov
Ďalšie čítanie o finančných prognózach
Zhromažďovaním údajov o predaji, skladoch a cenách, vytvorením databázy pre ne, ich predbežným spracovaním a vykonaním inžinierstva funkcií s cieľom vytvoriť vysvetliteľné funkcie, potom sa použije metóda predpovedania ako XGBoost alebo RNN.
Proces predpovedania predaja je rozdelený do štyroch krokov: zhromažďovanie údajov, predspracovanie údajov, inžinierstvo funkcií a modelovanie údajov.
ARIMA a ETS sú ideálne pre celkový predaj, ale na produktovej úrovni má lepšie výsledky niečo ako XGBoost alebo RNN.
Pretože to rieši dva hlavné problémy dopytu a predaja, ktorými sú nadmerné skladové a skladové problémy. To vedie k vyšším príjmom a lepším hotovostným tokom.
Potenciál predaja odpovedá na otázku: „Koľko kusov určitej značky by sa dalo predať?“ Na druhej strane prognóza predaja odpovedá na otázku: „Koľko kusov sa predá?“