Collaborative Filtering por Fatores
Latentes
Recomendação para o GlobosatPlay
Ciro Cavani
Globo.com - Personalização
ciro....
Esse trabalho foi desenvolvido durante o segundo semestre de 2014 para o site GlobosatPlay e
encontrasse em produção no en...
Os trabalhos publicados sobre o Netflix Prize foram a inspiração para esse projeto.
2.2 Especificação
O projeto foi defini...
(cálculo de preferência do usuário pelo vídeo, papers do Netflix)
3. Fatoração com Mahout ALS
(otimização de parâmetros)
4...
O processo dos algoritmos de recomendação varia para cada caso. Um caso típico é o
processamento em três etapas no cluster...
4. timestamp do play,
5. timestmap do último sinal
3.2.2 Mahout
A implementação do Collaborative Filtering por Fatores Lat...
A opção foi usar uma razão simples entre o tempo assistido e a duração do vídeo, acumulando para
o mesmo usuário-vídeo e n...
5 Conclusão
Os testes inicias mostram que o uso do Collaborative Filtering por Fatores Latentes usando
Alternating Least S...
conference on Algorithmic Aspects in Information and Management (AAIM '08), Rudolf
Fleischer and Jinhui Xu (Eds.). Springe...
Próximos SlideShares
Carregando em…5
×

Collaborative Filtering por Fatores Latentes - Recomendação para o GlobosatPlay

1.133 visualizações

Publicada em

Esse artigo descreve como foi feita a recomendação personalizada do GlobosatPlay usando Collaborative Filtering por Fatores Latentes, inspirado pelos trabalhos publicados sobre o Netflix Prize. A solução utiliza Mahout, Hadoop e Kafka para processar a recomendação para milhões de usuários ativos, milhares de itens variados em fluxo e histórico esparso de interações. Os resultados mostraram um ganho de 50% na conversão sobre Collaborative Filtering User-User e a expectativa é usar esse algoritmo em outros produtos da Globo.com.

Publicada em: Dados e análise
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.133
No SlideShare
0
A partir de incorporações
0
Número de incorporações
468
Ações
Compartilhamentos
0
Downloads
8
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Collaborative Filtering por Fatores Latentes - Recomendação para o GlobosatPlay

  1. 1. Collaborative Filtering por Fatores Latentes Recomendação para o GlobosatPlay Ciro Cavani Globo.com - Personalização ciro.cavani@corp.globo.com Aprendizado de Máquina I - INF2979 Prof. Ruy Milidiú 2014-2 Abstract Esse artigo descreve como foi feita a recomendação personalizada do GlobosatPlay usando Collaborative Filtering por Fatores Latentes, inspirado pelos trabalhos publicados sobre o Netflix Prize. A solução utiliza Mahout, Hadoop e Kafka para processar a recomendação para milhões de usuários ativos, milhares de itens variados em fluxo e histórico esparso de interações. Os resultados mostraram um ganho de 50% na conversão sobre Collaborative Filtering User-User e a expectativa é usar esse algoritmo em outros produtos da Globo.com. 1 Introdução A Globo.com[1] é o ramo Internet do Grupo Globo, o maior conglomerado de mídia da América Latina, e tem alguns dos maiores portais do Brasil (G1, Globo Esporte, GShow e Vídeos). São dezenas de milhões de acessos por dia aos portais, com a home da Globo.com sendo a principal fonte de acessos com cerca de 45 milhões de acessos por dia. Também atua como prestadora de serviços e suporte na Internet para todos os outros negócios de mídia do Grupo, incluindo TV Globo e a Globosat. O time de Personalização desenvolve a Plataforma de BigData usada no Sistema de Recomendação para captura de dados e analise do perfil dos usuários. O objetivo é aumentar a permanência do usuário no site, aumentar o número de páginas consumidas, aumentar o engajamento do usuário (comentários, compartilhamentos, …). A proposta de valor é ser capaz de personalizar o conteúdo da Globo.com em diversos produtos de forma contextualizada e prover as ferramentas necessárias para tomar decisões baseadas em dados. Esse artigo é sobre a recomendação personalizada do GlobosatPlay[2] usando Collaborative Filtering[12] por Fatores Latentes, inspirado pelos trabalhos publicados sobre o Netflix Prize[3]. Os resultados obtidos foram promissores e a expectativa é usar esse algoritmo em outros produtos da Globo.com. O conteúdo cobre: a apresentação do projeto; o desenvolvimento na plataforma da Globo.com; uma discussão sobre a metodologia de avaliação e os resultados obtidos; uma proposta de otimização.
  2. 2. Esse trabalho foi desenvolvido durante o segundo semestre de 2014 para o site GlobosatPlay e encontrasse em produção no endereço http://globosatplay.globo.com/ (trilha Recomendados). Esse relatório foi produzido para matéria Aprendizado de Máquina I - INF2979, Prof. Ruy Milidiú, 2014-2. 2 Projeto O projeto consistiu na implantação do algoritmo de Collaborative Filtering por Fatores Latentes baseado no histórico dos usuários para a recomendação de vídeos personalizada do GlobosatPlay. Esse algoritmo foi um dos que obteve melhores resultados no Netflix Prize e suas características são ideais para a recomendação da Globo.com. A expectativa é que o uso desse algoritmo em outros produtos também traga bons resultados como os obtidos no GlobosatPlay. 2.1 Motivação A demanda do time de Personalização foi desenvolver a recomendação para o GlobosatPlay, um site de stream de vídeos desenvolvido na Globo.com, com uma solução que pudesse ser usada em todos os produtos da empresa. A Globo.com tem dezenas de milhões de acessos por dia aos portais com cerca de 10 milhões de visitantes únicos e uma produção massiva de conteúdo bastante variado em Jornalismo, Esporte, Variedades e Vídeos (juntamente com TV Globo, Editora Globo e demais empresas do Grupo). Portanto o desafio é recomendar para milhões de usuários ativos milhares de itens variados em fluxo com histórico esparso de interações (feedback implícito). Esse cenário tem características similares ao problema que os algoritmos desenvolvidos no Netflix Prize se propunham a resolver. Apesar do dataset do Netflix ser baseado no rating do usuário em um filme (feedback explícito), trabalhos desenvolvidos foram extrapolados para feedback implícito.
  3. 3. Os trabalhos publicados sobre o Netflix Prize foram a inspiração para esse projeto. 2.2 Especificação O projeto foi definido da seguinte forma: • Problema: Recomendação personalizada de vídeo baseado no histórico do usuário. • Objetivo: Recomendação no GlobosatPlay usando dados sobre os vídeos assistidos pelo usuário. • Dataset: Histórico dos vídeos assistidos pelo usuário. Catálogo de Vídeos. • Resultado: Trilha de thumbnails pela qual o usuário pode navegar para assistir novos vídeos. • Avaliação: Teste A/B em Produção. O algoritmo escolhido para esse trabalho foi o Collaborative Filtering por Fatores Latentes usando fatoração por Alternating Least Squares com Weighted-lambda-Regularization (ALS-WR) [8,9]. Esse algoritmo teve um dos melhores resultados no Netflix Prize e tem as características necessárias para a escala da Globo.com. Também é possível encontrar várias implementações de qualidade para serem usadas em produção. A implementação escolhida para esse trabalho foi a do Apache Mahout[4]. A plataforma de recomendação de conteúdo personalizada da Globo.com tem um cluster Hadoop[5] onde são armazenados os dados coletados da atividade dos usuários (feedback implícito). Nesse cluster, o Mahout já é usado para processar o algoritmo de Collaborative Filtering User-User com histórico de pageviews. Usar o Collaborative Filtering ALS-WR do Mahout com histórico de videoviews foi considerada como a escolha que daria menos trabalho de mudar o setup da plataforma e mais rápida de fazer. 3 Desenvolvimento Esse trabalho foi desenvolvido durante o segundo semestre de 2014 para o site GlobosatPlay e encontrasse em produção no endereço http://globosatplay.globo.com/ (trilha Recomendados). A plataforma do sistema de recomendação da Globo.com foi usada nesse trabalho. O trabalho consistiu em: 1. Captura de videoview 2. Pré-processamento de videoview
  4. 4. (cálculo de preferência do usuário pelo vídeo, papers do Netflix) 3. Fatoração com Mahout ALS (otimização de parâmetros) 4. Pós-processamento da Recomendação (metadados da resultado) 5. Testes A/B, Otimização 3.1 Sistema de Recomendação O Sistema de Recomendação é projetado para coletar os sinais produzidos tanto pela dinâmica do usuário quanto pela dinâmica do conteúdo e filtrar o que é relevante para o usuário no momento em que isso é importante. Nesse sistema, os dados coletados são processados e transformados em modelos de Usuário, Conteúdo e Contexto. Esses modelos são usados para apresentar as melhores opções de acordo com parâmetros do Produto. A interação do usuário com o conteúdo recomendado é avaliada através de testes usados para orientar constantes mudanças em busca de melhorar a performance do sistema. A plataforma desenvolvida na Globo.com para recomendação personalizada de conteúdo é projetada para suportar milhões de usuários ativos, milhares de itens variados em fluxo, diversos contextos de produtos. Essa plataforma pode ser dividida em três partes: recebimento de dados em tempo real, processamento de algoritmos de recomendação, e; consulta on-line combinando modelos. O processo de recebimento de dados em tempo real é baseado no Kafka[6], um cluster de distribuição de mensagens de alta performance que suporta bilhões de mensagens por dia. Esse sistema é usado para receber todos os sinais coletados sobre o usuário possibilitando o processamento stream em tempo real. Eventualmente, esse stream é armazenado permanentemente no cluster Hadoop para processamento em lote e análise.
  5. 5. O processo dos algoritmos de recomendação varia para cada caso. Um caso típico é o processamento em três etapas no cluster Hadoop. Na primeira etapa, é feito um condicionamento de dados novos, seja para transformar em um formato específico ou para atualizar um pré-modelo gerado na última execução. Na segunda etapa, é executado o algoritmo de recomendação. Na terceira etapa, o resultado do algoritmo é verificado e transformado no formato que pode ser consultado. Normalmente a execução é condicionada por vários parâmetros e é comum ter diferentes configurações do mesmo algoritmo em teste. A consulta on-line é a API que os desenvolvedores da Globo.com podem usar para recomendar conteúdo personalizado. AAPI faz a combinação dos diversos modelos de recomendação e filtra o conteúdo mais relevante para o usuário. AAPI permite criar testes A/B com combinações diferentes dos modelos permitindo avaliar a performance de um algoritmo contra outro, ou o mesmo com parâmetros diferentes. Um exemplo de como esse sistema funciona: (esse exemplo captura a essência, mas é só uma ilustração) Collaborative Filtering User-User do Mahout Toda vez que uma página da Globo.com é visitada, é gerado um sinal de pageview com o id do usuário, a URL e o timestamp. Esse sinal passa pelo Kafka e é armazenado no Hadoop. Um job MapReduce varre todos os sinais não processados na última execução (timestamp) gerando um arquivo com o formato user-item-rating do Mahout (rating = número de visitas, por simplicidade). O job do Mahout é executado e gera um arquivo com formato user-[lista-de-itens-com-score]. Mais um job MapReduce é executado para transformar a saída do Mahout e salvar o resultado final no HBase. Quando configurada para esse algoritmo, a API consulta o HBase e usa a lista com score para combinar com outros resultados e fazer a recomendação. 3.2 Recomendação de Vídeo 3.2.1 Dataset O dataset corresponde aos sinais de videoview gerados pelo player durante a exibição de um vídeo. Esses sinais passam pelo Kafka e são armazenados no Hadoop. O player de vídeo notifica eventos durante o tempo em que um vídeo é assistido. O primeiro sinal vem do play seguido por sinais em posições específicas de progresso, incluindo pausa, seek e parada. Cada vez que um usuário assiste a um vídeo, um conjunto independente de valores de consumo desse vídeo para esse usuário é registrado. Formado: 1. id do usuário, 2. id do vídeo, 3. duração total do vídeo,
  6. 6. 4. timestamp do play, 5. timestmap do último sinal 3.2.2 Mahout A implementação do Collaborative Filtering por Fatores Latentes usando fatoração por ALS-WR é dividida em duas partes no Mahout. A primeira é a fatoração e a segunda é o cálculo da recomendação (itens com maior score) O job de fatoração recebe um arquivo de entrada com formato: id do usuário, id do item, preferência (preferência é um número que determina quanto o usuário 'gosta' do item, um rating). A partir desse arquivo, o job produz as matrizes user-to-feature e item-to-feature. Os parâmetros relevantes para esse job são: • implicitFeedback: chave (true/false) para indicar o tipo de preferência • alpha: confiança no feedback implícito • lambda: regularização • numFeatures: dimensão do espaço de features • numIterations: número de iterações Baseado nos resultados dos testes com o dataset do Netflix Prize e alguns testes de performance (melhor resultado no menor tempo) com o dataset de videoview, os parâmetros foram ajustados para os valores: implicitFeedback=true, alpha=0.8 lambda=0.065, numFeatures=20, numIterations=10 … O job de recomendação recebe as matrizes user-to-feature e item-to-feature e produz um arquivo com o formato user-[lista-de-itens-com-score] Os parâmetros relevantes para esse job são: • numRecommendations: máximo número de recomendações por usuário, default é 10 • maxRating: maior rating geral calculado para preferência do usuário por um item Esses valores são de livre escolha e foram ajustados para: numRecommendations=50 maxRating=100 3.2.3 Preferências O cálculo da preferência do usuário por um vídeo é o principal fator para a qualidade desse algoritmo. Os papers sobre o Netflix Prize propõem soluções bastante elaboradas [10, 11]. Por restrição de tempo, para essa primeira iteração do sistema, só foi usado um modelo.
  7. 7. A opção foi usar uma razão simples entre o tempo assistido e a duração do vídeo, acumulando para o mesmo usuário-vídeo e normalizando o score de 0-100. A proposta é incrementar essa fórmula e avaliar os resultados. 4 Resultados A métrica de avaliação utilizada nesse trabalho foi conversão medida através de teste A/B. O princípio do teste é separar os usuários em grupos e oferecer a cada grupo uma combinação específica de modelos de recomendação. A conversão é medida como o número de itens acessados pelos usuários dividido pelo número de impressões que foram feitas. O experimento realizado teve início no dia 26/11 e os resultados são do dia 08/12. Nesse experimento foram consideradas três (3) combinações: CF User-User + Top24h (azul), CF User- User + Recentes (verde) e CF Fatores Latentes + Top24h (preto). Top24h é o ranking de matérias mais acessadas nas últimas 24h e tem peso 1/1000 na proporção com outras recomendações, ou seja, na prática, só é usado no cold start. Recentes é a lista das últimas matérias publicadas e também só é usado no cold start. Esse experimento mostra uma taxa de conversão de 3,51% para algoritmo de CF Fatores Latentes contra uma taxa de 2,32% para o CF User-User ambos combinados com Top24h, diferença de 1,19% ou um ganho de 50%. Na prática, esses números são promissores mostrando ganho significativo. A expectativa é que esse ganho seja um reflexo de uma recomendação de melhor qualidade. Ainda é necessário fazer mais testes para entender melhor se é possível aumentar ainda mais a performance desse novo algoritmo.
  8. 8. 5 Conclusão Os testes inicias mostram que o uso do Collaborative Filtering por Fatores Latentes usando Alternating Least Squares com Weighted-lambda-Regularization (ALS-WR) pode representar um ganho qualitativo significativo na recomendação de vídeos. Contudo, esse algoritmo é mais lento para processar e tem mais parâmetros que precisam ser ajustados. Esse trabalho ainda vai ser estendido com melhorias no cálculo da preferência do usuário e o uso de um otimizador caixa-preta para melhorar os parâmetros do algoritmo. A próxima etapa desse trabalho consiste em usar o MOE (Metric Optimization Engine)[7] para otimizar a função objetivo Taxa de Conversão para os parâmetros lambda, alpha, dimensão e vetor de pesos da combinação. Agradecimentos: esse trabalho só foi possível com a ajuda, o incentivo e a cobrança dos meus colegas. Muito obrigado Tiago Motta, Marcos Sousa, Bruno Táboas e Nathalie Nader; pela revisão desse relatório, Renan Oliveira e Juarez Bochi. Por possibilitar que todo esse sistema fosse desenvolvido, Marcelo Medeiros muito obrigado! Agradeço a todos que participaram no acumulo de conhecimento e experiência que estão materializados nesse sistema. 6 Referências 1. Globo.com http://globo.com/ 2. GlobosatPlay http://globosatplay.globo.com/ 3. Netflix Prize http://www.netflixprize.com/ 4. Apache Mahout http://mahout.apache.org/ http://mahout.apache.org/users/recommender/matrix-factorization.html http://mahout.apache.org/users/recommender/intro-als-hadoop.html 5. Apache Hadoop http://hadoop.apache.org/ 6. Apache Kafka http://kafka.apache.org/ http://engineering.linkedin.com/distributed-systems/log-what-every-software-engineer- should-know-about-real-time-datas-unifying 7. MOE (Metric Optimization Engine) http://yelp.github.io/MOE/ http://engineeringblog.yelp.com/2014/10/using-moe-the-metric-optimization-engine-to- optimize-an-ab-testing-experiment-framework.html 8. Yifan Hu, Yehuda Koren, and Chris Volinsky. 2008. Collaborative Filtering for Implicit Feedback Datasets. In Proceedings of the 2008 Eighth IEEE International Conference on Data Mining (ICDM '08). IEEE Computer Society, Washington, DC, USA, 263-272. DOI=10.1109/ICDM.2008.22 http://dx.doi.org/10.1109/ICDM.2008.22 9. Yunhong Zhou, Dennis Wilkinson, Robert Schreiber, and Rong Pan. 2008. Large-Scale Parallel Collaborative Filtering for the Netflix Prize. In Proceedings of the 4th international
  9. 9. conference on Algorithmic Aspects in Information and Management (AAIM '08), Rudolf Fleischer and Jinhui Xu (Eds.). Springer-Verlag, Berlin, Heidelberg, 337-348. DOI=10.1007/978-3-540-68880-8_32 http://dx.doi.org/10.1007/978-3-540-68880-8_32 10. Yehuda Koren. 2008. Factorization meets the neighborhood: a multifaceted collaborative filtering model. In Proceedings of the 14th ACM SIGKDD international conference on Knowledge discovery and data mining (KDD '08). ACM, New York, NY, USA, 426-434. DOI=10.1145/1401890.1401944 http://doi.acm.org/10.1145/1401890.1401944 11. Yehuda Koren. 2009. Collaborative filtering with temporal dynamics. In Proceedings of the 15th ACM SIGKDD international conference on Knowledge discovery and data mining (KDD '09). ACM, New York, NY, USA, 447-456. DOI=10.1145/1557019.1557072 http://doi.acm.org/10.1145/1557019.1557072 12. John S. Breese, David Heckerman, and Carl Kadie. 1998. Empirical analysis of predictive algorithms for collaborative filtering. In Proceedings of the Fourteenth conference on Uncertainty in artificial intelligence (UAI'98), Gregory F. Cooper and Serafín Moral (Eds.). Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 43-52.

×