Com hem millorat dràsticament la qualitat de les recomanacions al detall fora de línia

Hola a tots! Em dic Sasha, sóc CTO i cofundadora de LoyaltyLab. Fa dos anys, els meus amics i jo, com tots els estudiants pobres, vam anar al vespre a prendre una cervesa a la botiga més propera a prop de casa. Ens va molestar molt que el comerciant, sabent que vindríem a prendre cervesa, no fes descompte en patates fregides o galetes, tot i que això és tan lògic! No vam entendre per què passa aquesta situació i vam decidir crear la nostra pròpia empresa. Bé, com a avantatge, escriu descomptes per tu mateix cada divendres per a aquestes mateixes fitxes.

Com hem millorat dràsticament la qualitat de les recomanacions al detall fora de línia

I tot va arribar al punt que parlo amb material sobre la part tècnica del producte NVIDIA GTC. Estem encantats de compartir el nostre treball amb la comunitat, així que publico el meu informe en forma d'article.

Introducció

Com tothom al començament del viatge, vam començar amb una visió general de com es fan els sistemes de recomanació. I l'arquitectura del tipus següent va resultar ser la més popular:
Com hem millorat dràsticament la qualitat de les recomanacions al detall fora de línia

Consta de dues parts:

  1. Mostra de candidats per a recomanacions mitjançant un model senzill i ràpid, normalment col·laboratiu.
  2. Classificació dels candidats per un model de contingut més complex i lent, tenint en compte totes les característiques possibles de les dades.

Aquí i a continuació faré servir els termes següents:

  • candidat/candidat per a recomanacions - un parell d'usuari-producte, que potencialment poden entrar en recomanacions en producció.
  • mètode d'extracció de candidats/extractor/extracció de candidats — un procés o mètode per extreure “candidats per a recomanacions” de les dades disponibles.

En el primer pas, normalment s'utilitzen diferents variacions de filtratge col·laboratiu. El més popular - ALS. Sorprenentment, la majoria d'articles sobre sistemes de recomanació només revelen diverses millores als models col·laboratius en la primera etapa, però ningú parla d'altres mètodes de mostreig. Per a nosaltres, l'enfocament d'utilitzar només models col·laboratius i diverses optimitzacions amb ells no va funcionar amb la qualitat que esperàvem, de manera que ens vam aprofundir en la investigació específicament en aquesta part. I al final de l'article mostraré fins a quin punt hem pogut millorar l'ELA, que era la nostra línia de base.

Abans de passar a descriure el nostre enfocament, és important tenir en compte que amb les recomanacions en temps real, quan és important per a nosaltres tenir en compte les dades que van passar fa 30 minuts, realment no hi ha molts enfocaments que puguin funcionar en el moment adequat. Però, en el nostre cas, hem de recollir recomanacions no més d'una vegada al dia i, en la majoria dels casos, una vegada a la setmana, la qual cosa ens dóna l'oportunitat d'utilitzar models complexos i multiplicar la qualitat.

Prenem com a base quines mètriques només mostra ALS sobre la tasca d'extreure candidats. Les mètriques clau que controlem són:

  • Precisió: proporció de candidats seleccionats correctament entre els mostrejats.
  • Recordar: la proporció de candidats que va passar dels que realment estaven a l'interval objectiu.
  • Puntuació F1 - Puntuació F calculat sobre els dos punts anteriors.

També analitzarem les mètriques del model final després de l'augment del gradient d'entrenament amb funcions de contingut addicionals. També hi ha 3 mètriques principals:

  • precisió@5: percentatge mitjà de visites dels 5 primers per probabilitat per a cada client.
  • response-rate@5: conversió dels compradors d'una visita a la botiga en la compra d'almenys una oferta personal (una oferta conté 5 productes).
  • mitjana roc-auc per usuari - mitjà roc-auc per a cada comprador.

És important tenir en compte que totes aquestes mètriques es mesuren validació creuada de sèries temporals, és a dir, l'entrenament té lloc a les primeres k setmanes, i k + 1 setmanes es prenen com a dades de prova. Així, les pujades i baixades estacionals van tenir un efecte mínim en la interpretació de la qualitat dels models. A més, a tots els gràfics, l'eix d'abscisses indicarà el número de setmana en validació creuada i l'eix d'ordenades indicarà el valor de la mètrica especificada. Tots els gràfics es basen en les dades transaccionals d'un client, de manera que la comparació entre ells és correcta.

Abans de començar a descriure el nostre enfocament, primer donem una ullada a la línia de base, que és el model entrenat amb ALS.
Mètriques d'extracció de candidats:
Com hem millorat dràsticament la qualitat de les recomanacions al detall fora de línia

Mètriques finals:
Com hem millorat dràsticament la qualitat de les recomanacions al detall fora de línia

Tracto totes les implementacions d'algorismes com una mena d'hipòtesi de negoci. Així, de manera molt aproximada, qualsevol model col·laboratiu es pot considerar com una hipòtesi que “la gent tendeix a comprar allò que compra gent com elles”. Com he dit, no ens hem limitat a aquesta semàntica, i aquí hi ha algunes hipòtesis que encara funcionen bé amb les dades de la venda al detall fora de línia:

  1. Què has comprat abans.
  2. Similar al que vaig comprar abans.
  3. El període d'una compra passada molt de temps.
  4. Popular per categoria/marca.
  5. Compres alternatives de diferents productes de setmana a setmana (cadenes de Markov).
  6. Productes semblants als compradors, segons les característiques construïdes per diferents models (Word2Vec, DSSM, etc.).

Què has comprat abans

L'heurística més òbvia que funciona molt bé a la botiga de queviures. Aquí prenem tots els béns que el titular de la targeta de fidelització va comprar en els darrers K dies (normalment 1-3 setmanes), o K dies fa un any. Aplicant només aquest mètode, obtenim les mètriques següents:
Com hem millorat dràsticament la qualitat de les recomanacions al detall fora de línia

Aquí és força obvi que com més prenem el període, més record i menys precisió tenim i viceversa. Millors resultats de mitjana per als clients donen les "últimes 2 setmanes".

Similar al que vaig comprar abans

No és d'estranyar que "el que ha comprat abans" funcioni bé per a la venda de queviures, però extreure candidats només del que l'usuari ja ha comprat no és genial, perquè és poc probable que sigui possible sorprendre el comprador amb algun producte nou. Per tant, proposem millorar lleugerament aquesta heurística utilitzant els mateixos models col·laboratius. A partir dels vectors que hem rebut durant la formació d'ALS, podeu obtenir productes similars als que l'usuari ja ha comprat. Aquesta idea és molt semblant als “vídeos similars” als serveis de visualització de contingut de vídeo, però com que no sabem què menja/compra l'usuari en un moment concret, només podem buscar quelcom semblant només al que ja ha comprat, sobretot perquè ja sabem com de bé funciona. Aplicant aquest mètode a les transaccions dels usuaris durant les dues darreres setmanes, obtenim les mètriques següents:
Com hem millorat dràsticament la qualitat de les recomanacions al detall fora de línia

Aquí k - el nombre de productes similars que es recuperen per a cada producte comprat pel comprador en els darrers 14 dies.
Aquest enfocament ens va funcionar especialment bé en un client que era fonamental no recomanar en absolut el que ja estava a l'historial de compres de l'usuari.

Període de compra molt passat

Com ja hem descobert, a causa de l'alta freqüència de compra de béns, el primer enfocament funciona bé per a les nostres especificitats. Però què passa amb productes com la rentadora/xampú/etc. És a dir, amb productes que és poc probable que es necessitin cada setmana o dues i que els mètodes anteriors no poden extreure. Això implica la idea següent: es proposa calcular el període de compra de cada producte de mitjana per als compradors que van comprar el producte més k un cop. I després extreu allò que probablement el comprador ja s'ha quedat sense. Els períodes calculats per a les mercaderies es poden comprovar amb els ulls per a l'adequació:
Com hem millorat dràsticament la qualitat de les recomanacions al detall fora de línia

I llavors veurem si el final del període del producte es troba dins de l'interval de temps en què les recomanacions estaran en producció i mostrem el que cau. L'enfocament es pot il·lustrar així:
Com hem millorat dràsticament la qualitat de les recomanacions al detall fora de línia

Aquí tenim 2 casos principals que es poden considerar:

  1. Si es mostren productes per als clients que han comprat el producte menys de K vegades.
  2. Si s'ha de mostrar el producte si el final del seu període cau abans de l'inici de l'interval objectiu.

El gràfic següent mostra quins resultats aconsegueix aquest mètode amb diferents hiperparàmetres:
Com hem millorat dràsticament la qualitat de les recomanacions al detall fora de línia
ft - Preneu només els compradors que hagin comprat el producte almenys K (aquí K = 5) vegades
tm — Agafeu només els candidats que caiguin a l'interval objectiu

No sorprèn, capaç (0, 0) el més gran recordar i el més petit precisió, ja que sota aquesta condició s'extreuen la majoria de candidats. No obstant això, els millors resultats s'obtenen quan no mostrem productes per als clients que han comprat un determinat producte menys de k temps i extreure, entre altres coses, béns el final del període dels quals cau abans de l'interval objectiu.

Popular per categoria

Una altra idea força òbvia és provar productes populars de diferents categories o marques. Aquí calculem per a cada client superior-k categories/marques "favorides" i extreu "populars" d'aquesta categoria/marca. En el nostre cas, definim "preferit" i "popular" pel nombre de compres de productes. Un avantatge addicional d'aquest enfocament és la seva aplicabilitat en un cas d'arrencada en fred. És a dir, per als clients que han fet molt poques compres, o fa temps que no són a la botiga, o en general només han emès una targeta de fidelització. Per a ells, és més fàcil i millor llençar productes populars entre els compradors amb una història existent. Les mètriques són les següents:
Com hem millorat dràsticament la qualitat de les recomanacions al detall fora de línia
Aquí, el número després de la paraula "categoria" significa el nivell de nidificació de la categoria.

En general, tampoc és d'estranyar que les categories més estretes aconsegueixin millors resultats, ja que extreuen productes "preferits" més precisos per als compradors.

Compres alternatives de diferents productes de setmana a setmana

Un enfocament interessant que no he vist en articles sobre sistemes de recomanació és un mètode estadístic de cadenes de Markov bastant simple i alhora funcional. Aquí triguem 2 setmanes diferents, després construïm parells de productes per a cada client [comprat a la setmana i]-[comprat a la setmana j], on j > i, i a partir d'aquí calculem per a cada producte la probabilitat de canviar a un altre producte la setmana vinent. És a dir, per a cada parell de mercaderies producte-productej compta el seu nombre en els parells trobats i divideix pel nombre de parells, on productes va ser la primera setmana. Per extreure candidats, agafem l'últim xec del comprador i obtenim superior-k els propers productes més probables de la matriu de transició que hem obtingut. El procés de construcció d'una matriu de transició és el següent:
Com hem millorat dràsticament la qualitat de les recomanacions al detall fora de línia

A partir d'exemples reals de la matriu de probabilitats de transició, veiem els següents fenòmens interessants:
Com hem millorat dràsticament la qualitat de les recomanacions al detall fora de línia
Aquí podeu notar dependències interessants que es revelen en el comportament del consumidor: per exemple, els amants dels cítrics o una marca de llet, de la qual molt probablement canvien a una altra. Tampoc és d'estranyar que els articles amb compres repetides, com la mantega, també acabin aquí.

Les mètriques del mètode amb cadenes de Markov són les següents:
Com hem millorat dràsticament la qualitat de les recomanacions al detall fora de línia
k - el nombre de productes que es recuperen per a cada article comprat de l'última transacció del comprador.
Com podem veure, la configuració amb k=4 mostra el millor resultat. L'augment de la setmana 4 es pot explicar pel comportament estacional durant les vacances. 

Productes semblants als compradors, segons característiques construïdes per diferents models

Així que arribem a la part més difícil i interessant: la recerca dels veïns més propers en els vectors de compradors i productes construïts segons diversos models. En el nostre treball, utilitzem 3 d'aquests models:

  • ALS
  • Word2Vec (Item2Vec per a aquestes tasques)
  • DSSM

Ja hem tractat l'ELA, podeu llegir com s'aprèn aquí. En el cas de Word2Vec, utilitzem la coneguda implementació del model de gensim. Per analogia amb els textos, definim l'oferta com un rebut de compra. Així, en construir el vector del producte, el model aprèn a predir el seu "context" per al producte del rebut (la resta de mercaderies del rebut). A les dades de comerç electrònic, és millor utilitzar la sessió del comprador en lloc d'un rebut, els nois de Ozon. I DSSM és més interessant de desmuntar. Va ser escrit originalment pels nois de Microsoft com a model de cerca, podeu llegir el document de recerca original aquí. L'arquitectura del model és així:
Com hem millorat dràsticament la qualitat de les recomanacions al detall fora de línia

Aquí Q - consulta, consulta de cerca de l'usuari, D[i] - document, pàgina web. L'entrada del model rep els signes de la sol·licitud i les pàgines, respectivament. Cada capa d'entrada va seguida d'una sèrie de capes completament connectades (perceptró multicapa). A continuació, el model aprèn a minimitzar el cosinus entre els vectors obtinguts a les últimes capes del model.
Les tasques de recomanació utilitzen exactament la mateixa arquitectura, però en lloc d'una sol·licitud, hi ha un usuari, i en lloc de pàgines, hi ha productes. I en el nostre cas, aquesta arquitectura es transforma en la següent:
Com hem millorat dràsticament la qualitat de les recomanacions al detall fora de línia

Ara, per comprovar els resultats, queda cobrir l'últim punt: si en el cas d'ALS i DSSM tenim vectors d'usuari definits explícitament, en el cas de Word2Vec només tenim vectors de producte. Aquí, per construir un vector d'usuari, hem identificat 3 enfocaments principals:

  1. Només cal afegir els vectors i, per a la distància del cosinus, resulta que acabem de fer la mitjana dels productes de l'historial de compres.
  2. Suma de vectors amb alguna ponderació temporal.
  3. Pesatge de mercaderies amb coeficient TF-IDF.

En el cas de la ponderació lineal del vector comprador, es parteix de la hipòtesi que el producte que l'usuari va comprar ahir influeix més en el seu comportament que el producte que va comprar fa sis mesos. Així que considerem la setmana anterior del comprador amb un coeficient d'1, i què va passar després amb coeficients de ½, ⅓, etc.:
Com hem millorat dràsticament la qualitat de les recomanacions al detall fora de línia

Per als coeficients TF-IDF, fem exactament el mateix que en TF-IDF per als textos, només considerem el comprador com un document i el rebut com una oferta, respectivament, la paraula és un producte. Així, el vector d'usuari es desplaçarà més cap a béns rars, i els béns que són freqüents i familiars per al comprador no ho canviaran gaire. L'enfocament es pot il·lustrar així:
Com hem millorat dràsticament la qualitat de les recomanacions al detall fora de línia

Ara mirem les mètriques. Així són els resultats de l'ALS:
Com hem millorat dràsticament la qualitat de les recomanacions al detall fora de línia
Mètriques per Item2Vec amb diferents variacions de la construcció del vector del comprador:
Com hem millorat dràsticament la qualitat de les recomanacions al detall fora de línia
En aquest cas, s'utilitza exactament el mateix model que a la nostra línia de base. L'única diferència és quina k utilitzarem. Per utilitzar només models col·laboratius, heu d'agafar uns 50-70 productes més propers per a cada client.

I mètriques DSSM:
Com hem millorat dràsticament la qualitat de les recomanacions al detall fora de línia

Com combinar tots els mètodes?

Genial, dius, però què fer amb un conjunt tan gran d'eines d'extracció de candidats? Com triar la configuració òptima per a les vostres dades? Aquí tenim diversos problemes:

  1. Cal limitar d'alguna manera l'espai de cerca d'hiperparàmetres en cada mètode. Per descomptat, és discret a tot arreu, però el nombre de punts possibles és molt gran.
  2. Com triar la millor configuració per a la vostra mètrica mitjançant una petita mostra limitada de mètodes específics amb hiperparàmetres específics?

Encara no hem trobat una resposta clarament correcta a la primera pregunta, així que procedim del següent: per a cada mètode s'escriu un limitador d'espai de cerca hiperparàmetres, en funció d'algunes estadístiques sobre les dades de què disposem. Així, coneixent el període mitjà entre compres a persones, podem endevinar amb quin període utilitzar el mètode “allò que ja s'ha comprat” i “el període d'una compra passada molt de temps”.

I després d'haver passat per un nombre adequat de variacions de diferents mètodes, observem el següent: cada implementació extreu un nombre determinat de candidats i té un cert valor de la mètrica (record) que és clau per a nosaltres. Volem obtenir un nombre determinat de candidats en total, depenent de la nostra potència de càlcul permesa, amb la mètrica més alta possible. Aquí el problema s'enfonsa molt bé en el problema de la motxilla.
Com hem millorat dràsticament la qualitat de les recomanacions al detall fora de línia

Aquí el nombre de candidats és el pes del lingot, i la recuperació del mètode és el seu valor. Tanmateix, hi ha 2 punts més que s'han de tenir en compte a l'hora d'implementar l'algorisme:

  • És possible que els mètodes s'hagin superposat en els candidats que treuen.
  • En alguns casos, serà correcte prendre un mètode dues vegades amb paràmetres diferents, i els candidats a la sortida del primer no seran un subconjunt del segon.

Per exemple, si prenem la implementació del mètode "el que ja s'ha comprat" amb diferents intervals d'extracció, els seus conjunts de candidats aniran imbricats entre si. Al mateix temps, els diferents paràmetres de les "compres periòdiques" a la sortida no donen una intersecció completa. Per tant, dividim els mètodes de mostreig amb diferents paràmetres en blocs de manera que a partir de cada bloc volem prendre com a màxim un enfocament d'extracció amb hiperparàmetres específics. Per fer-ho, cal enganyar una mica en la implementació del problema de la motxilla, però els asimptòtics i el resultat no canviaran d'això.

Una combinació tan intel·ligent ens permet obtenir les mètriques següents en comparació amb models simplement col·laboratius:
Com hem millorat dràsticament la qualitat de les recomanacions al detall fora de línia
A les mètriques finals veiem la següent imatge:
Com hem millorat dràsticament la qualitat de les recomanacions al detall fora de línia

Tanmateix, aquí podeu veure que hi ha un punt descobert per a recomanacions útils per a les empreses. Ara acabem d'aprendre a predir amb calma què comprarà l'usuari, per exemple, la setmana vinent. Però només fer un descompte sobre el fet que comprarà de totes maneres no és genial. Però és fantàstic maximitzar l'expectativa, per exemple, de les mètriques següents:

  1. Marge/volum de negoci basat en recomanacions personals.
  2. Comprovació mitjana dels compradors.
  3. freqüència de visites.

Així doncs, multipliquem les probabilitats obtingudes per diferents coeficients i les tornem a classificar de manera que la part superior inclogui productes que afecten les mètriques anteriors. No hi ha cap solució preparada aquí, quin enfocament és millor utilitzar. Fins i tot estem experimentant amb aquests coeficients directament a la producció. Però aquí hi ha alguns trucs interessants que sovint ens donen els millors resultats:

  1. Multipliqui pel preu/marge de l'article.
  2. Multiplicar per la comprovació mitjana en què es produeix el producte. Així sortirà la mercaderia amb la qual acostumen a prendre una altra cosa.
  3. Multiplicar per la freqüència mitjana de visites dels compradors d'aquest producte, partint de la hipòtesi que aquest producte provoca devolucions més freqüents d'aquest.

Després d'experimentar amb coeficients, vam obtenir les mètriques següents en producció:
Com hem millorat dràsticament la qualitat de les recomanacions al detall fora de línia
Aquí conversió global del producte - la quota de productes comprats de tots els productes a les recomanacions que hem generat.

Un lector atent notarà una diferència significativa entre les mètriques fora de línia i en línia. Aquest comportament s'explica pel fet que no tots els filtres dinàmics dels productes que es poden recomanar es poden tenir en compte a l'hora d'entrenar el model. És una història normal per a nosaltres quan la meitat dels candidats extrets es poden filtrar, aquesta especificitat és típica a la nostra indústria.

Pel que fa als ingressos, s'obté la següent història, és evident que després del llançament de les recomanacions, els ingressos del grup de prova creixen amb força, ara l'augment mitjà dels ingressos amb les nostres recomanacions és del 3-4%:
Com hem millorat dràsticament la qualitat de les recomanacions al detall fora de línia

En conclusió, vull dir que si necessiteu recomanacions no en temps real, es troba un augment molt gran de la qualitat en els experiments amb l'extracció de candidats per a recomanacions. Una gran quantitat de temps per generar-los permet combinar molts bons mètodes, que en total donaran bons resultats per al negoci.

Estaré encantat de xerrar als comentaris amb tothom que trobi interessant el material. Em pots fer preguntes personalment telegram. També comparteixo els meus pensaments sobre IA/startups al meu canal de telegrama — Benvingut 🙂

Font: www.habr.com

Afegeix comentari