Quais métodos estatísticos existem para recomendar um filme como no Netflix?

14

Estou procurando implementar um modelo dinâmico para recomendar um filme para um usuário. A recomendação deve ser atualizada sempre que o usuário assiste a um filme ou o classifica. Para simplificar, estou pensando em levar dois fatores em consideração:

  • as classificações anteriores de outros filmes pelo usuário
  • o tempo em que o usuário assistiu a determinados filmes anteriores

Como alguém configuraria esse modelo e o que a literatura acadêmica recomenda?

Eu sou novo neste campo e estou supondo que um modelo de regressão linear possa fornecer um bom resultado, para não gostar de métodos mais complexos para evitar a imposição de incertezas desnecessárias nas estimativas de parâmetros. Mas talvez já existam métodos estabelecidos que são comumente usados ​​na prática?

JohnAndrews
fonte
3
Não acho que isso seja amplo demais para ser responsável. Por exemplo, tem 2 respostas votadas.
gung - Restabelece Monica
2
Experimente o Mining Massive Datasets da coursera e seu livro grátis!
Felipe Gerard
2
Você provavelmente deseja procurar a fatoração de matriz e / ou tensor.
Marc Claesen
1
@ usεr11852 Minha resposta é mais ampla que a pergunta.
shadowtalker
1
@ usεr11852, o título da pergunta pergunta: "Quais métodos estatísticos existem ...?" A última frase pergunta se existem outros métodos além da regressão. Acho que várias respostas abaixo fornecem esse tipo de informação.
gung - Restabelece Monica

Respostas:

14

Este é realmente um problema relativamente famoso no campo do aprendizado de máquina. Em 2006, a Netflix ofereceu US $ 1 milhão ao algoritmo que proporcionou a melhor melhoria razoável ao sistema de recomendação. A teoria da solução vencedora é discutida brevemente neste livro didático da Caltech sobre aprendizado de máquina introdutório.

Basicamente , foi utilizado um método de aprendizado em conjunto . Em particular, um tipo de mistura ou empilhamento foi empregado. Isso não é trivial, mas é intuitivo. Para entender a intuição de usar diferentes abordagens estatísticas em harmonia, considere as diferentes razões pelas quais as pessoas gostam dos mesmos filmes: ou seja, Joe pode gostar de Topgun porque adora filmes de ação dos anos 80, enquanto Jane gosta de Topgun porque gosta de filmes com trilhas sonoras de Kenny Loggins. Portanto, o fato de ambos os espectadores assistirem (e classificarem o filme com alta classificação) não significa necessariamente que eles gostem de outros filmes com alta probabilidade. O algoritmo de previsão seria ideal para acomodar essas diferenças, pelo menos em alguma capacidade.

Isso pode fazer a solução parecer bastante simples, mas equilibrar algoritmos concorrentes e priorizar a melhor estimativa para cada caso definitivamente não é simples. O fato de a Netflix oferecer uma recompensa tão grande deve tornar a magnitude do desafio bastante óbvia.

Se você está apenas começando no aprendizado de máquina, verificar os recursos acima pode ser útil, dependendo do seu nível de interesse e da sua formação em matemática. Portanto, a regressão provavelmente funcionaria de bom a bom, mas um desempenho significativamente melhor é possível.

d0rmLife
fonte
2
+1 para o prêmio Netflix. Como você apontou, esse prêmio é um bom indicador de quão grande é esse desafio.
Cort Ammon
11

Metade do desafio nesses problemas é saber o que procurar.

Você pode ter adicionado a tag sem perceber, mas na verdade está procurando informações sobre os sistemas de recomendação . Você pode começar com a filtragem colaborativa ou, melhor ainda, o Manual de Introdução aos Sistemas de Recomendadores, de Ricci, Rokach e Shapira, mencionado nessa página.

shadowtalker
fonte
Na verdade, examinei mais profundamente a tag e me deparei com exemplos principalmente de filtragem colaborativa. O problema que tenho com esse método é que depende da entrada de outros usuários, se eu entendi o conceito. Estou procurando mais métodos na situação de um usuário, nenhum outro dado ou, opcionalmente, outros dados. Veja as outras referências.
JohnAndrews
1
@ JohnAndrews: Eu acho que o ssdecontrol fornece os conselhos mais relevantes. Você precisa examinar a literatura dos sistemas de recomendação. Existem muitas técnicas envolvidas, por exemplo. NNMF , Funk SVD , muitas variantes diferentes de classificadores de vizinhos mais próximos etc. para citar alguns óbvios. No final, você deseja usar a filtragem colaborativa, mas não pode "mergulhar" sem nenhum plano de fundo.
usεr11852 diz Reinstate Monic
@JohnAndrews CrossValidated geralmente é um mau lugar para começar a aprender sobre um assunto, especialmente se você apenas pesquisar por tag. Que tal olhar para as referências que eu vinculei? Os artigos de estatística da Wikipedia nem sempre são confiáveis, mas são muito bons e citam muitas referências.
shadowtalker
6

Você deve conferir o curso de Andrew Ng no Coursera: https://www.coursera.org/learn/machine-learning. Ele contém uma lição sobre a criação de sistemas de recomendação, que parece ser o que você está procurando. Essencialmente, é uma forma de regressão linear que aprende atributos sintéticos para filmes de pessoas que classificaram filmes e usa isso para prever recomendações para pessoas que não classificaram / assistiram aos filmes.

Raphael Nikolaus
fonte
3
Bem vindo ao nosso site! Obrigado por incluir algumas informações que resumem o conteúdo do link, em vez de apenas fornecer um link "vazio" - nós agradecemos.
quer
4

No Desafio Netflix (outubro de 2006 - setembro de 2009) um conjunto muito grande (107 submodelos separados) ganhou o prêmio de US $ 1 milhão no final, mas é instrutivo observar que os primeiros algoritmos simples (não conjuntos) a vencer o Netflix Cinematch referência foram baseados em uma SVD generalizada (matriz esparsa). Este primeiro marco em vencer o Cinematch foi alcançado apenas 6 dias após a competição iniciada por uma equipe chamada WXYZConsulting.

SVD (Decomposição de Valor Singular) é um algoritmo de fatoração de matriz em que você começa com uma [user, movie]matriz 2D com uma classificação (1 a 5 estrelas) em cada [u, m]posição (*) e a divide em 3 matrizes onde a matriz do meio é uma matriz quadrada de interações latentes entre usuários e filmes.

Você pode fazer a classificação da matriz quadrada menor ou maior para incluir mais ou menos essas interações de fatores latentes, respectivamente.

Existem várias implementações de software livre de SVD esparso rápido / eficiente. Por exemplo, redsvd ou vowpal-wabbit; portanto, antes de escrever o seu, você pode experimentá-los.

(*) A maioria dessas entradas é zero, pois a maioria dos usuários não avaliou a maioria dos filmes. isto é, a matriz é muito esparsa.

Referências:

arielf
fonte
O que o Netflix usou antes?
Jona
2
Um algoritmo chamado "Cinematch", que não é público, mas foi descrito como "combinação linear de vários fatores refinados ao longo dos anos", por exemplo, ponderou a classificação média global (G) + média ponderada do usuário [u] classificação + média ponderada do filme [m] classificação, ... etc.
arielf 22/12/2015
Obrigado pela resposta elaborada. Vai cavar nele. Quanto às combinações lineares, não é um grande problema dessa excesso de parametrização? Essa seria a minha abordagem preferida. Mas SVD parece promissor.
JohnAndrews
Não é um problema se você adicionar apenas fatores que melhoram o erro de generalização . Obviamente, você precisa testar todas essas inclusões em dados invisíveis para obter a confiança necessária.
Arielf 23/12/2015