Skip to content

Exercício 1

Exercício 1 - Data

Entrega Referente ao exercício 1 do curso de Redes Neurais e Deep Learning

Relatório de entrega!

Questão 1

1.1 e 1.2 Geração de dados e gráfico das 4 classes

  • Class 0: Mean = \([2, 3]\), Standard Deviation = \([0.8, 2.5]\)
  • Class 1: Mean = \([5, 6]\), Standard Deviation = \([1.2, 1.9]\)
  • Class 2: Mean = \([8, 1]\), Standard Deviation = \([0.9, 0.9]\)
  • Class 3: Mean = \([15, 4]\), Standard Deviation = \([0.5, 2.0]\)

Primeiro é necessário consegui gerar os dados, então aqui utilizei a função do numpy para fazer a geração dos números com uma seed fixa (número escolhido foi o 37). A seguir temos o gráfico plotado dos gráficos gerados.

teste_simples:

2025-09-21T23:41:44.316055 image/svg+xml Matplotlib v3.10.6, https://matplotlib.org/

1.3 Análise e fronteiras

      • Classe 3 apresenta uma maior diferença, o que permite com que separar mais facilmente na região da direita do gráfico.
      • Classe 0, 1 e 2 estão bem mais próximas, o que dificulta uma separação entre elas. Vendo o gráfico é possível perceber que é possível traçar uma reta dividindo a classe 2 das classes 0 e 1. Como ela também tem um desvio menor a identificação dela se torna mais fácil.
      • Já as entre as classes 0 e 1 existe uma superposição maior, por conta da dispersão, então não é possível traçar uma linha que dividida perfeitamente elas.
    1. Não, é impossível separar todas as classes perfeitamente com fronteiras lineares. A classe 3 é separável linearmente das outras, porém as classes 0 e 1 tem múlticas sobreposições. Ou seja, as fronteiras/bordas precisariam de curvas.

2025-09-21T23:41:44.837257 image/svg+xml Matplotlib v3.10.6, https://matplotlib.org/

Questão 2

1.1

Realizando a geração das amostras e redução de dimensionalidade utilizando técnicas de PCA para manter as duas dimensões que carregam mais informações. Assim, temos o seguinte gráfico:

2025-09-21T23:41:45.268585 image/svg+xml Matplotlib v3.10.6, https://matplotlib.org/ Aqui podemos perceber que a Classe A (vermelha): - Se concentra na parte direita do gráfico (PC1 positivo) - Centro próximo da coordenada (2,0) no gráfico

Sobre a Classe B (azul): - Se concentra na parte esquerda do gráfico (PC1 negativo) - Centro próximo da coordenada (-2,0) no gráfico

Tem uma região central na qual existe uma sobreposição onde as duas classes se misturam Mesmo com uma tendência de separação, (um mais negativo e um mais positivo ao longo de PC1), não existe uma linha reta para poder dividir as duas classes completamente. Então a linha de fronteira, de divisão não é trivial, seria necessário uma função mais complexa com curvas. Por isso, seria necessário redes neurais para conseguir traçar essa separação complexa de uma forma que realmente conseguisse dividir bem em duas ou mais regiões.

Questão 3

3.1 Carregamento e Descrição dos Dados

O dataset Spaceship Titanic é um problema de classificação binária para prever se um passageiro foi transportado para uma dimensão alternativa durante um acidente espacial.

Features Identificadas:

Numéricas (6 features): - Age: Idade do passageiro (0-80 anos) - RoomService, - FoodCourt - ShoppingMall - Spa - VRDeck: Gastos em créditos galácticos

Categóricas (7 features): - HomePlanet: Planeta de origem (Earth, Europa, Mars) - CryoSleep: Em sono criogênico (True/False) - Destination: Destino da viagem (3 planetas) - VIP: Status VIP (True/False) - Cabin: Localização da cabine (formato complexo) - Name, PassengerId: Identificadores

Análise Detalhada dos valores faltantes:

2025-09-21T23:41:49.120146 image/svg+xml Matplotlib v3.10.6, https://matplotlib.org/

3.2 Pré-processamento Completo com Justificativas

Estratégia 1: Tratamento de Dados Faltantes

Baseado no gráfico acima, identificamos dados faltantes em 9 features. Vamos aqui analisar as estratégias para contornar esses valores faltantes.

Para Features Numéricas:

  • Age (Idade): ~15.0% faltantes → Imputação pela mediana

    • Assim conseguimos preservar a distribuição da idade e dessa forma, também evitando um bias no gradiente na etapa de backpropagation
  • RoomService (Serviço Quarto): ~10.4% faltantes → Preenchimento com zero

    • Sendo uma ausência do registro pode fazer sentido que possa ser igual a 0 créditos gastos. Além disso, como estamos utilizando a tanh como função de ativação, o elemento 0 é neutro e não interfere no gradiente.
  • FoodCourt (Praça Alimentação): ~10.2% faltantes → Preenchimento com zero

    • Mesma lógica do anterior, provavelmente a pessoa não utilizou o serviço (0 créditos) e com o valor 0 não distorce os padrões de gasto
  • ShoppingMall (Shopping): ~10.7% faltantes → Preenchimento com zero

    • Mantendo na mesma lógica, a pessoa provavelmente não consumiu nada, então 0. Da mesma forma das duas anteriores.
  • Spa: ~11.6% faltantes → Preenchimento com zero

    • 0 = não utilizou serviços de spa. 0 Não afeta padrões e os mantem uniforme
  • VRDeck (Deck VR): ~11.2% faltantes → Preenchimento com zero

    • Novamente 0 por não ter registro pode indicar não ter um uso de fato. E ser neutro para a função de ativação.

Para Features Categóricas:

  • HomePlanet (Planeta Origem): ~1.1% faltantes → Imputação pela moda

    • Para preservar distribuição original e evitar a criação de uma outra categoria que só representaria 1%
  • Cabin (Cabine): ~1.9% faltantes → Imputação pela moda

    • Novamente, evitar adicionar uma nova categoria e preservando a distribuição.
  • Destination (Destino): ~1.1% faltantes → Imputação pela moda

    • Preservação da distribuição sem adição de novas categorias
Estratégia 2: Encoding de Variáveis Categóricas

One-Hot Encoding para categóricas nominais: - HomePlanet → 3 colunas binárias - Destination → 3 colunas binárias
- Cabin (Deck/Side) → múltiplas colunas binárias

Label Encoding para categóricas booleanas: - CryoSleep: False→0, True→1 - VIP: False→0, True→1

Justificativa: One-hot evita ordinality artificial, essencial para redes neurais interpretarem categorias independentemente.

Estratégia 3: Normalização Otimizada para Função Tanh

Método Escolhido: Z-score normalization

Transformação Matemática:

X_normalized = (X - μ) / σ

Justificativas Teóricas:

  1. Região Ativa da Tanh:
  2. tanh(x) é mais sensível em [-2, +2]
  3. Utilizando o Z-score centraliza dados em μ=0

  4. Convergência Otimizada:

  5. Gradientes balanceados entre features
  6. Evita saturação da função tanh

  7. Prevenção de Problemas:

  8. Convergência Lenta: Features dominantes mascararam outras

3.3 Visualizações Demonstrando o Impacto (Tive problema com os gráficos, então retirei essa parte)