Módulo 6 · Engenharia de Software · ES06 · Aula 2 de 10
Filtragem Colaborativa
Notebook ao Vivo
Code review estilo Jupyter · do dataset à recomendação · parceiro Aventura
📓 Notebook executando
🎭 Dataset Aventura
🧮 Cosseno ajustado
🎯 Top-K para Ana
📊 RMSE / MAE
DAILY · 15 MIN
15:00
🛑 1 limitação que vi no item-based
📰 1 caso público de A/B test
❄️ 1 dúvida concreta sobre cold start
🤝 Preciso de ajuda?
Cada aluno em 1 minuto · começamos em ordem alfabética
Autoestudos · Pré-aula 📚
3 tarefas individuais para chegar pronto + leituras sugeridas
📖
Tarefa 1 · Leitura
Material da Aula 2
Leitura completa do material (visão unificada de CF). Saia com o vocabulário do dia: pipeline, sparsity, cold start, híbrido.
📖 Material da aula
🔍
Tarefa 2 · Análise
3 limitações do item-based puro
Pense no domínio do parceiro: liste 3 limitações reais que o item-based isolado teria. Anote no caderno de bordo.
📓 Caderno de bordo
🧪
Tarefa 3 · Pesquisa
1 caso público de A/B test
Pesquise 1 caso em que A/B test mudou a decisão de algoritmo. Sugestão: Netflix Prize ou matérias sobre o algoritmo do feed.
Abrir referência ↗

📌 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.

Agenda da Aula
2 horas · 1 code review + 1 atividade ponderada em sala
⏱️ 30 min
CODE REVIEW

🐍 Treinamento Python + top-K

Revisão guiada do pipeline top_k_recommend(user, k) nos slides: predict, filtragem dos já vistos, ranking dos K melhores.

  • Walkthrough do código (slide 8)
  • Q&A sobre similaridade, sparsity e cold start
  • Bibliografia como referência durante a atividade
⏱️ 90 min
PONDERADA · INDIVIDUAL

📓 Atividade — Notebook Jupyter

Filtragem colaborativa item-based + similaridade cosseno. Treino-teste 80/20, RMSE+MAE, 4 critérios de entrega.

  • Análise exploratória dos dados do parceiro
  • Definição da abordagem (User vs Item)
  • Fundamentação matemática + Cold Start
  • Esboço SOA + RNF crítico

🎯 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.

Os Dados · Portal Aventura 🎭
5 usuários × 6 espetáculos · 12 ratings observados · ~40% sparsity (toy didático)

📊 12 ratings observados

5 × 6 = 30 células. 12 preenchidas, 18 vazias.

🕳️ ~40% sparsity

Toy didático: produção real chega a 99%+.

🎯 Alvo: Ana

Recomendar entre Bossa e Pop (não vistos).

Notebook · Célula 1 · Setup
Importar libs e montar a matriz user × item como DataFrame
Notebook · Célula 2 · Centralizar por usuário
Subtrai a média de cada usuário · NaN vira 0 para o cálculo de similaridade
Notebook · Célula 3 · Similaridade item × item
Cosseno entre as colunas centralizadas → matriz S 6×6 simétrica
Notebook · Célula 4 · predict(user, item)
Média ponderada dos ratings que o usuário deu a itens parecidos com o alvo
Notebook · Célula 5 · top_k_recommend('Ana')
Filtra os já vistos, aplica predict em cada candidato, ranqueia top-N
Notebook · Célula 6 · Avaliação RMSE / MAE · 80/20
Mascarar 20% dos ratings observados como teste · medir erro
Conexão com a Aula 3 · SOA e RNF
O top-k de hoje vira recommendation service · a métrica vira RNF mensurável

🏗️ Do algoritmo para o serviço

A função top_k_recommend(user, k) de hoje vira o coração de um recommendation service exposto via API:

GET /recommendations/:userId?k=10
# resposta: [{itemId, score, reason}, ...]

🎚️ Da métrica para o RNF

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.

🔌 Próxima aula · 8 eixos de RNF

  • Performance · Disponibilidade · Escalabilidade
  • Segurança · Manutenibilidade · Observabilidade
  • Portabilidade · Conformidade

📚 Para o autoestudo da aula 3

  • Ler material da aula 3 antes do encontro
  • Listar 5 RNFs reais do MVP do parceiro
  • Estudar os 8 eixos do Inteli
Atividade Ponderada · Descrição 📓
Notebook Jupyter · Filtragem Colaborativa Item-based · 90 min em sala
TEMA
🎯

Item-based + Cosseno

Sistema de recomendação por filtragem colaborativa baseada em itens usando similaridade cosseno. Carregar dataset, montar matriz user×item, recomendar similares.

AVALIAÇÃO
📊

RMSE + MAE · 80/20

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.

ENTREGA
📓

Colab individual · 90 min

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.

Atividade · 4 Critérios de Entrega 📐
Cada critério tem um caminho de Excelência ⭐ que vale ponto extra
01
🔍

Análise Exploratória

Código: carregar base, tratar nulos, plotar densidade da base.

Conclusão sobre o balanceamento da base.

02
🎯

Definição da Abordagem

User-based vs Item-based: justificar cruzando volume itens × volume usuários no portal Aventura.

⭐ Excelência: conexão com venda casada de ingressos.

03
🧮

Fundamentação Matemática

Cosseno / euclidiana ou SVD: explicar como o motor encontra os vizinhos / fatora a matriz.

⭐ Excelência: identificar Cold Start + sugerir estratégia híbrida.

04
🏗️

Esboço Arquitetural (SOA)

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):

  1. Fazer no Colab individual · células de código rodando sem erros + Markdown justificando cada decisão
  2. No Colab: Arquivo › Fazer download › .ipynb
  3. Subir o arquivo na pasta 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.

🛠️
Mão na massa · Atividade Ponderada
90 minutos para entregar o Notebook com os 4 critérios — análise, abordagem, fundamentação e SOA. Cada minuto conta.
1️⃣ Abrir Colab individual (conta pessoal)
2️⃣ Carregar a base do parceiro Aventura
3️⃣ Critério 1 · Análise exploratória
4️⃣ Critério 2 · Definir abordagem
5️⃣ Critério 3 · Fundamentação + Cold Start ⭐
6️⃣ Critério 4 · SOA + RNF crítico ⭐
7️⃣ Download .ipynb › upload em ponderada/ do GitLab individual
💡 Estratégia: pegue os 4 obrigatórios primeiro, depois volte para os ⭐ Excelência. Submissão parcial > submissão zerada.
🎯
A aula 2 me ensinou que...
Filtragem colaborativa não é um algoritmo — é um sistema com pipeline, falhas previstas e métrica. Na aula 3 subimos para arquitetura: SOA + RNF.
✅ Pipeline unificado user × item
✅ Sparsity 95%+
✅ Cold start de usuário
✅ Cold start de item
✅ Híbrido CF + conteúdo
✅ Avaliação offline
✅ Avaliação online · A/B
✅ Métrica do MVP
✅ Ponte para SOA · aula 3
Módulo 6 · Engenharia de Software · Aula 2 de 10