Come abbiamo migliorato notevolmente la qualità dei consigli nella vendita al dettaglio offline

Ciao a tutti! Mi chiamo Sasha, sono CTO e co-fondatore di LoyaltyLab. Due anni fa, io e i miei amici, come tutti gli studenti poveri, andavamo la sera a comprare la birra nel negozio più vicino a casa nostra. Eravamo molto dispiaciuti che il rivenditore, sapendo che saremmo venuti a prendere la birra, non avesse offerto uno sconto su patatine o cracker, anche se era così logico! Non capivamo perché si stesse verificando questa situazione e abbiamo deciso di avviare la nostra azienda. Bene, come bonus, concediti sconti ogni venerdì su quelle stesse fiches.

Come abbiamo migliorato notevolmente la qualità dei consigli nella vendita al dettaglio offline

E tutto è arrivato al punto in cui presento materiale sul lato tecnico del prodotto Condizioni generali NVIDIA. Siamo felici di condividere il nostro lavoro con la comunità, quindi pubblico il mio rapporto sotto forma di articolo.

Introduzione

Come tutti gli altri all'inizio del viaggio, abbiamo iniziato con una panoramica di come vengono realizzati i sistemi di raccomandazione. E l'architettura più popolare si è rivelata essere il seguente tipo:
Come abbiamo migliorato notevolmente la qualità dei consigli nella vendita al dettaglio offline

Si compone di due parti:

  1. Campionamento dei candidati per raccomandazioni utilizzando un modello semplice e veloce, solitamente collaborativo.
  2. Classifica dei candidati con un modello di contenuto più complesso e lento, tenendo conto di tutte le possibili caratteristiche dei dati.

Di seguito utilizzerò i seguenti termini:

  • candidato/candidato per raccomandazioni — una coppia utente-prodotto che potrebbe potenzialmente essere inclusa nelle raccomandazioni in produzione.
  • metodo di estrazione dei candidati/estrattore/estrazione dei candidati — un processo o un metodo per estrarre i “candidati alla raccomandazione” dai dati disponibili.

Il primo passaggio di solito prevede l'utilizzo di diverse varianti del filtro collaborativo. Il più popolare - SLA. È sorprendente che la maggior parte degli articoli sui sistemi di raccomandazione rivelino solo vari miglioramenti ai modelli collaborativi nella prima fase, ma nessuno parli molto di altri metodi di campionamento. Per noi, l'approccio di utilizzare solo modelli collaborativi e varie ottimizzazioni con essi non ha funzionato con la qualità che ci aspettavamo, quindi abbiamo approfondito la ricerca specificatamente su questa parte. E alla fine dell'articolo mostrerò quanto siamo riusciti a migliorare la SLA, che era il nostro punto di riferimento.

Prima di passare a descrivere il nostro approccio, è importante notare che nelle raccomandazioni in tempo reale, quando è importante per noi prendere in considerazione i dati verificatisi 30 minuti fa, in realtà non ci sono molti approcci che possono funzionare nel tempo richiesto. Ma nel nostro caso dobbiamo raccogliere raccomandazioni non più di una volta al giorno e, nella maggior parte dei casi, una volta alla settimana, il che ci dà l'opportunità di utilizzare modelli complessi e migliorare notevolmente la qualità.

Prendiamo come base le metriche che solo l’ALS mostra nell’attività di estrazione dei candidati. I parametri chiave che monitoriamo sono:

  • Precisione: la proporzione di candidati correttamente selezionati tra quelli campionati.
  • Il richiamo è la percentuale di candidati che si sono verificati rispetto a quelli che effettivamente si trovavano nell'intervallo target.
  • Punteggio F1 - Misura F calcolata sui due punti precedenti.

Esamineremo anche le metriche del modello finale dopo aver addestrato il potenziamento del gradiente con funzionalità di contenuto aggiuntive. Ci sono anche 3 parametri principali qui:

  • precisione@5 - la percentuale media di prodotti tra i primi 5 in termini di probabilità per ciascun acquirente.
  • tasso di risposta@5 - conversione dei clienti dalla visita in negozio all'acquisto di almeno un'offerta personale (5 prodotti in un'unica offerta).
  • avg roc-auc per utente - media roc-auc per ciascun acquirente.

È importante notare che tutti questi parametri vengono misurati validazione incrociata di serie temporali, ovvero l'addestramento avviene nelle prime k settimane e k+1 settimana viene presa come dati di test. Pertanto, gli alti e bassi stagionali hanno avuto un impatto minimo sull’interpretazione della qualità dei modelli. Inoltre su tutti i grafici, l'asse delle ascisse indicherà il numero della settimana nella convalida incrociata e l'asse delle ordinate indicherà il valore della metrica specificata. Tutti i grafici si basano sui dati delle transazioni di un cliente in modo che i confronti tra loro siano corretti.

Prima di iniziare a descrivere il nostro approccio, esaminiamo innanzitutto la linea di base, che è un modello addestrato all’ALS.
Metriche di recupero dei candidati:
Come abbiamo migliorato notevolmente la qualità dei consigli nella vendita al dettaglio offline

Metriche finali:
Come abbiamo migliorato notevolmente la qualità dei consigli nella vendita al dettaglio offline

Tratto tutte le implementazioni degli algoritmi come una sorta di ipotesi di business. Pertanto, in modo molto approssimativo, qualsiasi modello collaborativo può essere considerato come un’ipotesi secondo cui “le persone tendono a comprare ciò che comprano persone simili a loro”. Come ho già detto, non ci siamo limitati a tale semantica, ed ecco alcune ipotesi che funzionano bene sui dati nella vendita al dettaglio offline:

  1. Che ho già comprato prima.
  2. Simile a quello che avevo comprato prima.
  3. Periodo di un acquisto ormai passato da tempo.
  4. Popolare per categoria/marca.
  5. Acquisti alternati di beni diversi di settimana in settimana (catene di Markov).
  6. Prodotti simili agli acquirenti, in base alle caratteristiche costruiti da diversi modelli (Word2Vec, DSSM, ecc.).

Cosa hai comprato prima?

L’euristica più ovvia che funziona molto bene nella vendita al dettaglio di generi alimentari. Qui prendiamo tutti i beni che il titolare della carta fedeltà ha acquistato negli ultimi K giorni (di solito 1-3 settimane) o K giorni un anno fa. Applicando solo questo metodo, otteniamo le seguenti metriche:
Come abbiamo migliorato notevolmente la qualità dei consigli nella vendita al dettaglio offline

Qui è abbastanza ovvio che più lungo prendiamo il periodo, più ricordo abbiamo e meno precisione abbiamo e viceversa. In media, le “ultime 2 settimane” danno risultati migliori per i clienti.

Simile a quello che avevo comprato prima

Non sorprende che per la vendita al dettaglio di generi alimentari “quello che ho comprato prima” funzioni bene, ma estrarre candidati solo da ciò che l’utente ha già acquistato non è molto interessante, perché è improbabile che sorprenda l’acquirente con qualche nuovo prodotto. Pertanto, proponiamo di migliorare leggermente questa euristica utilizzando gli stessi modelli collaborativi. Dai vettori che abbiamo ricevuto durante la formazione ALS, possiamo ottenere prodotti simili a quelli che l'utente ha già acquistato. Questa idea è molto simile ai “video simili” nei servizi per la visualizzazione di contenuti video, ma poiché non sappiamo cosa sta mangiando/comprando l'utente in un determinato momento, possiamo solo cercarne di simili a ciò che ha già acquistato, in particolare poiché sappiamo già come funziona. Applicando questo metodo alle transazioni degli utenti nelle ultime 2 settimane, otteniamo le seguenti metriche:
Come abbiamo migliorato notevolmente la qualità dei consigli nella vendita al dettaglio offline

Qui k — il numero di prodotti simili recuperati per ciascun prodotto acquistato dall'acquirente negli ultimi 14 giorni.
Questo approccio ha funzionato particolarmente bene per il nostro cliente, per il quale era fondamentale non consigliare nulla che fosse già presente nella cronologia degli acquisti dell'utente.

Periodo di acquisto tardivo

Come abbiamo già scoperto, a causa dell'elevata frequenza di acquisto di beni, il primo approccio funziona bene per le nostre esigenze specifiche. Ma per quanto riguarda beni come detersivo/shampoo/ecc. Cioè con prodotti che difficilmente saranno necessari ogni settimana o due e che i metodi precedenti non sono in grado di estrarre. Ciò porta alla seguente idea: si propone di calcolare in media il periodo di acquisto di ciascun prodotto per i clienti che hanno acquistato più volte il prodotto k una volta. E poi estrai ciò che molto probabilmente l'acquirente ha già esaurito. I periodi calcolati per le merci possono essere verificati personalmente per verificarne l'adeguatezza:
Come abbiamo migliorato notevolmente la qualità dei consigli nella vendita al dettaglio offline

Poi esamineremo se la fine del periodo del prodotto rientra nell'intervallo di tempo in cui le raccomandazioni saranno in produzione e proveremo cosa succede. L’approccio può essere illustrato in questo modo:
Come abbiamo migliorato notevolmente la qualità dei consigli nella vendita al dettaglio offline

Qui abbiamo 2 casi principali che possono essere considerati:

  1. È necessario campionare prodotti da clienti che hanno acquistato il prodotto meno di K volte.
  2. È necessario campionare un prodotto se la fine del suo periodo cade prima dell'inizio dell'intervallo target.

Il grafico seguente mostra i risultati che questo metodo ottiene con diversi iperparametri:
Come abbiamo migliorato notevolmente la qualità dei consigli nella vendita al dettaglio offline
ft — Prendi solo i clienti che hanno acquistato il prodotto almeno K (qui K=5) volte
tm — Prendi solo i candidati che rientrano nell'intervallo target

Non sorprende che ne sia capace (0, 0) il più grande ricordare e il più piccolo precisione, poiché in questa condizione viene recuperata la maggior parte dei candidati. Tuttavia, i risultati migliori si ottengono quando non campioniamo i prodotti per i clienti che hanno acquistato un determinato prodotto per meno di k tempi ed estratto, compresi i beni, la cui fine del periodo cade prima dell'intervallo obiettivo.

Popolare per categoria

Un’altra idea abbastanza ovvia è quella di assaggiare prodotti popolari di diverse categorie o marchi. Qui calcoliamo per ciascun acquirente top-k categorie/marchi “preferiti” ed estrarre “popolare” da questa categoria/marchio. Nel nostro caso, determineremo “preferito” e “popolare” in base al numero di acquisti del prodotto. Un ulteriore vantaggio di questo approccio è la sua applicabilità nel caso di avviamento a freddo. Cioè per i clienti che hanno fatto pochissimi acquisti, o non sono stati in negozio per molto tempo, o hanno appena emesso una carta fedeltà. Per loro, è più semplice ed efficace immagazzinare articoli apprezzati dai clienti e che hanno una storia. Le metriche risultanti sono:
Come abbiamo migliorato notevolmente la qualità dei consigli nella vendita al dettaglio offline
Qui il numero dopo la parola “categoria” indica il livello di nidificazione della categoria.

Nel complesso, non sorprende nemmeno che categorie più ristrette ottengano risultati migliori, poiché estraggono prodotti “preferiti” più accurati per gli acquirenti.

Acquisti alternativi di beni diversi di settimana in settimana

Un approccio interessante che non ho visto negli articoli sui sistemi di raccomandazione è un metodo statistico delle catene di Markov abbastanza semplice e allo stesso tempo funzionante. Qui prendiamo 2 settimane diverse, poi per ogni cliente costruiamo coppie di prodotti [comprato nella settimana i]-[comprato nella settimana j], dove j > i, e da qui calcoliamo per ciascun prodotto la probabilità di passare ad un altro prodotto la prossima settimana. Cioè, per ogni coppia di beni prodotto-prodottoj Contiamo il loro numero nelle coppie trovate e dividiamo per il numero di coppie, dove produzione era nella prima settimana. Per estrarre i candidati, prendiamo l’ultima ricevuta dell’acquirente ed estraiamo top-k i prossimi prodotti più probabili dalla matrice di transizione che abbiamo ricevuto. Il processo di costruzione di una matrice di transizione è simile al seguente:
Come abbiamo migliorato notevolmente la qualità dei consigli nella vendita al dettaglio offline

Da esempi reali nella matrice delle probabilità di transizione vediamo i seguenti fenomeni interessanti:
Come abbiamo migliorato notevolmente la qualità dei consigli nella vendita al dettaglio offline
Qui puoi notare dipendenze interessanti che si rivelano nel comportamento dei consumatori: ad esempio, gli amanti degli agrumi o di una marca di latte dalla quale probabilmente passeranno a un'altra. Non sorprende nemmeno che finiscano qui anche prodotti con un'alta frequenza di acquisti ripetuti, come il burro.

Le metriche nel metodo con catene di Markov sono le seguenti:
Come abbiamo migliorato notevolmente la qualità dei consigli nella vendita al dettaglio offline
k — il numero di prodotti recuperati per ciascun prodotto acquistato dall'ultima transazione dell'acquirente.
Come possiamo vedere, il risultato migliore è mostrato dalla configurazione con k=4. Il picco nella settimana 4 può essere spiegato dal comportamento stagionale durante le festività. 

Prodotti simili agli acquirenti, in base alle caratteristiche costruiti da diversi modelli

Ora siamo arrivati ​​​​alla parte più difficile e interessante: la ricerca dei vicini più vicini in base ai vettori dei clienti e dei prodotti costruiti secondo vari modelli. Nel nostro lavoro utilizziamo 3 di questi modelli:

  • SLA
  • Word2Vec (Item2Vec per tali compiti)
  • DSSM

Ci siamo già occupati della SLA, potete leggere come apprende qui. Nel caso di Word2Vec utilizziamo la nota implementazione del modello from gensim. Per analogia con i testi, definiamo l'offerta come una ricevuta d'acquisto. Pertanto, quando si costruisce un vettore di prodotto, il modello impara a prevedere per il prodotto nella ricevuta il suo “contesto” (i prodotti rimanenti nella ricevuta). Nei dati di e-commerce, è meglio utilizzare la sessione dell’acquirente anziché una ricevuta; i ragazzi di Ozono. E DSSM è più interessante da analizzare. Inizialmente, è stato scritto dai ragazzi di Microsoft come modello per la ricerca, Puoi leggere il documento di ricerca originale qui. L'architettura del modello è simile alla seguente:
Come abbiamo migliorato notevolmente la qualità dei consigli nella vendita al dettaglio offline

Qui Q — query, query di ricerca dell'utente, D[i] — documento, pagina internet. L'input per il modello sono rispettivamente gli attributi della richiesta e delle pagine. Dopo ogni strato di input ci sono un numero di strati completamente connessi (percettrone multistrato). Successivamente, il modello impara a minimizzare il coseno tra i vettori ottenuti negli ultimi strati del modello.
Le attività di raccomandazione utilizzano esattamente la stessa architettura, solo che al posto della richiesta c'è un utente e al posto delle pagine ci sono i prodotti. E nel nostro caso, questa architettura si trasforma nella seguente:
Come abbiamo migliorato notevolmente la qualità dei consigli nella vendita al dettaglio offline

Ora, per verificare i risultati, resta da trattare l'ultimo punto: se nel caso di ALS e DSSM abbiamo definito esplicitamente i vettori utente, nel caso di Word2Vec abbiamo solo i vettori prodotto. Qui, per costruire il vettore utente, abbiamo definito 3 approcci principali:

  1. Basta aggiungere i vettori, quindi per la distanza coseno risulta che abbiamo semplicemente calcolato la media dei prodotti nella cronologia degli acquisti.
  2. Somma vettoriale con una certa ponderazione temporale.
  3. Pesatura di merci con coefficiente TF-IDF.

Nel caso della ponderazione lineare del vettore acquirente, si parte dall'ipotesi che il prodotto acquistato ieri dall'utente abbia un'influenza maggiore sul suo comportamento rispetto al prodotto acquistato sei mesi fa. Quindi consideriamo la settimana precedente dell’acquirente con quota 1, e quello che è successo dopo con quote ½, ⅓, ecc.:
Come abbiamo migliorato notevolmente la qualità dei consigli nella vendita al dettaglio offline

Per i coefficienti TF-IDF facciamo esattamente lo stesso che per TF-IDF per i testi, solo che consideriamo rispettivamente l'acquirente come un documento e l'assegno come un'offerta, la parola è un prodotto. In questo modo, il vettore dell’utente si sposterà maggiormente verso i beni rari, mentre i beni frequenti e familiari per l’acquirente non lo cambieranno di molto. L’approccio può essere illustrato in questo modo:
Come abbiamo migliorato notevolmente la qualità dei consigli nella vendita al dettaglio offline

Ora diamo un'occhiata alle metriche. Ecco come appaiono i risultati della SLA:
Come abbiamo migliorato notevolmente la qualità dei consigli nella vendita al dettaglio offline
Metriche per Item2Vec con diverse varianti della costruzione del vettore dell'acquirente:
Come abbiamo migliorato notevolmente la qualità dei consigli nella vendita al dettaglio offline
In questo caso, viene utilizzato esattamente lo stesso modello della nostra linea di base. L'unica differenza è quale k useremo. Per utilizzare solo modelli collaborativi, devi prendere circa 50-70 prodotti più vicini per ciascun cliente.

E metriche secondo DSSM:
Come abbiamo migliorato notevolmente la qualità dei consigli nella vendita al dettaglio offline

Come combinare tutti i metodi?

Fantastico, dici, ma cosa fare con un set così ampio di strumenti di estrazione dei candidati? Come scegliere la configurazione ottimale per i tuoi dati? Qui abbiamo diversi problemi:

  1. È necessario limitare in qualche modo lo spazio di ricerca degli iperparametri in ciascun metodo. Ovviamente è discreto ovunque, ma il numero di punti possibili è molto ampio.
  2. Utilizzando un campione limitato di metodi specifici con iperparametri specifici, come puoi selezionare la configurazione migliore per la tua metrica?

Non abbiamo ancora trovato una risposta definitivamente corretta alla prima domanda, quindi procediamo come segue: per ogni metodo viene scritto un limitatore di spazio di ricerca dell'iperparametro, in base ad alcune statistiche sui dati in nostro possesso. Pertanto, conoscendo il periodo medio tra gli acquisti delle persone, possiamo indovinare con quale periodo utilizzare il metodo "cosa è già stato acquistato" e "periodo di un acquisto passato da molto tempo".

E dopo aver attraversato un certo numero adeguato di variazioni di metodi diversi, notiamo quanto segue: ciascuna implementazione estrae un certo numero di candidati e ha per noi un certo valore della metrica chiave (richiamo). Vogliamo ottenere un totale di un certo numero di candidati, a seconda della nostra potenza di calcolo consentita, con la metrica più alta possibile. Qui il problema si riduce magnificamente al problema dello zaino.
Come abbiamo migliorato notevolmente la qualità dei consigli nella vendita al dettaglio offline

Qui il numero di candidati è il peso del lingotto e il metodo di richiamo è il suo valore. Tuttavia, ci sono altri 2 punti che dovrebbero essere presi in considerazione quando si implementa l'algoritmo:

  • I metodi potrebbero sovrapporsi nei candidati che recuperano.
  • In alcuni casi, sarà corretto adottare un metodo due volte con parametri diversi e l'output candidato del primo non sarà un sottoinsieme del secondo.

Ad esempio, se prendiamo l’implementazione del metodo “cosa ho già comprato” con intervalli diversi per il recupero, i loro insiemi di candidati saranno nidificati l’uno nell’altro. Allo stesso tempo, i diversi parametri negli “acquisti periodici” all’uscita non forniscono un’intersezione completa. Pertanto, dividiamo gli approcci di campionamento con parametri diversi in blocchi tali che da ciascun blocco si voglia prendere al massimo un approccio di estrazione con iperparametri specifici. Per fare ciò, è necessario essere un po’ più astuti nell’implementare il problema dello zaino, ma gli asintotici e il risultato non cambieranno.

Questa combinazione intelligente ci consente di ottenere le seguenti metriche rispetto ai modelli semplicemente collaborativi:
Come abbiamo migliorato notevolmente la qualità dei consigli nella vendita al dettaglio offline
Nelle metriche finali vediamo la seguente immagine:
Come abbiamo migliorato notevolmente la qualità dei consigli nella vendita al dettaglio offline

Tuttavia, qui puoi notare che c'è un punto scoperto per le raccomandazioni utili per il business. Ora abbiamo appena imparato a fare un ottimo lavoro nel prevedere cosa acquisterà l’utente, ad esempio, la prossima settimana. Ma semplicemente concedere uno sconto su qualcosa che comprerà già non è molto interessante. Ma è interessante massimizzare le aspettative, ad esempio, dei seguenti parametri:

  1. Margine/fatturato basato su raccomandazioni personali.
  2. Controllo cliente medio.
  3. Frequenza delle visite.

Quindi moltiplichiamo le probabilità ottenute per coefficienti diversi e le riclassifichiamo in modo che i prodotti che influenzano le metriche di cui sopra arrivino in cima. Non esiste una soluzione già pronta per stabilire quale sia l’approccio migliore da utilizzare. Sperimentiamo tali coefficienti anche direttamente in produzione. Ma ecco alcune tecniche interessanti che molto spesso ci danno i migliori risultati:

  1. Moltiplicare per il prezzo/margine del prodotto.
  2. Moltiplicare per lo scontrino medio in cui appare il prodotto. Quindi arriveranno le merci, con le quali di solito prendono qualcos'altro.
  3. Moltiplicare per la frequenza media delle visite degli acquirenti di questo prodotto, partendo dall'ipotesi che questo prodotto spinga le persone a tornarci più spesso.

Dopo aver condotto esperimenti con i coefficienti, abbiamo ottenuto i seguenti parametri in produzione:
Come abbiamo migliorato notevolmente la qualità dei consigli nella vendita al dettaglio offline
Qui conversione complessiva dei prodotti — la quota di prodotti acquistati rispetto a tutti i prodotti nelle raccomandazioni che abbiamo generato.

Un lettore attento noterà una differenza significativa tra le metriche offline e quelle online. Questo comportamento è spiegato dal fatto che non tutti i filtri dinamici per i prodotti che possono essere consigliati possono essere presi in considerazione durante l'addestramento del modello. Per noi è normale che la metà dei candidati selezionati possa essere filtrata; questa specificità è tipica del nostro settore.

In termini di entrate, si ottiene la seguente storia, è chiaro che dopo il lancio delle raccomandazioni, le entrate del gruppo di prova sono in forte crescita, ora l'aumento medio delle entrate con le nostre raccomandazioni è del 3-4%:
Come abbiamo migliorato notevolmente la qualità dei consigli nella vendita al dettaglio offline

In conclusione, voglio dire che se hai bisogno di consigli non in tempo reale, è possibile riscontrare un aumento molto elevato della qualità negli esperimenti con l'estrazione dei candidati per i consigli. Una grande quantità di tempo per la loro generazione consente di combinare molti buoni metodi, che in totale daranno ottimi risultati per l'azienda.

Sarò felice di chattare nei commenti con chiunque trovi il materiale interessante. Puoi farmi domande personalmente a Telegram. Condivido anche i miei pensieri sull'intelligenza artificiale/startup nel mio canale telegrafico - Benvenuto :)

Fonte: habr.com

Aggiungi un commento