Ako sme dramaticky zlepšili kvalitu odporúčaní v offline maloobchode

Ahojte všetci! Volám sa Sasha, som CTO & Co-Founder v LoyaltyLab. Pred dvoma rokmi sme si s kamarátmi ako všetci chudobní študenti išli večer kúpiť pivo do najbližšieho obchodu pri našom dome. Veľmi nás naštvalo, že predajca s vedomím, že prídeme na pivo, neponúkol zľavu na čipsy alebo krekry, hoci to bolo tak logické! Nechápali sme, prečo k tejto situácii došlo a rozhodli sme sa založiť si vlastnú spoločnosť. No a ako bonus si dajte každý piatok zľavy na tie isté žetóny.

Ako sme dramaticky zlepšili kvalitu odporúčaní v offline maloobchode

A všetko sa dostalo do bodu, keď prezentujem materiál o technickej stránke produktu VOP NVIDIA. Radi sa o našu prácu podelíme s komunitou, preto svoju správu zverejňujem vo forme článku.

Úvod

Ako všetci ostatní na začiatku cesty, aj my sme začali prehľadom, ako sa vyrábajú systémy odporúčaní. A najobľúbenejšia architektúra sa ukázala ako nasledujúci typ:
Ako sme dramaticky zlepšili kvalitu odporúčaní v offline maloobchode

Pozostáva z dvoch častí:

  1. Vzorkovanie kandidátov na odporúčania pomocou jednoduchého a rýchleho modelu, zvyčajne kolaboratívneho.
  2. Poradie kandidátov so zložitejším a pomalším modelom obsahu, berúc do úvahy všetky možné vlastnosti v údajoch.

Ďalej budem používať nasledujúce výrazy:

  • kandidát/kandidát na odporúčania — pár užívateľ-produkt, ktorý by mohol byť potenciálne zahrnutý do odporúčaní vo výrobe.
  • kandidátska extrakcia/extraktor/metóda extrakcie kandidátov — proces alebo metóda na extrakciu „kandidátov na odporúčanie“ z dostupných údajov.

Prvý krok zvyčajne zahŕňa použitie rôznych variácií kolaboratívneho filtrovania. Najpopulárnejší - ALS. Je prekvapujúce, že väčšina článkov o systémoch odporúčaní odhaľuje rôzne vylepšenia kolaboratívnych modelov iba v prvej fáze, ale nikto veľa nehovorí o iných metódach vzorkovania. Pre nás prístup používania iba kolaboratívnych modelov a rôznych optimalizácií s nimi nefungoval v takej kvalite, akú sme očakávali, a tak sme sa pustili do výskumu špeciálne na túto časť. A na konci článku ukážem, ako veľmi sme dokázali zlepšiť ALS, čo bola naša základná línia.

Predtým, ako prejdem k popisu nášho prístupu, je dôležité poznamenať, že v odporúčaniach v reálnom čase, keď je pre nás dôležité brať do úvahy údaje, ktoré sa vyskytli pred 30 minútami, skutočne nie je veľa prístupov, ktoré môžu fungovať v požadovanom čase. V našom prípade však musíme zbierať odporúčania nie viac ako raz denne a vo väčšine prípadov raz týždenne, čo nám dáva príležitosť použiť zložité modely a niekoľkonásobne zlepšiť kvalitu.

Zoberme si ako základ, aké metriky ukazuje iba ALS pri úlohe extrahovania kandidátov. Kľúčové metriky, ktoré sledujeme, sú:

  • Precíznosť - podiel správne vybraných kandidátov zo vzorky.
  • Stiahnutie je podiel kandidátov, ktorí sa stali, z tých, ktorí sa skutočne nachádzali v cieľovom intervale.
  • F1-score - F-miera vypočítaná na základe predchádzajúcich dvoch bodov.

Pozrieme sa tiež na metriky konečného modelu po tréningu zosilnenia gradientu s ďalšími funkciami obsahu. Sú tu tiež 3 hlavné metriky:

  • precision@5 – priemerné percento produktov z 5 najlepších z hľadiska pravdepodobnosti pre každého kupujúceho.
  • response-rate@5 - konverzia zákazníkov z návštevy predajne na nákup aspoň jednej osobnej ponuky (5 produktov v jednej ponuke).
  • priemer roc-auc na používateľa – priemer roc-auc pre každého kupujúceho.

Je dôležité poznamenať, že všetky tieto metriky sa merajú na krížová validácia časových radov, to znamená, že tréning prebieha v prvých k týždňoch a k+1 týždeň sa berie ako testovacie údaje. Sezónne vzostupy a pády tak mali minimálny vplyv na interpretáciu kvality modelov. Ďalej na všetkých grafoch os x bude udávať číslo týždňa pri krížovej validácii a zvislá os bude udávať hodnotu špecifikovanej metriky. Všetky grafy sú založené na údajoch o transakciách od jedného klienta, takže vzájomné porovnania sú správne.

Predtým, ako začneme popisovať náš prístup, najprv sa pozrieme na základnú líniu, čo je model trénovaný na ALS.
Metriky vyhľadávania kandidátov:
Ako sme dramaticky zlepšili kvalitu odporúčaní v offline maloobchode

Konečné metriky:
Ako sme dramaticky zlepšili kvalitu odporúčaní v offline maloobchode

Všetky implementácie algoritmov považujem za nejakú obchodnú hypotézu. Takže veľmi zhruba každý model spolupráce možno považovať za hypotézu, že „ľudia majú tendenciu kupovať to, čo si kupujú ľudia im podobní“. Ako som už povedal, neobmedzili sme sa na takúto sémantiku a tu je niekoľko hypotéz, ktoré dobre fungujú na údajoch v offline maloobchode:

  1. Ktoré som si už kúpil.
  2. Podobne ako som si kúpil predtým.
  3. Obdobie dávno minulého nákupu.
  4. Populárne podľa kategórie/značky.
  5. Striedajte nákupy rôzneho tovaru z týždňa na týždeň (reťazce Markov).
  6. Podobné produkty ako kupujúci, podľa charakteristík vytvorených rôznymi modelmi (Word2Vec, DSSM atď.).

Čo ste si kúpili predtým?

Najzrejmejšia heuristika, ktorá veľmi dobre funguje v maloobchode s potravinami. Tu berieme všetok tovar, ktorý si držiteľ vernostnej karty zakúpil za posledných K dní (zvyčajne 1-3 týždne), prípadne K dní pred rokom. Ak použijeme iba túto metódu, získame nasledujúce metriky:
Ako sme dramaticky zlepšili kvalitu odporúčaní v offline maloobchode

Tu je celkom zrejmé, že čím dlhšie obdobie berieme, tým viac máme na pamäti a tým menej presnosti máme a naopak. V priemere „posledné 2 týždne“ prinášajú klientom lepšie výsledky.

Podobne ako som si kúpil predtým

Nie je prekvapujúce, že pre maloobchod s potravinami dobre funguje „to, čo som si kúpil predtým“, ale extrahovať kandidátov iba z toho, čo si používateľ už kúpil, nie je príliš cool, pretože je nepravdepodobné, že by kupujúceho prekvapil nejaký nový produkt. Preto navrhujeme mierne zlepšiť túto heuristiku pomocou rovnakých modelov spolupráce. Z vektorov, ktoré sme dostali počas školenia ALS, môžeme získať podobné produkty, aké si už používateľ zakúpil. Táto myšlienka je veľmi podobná „podobným videám“ v službách na prezeranie videoobsahu, ale keďže nevieme, čo používateľ v konkrétnom momente jedáva/kupuje, môžeme hľadať iba podobné, aké si už kúpil, najmä keďže už vieme, ako dobre to funguje. Použitím tejto metódy na transakcie používateľov za posledné 2 týždne získame nasledujúce metriky:
Ako sme dramaticky zlepšili kvalitu odporúčaní v offline maloobchode

Tu k — počet podobných produktov, ktoré sa načítajú pre každý produkt zakúpený kupujúcim za posledných 14 dní.
Tento prístup fungoval obzvlášť dobre pre nášho klienta, pre ktorého bolo dôležité neodporučiť nič, čo už bolo v histórii nákupov používateľa.

Neskoré nákupné obdobie

Ako sme už zistili, vzhľadom na vysokú frekvenciu nákupu tovaru prvý prístup funguje dobre pre naše špecifické potreby. Ale čo tovar ako prací prášok/šampón/atď. Teda s produktmi, ktoré pravdepodobne nebudú potrebné každý týždeň alebo dva a ktoré predchádzajúce metódy nedokážu extrahovať. To vedie k nasledujúcej myšlienke - navrhuje sa vypočítať obdobie nákupu každého produktu v priemere pre zákazníkov, ktorí si produkt zakúpili viac k raz. A potom vyťažiť to, čo kupujúci s najväčšou pravdepodobnosťou už minul. Primeranosť vypočítaných lehôt pre tovar je možné skontrolovať očami:
Ako sme dramaticky zlepšili kvalitu odporúčaní v offline maloobchode

A potom sa pozrieme na to, či koniec produktového obdobia spadá do časového intervalu, kedy budú odporúčania vo výrobe, a vyskúšame, čo sa stane. Prístup možno znázorniť takto:
Ako sme dramaticky zlepšili kvalitu odporúčaní v offline maloobchode

Tu sú 2 hlavné prípady, ktoré možno zvážiť:

  1. Je potrebné odoberať vzorky produktov od zákazníkov, ktorí si produkt zakúpili menej ako K-krát?
  2. Je potrebné odobrať vzorku produktu, ak koniec jeho obdobia spadá pred začiatok cieľového intervalu?

Nasledujúci graf ukazuje, aké výsledky táto metóda dosahuje s rôznymi hyperparametrami:
Ako sme dramaticky zlepšili kvalitu odporúčaní v offline maloobchode
ft — Vezmite len zákazníkov, ktorí si produkt zakúpili aspoň K (tu K=5)-krát
tm — Vezmite len kandidátov, ktorí spadajú do cieľového intervalu

Nie je prekvapujúce, že je schopný (0, 0) najväčší odvolanie a najmenší presnosť, keďže za tejto podmienky sa vyhľadá najviac kandidátov. Najlepšie výsledky však dosiahneme vtedy, keď nerobíme vzorky produktov zákazníkom, ktorí si konkrétny produkt kúpili menej ako k časy a výťažok vrátane tovaru, ktorého koniec obdobia spadá pred cieľový interval.

Populárne podľa kategórie

Ďalšou pomerne zrejmou myšlienkou je ochutnať obľúbené produkty v rôznych kategóriách alebo značkách. Tu počítame pre každého kupujúceho top-k „obľúbené“ kategórie/značky a extrahovať „populárne“ z tejto kategórie/značky. V našom prípade určíme „obľúbené“ a „populárne“ podľa počtu nákupov produktu. Ďalšou výhodou tohto prístupu je jeho použiteľnosť v prípade studeného štartu. Teda pre zákazníkov, ktorí buď nakúpili veľmi málo, alebo neboli v predajni dlhší čas, alebo si práve vydali vernostnú kartu. Pre nich je jednoduchšie a lepšie skladovať položky, ktoré sú u zákazníkov obľúbené a majú históriu. Výsledné metriky sú:
Ako sme dramaticky zlepšili kvalitu odporúčaní v offline maloobchode
Číslo za slovom „kategória“ tu znamená úroveň vnorenia kategórie.

Celkovo tiež nie je prekvapujúce, že užšie kategórie dosahujú lepšie výsledky, keďže získavajú pre nakupujúcich presnejšie „obľúbené“ produkty.

Striedajte nákupy rôzneho tovaru z týždňa na týždeň

Zaujímavým prístupom, ktorý som v článkoch o systémoch odporúčaní nevidel, je celkom jednoduchá a zároveň fungujúca štatistická metóda Markovových reťazcov. Tu trváme 2 rôzne týždne, potom pre každého zákazníka zostavíme pár produktov [kúpené v týždni i]-[kúpené v týždni j], kde j > i, a odtiaľto vypočítame pre každý produkt pravdepodobnosť prechodu na iný produkt budúci týždeň. Teda za každý pár tovaru produkt-produktj Ich počet spočítame v nájdených pároch a vydelíme počtom párov, kde produktov bol v prvom týždni. Na extrahovanie kandidátov berieme posledné potvrdenie kupujúceho a výpis top-k najpravdepodobnejšie ďalšie produkty z prechodovej matice, ktoré sme dostali. Proces vytvárania prechodovej matice vyzerá takto:
Ako sme dramaticky zlepšili kvalitu odporúčaní v offline maloobchode

Zo skutočných príkladov v matici pravdepodobnosti prechodu vidíme nasledujúce zaujímavé javy:
Ako sme dramaticky zlepšili kvalitu odporúčaní v offline maloobchode
Tu si môžete všimnúť zaujímavé závislosti, ktoré sa odhaľujú v správaní spotrebiteľov: napríklad milovníci citrusových plodov alebo značky mlieka, od ktorej pravdepodobne prejdú na inú. Nie je tiež prekvapujúce, že tu končia aj výrobky s vysokou frekvenciou opakovaných nákupov, ako napríklad maslo.

Metriky v metóde s Markovovými reťazcami sú nasledovné:
Ako sme dramaticky zlepšili kvalitu odporúčaní v offline maloobchode
k — počet produktov, ktoré sa získajú pre každý zakúpený produkt od poslednej transakcie kupujúceho.
Ako vidíme, najlepší výsledok ukazuje konfigurácia s k=4. Nárast v 4. týždni možno vysvetliť sezónnym správaním okolo sviatkov. 

Podobné produkty ako kupujúci, podľa charakteristík vytvorených rôznymi modelmi

Teraz sme sa dostali k najťažšej a najzaujímavejšej časti - hľadaniu najbližších susedov na základe vektorov zákazníkov a produktov zostavených podľa rôznych modelov. V našej práci používame 3 takéto modely:

  • ALS
  • Word2Vec (pre takéto úlohy Item2Vec)
  • DSSM

ALS sme sa už venovali, o tom, ako sa učí, si môžete prečítať tu. V prípade Word2Vec používame známu implementáciu modelu z gensim. Analogicky s textami definujeme ponuku ako doklad o kúpe. Pri konštrukcii vektora produktu sa teda model naučí predpovedať pre produkt v účtenke jeho „kontext“ (zvyšné produkty v účtenke). V údajoch o elektronickom obchode je lepšie použiť reláciu kupujúceho namiesto potvrdenky; chlapci z ozón. A DSSM je zaujímavejšie na analýzu. Spočiatku to napísali chlapci z Microsoftu ako model pre vyhľadávanie, Pôvodný výskumný dokument si môžete prečítať tu. Architektúra modelu vyzerá takto:
Ako sme dramaticky zlepšili kvalitu odporúčaní v offline maloobchode

Tu Q — dopyt, vyhľadávací dopyt používateľa, D[i] — dokument, internetová stránka. Vstupom do modelu sú atribúty požiadavky a stránok, resp. Za každou vstupnou vrstvou je niekoľko plne prepojených vrstiev (viacvrstvový perceptrón). Ďalej sa model naučí minimalizovať kosínus medzi vektormi získanými v posledných vrstvách modelu.
Odporúčacie úlohy používajú presne rovnakú architektúru, len namiesto požiadavky je používateľ a namiesto stránok sú produkty. A v našom prípade je táto architektúra transformovaná na nasledovné:
Ako sme dramaticky zlepšili kvalitu odporúčaní v offline maloobchode

Teraz pre kontrolu výsledkov zostáva pokryť posledný bod - ak v prípade ALS a DSSM máme explicitne definované užívateľské vektory, tak v prípade Word2Vec máme len produktové vektory. Aby sme vytvorili užívateľský vektor, definovali sme 3 hlavné prístupy:

  1. Stačí pridať vektory a pre kosínusovú vzdialenosť sa ukáže, že sme jednoducho spriemerovali produkty v histórii nákupov.
  2. Vektorový súčet s určitým časovým vážením.
  3. Váženie tovaru s koeficientom TF-IDF.

V prípade lineárneho váženia vektora kupujúceho vychádzame z hypotézy, že produkt, ktorý si užívateľ kúpil včera, má väčší vplyv na jeho správanie ako produkt, ktorý si kúpil pred šiestimi mesiacmi. Zvažujeme teda predchádzajúci týždeň kupujúceho s kurzom 1 a to, čo sa stalo potom, s kurzom ½, ⅓ atď.:
Ako sme dramaticky zlepšili kvalitu odporúčaní v offline maloobchode

Pri koeficientoch TF-IDF robíme presne to isté ako pri TF-IDF pri textoch, len kupujúceho považujeme za doklad a šek za ponuku, slovo je produkt. Týmto spôsobom sa užívateľský vektor posunie viac k vzácnemu tovaru, zatiaľ čo častý a pre kupujúceho známy tovar to príliš nezmení. Prístup možno znázorniť takto:
Ako sme dramaticky zlepšili kvalitu odporúčaní v offline maloobchode

Teraz sa pozrime na metriky. Takto vyzerajú výsledky ALS:
Ako sme dramaticky zlepšili kvalitu odporúčaní v offline maloobchode
Metriky pre Item2Vec s rôznymi variáciami konštrukcie vektora kupujúceho:
Ako sme dramaticky zlepšili kvalitu odporúčaní v offline maloobchode
V tomto prípade sa používa presne ten istý model ako v našej základnej línii. Rozdiel je len v tom, ktoré k použijeme. Aby ste mohli používať iba kolaboratívne modely, musíte pre každého zákazníka vziať asi 50 – 70 najbližších produktov.

A metriky podľa DSSM:
Ako sme dramaticky zlepšili kvalitu odporúčaní v offline maloobchode

Ako skombinovať všetky metódy?

Skvelé, hovoríte si, ale čo robiť s takouto veľkou sadou nástrojov na extrakciu kandidátov? Ako zvoliť optimálnu konfiguráciu pre vaše dáta? Tu máme niekoľko problémov:

  1. V každej metóde je potrebné nejako obmedziť priestor na vyhľadávanie hyperparametrov. Všade je to samozrejme diskrétne, ale počet možných bodov je veľmi veľký.
  2. Ako môžete pomocou malej obmedzenej vzorky špecifických metód so špecifickými hyperparametrami vybrať najlepšiu konfiguráciu pre svoju metriku?

Na prvú otázku sme ešte nenašli definitívne správnu odpoveď, takže vychádzame z nasledovného: pre každú metódu sa napíše obmedzovač vyhľadávacieho priestoru hyperparametrov v závislosti od nejakej štatistiky o údajoch, ktoré máme. Keď teda poznáme priemerné obdobie medzi nákupmi od ľudí, môžeme hádať, s akým obdobím použiť metódu „čo už bolo nakúpené“ a „obdobie dávno minulého nákupu“.

A keď sme prešli určitým primeraným počtom variácií rôznych metód, všimneme si nasledovné: každá implementácia extrahuje určitý počet kandidátov a má pre nás určitú hodnotu kľúčovej metriky (recall). Chceme celkovo získať určitý počet kandidátov v závislosti od nášho povoleného výpočtového výkonu s čo najvyššou možnou metrikou. Tu sa problém krásne zrúti na problém s batohom.
Ako sme dramaticky zlepšili kvalitu odporúčaní v offline maloobchode

Tu je počet kandidátov hmotnosť ingotu a metóda stiahnutia je jeho hodnotou. Pri implementácii algoritmu je však potrebné vziať do úvahy ďalšie 2 body:

  • Metódy sa môžu u kandidátov, ktorých získajú, prekrývať.
  • V niektorých prípadoch bude správne použiť jednu metódu dvakrát s rôznymi parametrami a kandidátsky výstup z prvej nebude podmnožinou druhej.

Napríklad, ak vezmeme implementáciu metódy „čo som si už kúpil“ s rôznymi intervalmi vyhľadávania, potom budú ich sady kandidátov vnorené do seba. Rôzne parametre pri „pravidelných nákupoch“ na výstupe zároveň neposkytujú úplné priesečníky. Preto rozdeľujeme vzorkovacie prístupy s rôznymi parametrami do blokov tak, že z každého bloku chceme vziať maximálne jeden extrakčný prístup so špecifickými hyperparametrami. Aby ste to dosiahli, musíte byť trochu šikovní pri implementácii problému s batohom, ale asymptotika a výsledok sa nezmenia.

Táto inteligentná kombinácia nám umožňuje získať nasledujúce metriky v porovnaní s jednoduchými kolaboratívnymi modelmi:
Ako sme dramaticky zlepšili kvalitu odporúčaní v offline maloobchode
V konečných metrikách vidíme nasledujúci obrázok:
Ako sme dramaticky zlepšili kvalitu odporúčaní v offline maloobchode

Tu si však môžete všimnúť, že existuje jeden nepokrytý bod pre odporúčania, ktoré sú užitočné pre podnikanie. Teraz sme sa práve naučili, ako urobiť skvelú prácu pri predpovedaní toho, čo používateľ kúpi, napríklad budúci týždeň. Ale jednoducho dať zľavu na niečo, čo si už kúpi, nie je veľmi cool. Je však skvelé maximalizovať očakávania napríklad nasledujúcich metrík:

  1. Marža/obrat na základe osobných odporúčaní.
  2. Priemerná zákaznícka kontrola.
  3. Frekvencia návštev.

Získané pravdepodobnosti teda vynásobíme rôznymi koeficientmi a prehodnotíme ich tak, aby sa produkty, ktoré ovplyvňujú metriky vyššie, dostali na popredné miesta. Neexistuje žiadne hotové riešenie, ktorý prístup je najlepšie použiť. S takýmito koeficientmi dokonca experimentujeme priamo vo výrobe. Ale tu sú zaujímavé techniky, ktoré nám najčastejšie poskytujú najlepšie výsledky:

  1. Vynásobte cenou/maržou produktu.
  2. Vynásobte priemernou účtenkou, v ktorej sa produkt nachádza. Príde teda tovar, s ktorým väčšinou berú niečo iné.
  3. Vynásobte priemernou frekvenciou návštev kupujúcich tohto produktu na základe hypotézy, že tento produkt vyvoláva u ľudí častejší návrat.

Po vykonaní experimentov s koeficientmi sme vo výrobe získali nasledujúce metriky:
Ako sme dramaticky zlepšili kvalitu odporúčaní v offline maloobchode
Tu celková konverzia produktov — podiel zakúpených produktov zo všetkých produktov v odporúčaniach, ktoré sme vygenerovali.

Pozorný čitateľ si všimne významný rozdiel medzi offline a online metrikami. Toto správanie je vysvetlené skutočnosťou, že nie všetky dynamické filtre pre produkty, ktoré možno odporučiť, je možné brať do úvahy pri trénovaní modelu. Pre nás je to normálny príbeh, keď je možné odfiltrovať polovicu nájdených kandidátov; táto špecifickosť je v našom odvetví typická.

Pokiaľ ide o výnosy, získame nasledujúci príbeh, je zrejmé, že po spustení odporúčaní výnosy testovacej skupiny výrazne rastú, teraz je priemerný nárast výnosov s našimi odporúčaniami 3-4%:
Ako sme dramaticky zlepšili kvalitu odporúčaní v offline maloobchode

Na záver chcem povedať, že ak potrebujete odporúčania, ktoré nie sú v reálnom čase, potom veľmi veľké zvýšenie kvality možno nájsť v experimentoch s extrahovaním kandidátov na odporúčania. Veľké množstvo času na ich generovanie umožňuje kombinovať veľa dobrých metód, ktoré celkovo prinesú podniku skvelé výsledky.

Budem rád, ak sa v komentároch porozprávam s každým, koho materiál zaujme. Otázky mi môžete klásť osobne na telegram. Tiež zdieľam svoje myšlienky o AI / startupoch v mojom telegramový kanál - vitajte :)

Zdroj: hab.com

Pridať komentár