Automatizovaný výpočet cen produktů
Machine learning (strojové učení) v praxi, aneb automatizovaný výpočet cen produktů. Na základě vašich obchodních dat, výkonu produktu v poslední době a také na základě dat z cenových porovnávačů, vám vypočteme ideální cenu vašeho produktu.
V tomto článku budeme hovořit o:
1. Co je to machine learning (strojové učení) a jak jej využíváme?
2. Jaké hodnoty vstupují do výpočtu modelu a proč si myslíme, že jsou dobré?
3. Jak se výpočet řeší technicky - funkce MS SQL 2017
4. Jaký je výsledek a jak s ním pracovat?
5. Jaké jsou plány do budoucna?
1. Co je to machine learning (strojové učení) a jak jej využíváme?
Na úvod trošku teorie, abychom se dostali na stejnou rovinu a vysvětlili si pojmy z této oblasti :) Trošku nudnější část, ale určitě stojí za to přečíst :)
Machine learning (strojové učení), je podoblast umělé inteligence. Zabývá se tvorbou algoritmů a technik, které se mohou naučit předpovídat data, přizpůsobit se změnám okolního prostředí a zefektivňovat tak svou činnost na základě předchozích vstupů.
Zdroj: IT Slovník
V e-commerce se využívá například k zobrazování doporučených produktů, k tzv. personalizaci stránek, na základě chování jedince se porovná chování skupiny a doporučí se produkty, které byly nejvíce stejnou skupinou nakupovány a tím se zvyšuje pravděpodobnost koupě produktu, objednání, atd.
Základem je tedy model chování, který je vytrénovaný z miliónů (čím více dat, tím lépe) vzorků a neustále se precizuje - trénuje. Model chování obsahuje určité vstupní parametry na základě kterých je vytvořen.
V E-SHOP.REPORTU využíváme strojové učení k predikování vývoje ceny produktu - vezmeme miliony záznamů dat konkrétního zákazníka služby a jeho produktů, a na základě kritérií, viz níže, dokáže strojové učení vypočítat, jaká by měla být, vzhledem k okolnostem, vývoji, nová cena produktu. Tato cena se mění každý den, neboť do modelu vstupují stále nové hodnoty a model se učí.
2. Jaké hodnoty vstupují do výpočtu modelu a proč si myslíme, že jsou dobré?
2. 1 Obchodní hodnoty
Z hlediska obchodního pracujeme s těmito hodnotami, které jsou pro výpočet modelu povinné a je tedy nutné je do služby posílat z vašeho IS - některé však dokážeme dopočítat sami:
- prodejní cena
- nákupní cena
- přirážka
- marže
- sleva
- skladová dostupnost
- doporučená maloobchodní cena
- a další, které vzhledem ke know-how nemohu vyjmenovat :)
Proč tyto všechny hodnoty? Jistě budete souhlasit, že produkt, kterého máme mnoho kusů na skladě a neprodává se moc dobře, potřebuje nějakou pobídku. Pokud tedy ceny porovnávačů, viz níže, dovolí, jsme s prodejní cenou výše a naše cenová pozice není první místo, pak máme prostor pracovat se snížením ceny s ohledem na sklad - ne vždy tedy vyšší hodnota znamená, že je to dobře - pokud mám vyšší množství na skladě a produkt se neprodává, model cenu navrhne snížit. Samozřejmě nikdy nejde pod navrženou marži a přirážku a už vůbec ne pod nákupní cenu :)
2.2 Výkon produktu
Dalším kritériem vstupujícím do modelu je výkon produktu - rozhodně se budeme snažit více prodat produkt, o který je velký zájem, budeme tedy mírně zvyšovat cenu a budeme sledovat, co se s produktem a jeho prodejností stane - pokud jeden z klíčových ukazatelů, viz níže, poklesne, například počet prodejů nebo zobrazení, stane se produkt neatraktivní a pomalu budeme cenu zpět snižovat, až najdeme míru vybalancování a přesnou cenu, která produktu svědčí.
Pracujeme s těmito hodnotami:
- zobrazení za posledních 30 dnů
- zobrazení od data vložení produktu
- nákupy za posledních 30 dnů
- nákupy od data vložení produktu
- datum posledního zobrazení na e-shopu
- datum posledního nákupu na e-shopu
- a další, které vzhledem ke know-how nemohu vyjmenovat :)
2.3 Cenové porovnávače
Jak už bylo řečeno výše, rozhodně je nutné pracovat s daty cenových porovnavačů, protože určitě nechcete, aby vám algoritmus přepsal vaši cenovou pozici, např. na Heuréce, na horší :) Také se pracuje s minimální cenou a pokud by se stalo, že algoritmus by nastavil cenu nižší, je na to správce upozorněn a záleží pak na jeho rozhodnutí, zda povolí. V případě, že vaše pozice na cenu, např. na Huréce, není první, pak rozhodně máte zájem, aby se s cenou pracovalo.
Celý algoritmus pracuje tak, že stahuje denně data všech dostupných porovnavačů (no, to je plán, zatím je tam pouze Heuréka :) a zobrazuje vám historii vývoje ceny u vás, na Heuréce, prostě všechny data přehledně na jednom místě v jednom grafu, kde můžete sledovat korelace mezi jednotlivými křivkami.
Z cenových porovnávačů nás nejvíce zajímají tato data:
- minimální cena
- pozice dle ceny
- průměrná pozice
- počet kliknutí
- CPC
- celkové náklady
- počet objednávek
- a další, které vzhledem ke know-how nemohu vyjmenovat :)
Data se vám pak zobrazí na takovémto přehledeném grafu, kde je možno jednotlivé křivky vypínat a zobrazovat, dle potřeby:
Lze přidat prakticky jakýkoliv z výše uvedených ukazatelů, které chcete zobrazovat.
Na grafu jde vidět, jak predikce reagovala na pokles minimální ceny na Heuréce a na snížení Nákupní ceny. Vzhledem k minimálnímu množství na skladě a počtu zobrazení predikce vyhodnotila, že je potřeba snížit Prodejní cenu a doporučila to - trendová (červená) křivka jde směrem dolů, lze tedy očekávat, že predikce bude doporučovat i nadále snížení Prodejní ceny, dokud nebude spokojena a prodeje produktu stoupnou, pak začne opět cenu produktu mírně zvyšovat - produkt probudí z letargie a nakopne ho, a pak jen udržuje ve výkonu.
Zelený pruh ukazuje, kde se s predikcí pohybujeme, i toto pole se dá nastavit, pokud správce potřebuje, stačí omezit zdola nebo shora tolerancí např. 10% a predikce se tomu přizpůsobí - defaultně však doporučujeme nechat predikci pracovat minimálně měsíc, aby se mohla naučit správně reagovat :)
3. Jak se výpočet řeší technicky - funkce MS SQL 2017
Ve verzi MS SQL 2017 existuje nově funkce PREDICT(), která dokáže pracovat s vygnerovaným modelem v binárním tvaru. Na serveru vůbec nemusí běžet Machine Learning Services, stačí zapnout podporu externích scriptů a pomocí jazyka R napsat funkci Logistické regrese - tedy funkci, která odhaduje pravděpodobnost určitého jevu na základě vstupních proměnných. Našim jevem je, jak již jistě chápete, vývoj ceny a predikce vývoje.
Díky inženýrům z Microsoftu stačí matematickou funkci logistické regrese obalit příkazem PREDICT a máme ceny :) Kdyby to bylo tak jednoduché, jistě by to dělal každý :) Jenže ono není. Je potřeba mít znalosti z e-commerce, jak co spolu koreluje, a to je velmi důležitý vstup do modelu. Rozhodně nemohu vždy dát za pravdu premie, že číslo 1 je, jako nižší, horší než číslo 10, například při cenové pozici na Heuréce je rozhodně 1 lepší, než 10, tedy je to vyšší = lepší, pozice. U prodejů to však platí naopak - 10 je rozhodně lepší, než 1 :) Proto je potřeba pravděpodobnost jevu napřed upravit a najít společného jmenovatele. To bez základů matematiky a znalosti jevů v e-commerce, nenapíšete.
Proto jsem nesmírně hrdý na náš tým, že po 3 měsících usilovné práce máme vytrénované první 3 modely na predikci a můžeme na 3 významných klientech porovnávat jejich výsledky. Ne, predikce zatím neposílá ceny přímo do e-shopu, ale na dashboard správce, který sám rozhodne, zda cenu zapíše do IS nebo ne. Snad nebude trvat dlouho a naše modely budou zcela autonomně zapisovat ceny přímo do e-shopu :)
4. Jaký je výsledek a jak s ním pracovat?
Nápovědy a doporučení jsou v přehledech produktů definovány zatím pouze ve formě upozornění - vždy při procházení seznamu právě prohlížených, dnes nakoupených či top nebo hero produktů uvidíte zelenou či červenou šipku, co doporučuje predikce - snížit či zvýšit cenu?
Je pak už na správci, zda doporučení využije nebo ne. A pokud ano, opět se vše projeví zpětne v predikci, jednak zaznamenáním změny v prodejní ceně a korelaci v navazujících křivkách a samořejmě informace, jaký to mělo efekt - zvýšilo se nějaké KPI? Zvýšil se počet zobrazení? Prodejů? Pokud ano, pak predikce napověděla právně. Pokud ne, má správce možnost cenu označit jako nedobře predikovanou a algoritmus se z toho poučí (no, měl by :).
5. Jaké jsou plány do budoucna?
Kromě toho, že chceme moduly vypilovat tak, že budou autonomně zapisovat ceny přímo do e-shopu, chceme pravidelně rozšiřovat vstupní hodnoty modelu.
Například jeden náš klient má prodeje závislé na počasí - určitě by bylo super doplnit do modelu, jaké produkty s jakou cenou se prodávají v horku a jaké v chladnu - to už je ale skutečně velmi pokročilá automatizace cen :)
- Pavel Kramný
- Machine learning, Nová funkce, Predikce, Strojové učení, Automatizace cen, Výpočet ceny