ProHoster > Blog > Amministrazione > Cume avemu migliuratu drasticamente a qualità di i cunsiglii in u retail offline
Cume avemu migliuratu drasticamente a qualità di i cunsiglii in u retail offline
Salut à tutti ! Mi chjamu Sasha, sò CTO & Co-Fundatore di LoyaltyLab. Dui anni fà, i mo amichi è eiu, cum'è tutti i studienti poveri, andavamu a sera à cumprà a biera in u magazinu più vicinu vicinu à a nostra casa. Eramu assai disgraziati chì u retailer, sapendu chì andemu per a birra, ùn offre micca un scontu nantu à patatine fritte o crackers, ancu s'ellu era cusì logicu ! Ùn avemu micca capitu perchè sta situazione era accadutu è decisu di inizià a nostra propria cumpagnia. Ebbè, cum'è un bonus, fatevi sconti ogni vennari nantu à quelli stessi chips.
È tuttu hè ghjuntu à u puntu induve aghju prisintatu materiale nantu à u latu tecnicu di u pruduttu NVIDIA GTC. Semu felici di sparte u nostru travagliu cù a cumunità, cusì publichemu u mo rapportu in forma d'articulu.
Introduzione
Cum'è tutti l'altri à l'iniziu di u viaghju, avemu principiatu cù una visione generale di cumu sò fatti i sistemi di ricunniscenza. È l'architettura più pupulare hè stata a seguente:
Hè custituitu di dui parti:
Campioni di candidati per cunsiglii utilizendu un mudellu simplice è veloce, di solitu un cullaburazione.
Classificazione di i candidati cù un mudellu di cuntenutu più cumplessu è lento, tenendu in contu tutte e funziunalità pussibuli in i dati.
In seguitu, aduprà i seguenti termini:
candidatu / candidatu per i cunsiglii - una coppia utente-prodottu chì puderia esse inclusa in i cunsiglii in a produzzione.
estrazione di candidati/estrattore/metudu di estrazione di candidati - un prucessu o metudu per estrazione "candidati di ricunniscenza" da e dati dispunibili.
U primu passu generalmente implica l'usu di diverse variazioni di filtrazione cullaburazione. I più populari - ALS. Hè stupente chì a maiò parte di l'articuli nantu à i sistemi di ricunniscenza revelanu solu diversi miglioramenti à i mudelli di cullaburazione in u primu stadiu, ma nimu ùn parla assai di altri metudi di campionamentu. Per noi, l'approcciu d'utilizà solu mudelli di cullaburazione è diverse ottimisazioni cun elli ùn hà micca travagliatu cù a qualità chì avemu aspittatu, cusì avemu scavatu in a ricerca specificamente in questa parte. È à a fine di l'articulu vi mustraraghju quantu avemu pussutu migliurà ALS, chì era a nostra basa.
Prima di passà à descrizzione di u nostru approcciu, hè impurtante nutà chì in i cunsiglii in tempu reale, quandu hè impurtante per noi di piglià in contu i dati chì sò accaduti 30 minuti fà, ùn ci sò micca veramente assai approcci chì ponu travaglià in u tempu necessariu. Ma, in u nostru casu, avemu da cullà cunsiglii micca più di una volta à ghjornu, è in a maiò parte di i casi - una volta à settimana, chì ci dà l'uppurtunità di utilizà mudelli cumplessi è migliurà a qualità in parechje volte.
Pigliemu cum'è una basa di ciò chì e metriche solu ALS mostra nantu à u compitu di estrazione di candidati. I metrichi chjave chì monitoremu sò:
Precisione - a proporzione di candidati scelti currettamente da i campionati.
U ricurdamentu hè a proporzione di candidati chì sò accaduti fora di quelli chì in realtà eranu in l'intervallu di destinazione.
F1-score - F-misura calculata nantu à i dui punti precedenti.
Fighjemu ancu e metriche di u mudellu finali dopu à l'incrementu di gradiente di furmazione cù funzioni di cuntenutu supplementari. Ci sò ancu 3 metriche principali quì:
precisione @ 5 - u percentuale mediu di i prudutti da u top 5 in termini di probabilità per ogni cumpratore.
response-rate@5 - cunversione di i clienti da una visita à a tenda à l'acquistu di almenu una offerta persunale (5 prudutti in una offerta).
avg roc-auc per utilizatore - mediu roc-auc per ogni cumpratore.
Hè impurtante à nutà chì tutti sti metrichi sò misurati validazione incrociata di serie temporale, vale à dì, a furmazione si faci in i primi k simane, è k + 1 settimana hè presa cum'è dati di prova. Cusì, l'altitudine di staggione hà avutu un impattu minimu in l'interpretazione di a qualità di i mudelli. In più nantu à tutti i grafici, l'assi di l'abscissa indicà u numeru di a settimana in validazione incruciata, è l'assi d'ordinate indicà u valore di a metrica specifica. Tutti i grafici sò basati nantu à e dati di transazzione da un cliente in modu chì i paraguni trà l'altri sò curretti.
Prima di principià à descriverà u nostru approcciu, prima fighjemu a linea di basa, chì hè un mudellu furmatu da ALS.
Metriche di ricuperazione di i candidati:
Metri finali:
Trattu tutte l'implementazioni di l'algoritmi cum'è un tipu di ipotesi cummerciale. Cusì, assai apprussimatamente, qualsiasi mudellu di cullaburazione pò esse cunsideratu cum'è una ipotesi chì "a ghjente tende à cumprà ciò chì e persone simili à elli cumprà". Cumu l'aghju digià dettu, ùn avemu micca limitatu à una tale semantica, è eccu alcune ipotesi chì funzionanu bè nantu à e dati in vendita offline:
Chì aghju digià compru prima.
Simile à ciò chì aghju compru prima.
Periudu di una compra longa passata.
Populare per categuria / marca.
Cumprate alternate di diverse merchenzie da settimana à settimana (catene Markov).
Prudutti simili à i cumpratori, secondu e caratteristiche custruite da parechji mudelli (Word2Vec, DSSM, etc.).
Chì avete cumpratu prima?
L'euristica più ovvia chì travaglia assai bè in l'alimentazione. Quì avemu pigliatu tutti i beni chì u titulare di a carta di fideltà hà acquistatu in l'ultimi K ghjorni (di solitu 1-3 settimane), o K ghjorni un annu fà. Appliendu solu stu metudu, uttene e seguenti metriche:
Quì hè abbastanza evidenti chì u più longu u piriudu, u più ricurdamentu avemu è menu precisione avemu è vice versa. In media, "l'ultime 2 settimane" dà risultati megliu per i clienti.
Simile à ciò chì aghju compru prima
Ùn hè micca surprisante chì per l'alimentariu "ciò chì aghju compru prima" funziona bè, ma l'estrazione di i candidati solu da ciò chì l'utilizatore hà digià compru ùn hè micca assai cool, perchè hè improbabile di sorprenderà u cumpratore cù un novu pruduttu. Dunque, prupunemu di migliurà ligeramente sta euristica utilizendu i stessi mudelli di cullaburazione. Da i vettori chì avemu ricevutu durante a furmazione ALS, pudemu uttene prudutti simili à ciò chì l'utilizatore hà digià acquistatu. Questa idea hè assai simili à "video simili" in servizii per vede u cuntenutu video, ma postu chì ùn sapemu micca ciò chì l'utilizatore manghja / cumprà in un mumentu particulari, pudemu solu circà quelli simili à ciò chì hà digià compru, soprattuttu. postu ch'è no Sapemu digià cumu si travaglia. Appliendu stu metudu nantu à e transazzioni di l'utilizatori in l'ultime 2 settimane, uttene e seguenti metriche:
hè k - u numeru di prudutti simili chì sò recuperati per ogni pruduttu acquistatu da u cumpratore in l'ultimi 14 ghjorni.
Stu approcciu hà travagliatu soprattuttu bè per u nostru cliente, per quale era criticu per ùn ricumandà nunda chì era digià in a storia di compra di l'utilizatori.
Periudu di compra tardi
Cumu avemu digià scupertu, per via di l'alta freccia di compra di merchenzie, u primu approcciu funziona bè per i nostri bisogni specifichi. Ma chì ne di e merchenzie cum'è lavà in polvere / shampoo / ecc. Questu hè, cù prudutti chì ùn sò micca prubabilmente necessariu ogni settimana o duie è chì i metudi previ ùn ponu micca estratti. Questu porta à a seguente idea - hè prupostu di calculà u periodu di compra di ogni pruduttu in media per i clienti chì anu acquistatu u pruduttu più. k una volta. E poi estratti ciò chì u cumpratore più prubabilmente hà digià scappatu. I periodi calculati per e merchenzie ponu esse verificati cù i vostri ochji per l'adeguatezza:
E poi guardemu se a fine di u periodu di u produttu cade in l'intervallu di tempu quandu i cunsiglii seranu in produzzione è mostra ciò chì succede. L'approcciu pò esse illustratu cusì:
Quì avemu 2 casi principali chì ponu esse cunsideratu:
Hè necessariu di campionà i prudutti di i clienti chì anu compru u pruduttu menu di K volte.
Hè necessariu di tastà un pruduttu se a fine di u so periodu cade prima di u principiu di l'intervallu di destinazione.
U graficu seguente mostra i risultati chì stu metudu ottene cù iperparametri diffirenti:
ft - Pigliate solu i clienti chì anu compru u pruduttu almenu K (qui K=5) volte tm - Pigliate solu i candidati chì cadenu in l'intervallu di destinazione
Ùn hè micca surprisante ch'ellu sia capace (0, 0) u più grande richiamari è u più chjucu precisione, postu chì sottu sta cundizione i più candidati sò recuperati. Tuttavia, i megliu risultati sò ottenuti quandu ùn avemu micca campionamentu di i prudutti per i clienti chì anu compru un pruduttu particulare menu di k volte è estratti, cumpresi merchenzie, a fine di u periodu di quale casca prima di l'intervallu di destinazione.
Popular per categuria
Un'altra idea abbastanza ovvia hè di tastà i prudutti populari in diverse categurie o marche. Quì avemu calculatu per ogni cumpratore cima-k categurie / marche "preferite" è estrae "populare" da questa categuria / marca. In u nostru casu, determineremu "preferitu" è "populare" da u numeru di compra di u pruduttu. Un vantaghju supplementu di questu approcciu hè a so applicabilità in u casu di partenza à u friddu. Vale à dì, per i clienti chì anu fattu assai pochi acquisti, o ùn sò micca stati in a tenda per un bellu pezzu, o anu appena emessu una carta di fideltà. Per elli, hè più faciule è megliu d'almacenà articuli chì sò populari cù i clienti è avè una storia. I metrici risultanti sò:
Quì u numeru dopu a parolla "categoria" significa u livellu di nidificazione di a categuria.
In generale, ùn hè micca surprisante chì e categurie più strette ottene risultati megliu, postu chì estrae prudutti "preferiti" più precisi per i cumpratori.
Cumprate alternate di diversi beni da settimana à settimana
Un accostu interessante chì ùn aghju micca vistu in articuli nantu à i sistemi di ricunniscenza hè un metudu statisticu abbastanza simplice è à u stessu tempu di travagliu di catene Markov. Quì pigliamu 2 settimane diverse, dopu per ogni cliente custruemu coppie di prudutti [accattu in a settimana i]-[accattu in a settimana j], induve j > i, è da quì calculemu per ogni pruduttu a probabilità di cambià à un altru pruduttu a settimana dopu. Questu hè, per ogni paru di merchenzie produttu-produttu j Cuntamu u so numeru in i pariglii truvati è dividite da u numeru di pariglii, induve prudutti era in a prima settimana. Per caccià i candidati, pigliamu l'ultima ricevuta di u cumpratore è estrae cima-k u più prubabile prubabile prossime prudutti da a matrice di transizione avemu ricevutu. U prucessu di custruisce una matrice di transizione hè cusì:
Da esempi reali in a matrice di probabilità di transizione vedemu i seguenti fenomeni interessanti:
Quì pudete vede dipendenze interessanti chì sò revelati in u cumpurtamentu di u cunsumadore: per esempiu, l'amatori di l'agrumi o una marca di latti da quale sò prubabilmente cambià à un altru. Ùn hè micca surprisante chì i prudutti cù una freccia alta di compra ripetuta, cum'è u burro, finiscinu ancu quì.
I metrichi in u metudu cù catene di Markov sò i seguenti:
k - u numeru di prudutti chì sò ricuperati per ogni pruduttu acquistatu da l'ultima transazzione di u cumpratore.
Comu pudemu vede, u megliu risultatu hè mostratu da a cunfigurazione cù k = 4. U spike in a settimana 4 pò esse spiegatu da u cumpurtamentu staggione intornu à e vacanze.
Prodotti simili à i cumpratori, secondu e caratteristiche custruite da mudelli diffirenti
Avà avemu ghjuntu à a parte più difficiuli è interessanti - a ricerca di i vicini più vicini nantu à i vettori di i clienti è i prudutti custruiti secondu parechji mudelli. In u nostru travagliu avemu aduprà 3 tali mudelli:
ALS
Word2Vec (Item2Vec per tali compiti)
DSSM
Avemu digià trattatu di l'ALS, pudete leghje cumu si impara ccà. In u casu di Word2Vec, usemu l'implementazione ben cunnisciuta di u mudellu da gensim. Per analogia cù i testi, definiscemu l'offerta cum'è una ricevuta di compra. Cusì, quandu custruisce un vettore di produttu, u mudellu ampara à predichendu u pruduttu in u ricivutu u so "cuntestu" (i prudutti rimanenti in u ricivutu). In i dati di ecommerce, hè megliu aduprà a sessione di u cumpratore invece di una ricevuta; i ragazzi di Ozon. È DSSM hè più interessante per analizà. Inizialmente, hè statu scrittu da i ragazzi di Microsoft cum'è un mudellu per a ricerca, Pudete leghje u documentu di ricerca originale quì. L'architettura di u mudellu s'assumiglia cusì:
hè Q - dumanda, dumanda di ricerca di l'utilizatori, D[i] - documentu, pagina internet. L'input à u mudellu hè l'attributi di a dumanda è e pagine, rispettivamente. Dopu à ogni strata di input ci sò una quantità di strati cumpletamente cunnessi (perceptron multilayer). Dopu, u mudellu ampara à minimizzà u cosenu trà i vettori ottenuti in l'ultimi strati di u mudellu.
I travaglii di ricunniscenza utilizanu esattamente a stessa architettura, solu invece di una dumanda ci hè un utilizatore, è invece di pagine ci sò prudutti. È in u nostru casu, sta architettura hè trasfurmata in i seguenti:
Avà, per verificà i risultati, resta per copre l'ultimu puntu - se in u casu di ALS è DSSM avemu definitu esplicitamente vettori d'utilizatori, allora in u casu di Word2Vec avemu solu vettori di produttu. Quì, per custruisce u vettore di l'utilizatori, avemu definitu 3 approcci principali:
Solu aghjunghje i vettori, allora per a distanza di cosenu risulta chì simpricimenti facemu una media di i prudutti in a storia di compra.
Somma di vettore cù qualchì ponderazione di u tempu.
Pisà e merchenzie cù u coefficient TF-IDF.
In u casu di ponderazione lineale di u vettore di u cumpratore, procedemu da l'ipotesi chì u pruduttu chì l'utilizatore hà compru ieri hà una influenza più grande in u so cumpurtamentu cà u pruduttu chì hà compru sei mesi fà. Allora cunsideremu a settimana precedente di u cumpratore cù probabilità di 1, è ciò chì successe dopu cù probabilità di ½, ⅓, etc.:
Per i coefficienti TF-IDF, facemu esattamente u listessu cum'è in TF-IDF per i testi, solu avemu cunsideratu u cumpratore cum'è un documentu, è u verificatu cum'è una offerta, rispettivamente, a parolla hè un pruduttu. In questu modu, u vettore di l'utilizatore si moverà più versu i merchenzie rari, mentre chì e merchenzie frequenti è familiari per u cumpratore ùn cambianu micca assai. L'approcciu pò esse illustratu cusì:
Avà fighjemu a metrica. Eccu ciò chì i risultati ALS pareanu:
Metriche per Item2Vec cù diverse variazioni di a custruzzione di u vettore di cumpratori:
In questu casu, esattamente u listessu mudellu hè utilizatu cum'è in a nostra basa. A sola diferenza hè chì k avemu aduprà. Per utilizà solu mudelli di cullaburazione, avete da piglià circa 50-70 prudutti più vicini per ogni cliente.
E metriche secondu DSSM:
Cumu unisce tutti i metudi?
Cool, dite, ma chì fà cù un tali grande settore di strumenti di estrazione di candidati? Cumu sceglie a cunfigurazione ottima per i vostri dati? Quì avemu parechji prublemi:
Hè necessariu di limità in qualchì modu u spaziu di ricerca per iperparametri in ogni metudu. Hè, sicuru, discretu in ogni locu, ma u numeru di punti pussibuli hè assai grande.
Utilizendu una piccula mostra limitata di metudi specifichi cù iperparametri specifichi, cumu pudete selezziunate a megliu cunfigurazione per a vostra metrica?
Ùn avemu micca trovu una risposta definitivamente curretta à a prima quistione, cusì procedemu da u seguente: per ogni metudu, un limitatore di spaziu di ricerca iperparametru hè scrittu, secondu alcune statistiche nantu à e dati chì avemu. Cusì, sapendu u periodu mediu trà e compra da e persone, pudemu guessà cù quale periodu per utilizà u metudu "ciò chì hè digià statu compru" è "periodu di una compra longa passata".
È dopu avè passatu per un certu nùmeru adattatu di variazioni di metudi diffirenti, avemu nutatu i seguenti: ogni implementazione extracts un certu nùmeru di candidati è hà un certu valore di a metrica chjave per noi (ricordu). Vulemu ottene un totale di un certu numaru di candidati, secondu a nostra putenza di computazione permessa, cù a metrica più altu pussibule. Quì u prublema bellissima collapses in u prublema di backpack.
Quì u numeru di candidati hè u pesu di u lingotti, è u metudu di ricurdà hè u so valore. Tuttavia, ci sò 2 punti più chì deve esse cunsideratu quandu implementate l'algoritmu:
I metudi ponu esse sovrapposti in i candidati chì ricuperanu.
In certi casi, serà currettu per piglià un metudu duie volte cù diversi paràmetri, è l'output candidatu da u primu ùn serà micca un subset di u sicondu.
Per esempiu, se pigghiamu l'implementazione di u metudu "ciò chì aghju digià compru" cù intervalli diffirenti per a ricuperazione, allora i so setti di candidati seranu nidificati in l'altri. À u listessu tempu, diversi paràmetri in "acquisti periodichi" à a surtita ùn furnisce micca intersezzione cumpleta. Dunque, dividemu l'approcciu di campionamentu cù diversi paràmetri in blocchi cusì chì da ogni bloccu vulemu piglià à u massimu un approcciu di estrazione cù iperparametri specifichi. Per fà questu, avete bisognu di un pocu intelligente in l'implementazione di u prublema di u saccu, ma l'asintotichi è u risultatu ùn cambianu micca.
Questa cumminazione intelligente ci permette di ottene e seguenti metriche in paragone cù mudelli simplici cullaburatori:
In i metrichi finali vedemu a seguente stampa:
Tuttavia, quì pudete nutà chì ci hè un puntu scupertu per i cunsiglii utili per l'affari. Avà avemu appena amparatu cumu fà un grande travagliu di predichendu ciò chì l'utilizatore cumprà, per esempiu, a settimana prossima. Ma solu dà un scontu nantu à qualcosa chì hà digià cumprà ùn hè micca assai cool. Ma hè bellu di maximizà l'aspettativa, per esempiu, di e seguenti metriche:
Margine / fattura basatu nantu à cunsiglii persunali.
Cuntrolla media di u cliente.
Frequenza di visite.
Allora multiplichemu e probabilità ottenute da diversi coefficienti è reclassificate in modu chì i prudutti chì affettanu i metrici sopra ghjunghjenu à a cima. Ùn ci hè micca una suluzione pronta per quale approcciu hè megliu aduprà. Avemu ancu sperimentà tali coefficienti direttamente in a produzzione. Ma quì sò tecnichi interessanti chì u più spessu ci danu u megliu risultati:
Multiplicà per u prezzu / marghjenu di u pruduttu.
Multiplicate da a ricevuta media in quale u pruduttu appare. Allora e merchenzie veneranu, cù quale generalmente piglianu qualcosa altru.
Multiplicà per a freccia media di visiti da i cumpratori di stu pruduttu, basatu annantu à l'ipotesi chì stu pruduttu pruvucarà a ghjente per vultà più spessu.
Dopu avè realizatu esperimenti cù coefficienti, avemu ottenutu e seguenti metriche in a produzzione:
hè cunversione generale di i prudutti - a parte di i prudutti acquistati fora di tutti i prudutti in i cunsiglii chì avemu generatu.
U lettore attentu notarà una diferenza significativa trà e metriche offline è online. Stu cumpurtamentu hè spiegatu da u fattu chì micca tutti i filtri dinamichi per i prudutti chì ponu esse ricumandati ponu esse cunsideratu quandu u furmatu di u mudellu. Per noi, hè una storia normale quandu a mità di i candidati recuperati ponu esse filtrati; sta specificità hè tipica in a nostra industria.
In termini di rivenuti, a storia seguente hè ottenuta, hè chjaru chì dopu à u lanciu di i cunsiglii, i rivenuti di u gruppu di teste sò in forte crescita, avà l'aumentu mediu di i rivenuti cù i nostri cunsiglii hè di 3-4%:
In cunclusioni, vogliu dì chì sè avete bisognu di cunsiglii in tempu reale, allora un incrementu assai grande di qualità pò esse truvatu in esperimenti cù l'estrazione di candidati per i cunsiglii. Una grande quantità di tempu per a so generazione permette di cumminà assai boni metudi, chì in tuttu darà grandi risultati per l'affari.
Seraghju cuntentu di chatter in i cumenti cù qualcunu chì trova u materiale interessante. Pudete dumandà mi dumande personalmente à telegram. I sparte ancu i mo pinsamenti nantu à AI / startups in u mo canale di telegram - Benvenuti :)