Ir para o conteúdo

1. Classification

Prazo e Entrega

📅 05.out (domingo)

🕐 Commits até 23:59

Equipe (2-3 membros) - formulário

Enviar o Link do GitHub Pages via insper.blackboard.com.

Neste projeto, você irá abordar uma tarefa de classificação do mundo real usando uma rede neural Perceptron de Múltiplas Camadas (MLP). O objetivo é aprofundar seu entendimento sobre redes neurais lidando com preparação de dados, implementação do modelo, estratégias de treinamento e avaliação sem depender de bibliotecas de aprendizado profundo de alto nível.

Bônus de Competição

Este projeto encoraja a criatividade na seleção de dataset e recompensa a ambição — pontos bônus serão concedidos se você enviar sua solução para uma competição online relevante (ex: plataformas como Kaggle, DrivenData ou Zindi). As submissões devem ser documentadas no relatório, incluindo um link para sua entrada e qualquer posição no leaderboard. Pontos bônus:

Pontos Descrição
+0,5 Submissão válida para uma competição reconhecida (prova necessária, ex: link, screenshot).
+0,5 Submissão válida com classificação no top 50% do leaderboard (prova necessária).

Restrições Importantes

  • NÃO USE os datasets Titanic, Iris, Wine ou outros datasets clássicos. Esses são muito usados e resultarão em nota zero para a parte de seleção do dataset.
  • A tarefa deve ser de classificação (ex: binária, multiclasse ou multi-rótulo).
  • Você pode implementar o MLP você mesmo ou usar bibliotecas de alto nível como TensorFlow, PyTorch, Keras ou os módulos de rede neural do scikit-learn — estes são PERMITIDOS. Mas você TEM QUE entender e explicar todas as partes do código e análise enviados.
  • O dataset deve ter pelo menos 1.000 amostras e múltiplas features (pelo menos 5).

Etapas do Projeto

Siga estas etapas em seu trabalho. Seu relatório deve abordar cada uma explicitamente.

1. Seleção do Dataset

  • Escolha um dataset público para um problema de classificação. Fontes incluem:

    • Kaggle (ex: datasets para reconhecimento de dígitos, detecção de spam ou diagnóstico médico).
    • UCI Machine Learning Repository (ex: Banknote Authentication, Adult Income, ou Covertype).
    • Outras fontes abertas como OpenML, Google Dataset Search, ou portais de dados governamentais.
  • Garanta que o dataset tenha pelo menos 1.000 amostras e múltiplas features (pelo menos 5).

  • No seu relatório: Forneça o nome do dataset, URL de origem, tamanho (linhas/colunas) e por que você o escolheu.

2. Explicação do Dataset

  • Descreva o dataset em detalhes: O que ele representa? Quais são as features e seus tipos? Qual é a variável alvo?
  • Discuta qualquer conhecimento de domínio relevante.
  • Identifique possíveis problemas: Classes desbalanceadas, valores faltantes, outliers ou ruído.
  • No seu relatório: Inclua estatísticas resumidas e visualizações (ex: histogramas, matrizes de correlação).

3. Limpeza e Normalização dos Dados

  • Limpe os dados: Trate valores faltantes, remova duplicatas, detecte e trate outliers.
  • Pré-processe: Codifique variáveis categóricas, normalize/escale features numéricas.
  • No seu relatório: Explique cada etapa, justifique suas escolhas e mostre exemplos antes/depois.

4. Implementação do MLP

  • Código de um MLP usando apenas NumPy (ou equivalente) para operações como multiplicação de matrizes, funções de ativação e gradientes.
  • Arquitetura: Inclua pelo menos uma camada de entrada, uma camada oculta e uma camada de saída.
  • Função de perda: Entropia cruzada para classificação.
  • Otimizador: SGD ou variante como mini-batch GD.
  • No seu relatório: Forneça trechos de código chave. Explique os hiperparâmetros.

5. Treinamento do Modelo

  • Treine seu MLP nos dados preparados.
  • Implemente o loop de treinamento: Propagação direta, cálculo da perda, retropropagação e atualizações de parâmetros.
  • No seu relatório: Descreva o processo de treinamento, incluindo quaisquer desafios e como foram abordados.

6. Estratégia de Treinamento e Teste

  • Divida os dados: Use conjuntos treino/validação/teste (ex: divisão 70/15/15) ou validação cruzada k-fold.
  • Modo de treinamento: Escolha batch, mini-batch ou online (estocástico); explique o motivo.
  • Early stopping ou outras técnicas para prevenir overfitting.

7. Curvas de Erro e Visualização

  • Plote curvas de perda/acurácia de treino e validação ao longo das épocas.
  • Analise: Discuta convergência, overfitting/underfitting e ajustes feitos.
  • No seu relatório: Inclua pelo menos dois plots. Interprete as tendências.

8. Métricas de Avaliação

  • Aplique métricas de classificação no conjunto de teste: Acurácia, precisão, recall, F1-score, matriz de confusão.
  • Se desbalanceado, inclua ROC-AUC ou curvas precisão-recall.
  • Compare com baselines (ex: preditor de classe majoritária).

Critérios de Avaliação

O entregável consiste em um relatório abrangente que inclui:

  • Seções: Uma para cada etapa acima (1-8).
  • Conclusão: Descobertas gerais, limitações, melhorias futuras.
  • Referências: Cite fontes do dataset, artigos sobre MLPs, etc.

Notas Importantes:

  • O entregável deve ser enviado em GitHub Pages. Existe um template do curso — template;
  • O prazo não é estendidoNENHUMA EXCEÇÃO para entregas atrasadas.
  • Colaboração com IA é permitida, mas o aluno DEVE ENTENDER e explicar todo o código. PROVAS ORAIS podem ser realizadas.

Rubrica de Avaliação (de 10 pontos):

Critério Descrição
2 pts Seleção e Explicação do Dataset: 1 ponto
Limpeza/Normalização dos Dados: 1 ponto
6 pts Implementação do MLP: 2 pontos (correção e originalidade);
Treinamento e Estratégia: 1,5 pontos;
Curvas de Erro: 1 ponto;
Métricas e Análise: 1,5 pontos
2 pts Qualidade do Relatório (clareza, estrutura, visuais): 1 ponto;
Bônus: Até +1 por submissão em competição.

Este projeto testará suas habilidades de aprendizado de máquina de ponta a ponta.