Conheça Yambda: Um dos maiores conjuntos de dados abertos do mundo para o Recsys.
Os algoritmos de recomendação ajudam as pessoas a descobrir os produtos, filmes, músicas e muito mais certos. Eles são a espinha dorsal dos serviços que variam de lojas on -line a plataformas de streaming. O avanço desses algoritmos depende diretamente da pesquisa, que por sua vez requer conjuntos de dados de alta qualidade e em larga escala.
No entanto, a maioria dos conjuntos de dados de código aberto são pequenos ou desatualizados, pois as empresas que acumulam terabytes de dados raramente os tornam publicamente disponíveis devido a preocupações com a privacidade. Hoje, estamos lançando a Yambda, um dos maiores conjuntos de dados de recomendação do mundo.
Este conjunto de dados apresenta 4,79 bilhões de interações anônimas do usuário, compiladas a partir de 10 meses de atividade do usuário.
Escolhemos o serviço de música porque é o maior serviço de streaming baseado em assinatura na Rússia, com um público mensal médio de 28 milhões de usuários.
Uma parcela significativa do conjunto de dados inclui ouvidos, curtidas e desgostos agregados, além de atributos de rastreamento provenientes do sistema de recomendação personalizado Minha vibração. Todos os dados de usuário e rastreamento são anonimizados: o conjunto de dados contém apenas identificadores numéricos, garantindo a privacidade do usuário.
A liberação de grandes conjuntos de dados abertos como a Yambda ajuda a resolver vários problemas. O acesso a dados de alta qualidade e em larga escala abre novos caminhos para pesquisas científicas e envolve jovens pesquisadores que desejam aplicar o aprendizado de máquina a desafios do mundo real.
Eu sou Alexander Plohkin e lidero o desenvolvimento da qualidade da personalização na Yandex.
Neste artigo, explicarei o que o conjunto de dados consiste, como o coletamos e como você pode usá -lo para avaliar novos algoritmos de recomendação.
Vamos começar!
Por que os conjuntos de dados abertos em larga escala são importantes?
Os sistemas de recomendação estão experimentando um verdadeiro renascimento nos últimos anos.
As empresas de tecnologia estão cada vez mais adotando modelos baseados em transformadores, inspirados no sucesso de grandes modelos de idiomas (LLMS) em outros domínios.
O que aprendemos com a visão computacional e o processamento de linguagem natural é que o volume de dados é crucial para o funcionamento desses métodos: os transformadores não são muito eficazes em pequenos conjuntos de dados, mas se tornam quase essenciais quando eles escalam para bilhões de tokens.
Os conjuntos de dados abertos verdadeiramente em larga escala são uma raridade no domínio dos sistemas de recomendação.
Conjuntos conhecidos de conjuntos de dados como LFM-1B, LFM-2B e o conjunto de dados de histórias de escuta (27b) ficaram indisponíveis ao longo do tempo devido a restrições de licenciamento.
Atualmente, o registro do número de interações do usuário é mantido pelo conjunto de dados de publicidade da Criteo, com aproximadamente 4 bilhões de eventos. Isso cria um desafio para os pesquisadores: a maioria não tem acesso a serviços em escala da Web, o que significa que não pode testar algoritmos em condições que se assemelham a implantações do mundo real.
Conjuntos de dados populares como MovieLENS, Steam ou o Prêmio Netflix contêm, na melhor das hipóteses, dezenas de milhões de interações e geralmente se concentram em feedback explícito, como classificações e revisões.
Enquanto isso, os sistemas de recomendação de produção funcionam com sinais muito mais diversos e diferenciados: cliques, curtidas, escuta completa, visualizações, compras e assim por diante.
Há outra questão crítica: a falta de dinâmica temporal. Muitos conjuntos de dados não permitem uma divisão cronológica honesta entre conjuntos de treinamento e teste, o que é crucial para avaliar algoritmos que visam prever o futuro, não apenas explicar o passado.
Para enfrentar esses desafios e apoiar o desenvolvimento de novos algoritmos em sistemas de recomendação, estamos lançando o Yambda.
Atualmente, esse conjunto de dados é o maior recurso aberto para interações do usuário no domínio da recomendação.
O que está dentro de Yambda?
O conjunto de dados inclui interações de 1 milhão de usuários com mais de 9 milhões de faixas musicais do serviço de música, totalizando 4,79 bilhões de eventos.
Primeiro, para ficar claro: todos os eventos são anonimizados.
O conjunto de dados usa apenas identificadores numéricos para usuários, faixas, álbuns e artistas. Isso é para garantir a privacidade e proteger os dados do usuário.
O conjunto de dados inclui ações importantes implícitas e explícitas do usuário:
- Ouvir: O usuário ouviu uma faixa de música.
- Como: O usuário gostou de uma faixa (“polegar para cima”).
- Diferente: O usuário removeu como.
- Antipatia: O usuário não gostava de uma faixa (“polegares para baixo”).
- Undisial: O usuário removeu uma aversão.
Para tornar o conjunto de dados mais acessível, também lançamos amostras menores contendo 480 milhões e 48 milhões de eventos, respectivamente.
Estatísticas de resumo para esses subconjuntos são fornecidas na tabela abaixo:
Os dados são armazenados no formato Apache Parquet, que é suportado nativamente por bibliotecas de análise de dados Python, como pandas e polares. Para facilitar o uso, o conjunto de dados é totalmente replicado em dois formatos:
Flat
: Cada linha representa uma única interação entre um usuário e uma faixa.Sequential
: Cada linha contém o histórico completo de interação de um único usuário.
A estrutura do conjunto de dados é a seguinte:
Uma característica fundamental de Yambda é o is_organic
Flag, que está incluído em todos os eventos. Esse sinalizador ajuda a diferenciar as ações do usuário que aconteceram naturalmente e as solicitadas pelas recomendações.
Se is_organic = 0
isso significa que o evento foi acionado por uma recomendação.
Por exemplo, em um fluxo de música personalizado ou em uma lista de reprodução recomendada. Todos os outros eventos são considerados orgânicos, o que significa que o usuário descobriu o conteúdo por conta própria.
A tabela abaixo fornece estatísticas sobre eventos orientados a recomendação:
O histórico de interação do usuário é essencial para criar recomendações personalizadas. Ele captura preferências de longo prazo e interesses momentâneos que podem mudar com o contexto.
Para ajudá -lo a entender melhor a estrutura de dados, aqui estão algumas estatísticas rápidas em nosso conjunto de dados:
Os gráficos acima revelam que o comprimento do histórico do usuário segue uma distribuição de cauda pesada.
Isso significa que, embora a maioria dos usuários tenha relativamente poucas interações, um grupo pequeno, mas significativo, tem histórias de interação muito longas.
Isso é especialmente importante para explicar modelos de recomendação, para evitar o excesso de ajustes para usuários altamente ativos e manter a qualidade para a “cauda pesada” dos usuários menos engajados.
Por outro lado, a distribuição nas faixas conta uma história muito diferente.
Este gráfico mostra claramente o desequilíbrio entre as faixas altamente populares e um grande volume de conteúdo de nicho: mais de 90% das faixas receberam menos de 100 peças durante todo o período de coleta de dados.
Apesar disso, os sistemas de recomendação devem se envolver com todo o catálogo para superfície, mesmo as faixas de baixa popularidade que se alinham bem com as preferências individuais do usuário.
Usando Yambda para avaliar o desempenho algorítmico
Os estudos acadêmicos sobre a qualidade do algoritmo de recomendação geralmente usam o esquema de licença (LOO), onde uma única ação do usuário é retida para testes e o restante é usado para treinamento.
Este método, no entanto, vem com duas desvantagens sérias:
- Inconsistência temporal: Os eventos de teste podem incluir ações que aconteceram antes daquelas no conjunto de treinamento.
- Ponderação igual de usuários: Usuários inativos afetam as métricas de avaliação tanto quanto as ativas, que podem distorcer os resultados.
Para aproximar as condições de avaliação dos cenários do sistema de recomendação do mundo real, propomos uma alternativa: divisão temporal global.
Este método simples seleciona um ponto no tempo
Isso garante que o modelo treina sobre dados históricos e seja testado contra dados futuros, imitando um verdadeiro ambiente de produção. O diagrama abaixo ilustra o seguinte:
Para nossa avaliação, reservamos um dia de dados como o conjunto de espera por dois motivos principais:
- Mesmo um único dia de dados fornece volume suficiente para avaliar com segurança o desempenho do algoritmo.
- Modelos na produção do mundo real têm características diferentes: alguns requerem atualizações de estatísticas frequentes (por exemplo, recomendações baseadas em popularidade), outros são ajustados ou treinidos periodicamente (impulsionando, fatorização matricial, modelos de duas torres) e alguns dependem de histórias de interação do usuário continuamente atualizadas (modelos recorrentes e baseados em transformadores).
Do nosso ponto de vista, uma janela de um dia é o período de avaliação ideal para manter os modelos estáticos, enquanto ainda captura tendências de curto prazo.
A desvantagem dessa abordagem é que ela não representa padrões de longo prazo, como mudanças semanais no comportamento de escuta musical. Sugerimos deixar esses aspectos para pesquisas futuras.
Linhas de base
Avaliamos vários algoritmos de recomendação populares em Yambda para estabelecer linhas de base para pesquisas e comparação futuras.
Os algoritmos que testamos incluem: MOSTPOP, DECAYPOP, ITEMKNN, IALS, BPR, SANSA e SASREC.
Para avaliação, usamos as seguintes métricas:
- Ndcg@k (ganho cumulativo com desconto normalizado), que mede a qualidade da classificação nas recomendações.
- Lembre -se de@k, que avalia a capacidade do algoritmo de recuperar recomendações relevantes do pool total.
- Cobertura@k, o que indica quão amplamente o catálogo de recomendação é representado.
Os resultados são fornecidos em tabelas e o código está disponível em Abraçando o rosto.
Conclusão
O Yambda pode ser valioso para pesquisas sobre algoritmos de recomendação em dados em larga escala, onde o desempenho e a capacidade de modelar a dinâmica comportamental são cruciais.
O conjunto de dados está disponível em três versões: um conjunto completo com 5 bilhões de eventos e subconjuntos menores com 500 milhões e 50 milhões de eventos.
Desenvolvedores e pesquisadores podem escolher a versão que melhor se encaixa em seu projeto e recursos computacionais. Tanto o conjunto de dados quanto o código de avaliação estão disponíveis em Abraçando o rosto.
Esperamos que esse conjunto de dados seja útil em seus experimentos e pesquisas!
Obrigado pela leitura!