Como melloramos drasticamente a calidade das recomendacións na venda polo miúdo sen conexión

Ola a todos! Chámome Sasha, son CTO e cofundador de LoyaltyLab. Hai dous anos, os meus amigos e mais eu, como todos os estudantes pobres, fomos pola noite comprar cervexa á tenda máis próxima preto da nosa casa. Enfadabamos moito que o comerciante, sabendo que viríamos a cervexa, non ofrecese desconto en patacas fritas nin en galletas, aínda que iso era tan lóxico! Non entendiamos por que estaba a suceder esta situación e decidimos crear a nosa propia empresa. Pois ben, como extra, dáse descontos todos os venres nesas mesmas fichas.

Como melloramos drasticamente a calidade das recomendacións na venda polo miúdo sen conexión

E todo chegou ao punto no que estou presentando material sobre o lado técnico do produto NVIDIA GTC. Estamos encantados de compartir o noso traballo coa comunidade, polo que estou publicando o meu informe en forma de artigo.

Introdución

Como todos os demais ao comezo da viaxe, comezamos cunha visión xeral de como se crean os sistemas de recomendación. E a arquitectura máis popular resultou ser o seguinte tipo:
Como melloramos drasticamente a calidade das recomendacións na venda polo miúdo sen conexión

Consta de dúas partes:

  1. Mostra de candidatos para recomendacións mediante un modelo sinxelo e rápido, xeralmente colaborativo.
  2. Ranking de candidatos cun modelo de contidos máis complexo e lento, tendo en conta todas as características posibles dos datos.

A partir de agora empregarei os seguintes termos:

  • candidato/candidato para recomendacións — un par usuario-produto que potencialmente podería incluírse nas recomendacións en produción.
  • método de extracción/extractor/candidato de candidatos — un proceso ou método para extraer “candidatos de recomendación” dos datos dispoñibles.

O primeiro paso normalmente implica o uso de diferentes variacións de filtrado colaborativo. O máis popular - Als. É sorprendente que a maioría dos artigos sobre sistemas de recomendación só revelen varias melloras dos modelos colaborativos na primeira etapa, pero ninguén fala moito doutros métodos de mostraxe. Para nós, o enfoque de usar só modelos colaborativos e varias optimizacións con eles non funcionou coa calidade que esperabamos, polo que investigamos específicamente nesta parte. E ao final do artigo mostrarei canto fomos capaces de mellorar a ELA, que foi a nosa liña de base.

Antes de pasar a describir o noso enfoque, é importante ter en conta que nas recomendacións en tempo real, cando é importante para nós ter en conta os datos que ocorreron hai 30 minutos, realmente non hai moitos enfoques que poidan funcionar no tempo necesario. Pero, no noso caso, temos que recoller recomendacións non máis dunha vez ao día e, na maioría dos casos, unha vez por semana, o que nos dá a oportunidade de utilizar modelos complexos e mellorar a calidade varias veces.

Tomemos como referencia as métricas que só ALS mostra sobre a tarefa de extraer candidatos. As principais métricas que monitorizamos son:

  • Precisión: proporción de candidatos seleccionados correctamente entre os mostrados.
  • A lembranza é a proporción de candidatos que ocorreron dos que realmente estaban no intervalo obxectivo.
  • Puntuación F1 - Medida F calculada nos dous puntos anteriores.

Tamén analizaremos as métricas do modelo final despois do aumento do gradiente de adestramento con funcións de contido adicionais. Tamén hai 3 métricas principais aquí:

  • precisión@5: a porcentaxe media de produtos dos 5 primeiros en termos de probabilidade para cada comprador.
  • response-rate@5 - conversión dos clientes dunha visita á tenda á compra de polo menos unha oferta persoal (5 produtos nunha oferta).
  • avg roc-auc por usuario - media roc-auc para cada comprador.

É importante ter en conta que todas estas métricas se miden validación cruzada de series temporales, é dicir, o adestramento ocorre nas primeiras k semanas, e k+1 semana tómase como datos de proba. Así, os altibaixos estacionais tiveron un impacto mínimo na interpretación da calidade dos modelos. Ademais, en todos os gráficos, o eixe de abscisas indicará o número de semana na validación cruzada e o eixe de ordenadas indicará o valor da métrica especificada. Todos os gráficos baséanse nos datos de transaccións dun cliente para que as comparacións entre si sexan correctas.

Antes de comezar a describir o noso enfoque, primeiro miramos a liña de base, que é un modelo adestrado en ALS.
Métricas de recuperación de candidatos:
Como melloramos drasticamente a calidade das recomendacións na venda polo miúdo sen conexión

Métricas finais:
Como melloramos drasticamente a calidade das recomendacións na venda polo miúdo sen conexión

Trato todas as implementacións de algoritmos como unha especie de hipótese empresarial. Así, de xeito moi groso, calquera modelo colaborativo pode considerarse como unha hipótese de que "as persoas tenden a comprar o que compran persoas semellantes a elas". Como xa dixen, non nos limitamos a tal semántica, e aquí tes algunhas hipóteses que funcionan ben nos datos no comercio minorista fóra de liña:

  1. Que xa merquei antes.
  2. Semellante ao que comprei antes.
  3. Período dunha compra pasada.
  4. Popular por categoría/marca.
  5. Compras alternas de diferentes produtos de semana en semana (cadeas de Markov).
  6. Produtos similares aos compradores, segundo características construídas por diferentes modelos (Word2Vec, DSSM, etc.).

Que compraches antes?

A heurística máis obvia que funciona moi ben no comercio polo miúdo. Aquí collemos todos os bens que o titular da tarxeta de fidelidade comprou nos últimos K días (normalmente 1-3 semanas) ou K días hai un ano. Aplicando só este método, obtemos as seguintes métricas:
Como melloramos drasticamente a calidade das recomendacións na venda polo miúdo sen conexión

Aquí é bastante obvio que canto máis tempo levamos o período, máis recordaremos e menos precisión temos e viceversa. De media, as "últimas 2 semanas" dan mellores resultados aos clientes.

Semellante ao que comprei antes

Non é de estrañar que para o comercio polo miúdo "o que comprei antes" funcione ben, pero extraer candidatos só do que o usuario xa comprou non é moi xenial, porque é pouco probable que sorprenda ao comprador con algún produto novo. Polo tanto, propoñemos mellorar lixeiramente esta heurística utilizando os mesmos modelos colaborativos. A partir dos vectores que recibimos durante a formación en ELA, podemos obter produtos similares aos que xa adquiriu o usuario. Esta idea é moi parecida aos “vídeos semellantes” nos servizos de visualización de contidos de vídeo, pero como non sabemos o que está a comer/mercar o usuario nun momento concreto, só podemos buscar outros similares aos que xa comprou, sobre todo. xa que xa sabemos o ben que funciona. Ao aplicar este método ás transaccións dos usuarios durante as dúas últimas semanas, obtemos as seguintes métricas:
Como melloramos drasticamente a calidade das recomendacións na venda polo miúdo sen conexión

Aquí k — o número de produtos similares que se recuperan para cada produto adquirido polo comprador nos últimos 14 días.
Este enfoque funcionou especialmente ben para o noso cliente, para quen era fundamental non recomendar nada que xa estivese no historial de compras do usuario.

Período de compra atrasado

Como xa descubrimos, debido á alta frecuencia de compra de bens, o primeiro enfoque funciona ben para as nosas necesidades específicas. Pero que pasa con produtos como lavado en po/xampú/etc. É dicir, con produtos que é improbable que sexan necesarios unha ou dúas semanas e que os métodos anteriores non poden extraer. Isto leva á seguinte idea: proponse calcular o período de compra de cada produto en media para os clientes que compraron o produto máis k unha vez. E despois extrae o que probablemente xa se esgotou o comprador. Pódese comprobar a adecuación dos períodos calculados para os bens:
Como melloramos drasticamente a calidade das recomendacións na venda polo miúdo sen conexión

E despois analizaremos se o final do período do produto cae dentro do intervalo de tempo en que as recomendacións estarán en produción e mostraremos o que ocorre. O enfoque pódese ilustrar así:
Como melloramos drasticamente a calidade das recomendacións na venda polo miúdo sen conexión

Aquí temos 2 casos principais que podemos considerar:

  1. É necesario probar produtos de clientes que compraron o produto menos de K veces.
  2. É necesario tomar unha mostra dun produto se o final do seu período cae antes do inicio do intervalo obxectivo.

O seguinte gráfico mostra os resultados que consegue este método con diferentes hiperparámetros:
Como melloramos drasticamente a calidade das recomendacións na venda polo miúdo sen conexión
ft — Tome só os clientes que compraron o produto polo menos K (aquí K=5) veces
tm — Tome só os candidatos que se atopen dentro do intervalo obxectivo

Non é de estrañar que sexa capaz (0, 0) o máis grande recordar e o máis pequeno precisión, xa que con esta condición se recuperan os máis candidatos. Non obstante, os mellores resultados conséguense cando non mostramos produtos para clientes que compraron un determinado produto menos de k veces e extraer, incluídos os bens, cuxo final de período cae antes do intervalo obxectivo.

Popular por categoría

Outra idea bastante obvia é probar produtos populares en diferentes categorías ou marcas. Aquí calculamos para cada comprador arriba-k categorías/marcas "favoritas" e extrae "populares" desta categoría/marca. No noso caso, determinaremos "favorito" e "popular" polo número de compras do produto. Unha vantaxe adicional deste enfoque é a súa aplicabilidade no caso de arranque en frío. É dicir, para os clientes que, ou realizaron moi poucas compras, ou levan moito tempo sen ir á tenda, ou acaban de emitir unha tarxeta de fidelización. Para eles, é máis fácil e mellor almacenar artigos que son populares entre os clientes e teñen un historial. As métricas resultantes son:
Como melloramos drasticamente a calidade das recomendacións na venda polo miúdo sen conexión
Aquí o número despois da palabra "categoría" significa o nivel de anidación da categoría.

En xeral, tampouco é de estrañar que as categorías máis estreitas acaden mellores resultados, xa que extraen produtos "favoritos" máis precisos para os compradores.

Compras alternas de diferentes produtos dunha semana a outra

Unha aproximación interesante que non vin en artigos sobre sistemas de recomendación é un método estatístico de cadeas de Markov bastante sinxelo e ao mesmo tempo que funciona. Aquí levamos 2 semanas diferentes, despois para cada cliente construímos pares de produtos [compra na semana i]-[compra na semana j], onde j > i, e a partir de aquí calculamos para cada produto a probabilidade de cambiar a outro produto a próxima semana. É dicir, para cada par de mercadorías produto-produto j Contamos o seu número nos pares atopados e dividimos polo número de pares, onde produtos foi na primeira semana. Para extraer candidatos, tomamos o último recibo do comprador e extraemos arriba-k os próximos produtos máis probables da matriz de transición que recibimos. O proceso de construción dunha matriz de transición é o seguinte:
Como melloramos drasticamente a calidade das recomendacións na venda polo miúdo sen conexión

A partir de exemplos reais na matriz de probabilidades de transición, vemos os seguintes fenómenos interesantes:
Como melloramos drasticamente a calidade das recomendacións na venda polo miúdo sen conexión
Aquí podes notar dependencias interesantes que se revelan no comportamento do consumidor: por exemplo, os amantes dos cítricos ou dunha marca de leite da que é probable que cambien a outra. Tampouco é de estrañar que aquí acaben tamén produtos cunha alta frecuencia de compras repetidas, como a manteiga.

As métricas do método con cadeas de Markov son as seguintes:
Como melloramos drasticamente a calidade das recomendacións na venda polo miúdo sen conexión
k - o número de produtos que se recuperan para cada produto comprado da última transacción do comprador.
Como podemos ver, o mellor resultado móstrase coa configuración con k=4. O aumento da semana 4 pódese explicar polo comportamento estacional durante as vacacións. 

Produtos similares aos compradores, segundo características construídas por diferentes modelos

Agora chegamos á parte máis difícil e interesante: buscar veciños máis próximos en base a vectores de clientes e produtos construídos segundo varios modelos. No noso traballo usamos 3 destes modelos:

  • Als
  • Word2Vec (Item2Vec para tales tarefas)
  • DSSM

Xa tratamos a ELA, podes ler como aprende aquí. No caso de Word2Vec, utilizamos a coñecida implementación do modelo de xensim. Por analoxía cos textos, definimos a oferta como un recibo de compra. Así, ao construír un vector de produto, o modelo aprende a predicir para o produto no recibo o seu "contexto" (os produtos restantes no recibo). Nos datos de comercio electrónico, é mellor usar a sesión do comprador en lugar dun recibo; os mozos de Ozon. E DSSM é máis interesante de analizar. Inicialmente, foi escrito polos mozos de Microsoft como un modelo de busca, Podes ler o traballo de investigación orixinal aquí. A arquitectura do modelo ten o seguinte aspecto:
Como melloramos drasticamente a calidade das recomendacións na venda polo miúdo sen conexión

Aquí Q — consulta, consulta de busca de usuario, D[i] - documento, páxina de internet. A entrada para o modelo son os atributos da solicitude e das páxinas, respectivamente. Despois de cada capa de entrada hai unha serie de capas totalmente conectadas (perceptrón multicapa). A continuación, o modelo aprende a minimizar o coseno entre os vectores obtidos nas últimas capas do modelo.
As tarefas de recomendación usan exactamente a mesma arquitectura, só que en lugar dunha solicitude hai un usuario e en lugar de páxinas hai produtos. E no noso caso, esta arquitectura transfórmase na seguinte:
Como melloramos drasticamente a calidade das recomendacións na venda polo miúdo sen conexión

Agora, para comprobar os resultados, queda cubrir o último punto: se no caso de ALS e DSSM temos vectores de usuario definidos explícitamente, no caso de Word2Vec só temos vectores de produto. Aquí, para construír o vector de usuario, definimos 3 enfoques principais:

  1. Só ten que engadir os vectores, entón para a distancia coseno resulta que simplemente promediamos os produtos no historial de compras.
  2. Suma vectorial con algunha ponderación temporal.
  3. Pesaxe de mercadorías co coeficiente TF-IDF.

No caso da ponderación lineal do vector comprador, partimos da hipótese de que o produto que o usuario comprou onte inflúe máis no seu comportamento que o produto que comprou hai seis meses. Polo tanto, consideramos a semana anterior do comprador con probabilidades de 1, e o que pasou despois con probabilidades de ½, ⅓, etc.:
Como melloramos drasticamente a calidade das recomendacións na venda polo miúdo sen conexión

Para os coeficientes TF-IDF, facemos exactamente o mesmo que en TF-IDF para textos, só consideramos o comprador como un documento e o cheque como unha oferta, respectivamente, a palabra é un produto. Deste xeito, o vector do usuario desprazarase máis cara a bens raros, mentres que os bens frecuentes e familiares para o comprador non o cambiarán moito. O enfoque pódese ilustrar así:
Como melloramos drasticamente a calidade das recomendacións na venda polo miúdo sen conexión

Agora vexamos as métricas. Así son os resultados da ELA:
Como melloramos drasticamente a calidade das recomendacións na venda polo miúdo sen conexión
Métricas para Item2Vec con diferentes variacións de construción do vector comprador:
Como melloramos drasticamente a calidade das recomendacións na venda polo miúdo sen conexión
Neste caso, úsase exactamente o mesmo modelo que na nosa liña base. A única diferenza é que k usaremos. Para usar só modelos colaborativos, tes que tomar uns 50-70 produtos máis próximos para cada cliente.

E métricas segundo DSSM:
Como melloramos drasticamente a calidade das recomendacións na venda polo miúdo sen conexión

Como combinar todos os métodos?

Genial, dis, pero que facer cun conxunto tan grande de ferramentas de extracción de candidatos? Como elixir a configuración óptima para os teus datos? Aquí temos varios problemas:

  1. É necesario limitar dalgún xeito o espazo de busca de hiperparámetros en cada método. É, por suposto, discreto en todas partes, pero o número de puntos posibles é moi grande.
  2. Usando unha pequena mostra limitada de métodos específicos con hiperparámetros específicos, como podes seleccionar a mellor configuración para a túa métrica?

Aínda non atopamos unha resposta definitivamente correcta á primeira pregunta, polo que procedemos do seguinte: para cada método escríbese un limitador de espazo de busca de hiperparámetros, dependendo dalgunhas estatísticas sobre os datos que dispoñamos. Así, coñecendo o período medio entre compras a persoas, podemos adiviñar con que período empregar o método "o que xa foi comprado" e "período dunha compra pasada".

E despois de pasar por certo número adecuado de variacións de diferentes métodos, observamos o seguinte: cada implementación extrae un determinado número de candidatos e ten un determinado valor da métrica clave para nós (recordar). Queremos obter un total dun determinado número de candidatos, dependendo da nosa potencia de cálculo permitida, coa métrica máis alta posible. Aquí o problema colapsa moi ben no problema da mochila.
Como melloramos drasticamente a calidade das recomendacións na venda polo miúdo sen conexión

Aquí o número de candidatos é o peso do lingote e o método de recuperación é o seu valor. Non obstante, hai 2 puntos máis que se deben ter en conta ao implementar o algoritmo:

  • Os métodos poden ter superposicións nos candidatos que recuperan.
  • Nalgúns casos, será correcto tomar un método dúas veces con parámetros diferentes e a saída candidata do primeiro non será un subconxunto do segundo.

Por exemplo, se tomamos a implementación do método "o que xa merquei" con diferentes intervalos para a súa recuperación, entón os seus conxuntos de candidatos aniñan uns dentro dos outros. Ao mesmo tempo, os diferentes parámetros nas "compras periódicas" na saída non proporcionan a intersección completa. Polo tanto, dividimos os enfoques de mostraxe con diferentes parámetros en bloques de forma que de cada bloque queremos tomar como máximo un enfoque de extracción con hiperparámetros específicos. Para iso, cómpre ser un pouco intelixente na implementación do problema da mochila, pero os asintóticos e o resultado non cambiarán.

Esta combinación intelixente permítenos obter as seguintes métricas en comparación cos modelos simplemente colaborativos:
Como melloramos drasticamente a calidade das recomendacións na venda polo miúdo sen conexión
Nas métricas finais vemos a seguinte imaxe:
Como melloramos drasticamente a calidade das recomendacións na venda polo miúdo sen conexión

Non obstante, aquí podes notar que hai un punto descuberto para recomendacións que son útiles para os negocios. Agora acabamos de aprender a facer un gran traballo para predecir o que comprará o usuario, por exemplo, a próxima semana. Pero simplemente facer un desconto en algo que xa vai mercar non é moi chulo. Pero é xenial maximizar a expectativa, por exemplo, das seguintes métricas:

  1. Marxe/volume de negocio baseado en recomendacións persoais.
  2. Cheque medio do cliente.
  3. Frecuencia de visitas.

Entón, multiplicamos as probabilidades obtidas por diferentes coeficientes e volvemos clasificalas para que os produtos que afectan ás métricas anteriores cheguen á parte superior. Non hai unha solución preparada para cal é o mellor enfoque. Mesmo experimentamos con tales coeficientes directamente na produción. Pero aquí tes técnicas interesantes que a maioría das veces nos dan os mellores resultados:

  1. Multiplique polo prezo/marxe do produto.
  2. Multiplique polo recibo medio no que aparece o produto. Así aparecerán mercadorías, coas que adoitan levar outra cousa.
  3. Multiplique pola frecuencia media de visitas dos compradores deste produto, partindo da hipótese de que este produto provoca que a xente volva por el con máis frecuencia.

Despois de realizar experimentos con coeficientes, obtivemos as seguintes métricas na produción:
Como melloramos drasticamente a calidade das recomendacións na venda polo miúdo sen conexión
Aquí conversión global de produtos — a proporción de produtos comprados de todos os produtos nas recomendacións que xeramos.

Un lector atento notará unha diferenza significativa entre as métricas fóra de liña e en liña. Este comportamento explícase polo feito de que non se poden ter en conta todos os filtros dinámicos para produtos que se poden recomendar ao adestrar o modelo. Para nós, é unha historia normal cando a metade dos candidatos recuperados poden ser filtrados; esta especificidade é típica na nosa industria.

En termos de ingresos, obtense a seguinte historia, está claro que despois do lanzamento das recomendacións, os ingresos do grupo de probas están a crecer moito, agora o aumento medio dos ingresos coas nosas recomendacións é do 3-4%:
Como melloramos drasticamente a calidade das recomendacións na venda polo miúdo sen conexión

En conclusión, quero dicir que se necesitas recomendacións non en tempo real, pódese atopar un gran aumento da calidade nos experimentos coa extracción de candidatos para recomendacións. Unha gran cantidade de tempo para a súa xeración permite combinar moitos bos métodos, que en total darán grandes resultados para o negocio.

Estarei encantado de conversar nos comentarios con calquera que considere interesante o material. Podes facerme preguntas persoalmente en telegrama. Tamén comparto os meus pensamentos sobre a IA/startups no meu canal de telegrama - Benvido :)

Fonte: www.habr.com

Engadir un comentario