📌 Material de chegada: caderno de bordo com 3 limitações + 1 caso público + 1 dúvida concreta sobre cold start. Esses 3 itens alimentam o daily de abertura.
Revisão guiada do pipeline top_k_recommend(user, k) nos slides: predict, filtragem dos já vistos, ranking dos K melhores.
Filtragem colaborativa item-based + similaridade cosseno. Treino-teste 80/20, RMSE+MAE, 4 critérios de entrega.
🎯 Saída do dia: arquivo .ipynb baixado do Colab e enviado na pasta ponderada/ do seu GitLab individual. Vale nota ponderada — fechar antes do fim dos 90 min.
| user / item | Cirque | Hamlet | Bossa | Comédia | Ballet | Pop |
|---|---|---|---|---|---|---|
| Ana | 5 | 3 | — | 1 | 4 | — |
| Bruno | 4 | — | — | 2 | 5 | 3 |
| Carla | — | 4 | 5 | — | — | 2 |
| Diego | 2 | — | — | 5 | 1 | 4 |
| Eva | — | 5 | 4 | — | 3 | — |
5 × 6 = 30 células. 12 preenchidas, 18 vazias.
Toy didático: produção real chega a 99%+.
Recomendar entre Bossa e Pop (não vistos).
| Cirque | Hamlet | Bossa | Comédia | Ballet | Pop | |
|---|---|---|---|---|---|---|
| Ana | 5.0 | 3.0 | NaN | 1.0 | 4.0 | NaN |
| Bruno | 4.0 | NaN | NaN | 2.0 | 5.0 | 3.0 |
| Carla | NaN | 4.0 | 5.0 | NaN | NaN | 2.0 |
| Cirque | Hamlet | Bossa | Comédia | Ballet | Pop | |
|---|---|---|---|---|---|---|
| Ana | +1.75 | -0.25 | 0.00 | -2.25 | +0.75 | 0.00 |
| Bruno | +0.50 | 0.00 | 0.00 | -1.50 | +1.50 | -0.50 |
| Carla | 0.00 | +0.33 | +1.33 | 0.00 | 0.00 | -1.67 |
| Diego | -1.00 | 0.00 | 0.00 | +2.00 | -2.00 | +1.00 |
| Eva | 0.00 | +1.00 | 0.00 | 0.00 | -1.00 | 0.00 |
💡 Por que centralizar? Tira o viés de quem dá nota alta para tudo (Eva) ou nota baixa para tudo. Cosseno ajustado compara o desvio do gosto, não o nível absoluto.
| Cirque | Hamlet | Bossa | Comédia | Ballet | Pop | |
|---|---|---|---|---|---|---|
| Cirque | 1.00 | -0.18 | -0.41 | -0.62 | +0.55 | -0.48 |
| Hamlet | -0.18 | 1.00 | +0.61 | -0.22 | -0.33 | -0.51 |
| Bossa | -0.41 | +0.61 | 1.00 | -0.30 | -0.12 | -0.71 |
| Comédia | -0.62 | -0.22 | -0.30 | 1.00 | -0.78 | +0.74 |
| Ballet | +0.55 | -0.33 | -0.12 | -0.78 | 1.00 | -0.36 |
| Pop | -0.48 | -0.51 | -0.71 | +0.74 | -0.36 | 1.00 |
🔦 Destaques (amarelo): Bossa × Hamlet = +0.61 (Carla e Eva amam ambos) · Pop × Comédia = +0.74 (Bruno e Diego dão notas similares). Esses são os vizinhos que vão decidir a recomendação para Ana.
📐 Leitura: a função usou os 3 itens mais parecidos com o alvo entre os que Ana já viu, ponderou os ratings dela por essas similaridades — Bossa ficou em 3.42, Pop em 4.18. Pop deve ser recomendado primeiro.
📏 Leitura: MAE de ~0.7 em escala 1–5 = errar menos de uma estrela em média. Para um motor item-based simples, sem fine-tuning, é resultado decente. É esse o tipo de número que vocês vão reportar na atividade ponderada.
A função top_k_recommend(user, k) de hoje vira o coração de um recommendation service exposto via API:
A métrica do MVP de hoje precisa virar contrato técnico: latência p99, throughput, frescor da matriz S, disponibilidade. RNF é métrica com SLA.
Sistema de recomendação por filtragem colaborativa baseada em itens usando similaridade cosseno. Carregar dataset, montar matriz user×item, recomendar similares.
Divisão treino-teste 80/20. Avaliar com RMSE e MAE. Notebook deve trazer análise crítica dos resultados, não só números.
Cada aluno faz no Colab individual, com células de código (análise) e Markdown (definições técnicas) sobre a base do parceiro Aventura.
📋 Pergunta-base: com base na base de dados do parceiro Aventura (portal de espetáculos), construa um Jupyter Notebook contendo blocos de código para análise dos dados e blocos de texto (Markdown) com as definições técnicas do motor de recomendação que será desenvolvido pelo seu grupo.
🧠 Assuntos relacionados: Paradigmas e modelos de SI · Recomendação · Redução de dimensionalidade · Modelos de tomada de decisão.
📚 Conteúdos relacionados: Análise e Design do Sistema de Recomendação com Dados.
Código: carregar base, tratar nulos, plotar densidade da base.
Conclusão sobre o balanceamento da base.
User-based vs Item-based: justificar cruzando volume itens × volume usuários no portal Aventura.
⭐ Excelência: conexão com venda casada de ingressos.
Cosseno / euclidiana ou SVD: explicar como o motor encontra os vizinhos / fatora a matriz.
⭐ Excelência: identificar Cold Start + sugerir estratégia híbrida.
Mobile (frontend) → backend C# → BD. Como o serviço é integrado e consumido.
⭐ Excelência: ao menos 1 RNF crítico (ex.: latência).
📌 Fluxo de entrega (individual):
ponderada/ do seu GitLab individual (não é o repositório do grupo)⚠️ Atenção: os 4 critérios são obrigatórios. As marcações ⭐ Excelência são bônus que diferenciam a nota — atacam-nas se sobrar tempo.
ponderada/ do GitLab individual