Sistemas dinâmicos de recomendação


14

Um sistema de recomendação mede a correlação entre classificações de usuários diferentes e gera recomendações para um determinado usuário sobre os itens que podem ser do seu interesse.

No entanto, os gostos mudam com o tempo, portanto , as classificações antigas podem não refletir as preferências atuais e vice-versa. Você pode ter considerado "excelente" um livro que agora classificaria como "não muito nojento" e assim por diante. Além disso, os próprios interesses também mudam.

Como os sistemas de recomendação devem funcionar em um ambiente em mudança?

  1. Uma opção é cortar as classificações "antigas", o que pode funcionar perfeitamente, desde que você defina corretamente "antigas" (você pode até dizer que as classificações nunca expiram e fingir que o problema não existe). Mas não é a melhor opção possível: é claro que os gostos evoluem, é um fluxo de vida normal e não há razão para não podermos usar o conhecimento extra de classificações anteriores corretas.
  2. Outra opção é acomodar de alguma forma esse conhecimento extra. Portanto, não podemos apenas encontrar uma "correspondência instantânea" para seus interesses atuais, mas sugerir o que você mais gosta depois (em oposição ao que você pode gostar agora ).

Não tenho certeza se estou explicando isso bem o suficiente. Basicamente, sou a favor da segunda abordagem e estou falando de um Sistema de Recomendadores que mede as correlações de trajetórias de gosto e produz recomendações que atenderão ... bem, vamos chamá-lo de crescimento pessoal - porque elas serão provenientes de pessoas cujas "trajetória de gostos" (e não apenas "instantâneo de gostos") é semelhante ao seu.

Agora a pergunta: gostaria de saber se algo semelhante à "opção 2" já existe e, se existir, gostaria de saber como funciona. E se não existir, você pode discutir como deve funcionar! :)

Respostas:


8

Eu realmente recomendo o artigo Filtragem colaborativa com dinâmica temporal de Yehuda Koren (Concurso da Netflix!), Onde esse problema é discutido em detalhes.

Concordo com o autor, que a primeira opção ("cortar") não é o caminho a percorrer. É verdade que preferências desatualizadas são ignoradas dessa maneira, mas a) algumas preferências nunca mudam; portanto, mata-se dados para identificar as sempre-vivas eb) são necessárias algumas preferências no passado para entender as preferências do futuro ( por exemplo, compre a primeira temporada -> você provavelmente comprará a segunda temporada).

No entanto, o Koren não tenta identificar essas trajetórias explicitamente (ou seja, para que se possa prever futuros comportamentos de mudança de um usuário), pois essa é uma tarefa muito muito difícil. Você pode imaginar isso mantendo em mente que as "estações" de preferência ao longo de uma trajetória NÃO estão ligadas ao tempo, mas ao desenvolvimento pessoal de um usuário, talvez interrompido ou atravessado por outras trajetórias ou expresso simplesmente de uma maneira diferente. Por exemplo, se alguém passa de filmes de ação difícil para filmes de ação, não existe um "filme de ação suave de entrada" definido ou algo assim. O usuário pode entrar nessa área a qualquer momento (no tempo e no espaço do item). Esses problemas combinados com a escassez de dados tornam quase impossível criar um modelo viável aqui.

Em vez disso, o Koren tenta separar os dados passados ​​em sinais de padrão de longo prazo e ruído diário, a fim de aumentar a eficácia das previsões de classificação. Ele aplica essa abordagem ao SVD e a um modelo simples de neigborbood colaborativo. Infelizmente, ainda não terminei a matemática, portanto não posso fornecer mais detalhes sobre isso.

Nota adicional sobre modelagem explícita das trajetórias

A área de Mineração por Sequência fornece métodos para fazer isso, mas o ponto crítico é encontrar uma representação abstrata adequada dos itens (já que o uso dos itens em si não funcionará devido à escassez), por exemplo, agrupar em tags. No entanto, embora essa abordagem possa fornecer algumas informações sobre o comportamento de alguns usuários (mineração de dados!), Pode não ser relevante quando se trata do aplicativo para todos os clientes (ou seja, a massa), de modo que a modelagem implícita sugerida por Koren pode ser melhor no final.


O artigo de Yehuda está muito próximo do que eu estava falando, embora ele não fale sobre "trajetórias de gosto". Talvez você esteja correto e a "taxa de alteração de sabor" não seja fixa para nenhuma pessoa. Obrigado pelo link!
andreister

Sim, esta é a primeira coisa que pensei.
Stumpy Joe Pete

2

Não estou ciente de um sistema em funcionamento, mas não ficaria surpreso se a Amazon, NetFlix ou alguém tiver esse sistema. Até o mecanismo de pesquisa do Google pode ter um tipo semelhante de sistema.

Pensei nisso enquanto fazia o curso do Dr. Ng no semestre passado. A abordagem que primeiro achei ideal seria adicionar um fator de ponderação com base na idade. Quanto mais atual um dado for, mais pesado ele será ponderado. Essa abordagem seria relativamente simples e computacionalmente barata de implementar.

No entanto, depois de pensar sobre essa abordagem com mais cuidado, acho que ela apresenta sérias falhas para muitas aplicações. Pessoalmente, frequentemente acompanho um gênero ou programa por algum tempo, canso dele, passo para outra coisa, mas voltarei ao gênero original mais tarde. Esse ciclo de esgotamento e reavivamento também aparece na sociedade.

Portanto, estou inclinado a um sistema um pouco mais complicado. Os dados precisariam ser divididos em dois conjuntos; dados atuais - o limite precisaria variar dependendo da aplicação mais o comprimento das interações do indivíduo - que seriam mais pesados ​​e os dados "históricos" que seriam classificados mais baixos com um lento declínio nos valores ao longo do tempo. Segundo, um fator seria incluído para tentar detectar "desligamentos" onde um interesse ou envolvimento intenso desaparece repentinamente. Os dados "atuais" que são classificados da mesma forma seriam reclassificados como se fossem históricos.

Nenhuma dessas abordagens tem rigor ou validação, mas acredito que valeria a pena construir algumas tentativas da hipótese.


Sua idéia de pesos mais baixos para dados antigos é semelhante à "opção 1". Em vez disso, estou dizendo que toda a trajetória da mudança de sabor é importante - ou seja, se ontem você gostou do gênero A e hoje você gosta do gênero B, o sistema procuraria outras pessoas com o mesmo "AB- ??" gosto se move e sugeriria que amanhã você gostaria do gênero C.
andreister

1

A meu ver, uma versão modificada da filtragem colaborativa pode funcionar. No entanto, você precisará manter um registro de data e hora em cada classificação e aplicar uma penalidade ao calcular o peso de uma classificação mais antiga.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.