Kako smo dramatično poboljšali kvalitet preporuka u offline maloprodaji

Zdravo svima! Moje ime je Sasha, ja sam CTO i suosnivač u LoyaltyLab-u. Prije dvije godine, moji prijatelji i ja, kao i svi siromašni studenti, otišli smo uveče da kupimo pivo u najbližoj radnji blizu naše kuće. Jako nas je uznemirilo što trgovac, znajući da ćemo doći po pivo, nije ponudio popust na čips ili krekere, iako je to bilo tako logično! Nismo shvatili zašto se ova situacija dešava i odlučili smo da pokrenemo sopstvenu kompaniju. Pa, kao bonus, dajte sebi popuste svakog petka na te iste čipove.

Kako smo dramatično poboljšali kvalitet preporuka u offline maloprodaji

I sve je došlo do tačke u kojoj predstavljam materijal o tehničkoj strani proizvoda NVIDIA GTC. Sa zadovoljstvom možemo podijeliti svoj rad sa zajednicom, pa objavljujem svoj izvještaj u obliku članka.

Uvod

Kao i svi drugi na početku putovanja, počeli smo s pregledom kako se prave sistemi preporuka. A ispostavilo se da je najpopularnija arhitektura sljedećeg tipa:
Kako smo dramatično poboljšali kvalitet preporuka u offline maloprodaji

Sastoji se iz dva dijela:

  1. Uzorkovanje kandidata za preporuke pomoću jednostavnog i brzog modela, obično kolaborativnog.
  2. Rangiranje kandidata sa složenijim i sporijim modelom sadržaja, uzimajući u obzir sve moguće karakteristike u podacima.

U nastavku ću koristiti sljedeće termine:

  • kandidat/kandidat za preporuke — par korisnik-proizvod koji bi potencijalno mogao biti uključen u preporuke u proizvodnji.
  • metoda ekstrakcije kandidata/ekstraktora/kandidata — proces ili metod za izdvajanje „kandidata za preporuku“ iz dostupnih podataka.

Prvi korak obično uključuje korištenje različitih varijacija kolaborativnog filtriranja. Najpopularniji - ALS. Iznenađujuće je da većina članaka o sistemima za preporuke otkriva samo različita poboljšanja kolaborativnih modela u prvoj fazi, ali niko ne govori mnogo o drugim metodama uzorkovanja. Nama pristup korištenja samo kolaborativnih modela i raznih optimizacija s njima nije funkcionirao s kvalitetom koji smo očekivali, pa smo se zadubili u istraživanje upravo u ovom dijelu. I na kraju članka ću pokazati koliko smo uspjeli poboljšati ALS, što je bila naša polazna osnova.

Prije nego što pređem na opisivanje našeg pristupa, važno je napomenuti da u preporukama u realnom vremenu, kada nam je važno da uzmemo u obzir podatke koji su se desili prije 30 minuta, zaista nema mnogo pristupa koji mogu funkcionirati u potrebnom vremenu. Ali, u našem slučaju preporuke moramo prikupljati ne više od jednom dnevno, a u većini slučajeva - jednom tjedno, što nam daje priliku da koristimo složene modele i višestruko poboljšamo kvalitetu.

Uzmimo kao osnovu koje metrike pokazuje samo ALS na zadatku izdvajanja kandidata. Ključni pokazatelji koje pratimo su:

  • Preciznost - udio ispravno odabranih kandidata od uzorkovanih.
  • Podsjećanje je udio kandidata koji su se desili u odnosu na one koji su zaista bili u ciljnom intervalu.
  • F1-score - F-mjera izračunata na prethodna dva boda.

Također ćemo pogledati metriku konačnog modela nakon treninga pojačanja gradijenta s dodatnim funkcijama sadržaja. Tu su i 3 glavne metrike:

  • preciznost@5 - prosječan procenat proizvoda iz prvih 5 u smislu vjerovatnoće za svakog kupca.
  • response-rate@5 - konverzija kupaca iz posjete trgovini u kupovinu barem jedne lične ponude (5 proizvoda u jednoj ponudi).
  • prosječno roc-auc po korisniku - prosjek roc-auc za svakog kupca.

Važno je napomenuti da se sve ove metrike mjere na osnovu unakrsna validacija vremenske serije, odnosno obuka se odvija u prvih k sedmica, a k+1 sedmica se uzima kao podaci testa. Tako su sezonski usponi i padovi imali minimalan uticaj na interpretaciju kvaliteta modela. Dalje na svim grafikonima, osa apscise će označavati broj sedmice u unakrsnoj validaciji, a osa ordinata će pokazati vrijednost navedene metrike. Svi grafikoni su zasnovani na podacima o transakcijama od jednog klijenta tako da su međusobno poređenja tačna.

Prije nego što počnemo da opisujemo naš pristup, prvo ćemo pogledati osnovnu liniju, koja je model obučen za ALS.
metrika preuzimanja kandidata:
Kako smo dramatično poboljšali kvalitet preporuka u offline maloprodaji

Konačni pokazatelji:
Kako smo dramatično poboljšali kvalitet preporuka u offline maloprodaji

Sve implementacije algoritama tretiram kao neku vrstu poslovne hipoteze. Dakle, vrlo grubo, svaki model saradnje može se smatrati hipotezom da „ljudi imaju tendenciju da kupuju ono što kupuju ljudi slični njima“. Kao što sam već rekao, nismo se ograničili na takvu semantiku, a evo nekoliko hipoteza koje dobro funkcioniraju na podacima u offline maloprodaji:

  1. Koje sam već ranije kupio.
  2. Slično onome što sam ranije kupio.
  3. Period davne kupovine.
  4. Popularno po kategoriji/brendu.
  5. Naizmjenične kupovine različite robe iz sedmice u sedmicu (Markov lanci).
  6. Slični proizvodi kupcima, prema karakteristikama koje su izgradili različiti modeli (Word2Vec, DSSM, itd.).

Šta ste ranije kupili?

Najočitija heuristika koja jako dobro funkcionira u maloprodaji prehrambenih proizvoda. Ovdje uzimamo svu robu koju je vlasnik kartice lojalnosti kupio u posljednjih K dana (obično 1-3 sedmice), odnosno K dana prije godinu dana. Primjenom samo ove metode dobijamo sljedeće metrike:
Kako smo dramatično poboljšali kvalitet preporuka u offline maloprodaji

Ovdje je sasvim očito da što duže uzimamo period, to imamo više pamćenja i manje preciznosti i obrnuto. U prosjeku, “zadnje 2 sedmice” daju bolje rezultate za klijente.

Slično onome što sam ranije kupio

Nije iznenađujuće da za maloprodaju prehrambenih proizvoda „ono što sam ranije kupio“ dobro funkcionira, ali izdvajanje kandidata samo iz onoga što je korisnik već kupio nije baš cool, jer je malo vjerovatno da će kupac iznenaditi nekim novim proizvodom. Stoga predlažemo da malo poboljšamo ovu heuristiku korištenjem istih kolaborativnih modela. Od vektora koje smo dobili tokom ALS treninga možemo dobiti slične proizvode onima koje je korisnik već kupio. Ova ideja je vrlo slična “sličnim video zapisima” u servisima za gledanje video sadržaja, ali pošto ne znamo šta korisnik jede/kupuje u određenom trenutku, možemo samo tražiti slične onima koje je već kupio, posebno pošto mi već znamo koliko dobro funkcioniše. Primjenom ove metode na korisničke transakcije u posljednje 2 sedmice, dobijamo sljedeće metrike:
Kako smo dramatično poboljšali kvalitet preporuka u offline maloprodaji

to je k — broj sličnih proizvoda koji se preuzimaju za svaki proizvod koji je kupac kupio u posljednjih 14 dana.
Ovaj pristup je posebno dobro funkcionisao za našeg klijenta, za kojeg je bilo ključno da ne preporuči ništa što je već bilo u istoriji kupovine korisnika.

Kasni period kupovine

Kao što smo već saznali, zbog velike učestalosti kupovine robe, prvi pristup dobro funkcionira za naše specifične potrebe. Ali šta je sa robom kao što je prašak za veš/šampon/itd. Odnosno, sa proizvodima za koje je malo vjerovatno da će biti potrebni svake sedmice ili dvije i koje prethodne metode ne mogu izvući. To dovodi do sljedeće ideje - predlaže se izračunavanje perioda kupovine svakog proizvoda u prosjeku za kupce koji su kupili proizvod više k jednom. I onda izvući ono čega je kupcu najvjerovatnije već ponestalo. Adekvatnost izračunatih rokova za robu može se provjeriti vašim očima:
Kako smo dramatično poboljšali kvalitet preporuka u offline maloprodaji

A onda ćemo pogledati da li kraj perioda proizvoda pada u vremenski interval kada će preporuke biti u proizvodnji i uzorkovati šta se dešava. Pristup se može ilustrovati ovako:
Kako smo dramatično poboljšali kvalitet preporuka u offline maloprodaji

Ovdje imamo 2 glavna slučaja koja se mogu razmotriti:

  1. Da li je potrebno uzorkovati proizvode od kupaca koji su kupili proizvod manje od K puta.
  2. Da li je potrebno uzorkovati proizvod ako kraj njegovog perioda pada prije početka ciljanog intervala.

Sljedeći grafikon pokazuje kakve rezultate ova metoda postiže s različitim hiperparametrima:
Kako smo dramatično poboljšali kvalitet preporuka u offline maloprodaji
ft — Uzmite samo kupce koji su kupili proizvod najmanje K (ovdje K=5) puta
tm — Uzmite samo kandidate koji spadaju u ciljni interval

Nije iznenađujuće da je u stanju (0, 0) najveći opoziv i najmanji preciznost, budući da se pod ovim uslovom izvlači najviše kandidata. Ipak, najbolji rezultati se postižu kada ne uzorkujemo proizvode za kupce koji su određeni proizvod kupili manje od k vremena i ekstrakt, uključujući robu, čiji je kraj perioda prije ciljanog intervala.

Popularno po kategorijama

Još jedna prilično očigledna ideja je uzorkovanje popularnih proizvoda u različitim kategorijama ili markama. Ovdje izračunavamo za svakog kupca top-k “omiljene” kategorije/brendove i izdvojiti “popularno” iz ove kategorije/brendove. U našem slučaju, "omiljeno" i "popularno" ćemo odrediti prema broju kupovina proizvoda. Dodatna prednost ovog pristupa je njegova primjenjivost u slučaju hladnog starta. Odnosno, za kupce koji su ili obavili vrlo malo kupovina, ili dugo nisu bili u trgovini ili su upravo izdali karticu lojalnosti. Za njih je lakše i bolje skladištiti artikle koji su popularni kod kupaca i koji imaju istoriju. Rezultirajuća metrika su:
Kako smo dramatično poboljšali kvalitet preporuka u offline maloprodaji
Ovdje broj iza riječi “kategorija” označava nivo ugniježđenja kategorije.

Sve u svemu, također nije iznenađujuće da uže kategorije postižu bolje rezultate, jer izvlače preciznije „omiljene“ proizvode za kupce.

Naizmjenične kupovine različite robe iz sedmice u sedmicu

Zanimljiv pristup koji nisam vidio u člancima o sistemima preporuka je prilično jednostavna i istovremeno funkcionalna statistička metoda Markovljevih lanaca. Ovdje uzimamo 2 različite sedmice, a zatim za svakog kupca pravimo parove proizvoda [kupljeno u sedmici i]-[kupljeno u sedmici j], gdje je j > i, i odavde izračunavamo za svaki proizvod vjerovatnoću prelaska na drugi proizvod sljedeće sedmice. Odnosno za svaki par robe producti-productj Brojimo njihov broj u pronađenim parovima i dijelimo sa brojem parova, gdje proizvodi bilo u prvoj sedmici. Da bismo izdvojili kandidate, uzimamo kupčevu posljednju potvrdu i izvod top-k najvjerovatniji sljedeći proizvodi iz prijelazne matrice koje smo dobili. Proces izgradnje prelazne matrice izgleda ovako:
Kako smo dramatično poboljšali kvalitet preporuka u offline maloprodaji

Iz stvarnih primjera u matrici vjerovatnoće tranzicije vidimo sljedeće zanimljive pojave:
Kako smo dramatično poboljšali kvalitet preporuka u offline maloprodaji
Ovdje možete primijetiti zanimljive ovisnosti koje se otkrivaju u ponašanju potrošača: na primjer, ljubitelji citrusa ili marke mlijeka s koje će vjerojatno preći na drugu. Također nije iznenađujuće da proizvodi s velikom učestalošću ponovne kupovine, poput putera, također završavaju ovdje.

metrike u metodi s Markovim lancima su sljedeće:
Kako smo dramatično poboljšali kvalitet preporuka u offline maloprodaji
k — broj proizvoda koji se preuzimaju za svaki kupljeni proizvod iz posljednje transakcije kupca.
Kao što vidimo, najbolji rezultat pokazuje konfiguracija sa k=4. Nagli porast u sedmici 4 može se objasniti sezonskim ponašanjem oko praznika. 

Slični proizvodi kupcima, prema karakteristikama koje su izgradili različiti modeli

Sada smo došli do najtežeg i najzanimljivijeg dijela – traženja najbližih susjeda na osnovu vektora kupaca i proizvoda napravljenih prema različitim modelima. U svom radu koristimo 3 takva modela:

  • ALS
  • Word2Vec (Item2Vec za takve zadatke)
  • DSSM

Već smo se bavili ALS-om, možete pročitati kako se uči ovdje. U slučaju Word2Vec koristimo dobro poznatu implementaciju modela iz gensim. Analogno tekstovima, ponudu definišemo kao račun. Dakle, kada se konstruiše vektor proizvoda, model uči da predvidi za proizvod u računu njegov „kontekst“ (preostale proizvode u računu). U podacima o e-trgovini, bolje je koristiti sesiju kupca umjesto računa; momci iz ozon. A DSSM je zanimljiviji za raščlanjivanje. U početku su ga napisali momci iz Microsofta kao model za pretragu, Originalni istraživački rad možete pročitati ovdje. Arhitektura modela izgleda ovako:
Kako smo dramatično poboljšali kvalitet preporuka u offline maloprodaji

to je Q — upit, upit za pretraživanje korisnika, D[i] — dokument, internet stranica. Ulaz u model su atributi zahtjeva i stranica, respektivno. Nakon svakog ulaznog sloja postoji određeni broj potpuno povezanih slojeva (višeslojni perceptron). Zatim, model uči da minimizira kosinus između vektora dobivenih u posljednjim slojevima modela.
Zadaci preporuke koriste potpuno istu arhitekturu, samo što je umjesto zahtjeva korisnik, a umjesto stranica proizvodi. A u našem slučaju ova arhitektura se transformiše u sljedeće:
Kako smo dramatično poboljšali kvalitet preporuka u offline maloprodaji

Sada, da bismo provjerili rezultate, ostaje da pokrijemo posljednju tačku - ako u slučaju ALS i DSSM imamo eksplicitno definirane korisničke vektore, onda u slučaju Word2Vec imamo samo vektore proizvoda. Ovdje, da bismo izgradili korisnički vektor, definirali smo 3 glavna pristupa:

  1. Samo dodajte vektore, a zatim za kosinusnu udaljenost ispada da smo jednostavno usredsredili proizvode u istoriji kupovine.
  2. Vektorsko zbrajanje sa određenim vremenskim ponderisanjem.
  3. Vaganje robe sa TF-IDF koeficijentom.

U slučaju linearnog ponderisanja vektora kupca, polazimo od hipoteze da proizvod koji je korisnik juče kupio ima veći uticaj na njegovo ponašanje od proizvoda koji je kupio pre šest meseci. Dakle, razmatramo prethodnu sedmicu kupca sa kvotom 1, a šta se desilo sledeće sa kvotom od ½, ⅓, itd.:
Kako smo dramatično poboljšali kvalitet preporuka u offline maloprodaji

Za TF-IDF koeficijente radimo potpuno isto kao u TF-IDF za tekstove, samo što kupca smatramo dokumentom, a ček ponudom, odnosno riječ je proizvod. Na ovaj način će se korisnikov vektor više pomjeriti prema rijetkim robama, dok ga česta i poznata roba kupcu neće mnogo promijeniti. Pristup se može ilustrovati ovako:
Kako smo dramatično poboljšali kvalitet preporuka u offline maloprodaji

Pogledajmo sada metriku. Ovako izgledaju rezultati ALS-a:
Kako smo dramatično poboljšali kvalitet preporuka u offline maloprodaji
metrika za Item2Vec s različitim varijacijama konstruiranja vektora kupca:
Kako smo dramatično poboljšali kvalitet preporuka u offline maloprodaji
U ovom slučaju se koristi potpuno isti model kao u našoj bazi. Jedina razlika je koji k ćemo koristiti. Da biste koristili samo kolaborativne modele, morate uzeti oko 50-70 najbližih proizvoda za svakog kupca.

I metrika prema DSSM-u:
Kako smo dramatično poboljšali kvalitet preporuka u offline maloprodaji

Kako spojiti sve metode?

Super, kažete, ali šta učiniti s tako velikim skupom alata za ekstrakciju kandidata? Kako odabrati optimalnu konfiguraciju za vaše podatke? Ovdje imamo nekoliko problema:

  1. Potrebno je nekako ograničiti prostor za pretragu hiperparametara u svakoj metodi. Ona je, naravno, svuda diskretna, ali je broj mogućih tačaka veoma velik.
  2. Koristeći mali ograničeni uzorak specifičnih metoda sa specifičnim hiperparametrima, kako možete odabrati najbolju konfiguraciju za svoju metriku?

Na prvo pitanje još nismo našli definitivno tačan odgovor, pa polazimo od sljedećeg: za svaku metodu je napisan limiter prostora pretraživanja hiperparametara, ovisno o nekim statistikama o podacima kojima raspolažemo. Dakle, znajući prosječan period između kupovina od strane ljudi, možemo pretpostaviti s kojim periodom koristiti metodu „ono što je već kupljeno“ i „period davno prošle kupovine“.

I nakon što smo prošli kroz određeni adekvatan broj varijacija različitih metoda, primjećujemo sljedeće: svaka implementacija izdvaja određeni broj kandidata i ima za nas određenu vrijednost ključne metrike (podsjetimo se). Želimo da dobijemo ukupno određeni broj kandidata, u zavisnosti od naše dozvoljene računarske snage, sa najvećom mogućom metrikom. Ovdje se problem lijepo urušava u problem ranca.
Kako smo dramatično poboljšali kvalitet preporuka u offline maloprodaji

Ovdje je broj kandidata težina ingota, a metoda opoziva je njegova vrijednost. Međutim, postoje još 2 tačke koje treba uzeti u obzir prilikom implementacije algoritma:

  • Metode se mogu preklapati u kandidatima koje pronađu.
  • U nekim slučajevima, biće ispravno uzeti jednu metodu dva puta sa različitim parametrima, a izlaz kandidata iz prve neće biti podskup drugog.

Na primjer, ako uzmemo implementaciju metode „ono što sam već kupio“ s različitim intervalima za pronalaženje, tada će njihovi skupovi kandidata biti ugniježđeni jedan u drugom. Istovremeno, različiti parametri u „periodičnoj kupovini“ na izlazu ne daju potpunu raskrsnicu. Stoga dijelimo pristupe uzorkovanja s različitim parametrima u blokove tako da iz svakog bloka želimo uzeti najviše jedan pristup ekstrakcije sa specifičnim hiperparametrima. Da biste to učinili, morate biti malo pametni u implementaciji problema ranca, ali asimptotika i rezultat se neće promijeniti.

Ova pametna kombinacija nam omogućava da dobijemo sljedeće metrike u poređenju sa jednostavno kolaborativnim modelima:
Kako smo dramatično poboljšali kvalitet preporuka u offline maloprodaji
U konačnoj metrici vidimo sljedeću sliku:
Kako smo dramatično poboljšali kvalitet preporuka u offline maloprodaji

Međutim, ovdje možete primijetiti da postoji jedna nepokrivena točka za preporuke koje su korisne za poslovanje. Sada smo upravo naučili kako napraviti odličan posao predviđanja šta će korisnik kupiti, na primjer, sljedeće sedmice. Ali jednostavno dati popust na nešto što će već kupiti nije baš cool. No, super je maksimizirati očekivanja, na primjer, od sljedećih metrika:

  1. Marža/promet na osnovu ličnih preporuka.
  2. Prosječan ček kupca.
  3. Učestalost posjeta.

Tako da dobijene vjerovatnoće množimo različitim koeficijentima i prerangiramo ih tako da proizvodi koji utiču na gornju metriku dođu do vrha. Ne postoji gotovo rješenje za koji pristup je najbolje koristiti. Sa takvim koeficijentima eksperimentišemo čak i direktno u proizvodnji. Ali evo zanimljivih tehnika koje nam najčešće daju najbolje rezultate:

  1. Pomnožite sa cijenom/maržom proizvoda.
  2. Pomnožite s prosječnim računom u kojem se proizvod pojavljuje. Tako će doći roba, uz koju obično uzimaju nešto drugo.
  3. Pomnožite sa prosječnom učestalošću posjeta kupaca ovog proizvoda, na osnovu hipoteze da ovaj proizvod provocira ljude da se češće vraćaju po njega.

Nakon provođenja eksperimenata s koeficijentima, dobili smo sljedeće metrike u proizvodnji:
Kako smo dramatično poboljšali kvalitet preporuka u offline maloprodaji
to je ukupna konverzija proizvoda — udio kupljenih proizvoda od svih proizvoda u preporukama koje smo generirali.

Pažljivi čitatelj primijetit će značajnu razliku između offline i online metrike. Ovo ponašanje se objašnjava činjenicom da se svi dinamički filteri za proizvode koji se mogu preporučiti ne mogu uzeti u obzir prilikom obuke modela. Za nas je normalna priča kada se polovina preuzetih kandidata može filtrirati, takva specifičnost je tipična za našu industriju.

Što se tiče prihoda, dobija se sljedeća priča, jasno je da nakon lansiranja preporuka, prihod test grupe snažno raste, sada je prosječno povećanje prihoda sa našim preporukama 3-4%:
Kako smo dramatično poboljšali kvalitet preporuka u offline maloprodaji

U zaključku, želim reći da ako su vam potrebne preporuke koje nisu u realnom vremenu, onda se u eksperimentima s izdvajanjem kandidata za preporuke može naći vrlo veliko povećanje kvalitete. Velika količina vremena za njihovu generaciju omogućava kombinovanje mnogih dobrih metoda, što će ukupno dati odlične rezultate za posao.

Bit će mi drago razgovarati u komentarima sa svima kojima je materijal zanimljiv. Pitanja mi možete postavljati lično na telegram. Također dijelim svoja razmišljanja o AI/startupovima u mom telegram kanal - dobrodošli :)

izvor: www.habr.com

Dodajte komentar