S05L04 – Divisão de dados de teste e treino e Escalonamento de Características

html

Compreendendo a Divisão de Dados e Escalonamento de Características em Aprendizado de Máquina

Sumário

  1. Divisão de Dados: Conjuntos de Treinamento e Teste
    1. O que é um Conjunto de Teste?
    2. O que é um Conjunto de Treinamento?
    3. Proporção de Divisão Típica
    4. Implementando a Divisão de Dados com scikit-learn
  2. Escalonamento de Características: Padronização e Normalização
    1. Por que Escalonar as Características?
    2. Padronização vs. Normalização
    3. Abordagem Recomendada
    4. Implementando o Escalonamento de Características com scikit-learn
  3. Resumo das Etapas
  4. Conclusão

Divisão de Dados: Conjuntos de Treinamento e Teste

O que é um Conjunto de Teste?

Um conjunto de teste é um subconjunto do seu conjunto de dados que é reservado para avaliar o desempenho do seu modelo de aprendizado de máquina. Ao alimentar o modelo com esses dados de retenção, você pode avaliar quão precisamente ele prevê novos dados não vistos, compreendendo assim o desempenho real do modelo no mundo real.

O que é um Conjunto de Treinamento?

Por outro lado, um conjunto de treinamento é a porção dos seus dados utilizada para treinar o modelo. O modelo aprende padrões, relações e estruturas dentro desses dados para fazer previsões ou classificações em novos dados.

Proporção de Divisão Típica

Uma prática comum é dividir os dados em 80% para treinamento e 20% para teste. Essa proporção fornece um equilíbrio entre permitir que o modelo tenha dados suficientes para aprender e reter dados suficientes para avaliar robustamente seu desempenho.

Implementando a Divisão de Dados com scikit-learn

Aqui está um guia passo a passo para dividir seus dados usando a função train_test_split do scikit-learn:

  1. Importar Bibliotecas Necessárias
  2. Preparar Seus Dados

    Suponha que você tenha suas características armazenadas em X e sua variável alvo em Y:

  3. Dividir os Dados
    • test_size=0.2: Aloca 20% dos dados para teste.
    • random_state=42: Garante reprodutibilidade controlando o processo de embaralhamento. Usar um random_state fixo significa que você obterá a mesma divisão toda vez que executar o código, o que é crucial para uma avaliação consistente do modelo.
  4. Verificar a Divisão

    Você pode verificar o número de registros em cada conjunto:

Escalonamento de Características: Padronização e Normalização

Por que Escalonar as Características?

Algoritmos de aprendizado de máquina têm um desempenho melhor quando as características numéricas de entrada estão em uma escala comparável. Características com intervalos maiores podem influenciar desproporcionalmente o modelo, levando a um desempenho subótimo. O escalonamento de características padroniza o intervalo das características, melhorando a eficiência e a precisão do modelo.

Padronização vs. Normalização

  1. Padronização:
    • Fórmula: \( z = \frac{(X - \mu)}{\sigma} \)
    • Transforma os dados para terem uma média de 0 e um desvio padrão de 1.
    • Adequada para características com distribuição gaussiana (normal).
    • Amplamente utilizada e geralmente eficaz, mesmo quando os dados não são perfeitamente normais.
  2. Normalização:
    • Fórmula: \( X_{norm} = \frac{(X - X_{min})}{(X_{max} - X_{min})} \)
    • Escala os dados para um intervalo fixo, tipicamente 0 a 1.
    • Melhor utilizada quando os dados seguem uma distribuição conhecida ou quando limites são necessários.

Abordagem Recomendada

É geralmente aconselhável dividir os dados antes de realizar o escalonamento das características. Essa prática garante que os parâmetros de escalonamento (como média e desvio padrão) sejam derivados exclusivamente dos dados de treinamento, prevenindo vazamento de dados e garantindo que os dados de teste permaneçam um conjunto de retenção verdadeiro.

Implementando o Escalonamento de Características com scikit-learn

  1. Importar o StandardScaler
  2. Inicializar o Scaler
  3. Aplicar Fit e Transformar os Dados de Treinamento
  4. Transformar os Dados de Teste
    • Importante: Ajuste o scaler apenas nos dados de treinamento. A mesma transformação é então aplicada aos dados de teste. Isso garante que os dados de teste sejam escalonados de maneira consistente sem introduzir informações do conjunto de teste no processo de treinamento.
  5. Tratamento de Variáveis Categóricas

    Se seu conjunto de dados inclui variáveis categóricas codificadas como valores numéricos (por exemplo, 0, 1, 2), evite aplicar escalonamento a essas colunas, pois isso pode distorcer seu significado. Assegure-se de que somente características numéricas contínuas passem pelo escalonamento.

Resumo das Etapas

  1. Importar Dados: Carregue seu conjunto de dados em um formato adequado (por exemplo, pandas DataFrame).
  2. Dividir Dados: Divida o conjunto de dados em características (X) e alvo (Y), então realize uma divisão treinamento-teste de 80/20.
  3. Tratar Dados Faltantes: Aborde quaisquer lacunas nos seus dados através de imputação ou remoção.
  4. Seleção de Características: Remova características irrelevantes ou redundantes para melhorar o desempenho do modelo.
  5. Codificar Dados: Converta variáveis categóricas para formatos numéricos se necessário.
  6. Escalonamento de Características: Aplique padronização ou normalização para garantir que todas as características contribuam igualmente para o modelo.

Conclusão

A preparação adequada dos dados é a pedra angular de projetos bem-sucedidos de aprendizado de máquina. Ao dividir meticulosamente seus dados e aplicar o escalonamento de características apropriado, você estabelece as bases para construir modelos que são tanto precisos quanto confiáveis. À medida que você continua a explorar o aprendizado de máquina, essas práticas fundamentais servirão bem para enfrentar desafios mais complexos.


Fique atento para o nosso próximo artigo, onde mergulharemos mais fundo em técnicas de pré-processamento e outros aspectos críticos da construção de modelos de aprendizado de máquina robustos.

Partilhe o seu amor