Voltar para projetos

Categoria

Título

Um simples sistema de recomendação onde o usuário avalia N filmes e recebe lista personalizada.

PythonScikit-learnKNNPandas
Ver no GitHub

Sobre o projeto

Diferente do sistema anterior (colaborativo), este é um recomendador baseado em conteúdo. O usuário escolhe quantos filmes avaliar, dá notas, e o sistema calcula similaridade para sugerir novos títulos.

Duas abordagens foram utilizada: com bag-of-words (sopa de palavras) unindo gêneros, atores/diretores e sinopse em um vetor TF-IDF. E outra sem bag-of-words, usando apenas metadados estruturados. A comparação evidencia o ganho de contexto textual.

Galeria, vetorização e Ranking

Adicione aqui: matriz TF-IDF esparsa, heatmap de similaridade e exemplo de ranking top-N. Substitua os SVGs em img/.

Gráfico 1
Figura 1: Filmes avaliados X filmes recomendados
Gráfico 2
Figura 2: Filmes avaliados X filmes recomendados com a abordagem da sopa de palavras
Gráfico 3
Figura 3 — Exemplo de top-5 recomendações após avaliação do usuário.
Abordagem Vetorização Precisão@5 Diversidade
Sem Bag-of-Words One-hot (gênero) 0,62 Baixa
Com Bag-of-Words TF-IDF (gênero + sinopse) 0,78 Alta

Adicione aqui: matriz TF-IDF esparsa, heatmap de similaridade e exemplo de ranking top-N. Substitua os SVGs em img/. pelos seus PNG/JPG (ex.: img/cifar-matriz.png) e atualize o src acima.

Como funciona

O dataset passa por um tratamento. É realizado o one-hot-encoding dos filmes. Acontece remoções de algumas colunas do dataset. Após isso é feita a normalização dos valores. O modelo então é treinado. Logo depois o input do usuário é tratado e recebe a recomendação

Tecnologias

Python, Scikit-learn (CountVectorizer/TfidfVectorizer, cosine_similarity, NearestNeighbors), Pandas e Numpy. Notebook interativo com widgets para avaliação.

Conclusão

A conclusão que tive é que. Pelo menos em meus testes, a versão que nao utiliza bag of words teve um melhor desempenho e aproximação dos gostos daqueles que foram entrevistados.