Kako smo dramatično poboljšali kvalitetu preporuka u izvanmrežnoj maloprodaji

Bok svima! Moje ime je Sasha, ja sam tehnički direktor i suosnivač LoyaltyLaba. Prije dvije godine moji prijatelji i ja, kao i svi siromašni studenti, otišli smo navečer kupiti pivo u najbližoj trgovini blizu naše kuće. Jako nas je zasmetalo što trgovac, znajući da ćemo doći na pivo, nije ponudio popust na čips ili krekere, iako je to bilo tako logično! Nismo razumjeli zašto se ova situacija događa i odlučili smo pokrenuti vlastitu tvrtku. Pa, kao bonus, dajte sebi popuste svaki petak na te iste čipseve.

Kako smo dramatično poboljšali kvalitetu preporuka u izvanmrežnoj maloprodaji

I sve je došlo do točke kada predstavljam materijal o tehničkoj strani proizvoda NVIDIA GTC. Sretni smo što možemo podijeliti svoj rad sa zajednicom, pa svoje izvješće objavljujem u obliku članka.

Uvod

Kao i svi drugi na početku putovanja, započeli smo s pregledom načina na koji se izrađuju sustavi preporuka. A najpopularnija arhitektura pokazala se sljedećom vrstom:
Kako smo dramatično poboljšali kvalitetu preporuka u izvanmrežnoj maloprodaji

Sastoji se od 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 značajke u podacima.

U nastavku ću koristiti sljedeće pojmove:

  • kandidat/kandidatkinja za preporuke — par korisnik-proizvod koji bi potencijalno mogao biti uključen u preporuke u proizvodnji.
  • kandidati ekstrakcija / ekstraktor / metoda ekstrakcije kandidata — proces ili metoda za izdvajanje „kandidata za preporuke” 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 sustavima preporuka samo otkriva različita poboljšanja kolaborativnih modela u prvoj fazi, ali nitko ne govori previše o drugim metodama uzorkovanja. Za nas, pristup korištenja samo kolaborativnih modela i raznih optimizacija s njima nije funkcionirao s kvalitetom koju smo očekivali, pa smo istraživali upravo ovaj dio. I na kraju članka pokazat ću koliko smo uspjeli poboljšati ALS, što je bila naša polazna vrijednost.

Prije nego što prijeđem na opisivanje našeg pristupa, važno je napomenuti da u preporukama u stvarnom vremenu, kada nam je važno uzeti u obzir podatke koji su se dogodili prije 30 minuta, stvarno nema mnogo pristupa koji mogu funkcionirati u potrebnom vremenu. Ali, u našem slučaju, preporuke moramo prikupljati ne više od jednom dnevno, au većini slučajeva - jednom tjedno, što nam daje priliku koristiti složene modele i poboljšati kvalitetu nekoliko puta.

Uzmimo kao osnovnu vrijednost koju metriku samo ALS pokazuje na zadatku izdvajanja kandidata. Ključne metrike koje pratimo su:

  • Preciznost - udio ispravno odabranih kandidata od uzorkovanih.
  • Prisjećanje je udio kandidata koji su se dogodili u odnosu na one koji su stvarno bili u ciljanom intervalu.
  • F1-rezultat - F-mjera izračunata na prethodne dvije točke.

Također ćemo pogledati metriku konačnog modela nakon vježbanja povećanja gradijenta s dodatnim značajkama sadržaja. Ovdje također postoje 3 glavne metrike:

  • precision@5 - prosječni postotak proizvoda iz prvih 5 u smislu vjerojatnosti za svakog kupca.
  • response-rate@5 - konverzija kupaca od posjeta trgovini do kupnje barem jedne osobne ponude (5 proizvoda u jednoj ponudi).
  • prosj. roc-auc po korisniku - prosjek roc-auc za svakog kupca.

Važno je napomenuti da se sve ove metrike mjere na unakrsna provjera vremenske serije, odnosno trening se odvija u prvih k tjedana, a k+1 tjedan se uzima kao testni podatak. Tako su sezonski usponi i padovi imali minimalan utjecaj na interpretaciju kvalitete modela. Dalje na svim grafikonima, apscisna os će označavati broj tjedna u unakrsnoj provjeri, a ordinatna os će označavati vrijednost navedene metrike. Svi se grafikoni temelje na podacima o transakcijama jednog klijenta tako da su međusobne usporedbe točne.

Prije nego što počnemo opisivati ​​naš pristup, prvo ćemo pogledati osnovnu crtu, a to je model obučen pomoću ALS-a.
Mjerni podaci za pronalaženje kandidata:
Kako smo dramatično poboljšali kvalitetu preporuka u izvanmrežnoj maloprodaji

Konačna metrika:
Kako smo dramatično poboljšali kvalitetu preporuka u izvanmrežnoj maloprodaji

Sve implementacije algoritama tretiram kao neku vrstu poslovne hipoteze. Dakle, vrlo grubo, svaki model suradnje može se smatrati hipotezom da "ljudi imaju tendenciju kupovati 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. Koju sam već kupio prije.
  2. Slično onome što sam prije kupio.
  3. Razdoblje davne kupnje.
  4. Popularno po kategoriji/marki.
  5. Naizmjenične kupnje različite robe iz tjedna u tjedan (Markovljevi lanci).
  6. Slični proizvodi kupcima, prema karakteristikama izgrađenim od različitih modela (Word2Vec, DSSM, itd.).

Što ste kupili prije?

Najočitija heuristika koja vrlo dobro funkcionira u maloprodaji mješovitom robom. Ovdje uzimamo svu robu koju je vlasnik kartice vjernosti kupio u zadnjih K dana (obično 1-3 tjedna), ili K dana prije godinu dana. Primjenom samo ove metode dobivamo sljedeće metrike:
Kako smo dramatično poboljšali kvalitetu preporuka u izvanmrežnoj maloprodaji

Ovdje je sasvim očito da što duže uzimamo period, imamo više pamćenja i manje preciznosti i obrnuto. U prosjeku, "zadnja 2 tjedna" daje bolje rezultate za klijente.

Slično onome što sam prije kupio

Nije iznenađujuće da za maloprodaju mješovitom robom "što sam kupio prije" dobro funkcionira, ali izdvajanje kandidata samo iz onoga što je korisnik već kupio nije baš cool, jer je mala vjerojatnost da ćete iznenaditi kupca nekim novim proizvodom. Stoga predlažemo malo poboljšati ovu heuristiku koristeći iste modele suradnje. Iz vektora koje smo dobili tijekom ALS obuke možemo dobiti slične proizvode onima koje je korisnik već kupio. Ova ideja je vrlo slična “sličnim videima” u servisima za gledanje videosadržaja, ali kako ne znamo što korisnik jede/kupuje u određenom trenutku, možemo tražiti samo one slične onome što je već kupio, posebno budući da već znamo koliko dobro radi. Primjenom ove metode na korisničke transakcije tijekom posljednja 2 tjedna, dobivamo sljedeće metrike:
Kako smo dramatično poboljšali kvalitetu preporuka u izvanmrežnoj maloprodaji

Ovdje k — broj sličnih proizvoda koji se dohvaćaju za svaki proizvod koji je kupac kupio u zadnjih 14 dana.
Ovaj je pristup posebno dobro funkcionirao za našeg klijenta, za kojeg je bilo kritično ne preporučiti ništa što je već bilo u povijesti kupnje korisnika.

Kasno razdoblje kupnje

Kao što smo već ustanovili, zbog velike učestalosti kupnje robe, prvi pristup dobro funkcionira za naše specifične potrebe. Ali što je s robom poput praška za pranje/šampona/itd. To jest, s proizvodima za koje je malo vjerojatno da će biti potrebni svaki tjedan ili dva i koje prethodne metode ne mogu izdvojiti. To dovodi do sljedeće ideje - predlaže se izračunati razdoblje kupnje svakog proizvoda u prosjeku za kupce koji su kupili proizvod više k jednom. I onda izvući ono što je kupcu najvjerojatnije već ponestalo. Obračunata razdoblja za robu mogu se provjeriti vlastitim očima radi primjerenosti:
Kako smo dramatično poboljšali kvalitetu preporuka u izvanmrežnoj maloprodaji

Zatim ćemo pogledati pada li kraj razdoblja proizvoda u vremenski interval kada će preporuke biti u proizvodnji i uzorkovati što se događa. Pristup se može ilustrirati ovako:
Kako smo dramatično poboljšali kvalitetu preporuka u izvanmrežnoj maloprodaji

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

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

Sljedeći grafikon prikazuje rezultate koje ova metoda postiže s različitim hiperparametrima:
Kako smo dramatično poboljšali kvalitetu preporuka u izvanmrežnoj maloprodaji
ft — Uzmite samo kupce koji su kupili proizvod najmanje K (ovdje K=5) puta
tm — Uzmite samo kandidate koji su unutar ciljnog intervala

Nije iznenađujuće da je u stanju (0, 0) najveći podsjetiti i najmanji preciznost, budući da se pod ovim uvjetom dohvaća većina kandidata. Međutim, najbolji rezultati postižu se kada ne uzorkujemo proizvode za kupce koji su određeni proizvod kupili manje od k vremena i izvoda, uključujući robu, čiji kraj razdoblja pada prije ciljnog intervala.

Popularno po kategoriji

Još jedna prilično očita ideja je kušanje popularnih proizvoda u različitim kategorijama ili markama. Ovdje izračunavamo za svakog kupca vrh-k “omiljene” kategorije/brandove i izdvajanje “popularnih” iz ove kategorije/brandova. U našem slučaju, odredit ćemo “omiljen” i “popularno” prema broju kupnji proizvoda. Dodatna prednost ovog pristupa je njegova primjenjivost u slučaju hladnog starta. Odnosno, za kupce koji su ili vrlo malo kupovali, ili dugo nisu bili u trgovini, ili su tek izdali karticu vjernosti. Za njih je lakše i bolje skladištiti artikle koji su popularni među kupcima i imaju povijest. Rezultirajuće metrike su:
Kako smo dramatično poboljšali kvalitetu preporuka u izvanmrežnoj maloprodaji
Ovdje broj iza riječi "kategorija" označava razinu ugniježđenosti kategorije.

Sve u svemu, također nije iznenađujuće da uže kategorije postižu bolje rezultate, budući da izdvajaju preciznije "omiljene" proizvode za kupce.

Naizmjenične kupnje različite robe iz tjedna u tjedan

Zanimljiv pristup koji nisam vidio u člancima o sustavima preporuka je prilično jednostavna, au isto vrijeme radna statistička metoda Markovljevih lanaca. Ovdje uzimamo 2 različita tjedna, a zatim za svakog kupca gradimo par proizvoda [kupljeno u tjednu i]-[kupljeno u tjednu j], gdje je j > i, a odavde za svaki proizvod izračunavamo vjerojatnost prelaska na drugi proizvod sljedeći tjedan. Odnosno za svaki par robe produkti-produktj Brojimo njihov broj u pronađenim parovima i dijelimo s brojem parova, gdje proizvoda bio je u prvom tjednu. Za izdvajanje kandidata uzimamo zadnji račun kupca i izvod vrh-k najvjerojatniji sljedeći proizvodi iz prijelazne matrice koje smo dobili. Proces konstruiranja prijelazne matrice izgleda ovako:
Kako smo dramatično poboljšali kvalitetu preporuka u izvanmrežnoj maloprodaji

Iz stvarnih primjera u matrici vjerojatnosti prijelaza vidimo sljedeće zanimljive pojave:
Kako smo dramatično poboljšali kvalitetu preporuka u izvanmrežnoj maloprodaji
Ovdje možete primijetiti zanimljive ovisnosti koje se otkrivaju u ponašanju potrošača: primjerice, ljubitelji agruma ili marke mlijeka s koje će vjerojatno prijeći na drugu. Također ne čudi da ovdje završavaju i proizvodi s velikom učestalošću ponovne kupnje, poput maslaca.

Metrike u metodi s Markovljevim lancima su sljedeće:
Kako smo dramatično poboljšali kvalitetu preporuka u izvanmrežnoj maloprodaji
k — broj proizvoda koji se dohvaćaju za svaki kupljeni proizvod iz zadnje transakcije kupca.
Kao što vidimo, najbolji rezultat pokazuje konfiguracija s k=4. Nagli skok u četvrtom tjednu može se objasniti sezonskim ponašanjem oko praznika. 

Slični proizvodi kupcima, prema karakteristikama izgrađenim od različitih modela

Sada smo došli do najtežeg i najzanimljivijeg dijela - traženja najbližih susjeda na temelju vektora kupaca i proizvoda izgrađenih prema različitim modelima. U našem radu koristimo 3 takva modela:

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

Već smo se bavili ALS-om, možete pročitati o tome kako uči здесь. U slučaju Word2Veca koristimo dobro poznatu implementaciju modela iz gensim. Po analogiji s tekstovima, ponudu definiramo kao račun za kupnju. Stoga, prilikom konstruiranja vektora proizvoda, model uči predvidjeti za proizvod na računu njegov “kontekst” (preostale proizvode na računu). U podacima o e-trgovini bolje je koristiti sesiju kupca umjesto računa; dečki iz Ozon. A DSSM je zanimljiviji za raščlanjivanje. U početku su ga napisali momci iz Microsofta kao model za pretraživanje, Izvorni istraživački rad možete pročitati ovdje. Arhitektura modela izgleda ovako:
Kako smo dramatično poboljšali kvalitetu preporuka u izvanmrežnoj maloprodaji

Ovdje Q — upit, korisnički upit za pretraživanje, D[i] — dokument, internet stranica. Ulaz u model su atributi zahtjeva odnosno stranice. Nakon svakog ulaznog sloja nalazi se niz potpuno povezanih slojeva (višeslojni perceptron). Zatim, model uči minimizirati kosinus između vektora dobivenih u zadnjim slojevima modela.
Zadaci preporuke koriste potpuno istu arhitekturu, samo je umjesto zahtjeva korisnik, a umjesto stranica proizvodi. A u našem slučaju, ova se arhitektura transformira u sljedeće:
Kako smo dramatično poboljšali kvalitetu preporuka u izvanmrežnoj maloprodaji

Sada, da bismo provjerili rezultate, ostaje pokriti posljednju točku - ako u slučaju ALS i DSSM imamo eksplicitno definirane korisničke vektore, onda u slučaju Word2Veca imamo samo vektore proizvoda. Ovdje smo za izgradnju korisničkog vektora definirali 3 glavna pristupa:

  1. Samo zbrojite vektore, a zatim za kosinusnu udaljenost ispada da smo jednostavno izračunali prosjek proizvoda u povijesti kupovine.
  2. Vektorsko zbrajanje s određenim vremenskim ponderiranjem.
  3. Vaganje robe s TF-IDF koeficijentom.

U slučaju linearnog ponderiranja vektora kupca, polazimo od hipoteze da proizvod koji je korisnik kupio jučer ima veći utjecaj na njegovo ponašanje od proizvoda koji je kupio prije šest mjeseci. Stoga uzimamo u obzir kupčev prethodni tjedan s izgledima 1, i ono što se dogodilo sljedeći s izgledima ½, ⅓ itd.:
Kako smo dramatično poboljšali kvalitetu preporuka u izvanmrežnoj 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 taj način će se vektor korisnika više pomaknuti prema rijetkoj robi, dok česta i kupcu poznata roba to neće puno promijeniti. Pristup se može ilustrirati ovako:
Kako smo dramatično poboljšali kvalitetu preporuka u izvanmrežnoj maloprodaji

Sada pogledajmo metriku. Ovako izgledaju rezultati ALS-a:
Kako smo dramatično poboljšali kvalitetu preporuka u izvanmrežnoj maloprodaji
Mjerne vrijednosti za Item2Vec s različitim varijantama konstrukcije vektora kupca:
Kako smo dramatično poboljšali kvalitetu preporuka u izvanmrežnoj maloprodaji
U ovom slučaju koristi se potpuno isti model kao u našoj osnovnoj liniji. Jedina je razlika koji k ćemo koristiti. Da biste koristili samo modele suradnje, morate uzeti oko 50-70 najbližih proizvoda za svakog kupca.

I metrika prema DSSM-u:
Kako smo dramatično poboljšali kvalitetu preporuka u izvanmrežnoj maloprodaji

Kako kombinirati sve metode?

Cool, reći ćete, ali što učiniti s tako velikim skupom alata za ekstrakciju kandidata? Kako odabrati optimalnu konfiguraciju za svoje podatke? Ovdje imamo nekoliko problema:

  1. Potrebno je nekako ograničiti prostor pretraživanja za hiperparametre u svakoj metodi. On je, naravno, svugdje diskretan, ali je broj mogućih točaka vrlo velik.
  2. Koristeći mali ograničeni uzorak specifičnih metoda s određenim hiperparametrima, kako možete odabrati najbolju konfiguraciju za svoju metriku?

Na prvo pitanje još nismo pronašli konačan točan odgovor, pa polazimo od sljedećeg: za svaku metodu napisan je graničnik prostora pretraživanja hiperparametara, ovisno o nekim statistikama podataka koje imamo. Dakle, znajući prosječno razdoblje između kupnji od ljudi, možemo pogoditi s kojim razdobljem koristiti metodu "što je već kupljeno" i "razdoblje davne kupnje".

I nakon što smo prošli kroz određeni odgovarajući broj varijacija različitih metoda, primjećujemo sljedeće: svaka implementacija izdvaja određeni broj kandidata i ima određenu vrijednost ključne metrike za nas (recall). Želimo dobiti ukupno određeni broj kandidata, ovisno o našoj dopuštenoj računskoj snazi, s najvećom mogućom metrikom. Ovdje se problem lijepo urušava u problem ruksaka.
Kako smo dramatično poboljšali kvalitetu preporuka u izvanmrežnoj maloprodaji

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

  • Metode se mogu preklapati u kandidatima koje dohvaćaju.
  • U nekim će slučajevima biti ispravno uzeti jednu metodu dva puta s različitim parametrima, a kandidatski izlaz iz prve neće biti podskup druge.

Na primjer, ako uzmemo implementaciju metode "što sam već kupio" s različitim intervalima za dohvaćanje, tada će njihovi skupovi kandidata biti ugniježđeni jedan u drugi. U isto vrijeme, različiti parametri u "periodičnim kupnjama" na izlazu ne daju potpuno raskrižje. Stoga pristupe uzorkovanja s različitim parametrima dijelimo u blokove tako da iz svakog bloka želimo uzeti najviše jedan pristup ekstrakcije s određenim hiperparametrima. Da biste to učinili, morate se malo dotjerati u implementaciju problema naprtnjače, ali asimptotika i rezultat se neće promijeniti.

Ova pametna kombinacija omogućuje nam da dobijemo sljedeće metrike u usporedbi s jednostavnim modelima suradnje:
Kako smo dramatično poboljšali kvalitetu preporuka u izvanmrežnoj maloprodaji
U konačnoj metrici vidimo sljedeću sliku:
Kako smo dramatično poboljšali kvalitetu preporuka u izvanmrežnoj maloprodaji

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

  1. Marža/promet na temelju osobnih preporuka.
  2. Prosječna provjera kupaca.
  3. Učestalost posjeta.

Stoga množimo dobivene vjerojatnosti s različitim koeficijentima i rerangiramo ih tako da produkti koji utječu na gornju metriku dođu na vrh. Ne postoji gotovo rješenje za to koji pristup je najbolje koristiti. Čak eksperimentiramo s takvim koeficijentima izravno u proizvodnji. Ali evo zanimljivih tehnika koje nam najčešće daju najbolje rezultate:

  1. Pomnožite s cijenom/maržom proizvoda.
  2. Pomnožite s prosječnim računom na kojem se proizvod pojavljuje. Tako će se pojaviti roba s kojom obično uzimaju nešto drugo.
  3. Pomnožite s prosječnom učestalošću posjeta kupaca ovom proizvodu, na temelju hipoteze da ovaj proizvod potiče 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 kvalitetu preporuka u izvanmrežnoj maloprodaji
Ovdje ukupna pretvorba 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 se ponašanje objašnjava činjenicom da se ne mogu svi dinamički filtri za proizvode koji se mogu preporučiti uzeti u obzir pri obučavanju modela. Za nas je normalna priča kada se polovica dohvaćenih kandidata može filtrirati; ta je specifičnost tipična za našu branšu.

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

Zaključno, želim reći da ako trebate preporuke koje nisu u stvarnom vremenu, tada se vrlo veliko povećanje kvalitete može pronaći u eksperimentima s izdvajanjem kandidata za preporuke. Velika količina vremena za njihovo generiranje omogućuje kombiniranje mnogih dobrih metoda, koje će ukupno dati izvrsne rezultate za poslovanje.

Bit će mi drago razgovarati u komentarima sa svima kojima je materijal zanimljiv. Pitanja mi možete postavljati osobno na telegram. Također dijelim svoja razmišljanja o umjetnoj inteligenciji/startupovima u svom telegram kanal — dobrodošli :)

Izvor: www.habr.com

Dodajte komentar