Como o recurso de recomendação da Amazon funciona?

144

Qual a tecnologia por trás das telas da tecnologia de recomendação da Amazon? Acredito que atualmente a recomendação da Amazon seja a melhor do mercado, mas como elas nos fornecem recomendações relevantes?

Recentemente, estivemos envolvidos com um tipo de projeto de recomendação semelhante, mas certamente gostaríamos de saber sobre as entradas e saídas da tecnologia de recomendação da Amazon do ponto de vista técnico.

Qualquer entrada seria muito apreciada.

Atualizar:

Esta patente explica como são feitas recomendações personalizadas, mas não é muito técnica e, portanto, seria muito bom se algumas idéias pudessem ser fornecidas.

A partir dos comentários de Dave, a Affinity Analysis constitui a base para esse tipo de mecanismo de recomendação. Também aqui estão algumas boas leituras sobre o tópico

  1. Desmistificando a análise da cesta de mercado
  2. Análise da cesta de mercado
  3. Análise de afinidade

Leitura sugerida:

  1. Mineração de Dados: Conceitos e Técnica
Rachel
fonte
3
Você tentou vasculhar a pilha de patentes? google.com/patents
Dolph
Sim, eu fiz a atravessar a patente, mas não é muito técnico e por isso gostaria de receber algumas idéias sobre aspecto técnico do mecanismo
Rachel
1
@ Dave: Esta pergunta está aberta agora e eu realmente aprecio se você puder dar mais informações sobre a tecnologia por trás da arquitetura e funcionalidade do mecanismo de recomendação que a Amazon usa para fornecer recomendações.
Rachel
1
Eu não chamaria o sistema de recomendação da Amazon de "o melhor" ou mesmo útil. Se você pedir um mouse, ele sugere comprar outro também. Por que um usuário normal precisaria de dois ratos ao mesmo tempo ??
1
@ Rachel: Como você sabe que o sistema da Amazon está patenteado e deseja desenvolver algo semelhante, eu nem olharia para as patentes deles - e, é claro, não olhar para elas também não protege você, mas é um começo.

Respostas:

105

É uma arte e uma ciência. Os campos de estudo típicos giram em torno da análise da cesta de mercado (também chamada de análise de afinidade), que é um subconjunto do campo de mineração de dados. Os componentes típicos desse sistema incluem a identificação de itens principais do driver e a identificação de itens de afinidade (upsell de acessórios, venda cruzada).

Lembre-se das fontes de dados que eles têm para minerar ...

  1. Carrinhos de compras comprados = dinheiro real de pessoas gastas em itens reais = dados poderosos e muito disso.
  2. Itens adicionados aos carrinhos, mas abandonados.
  3. Experimentos de preços on-line (testes A / B, etc.), onde eles oferecem os mesmos produtos a preços diferentes e veem os resultados
  4. Experiências de empacotamento (teste A / B, etc.), onde eles oferecem produtos diferentes em "pacotes" diferentes ou descontam vários pares de itens
  5. Listas de desejos - o que há nelas especificamente para você - e agregadas podem ser tratadas de maneira semelhante a outro fluxo de dados de análise de cesta
  6. Sites de referência (a identificação de onde você veio pode sugerir outros itens de interesse)
  7. Tempos de espera (quanto tempo antes de você clicar novamente e escolher um item diferente)
  8. Avaliações feitas por você ou por pessoas da sua rede social / círculos de compras - se você classifica as coisas que gosta, obtém mais do que gosta e se confirma com o botão "eu já possuo", elas criam um perfil muito completo de você
  9. Informações demográficas (seu endereço de entrega etc.) - eles sabem o que é popular em sua área geral para seus filhos, você, seu cônjuge etc.
  10. segmentação de usuários = você comprou três livros em meses separados para uma criança? provavelmente tem um filho ou mais ... etc.
  11. Dados de clique direto do marketing direto - você recebeu um e-mail deles e clicou? Eles sabem em qual e-mail era e em que você clicou e se o comprou como resultado.
  12. Caminhos de cliques na sessão - o que você visualizou, independentemente de estar no carrinho
  13. Número de vezes que um item foi visto antes da compra final
  14. Se você está lidando com uma loja física, eles também podem ter seu histórico de compras físico (por exemplo, brinquedos para nós ou algo on-line e também uma loja física)
  15. etc etc. etc.

Felizmente, as pessoas se comportam de maneira semelhante em conjunto, quanto mais souberem sobre a população compradora em geral, melhor saberão o que venderá e o que não venderá, e a cada transação e a cada classificação / lista de desejos adicionar / navegar, eles sabem como personalizar as recomendações mais pessoalmente. Lembre-se de que provavelmente é apenas uma pequena amostra do conjunto completo de influências do que acaba nas recomendações, etc.

Agora não tenho conhecimento interno de como a Amazon faz negócios (nunca funcionou lá) e tudo o que estou fazendo é falar sobre abordagens clássicas do problema do comércio on-line - eu costumava ser o PM que trabalhava em mineração de dados e análises para a Microsoft chamado Commerce Server. Enviamos no Commerce Server as ferramentas que permitiam às pessoas criar sites com recursos semelhantes ... mas quanto maior o volume de vendas, melhores os dados, melhor o modelo - e a Amazon é GRANDE. Só posso imaginar como é divertido brincar com modelos com tantos dados em um site direcionado ao comércio. Agora, muitos desses algoritmos (como o preditor iniciado no servidor de comércio) passaram a viver diretamente no Microsoft SQL .

As quatro grandes dicas que você deve ter são:

  1. A Amazon (ou qualquer varejista) está analisando dados agregados para toneladas de transações e toneladas de pessoas ... isso permite que eles recomendem muito bem para usuários anônimos em seu site.
  2. A Amazon (ou qualquer varejista sofisticado) acompanha o comportamento e as compras de qualquer pessoa que esteja logada e a use para refinar ainda mais os dados agregados em massa.
  3. Muitas vezes, existe um meio de ultrapassar os dados acumulados e assumir o controle "editorial" de sugestões para gerentes de produtos de linhas específicas (como alguém que possui a vertical das 'câmeras digitais' ou 'romances' verticais ou similares) onde eles realmente são especialistas
  4. Muitas vezes, existem promoções promocionais (por exemplo, a Sony ou a Panasonic, ou a Nikon, a Canon, a Sprint ou a Verizon pagam dinheiro adicional ao varejista ou oferecem um desconto melhor em quantidades maiores ou outras coisas nessas linhas) que causam certas "sugestões". as principais com mais frequência do que outras - sempre há uma lógica comercial razoável e uma razão comercial por trás disso, visando aumentar mais a cada transação ou reduzir os custos de atacado, etc.

Em termos de implementação real? Quase todos os grandes sistemas on-line se resumem a algum conjunto de pipelines (ou uma implementação de padrão de filtro ou fluxo de trabalho, etc., você o chama como quiser) que permitem que um contexto seja avaliado por uma série de módulos que aplicam alguma forma de logíca de negócios.

Normalmente, um pipeline diferente seria associado a cada tarefa separada na página - você pode ter um que recomende "pacotes / upsells" (por exemplo, compre esse item com o item que está vendo) e outro que faça "alternativas" (por exemplo, compre isso em vez do que você está olhando) e outro que puxa os itens mais intimamente relacionados da sua lista de desejos (por categoria de produto ou similar).

Os resultados desses pipelines podem ser colocados em várias partes da página (acima da barra de rolagem, abaixo da rolagem, à esquerda, à direita, fontes diferentes, imagens de tamanhos diferentes etc.) e testados para ver qual é o desempenho melhor. Como você está usando módulos fáceis de conectar e usar que definem a lógica de negócios desses pipelines, você acaba com o equivalente moral dos blocos de lego que facilitam a escolha da lógica de negócios que você deseja aplicar quando criar outro pipeline o que permite inovação mais rápida, mais experimentação e, no final, maiores lucros.

Isso ajudou em tudo? Espero que você tenha um pouco de conhecimento de como isso funciona em geral para praticamente qualquer site de comércio eletrônico - não apenas para a Amazon. A Amazon (conversando com amigos que trabalharam lá) é muito orientada a dados e mede continuamente a eficácia de sua experiência do usuário e preços, promoções, embalagens etc. - eles são um varejista on-line muito sofisticado e provavelmente estão na vanguarda da muitos dos algoritmos que eles usam para otimizar o lucro - e esses são provavelmente segredos de propriedade (você conhece a fórmula dos temperos secretos do KFC) e são armazenados como tal.

Dave Quick
fonte
1
Sim. Isso me ajudou muito e eu realmente aprecio suas contribuições sobre o assunto.
Rachel
idéias incríveis
Shobi
28

Isso não está diretamente relacionado ao sistema de recomendação da Amazon, mas pode ser útil estudar os métodos usados ​​pelas pessoas que concorreram ao Prêmio Netflix , um concurso para desenvolver um melhor sistema de recomendação usando dados de usuário da Netflix. Existe muita informação boa em sua comunidade sobre técnicas de mineração de dados em geral.

A equipe que ganhou usou uma mistura das recomendações geradas por muitos modelos / técnicas diferentes. Eu sei que alguns dos principais métodos utilizados foram análise de componentes principais, métodos de vizinhos mais próximos e redes neurais. Aqui estão alguns trabalhos da equipe vencedora:

R. Bell, Y. Koren, C. Volinsky, " A Solução BellKor 2008 para o Prêmio Netflix ", (2008).

A. Töscher, M. Jahrer, " A solução BigChaos para o Prêmio Netflix 2008 ", (2008).

A. Töscher, M. Jahrer, R. Legenstein, " Algoritmos aprimorados baseados em vizinhança para sistemas de recomendação em larga escala ", Workshop SIGKDD sobre sistemas de recomendação em larga escala e o concurso de prêmios Netflix (KDD'08), ACM Press (2008) .

Y. Koren, " A solução BellKor para o Grande Prêmio da Netflix ", (2009).

A. Töscher, M. Jahrer, R. Bell, " A Solução BigChaos para o Grande Prêmio Netflix ", (2009).

M. Piotte, M. Chabbert, " A solução da teoria pragmática para o Grande Prêmio da Netflix ", (2009).

Os trabalhos de 2008 são do primeiro ano do Progress Prize. Eu recomendo a leitura dos primeiros primeiro, porque os posteriores se baseiam no trabalho anterior.

Justin Peel
fonte
2
O que eu gosto nessa resposta é que ela aponta para o fato de que não há resposta "perfeita" e que as pessoas continuam inovando nessa área - sempre há espaço para melhorias e à medida que os tempos mudam e novos métodos são aplicados aos problemas que ela apresenta. continuará sendo resolvido de maneira diferente. E se você ler os links detalhados, poderá ver como há uma "mistura" de várias abordagens à previsão em cada um dos grandes candidatos ao prêmio. Ótimas referências.
Dave Quick
20

(Disclamer: Eu trabalhava na Amazon, embora não trabalhasse na equipe de recomendações.)

A resposta de ewernli deve ser a correta - os links do artigo para o sistema de recomendação original da Amazon e pelo que posso dizer (tanto por experiência pessoal como comprador da Amazon quanto por ter trabalhado em sistemas similares em outras empresas), muito pouco mudou: em como principal, o recurso de recomendação da Amazon ainda é muito fortemente baseado na filtragem colaborativa item a item.

Basta olhar para o formato das recomendações: na primeira página, elas estão no formato "Você visualizou X ... Os clientes que também visualizaram isso também visualizaram ..." ou uma mistura de itens semelhantes a outras coisas Eu comprei ou vi antes. Se eu for especificamente à minha página "Recomendado para você", cada item descreverá por que é recomendado para mim: "Recomendado porque você comprou ...", "Recomendado porque você adicionou X à sua lista de desejos ...", etc. um sinal clássico de filtragem colaborativa item a item.

Então, como funciona a filtragem colaborativa item a item? Basicamente, para cada item, você cria uma "vizinhança" de itens relacionados (por exemplo, olhando para quais itens as pessoas visualizaram juntas ou quais as pessoas compraram juntas - para determinar a similaridade, você pode usar métricas como o índice Jaccard ; correlação é outra possibilidade, embora eu suspeite que a Amazon não use muito os dados de classificação). Então, sempre que visualizo um item X ou faço uma compra Y, a Amazon me sugere coisas no mesmo bairro que X ou Y.

Algumas outras abordagens que a Amazon poderia potencialmente usar, mas provavelmente não usa, são descritas aqui: http://blog.echen.me/2011/02/15/an-overview-of-item-to-item-collaborative-filtering -com-amazons-recomendação-sistema /

Muito do que Dave descreve quase certamente não é feito na Amazon. (Classificações das pessoas na minha rede social? Não, a Amazon não possui nenhum dos meus dados sociais. Isso seria um enorme problema de privacidade em qualquer caso; portanto, seria difícil para a Amazon fazer mesmo se eles tivessem esses dados: as pessoas não querem que seus amigos saibam quais livros ou filmes estão comprando. Informações demográficas? Não, nada nas recomendações sugere que eles estejam vendo isso. [Diferente da Netflix, que mostra o que outras pessoas da minha área estão assistindo .])

Jason R
fonte
Durante anos, a Amazon expôs círculos de compras - que eram tendências de compra anônimas com base no nome de domínio e no CEP da empresa. Tinha que haver pelo menos 50 compradores distintos em um círculo de compras antes que você pudesse obter informações sobre isso - então a Amazon certamente manteve, rastreou e usou essas informações para ajudar a si (e outros) a entender o que era popular. Você pode ver CDs, eletrônicos e compras de livros em sua área ou em sua empresa. Eles foram expostos de 1999 a 2002. forum.dvdtalk.com/archive/t-122436.html ainda tem uma cópia e colar do texto da amazon descrevendo-os.
Dave Quick
3

Eu não tenho nenhum conhecimento específico do algoritmo da Amazon, mas um componente desse algoritmo provavelmente envolveria o rastreamento de grupos de itens frequentemente pedidos juntos e o uso desses dados para recomendar outros itens no grupo quando um cliente compra algum subconjunto do grupo.

Outra possibilidade seria rastrear a frequência do pedido do item B dentro de N dias após o pedido do item A, o que poderia sugerir uma correlação.

newdayrising
fonte
2

Até onde eu sei, é usar o raciocínio baseado em casos como um mecanismo para isso.

Você pode ver nestas fontes: aqui , aqui e aqui .

Existem muitas fontes no google que procuram o amazon e o raciocínio baseado em casos.

coelhudo
fonte
0

Se você quiser um tutorial prático (usando R de código aberto), poderá fazer pior do que passar por isso: https://gist.github.com/yoshiki146/31d4a46c3d8e906c3cd24f425568d34e

É uma versão otimizada em tempo de execução de outro trabalho: http://www.salemmarafi.com/code/collaborative-filtering-r/

No entanto, a variação do código no primeiro link é MUITO mais rápida, então eu recomendo usá-lo (achei a única parte lenta do código de yoshiki146 é a rotina final que gera a recomendação no nível do usuário - demorou cerca de uma hora com meus dados em minha máquina).

Eu adaptei esse código para funcionar como um mecanismo de recomendação para o varejista em que trabalho.

O algoritmo usado é - como outros já disseram acima - filtragem colaborativa. Esse método de CF calcula uma matriz de similaridade de cosseno e depois classifica por essa similaridade para encontrar o 'vizinho mais próximo' de cada elemento (banda de música no exemplo dado, produto de varejo no meu aplicativo).

A tabela resultante pode recomendar uma banda / produto com base em outra banda / produto escolhido.

A próxima seção do código vai além com a filtragem colaborativa baseada em USER (ou cliente).

O resultado disso é uma tabela grande com as 100 principais bandas / produtos recomendados para um determinado usuário / cliente

ChrisD
fonte
1
Embora esse link possa responder à pergunta, é melhor incluir aqui as partes essenciais da resposta e fornecer o link para referência. As respostas somente para links podem se tornar inválidas se a página vinculada for alterada. - Do comentário
Kos
Verdadeiro ... O algoritmo usado é - como outros já disseram acima - filtragem colaborativa. Este método de CF calcula uma matriz de similaridade de cosseno e, em seguida, classifica por essa similaridade para encontrar o 'vizinho mais próximo' de cada elemento (banda de música no exemplo dado, produto de varejo no meu aplicativo). A tabela resultante pode recomendar uma banda / produto com base em outra banda / produto escolhido. A próxima seção do código vai além com a filtragem colaborativa baseada em USER (ou cliente). A saída deste é uma grande mesa com a parte superior 100 bandas / produtos recomendados para um determinado usuário / cliente
Chrisd
Edite você responder e adicionar esta informação lá, não na seção de comentários, graças
Kos