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?
machine-learning
recommender-system
dynamic-regression
JohnAndrews
fonte
fonte
Respostas:
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.
fonte
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.
fonte
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.
fonte
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:
fonte