Pré-processamento de Dados para Aprendizado de Máquina
Prof. Letícia Raposo
ROTEIRO Da EDA ao pré-processamento
Na aula anterior, a EDA revelou o que está errado ou precisa de atenção na base: tipos de variável, assimetria, dispersão, valores ausentes, outliers, cardinalidade.
O pré-processamento é a etapa em que essas informações viram ações concretas sobre os dados, antes de treinar qualquer modelo.
flowchart LR
A["EDA<br/>diagnóstico"] --> B["Integração<br/>consolidar fontes"]
B --> C["Eliminação manual<br/>e amostragem"]
C --> D["Balanceamento<br/>e limpeza"]
D --> E["Transformação<br/>dados prontos para o modelo"]
style A fill:#8FB6D9,color:#12283F,stroke:#8FB6D9
style E fill:#12283F,color:#ffffff,stroke:#12283F
INTRODUÇÃO Onde o pré-processamento entra no ciclo de ML
%%{init: {"themeVariables": {"fontSize": "18px"}, "flowchart": {"rankSpacing": 26, "nodeSpacing": 22, "padding": 8}}}%%
flowchart LR
A["Problema<br/>de negócio"] --> B["Coleta<br/>de dados"]
B --> C["EDA"]
C --> D["Pré-processamento"]
D --> E["Modelagem"]
E --> F["Avaliação"]
F --> G["Implantação"]
F -.->|"revisar"| D
style D fill:#12283F,color:#ffffff,stroke:#12283F
style C fill:#8FB6D9,color:#12283F,stroke:#8FB6D9
É a etapa que costuma consumir a maior parte do tempo de um projeto de dados — e a que mais influencia a qualidade final do modelo.
É iterativa: uma avaliação ruim frequentemente aponta de volta para um problema de dados, não de algoritmo.
Deve ser reprodutível: um pipeline escrito em código, e não ajustes manuais na planilha.
INTEGRAÇÃO DE DADOS O que é integração de dados?
Combinar dados vindos de múltiplas fontes de forma consistente.
Cada fonte pode ter granularidade diferente (dados diários x mensais), unidades diferentes (kg x lb, R$ x US$) ou formatos diferentes para a mesma informação (datas, texto livre).
A chave de junção (ex.: CPF, ID de cliente, número de protocolo) precisa existir e ser confiável em todas as fontes envolvidas.
%%{init: {"flowchart": {"nodeSpacing": 6}}}%%
flowchart LR
A["Sistema A<br/>vendas"] --> D["Chave de junção<br/>(ex.: CPF, ID cliente)"]
B["Sistema B<br/>cadastro"] --> D
C["Sistema C<br/>atendimento"] --> D
D --> E["Base integrada"]
style E fill:#12283F,color:#ffffff,stroke:#12283F
INTEGRAÇÃO DE DADOS Tipos de junção
Inner: só as chaves presentes nas duas fontes — quem falta em uma delas é perdido.
Left: preserva toda a base principal (A); onde não há correspondência em B, as colunas de B ficam ausentes.
Full: união completa das chaves — útil para auditar divergências entre fontes.
INTEGRAÇÃO DE DADOS Junção na prática: a chave importa
A — cadastro
cliente_id
cidade
1
São Paulo
2
SP
2
SP
3
Recife
B — crédito
id_cliente
renda
” cli1 ”
4.200
CLI2
3.100
CLI3
5.800
Padronizar a chave nas duas fontes (formato, espaços, maiúsculas/minúsculas): sem isso, a junção encontra zero correspondências.
Verificar a unicidade da chave em cada fonte: o cliente 2 aparece duas vezes em A.
Juntar e conferir a contagem: 3 clientes viram 4 linhas — uma chave duplicada multiplica linhas na junção.
INTEGRAÇÃO DE DADOS Redundância e conflito de valores
Redundância de entidade: a mesma entidade aparece sob identificações diferentes em cada fonte (ex.: “SP”, “São Paulo” e “S.Paulo” como o mesmo estado).
Redundância de atributo: uma coluna pode ser derivável de outra já presente na base integrada (ex.: idade calculada a partir da data de nascimento) — atributos redundantes podem ser detectados por correlação (numéricas) ou pelo teste qui-quadrado (categóricas).
Conflito de valores: a mesma entidade tem valores diferentes para o mesmo atributo em fontes distintas (ex.: dois sistemas com endereços desatualizados de formas diferentes) — exige uma regra de resolução (fonte mais recente, fonte mais confiável, etc.).
INTEGRAÇÃO DE DADOS Detectando redundância de atributos
Renda, empréstimo e limite de crédito se movem juntos: carregam, em parte, a mesma informação.
Para categóricas, use o teste qui-quadrado de independência (ou V de Cramér).
Correlação alta não obriga a eliminar — mas exige uma decisão consciente: manter uma, combinar (PCA) ou usar modelos robustos à multicolinearidade.
INTEGRAÇÃO DE DADOS Como resolver um conflito de valores
%%{init: {"themeVariables": {"fontSize": "18px"}, "flowchart": {"rankSpacing": 26, "nodeSpacing": 22, "padding": 8}}}%%
flowchart LR
A["Conflito:<br/>as fontes divergem"] --> B{"Existe data<br/>de atualização?"}
B -->|sim| C["Usar o valor<br/>mais recente"]
B -->|não| D{"Uma fonte é<br/>sabidamente mais<br/>confiável?"}
D -->|sim| E["Priorizar a<br/>fonte confiável"]
D -->|não| F["Marcar como conflito:<br/>revisar ou manter<br/>ambos com um indicador"]
style A fill:#8FB6D9,color:#12283F,stroke:#8FB6D9
style F fill:#12283F,color:#ffffff,stroke:#12283F
Registre qual regra foi aplicada: a decisão precisa ser rastreável e repetível quando novos dados chegarem.
INTEGRAÇÃO DE DADOS Como deduplicar
%%{init: {"themeVariables": {"fontSize": "18px"}, "flowchart": {"rankSpacing": 26, "nodeSpacing": 22, "padding": 8}}}%%
flowchart LR
A["1. Padronizar<br/>caixa, espaços,<br/>acentos, formatos"] --> B["2. Agrupar candidatos<br/>(blocking): mesma<br/>cidade, mesmo ano"]
B --> C["3. Comparar pares<br/>similaridade<br/>de texto"]
C --> D["4. Decidir<br/>duplicata, distinto<br/>ou revisar"]
D --> E["5. Fundir<br/>manter o registro<br/>mais completo"]
style E fill:#12283F,color:#ffffff,stroke:#12283F
Exata: linhas idênticas em todas as colunas (ou na chave) — resolve-se em uma linha de código.
Aproximada: “Maria da Silva” e “Maria Silva” — usa medidas de similaridade (distância de edição/Levenshtein, similaridade de Jaccard sobre tokens).
Comparar todos os pares custa \(n(n-1)/2\) comparações — o agrupamento por candidatos (blocking) evita esse custo quadrático.
INTEGRAÇÃO DE DADOS Efeito da deduplicação na integração
Ao combinar três sistemas com clientes em comum, cerca de 14% dos registros eram duplicatas da mesma entidade sob identificações levemente diferentes.
ELIMINAÇÃO MANUAL O que eliminar manualmente, e por quê
Identificadores únicos (ID, CPF, número de protocolo): não carregam padrão generalizável — apenas identificam o registro.
Variáveis constantes ou quase constantes: o mesmo valor (ou quase) em praticamente todas as observações — não ajudam o modelo a diferenciar casos.
Vazamento de dados óbvio: colunas que só existiriam depois do evento a ser previsto (ex.: “data de alta” para prever internação).
Duplicatas exatas de outra coluna: mesma informação registrada em dois lugares com nomes diferentes.
Diferente da eliminação automática por métricas (VIF, importância de variáveis), a eliminação manual usa conhecimento de domínio — e deve ser sempre documentada e justificada.
ELIMINAÇÃO MANUAL Devo eliminar esta coluna?
%%{init: {"themeVariables": {"fontSize": "18px"}, "flowchart": {"rankSpacing": 26, "nodeSpacing": 22, "padding": 8}}}%%
flowchart LR
A["Coluna<br/>candidata"] --> B("É só um<br/>identificador?")
B -->|não| C("Constante ou<br/>quase constante?")
C -->|não| D("Só existe depois<br/>do alvo?")
D -->|não| E("Duplica<br/>outra coluna?")
E -->|não| K["Manter"]
B -->|sim| X["Eliminar<br/>e documentar"]
C -->|sim| X
D -->|sim| X
E -->|sim| X
style A fill:#8FB6D9,color:#12283F,stroke:#8FB6D9
style X fill:#12283F,color:#ffffff,stroke:#12283F
Os quatro critérios usam conhecimento do problema, não uma métrica calculada — por isso a decisão é manual.
ELIMINAÇÃO MANUAL Variáveis constantes e quase constantes
Variável
Valor mais frequente
Frequência
Decisão
pais
“Brasil”
100%
eliminar (constante)
moeda
“BRL”
99,8%
eliminar (quase constante)
tipo_conta
“corrente”
92%
manter — ainda discrimina 8% dos casos
escolaridade
“Médio”
45%
manter
Uma variável com um único valor tem variância zero: não pode explicar nenhuma diferença entre casos.
Quase constante não é o mesmo que irrelevante: uma variável rara pode ser justamente o sinal (ex.: 0,2% de casos de fraude).
Verifique a relação com o alvo antes de descartar uma variável quase constante.
ELIMINAÇÃO MANUAL Vazamento de dados: o que o modelo pode “saber”
Vazamento é usar, no treino, informação que não estaria disponível quando o modelo for usado de verdade.
O resultado é enganoso: métricas excelentes na validação e desempenho ruim em produção.
ELIMINAÇÃO MANUAL Eliminação de colunas e de registros
Colunas: IDs, constantes, redundantes ou com vazamento evidente saem antes mesmo da modelagem.
Registros (linhas): casos claramente corrompidos (ex.: idade = 999, data inválida) ou comprovadamente erros de digitação — não outliers legítimos — podem ser removidos após investigação.
Remover um registro é diferente de remover um outlier legítimo: o primeiro corrige um erro; o segundo descarta informação real sobre a variabilidade dos dados.
AMOSTRAGEM Tipos de amostragem
Amostragem aleatória simples: cada observação tem a mesma probabilidade de ser selecionada.
Amostragem estratificada: a população é dividida em estratos (ex.: classes do alvo) e a amostra preserva a proporção de cada estrato.
Amostragem sistemática: seleciona a cada \(k\)-ésimo elemento de uma lista ordenada.
Amostragem por conglomerados: seleciona grupos inteiros (ex.: hospitais, turmas) em vez de indivíduos — útil quando os dados já estão naturalmente agrupados.
Conexão com ML
Separar treino, validação e teste (holdout) é, na prática, um problema de amostragem. A validação cruzada (k-fold cross-validation) é uma forma sistemática de reamostrar os dados várias vezes para estimar o desempenho do modelo com mais robustez.
AMOSTRAGEM Os quatro esquemas, lado a lado
Pontos escuros: elementos selecionados (cerca de 10% da população de 100 elementos).
Linhas tracejadas: os estratos (2º painel) e os conglomerados — aqui, 10 blocos, dos quais 1 foi sorteado (4º painel).
Na sistemática, a lista é percorrida de 9 em 9 a partir de um início aleatório — cuidado se a lista tiver periodicidade.
AMOSTRAGEM Holdout e validação cruzada
Holdout: uma única divisão. Simples e rápida, mas o resultado depende de qual divisão saiu no sorteio.
k-fold: cada parte serve uma vez de validação; o desempenho é a média das \(k\) rodadas — estimativa mais estável, ao custo de treinar \(k\) modelos.
AMOSTRAGEM Amostragem
O tamanho da amostra é um equilíbrio entre custo computacional e variância da estimativa — curvas de aprendizado (learning curves) ajudam a avaliar se mais dados melhorariam o modelo.
Amostrar sem estratificar uma base já desbalanceada pode, por acaso, eliminar quase todos os exemplos da classe minoritária do conjunto de treino.
AMOSTRAGEM Por que estratificar: uma simulação
Numa base com 1% de fraudes, uma amostra aleatória simples de 200 registros não tem nenhuma fraude em cerca de 14% das vezes — e, quando tem, o número oscila bastante. A amostragem estratificada garante a proporção.
DADOS DESBALANCEADOS O problema do desbalanceamento
Ocorre quando uma classe é muito mais frequente que outra(s) em um problema de classificação (ex.: fraude ≈ 1%, inadimplência ≈ 5%, doença rara ≈ 2%).
Um modelo pode atingir acurácia altíssima apenas prevendo sempre a classe majoritária — sem aprender nada útil sobre a classe minoritária, que costuma ser a mais importante de detectar.
O desbalanceamento é uma consequência direta de como a amostragem (bloco anterior) captura — ou não — a proporção real das classes.
Conexão com ML
Em problemas desbalanceados, acurácia é uma métrica enganosa. Precisão, recall, F1-score e AUC-PR (área sob a curva precisão-recall) refletem melhor o desempenho na classe minoritária do que acurácia ou mesmo AUC-ROC.
DADOS DESBALANCEADOS Acurácia enganosa: um modelo que nunca acerta
Modelo “ingênuo”: sempre prevê “saudável”.
Previsto: doente
Previsto: saudável
Real: doente
0
20
Real: saudável
0
980
Acurácia = \(980/1000\) = 98%
Recall dos doentes = \(0/20\) = 0%
DADOS DESBALANCEADOS Métricas que enxergam a classe minoritária
Um modelo real, na mesma base de 1.000 pacientes: detecta 15 dos 20 doentes e faz 30 alarmes falsos.
A acurácia caiu (98% → 96,5%), mas este modelo é muito mais útil do que o ingênuo: ele encontra 75% dos doentes.
DADOS DESBALANCEADOS Técnicas de balanceamento
Undersampling: reduz a classe majoritária — rápido, mas descarta informação.
Oversampling: duplica exemplos da classe minoritária — simples, mas pode gerar overfitting nesses exemplos repetidos.
SMOTE (Synthetic Minority Oversampling Technique): cria exemplos sintéticos da classe minoritária por interpolação entre vizinhos próximos, em vez de duplicar.
Ajuste de peso de classe (class weight): penaliza mais o erro na classe minoritária durante o treino, sem alterar os dados.
O balanceamento (undersampling, oversampling, SMOTE) deve ser aplicado apenas ao conjunto de treino, depois do split — balancear antes do split é uma forma de vazamento de dados, pois o conjunto de teste deixa de refletir a distribuição real do problema.
DADOS DESBALANCEADOS Como cada técnica altera os dados
Maioria em azul-claro, minoria em azul-escuro; triângulos = exemplos sintéticos. No oversampling, pontos maiores indicam cópias repetidas do mesmo exemplo.
DADOS DESBALANCEADOS SMOTE: interpolando entre vizinhos
Para cada exemplo \(x_i\) da minoria:
escolhe um dos seus \(k\) vizinhos mais próximos, \(x_{viz}\);
sorteia \(\lambda \in [0, 1]\);
cria o ponto sintético
\[x_{novo} = x_i + \lambda\,(x_{viz} - x_i)\]
O novo ponto fica sobre o segmento que liga os dois — em vez de repetir um ponto existente, preenche a região da minoria.
DADOS DESBALANCEADOS Balancear antes ou depois do split?
%%{init: {"themeVariables": {"fontSize": "18px"}, "flowchart": {"rankSpacing": 26, "nodeSpacing": 22, "padding": 8}}}%%
flowchart TD
A["Base completa"] --> B["Split estratificado"]
B --> C["Treino"]
B --> T["Teste intacto<br/>(distribuição real)"]
C --> D["Balancear só o treino"]
style T fill:#12283F,color:#ffffff,stroke:#12283F
O teste deve refletir os dados como serão encontrados na prática: se for balanceado, a métrica deixa de representar o problema real.
LIMPEZA DE DADOS O que é limpeza de dados?
Duplicatas: registros repetidos, exatos ou quase exatos, que inflam artificialmente o tamanho da base.
Inconsistências de formato: datas em formatos diferentes, texto com capitalização inconsistente, unidades de medida misturadas.
Valores fora do domínio válido: idade negativa, porcentagem acima de 100%, data de nascimento posterior à data de admissão.
Valores ausentes: identificar, entender o mecanismo (MCAR/MAR/MNAR) e decidir a estratégia de imputação.
Conexão com ML
“Garbage in, garbage out”: nenhum algoritmo, por mais sofisticado, corrige um problema sistemático de qualidade de dados. Limpeza malfeita se propaga como viés silencioso em qualquer modelo treinado sobre a base.
LIMPEZA DE DADOS Inconsistências de formato: antes e depois
Problema
Antes
Depois
Capitalização e espaços
” cli12 “,”CLI12”
“CLI12”
Grafias da mesma categoria
“SP”, “sao paulo”, “S. Paulo”
“São Paulo”
Formatos de data
“2024-03-05”, “05/03/2024”, “03-05-2024”
2024-03-05
Unidades misturadas
“70 kg”, “154 lb”
70,0 (kg)
Separador decimal
“1.234,56” e “1234.56”
1234,56
Ambiguidade de datas: “03-05-2024” é 3 de maio ou 5 de março? Sem uma regra da fonte, não há como saber — descubra o formato por sistema de origem, e não linha a linha.
Padronize com regras explícitas e guarde o valor original em uma coluna à parte, para auditar.
LIMPEZA DE DADOS Valores fora do domínio válido
Toda variável tem um domínio: regras simples de validação encontram muitos erros.
Regra de validação
Exemplo de violação
\(0 \le \text{idade} \le 120\)
idade = 999 ou −3
\(0 \le \text{porcentagem} \le 100\)
taxa de desconto = 150%
data de nascimento < data de admissão
nascido em 2099
valor de compra > 0
valor = −250
categoria ∈ lista de valores permitidos
sexo = “X1”
Um valor fora do domínio é erro, não outlier: pode ser corrigido na fonte ou tratado como ausente.
Automatize as regras: elas devem rodar toda vez que chegarem dados novos.
LIMPEZA DE DADOS Valores ausentes: por que faltam?
Mecanismo
Definição
Exemplo
Consequência
MCAR (completamente aleatório)
A ausência não depende de nenhuma variável
Sensor que falha ao acaso
Menos dados, mas sem viés
MAR (aleatório condicional)
Depende de outras variáveis observadas
Score ausente com mais frequência entre clientes jovens
Viés corrigível usando as outras variáveis
MNAR (não aleatório)
Depende do próprio valor ausente
Rendas altas deixam de ser declaradas
Viés difícil de corrigir; a ausência em si é informação
O mecanismo não é observável direto nos dados: é uma hipótese, apoiada pelo conhecimento do domínio.
A decisão de tratamento depende dele: ignorar a ausência só é inofensivo no caso MCAR.
LIMPEZA DE DADOS Estratégias para valores ausentes
%%{init: {"themeVariables": {"fontSize": "18px"}, "flowchart": {"rankSpacing": 26, "nodeSpacing": 22, "padding": 8}}}%%
flowchart LR
A["Valor ausente"] --> B{"Coluna quase<br/>toda ausente?"}
B -->|sim| C["Considerar<br/>eliminar a coluna"]
B -->|não| D{"Poucas linhas<br/>e MCAR?"}
D -->|sim| E["Remover<br/>as linhas"]
D -->|não| G["Imputar + criar<br/>indicador de ausência"]
style A fill:#8FB6D9,color:#12283F,stroke:#8FB6D9
style G fill:#12283F,color:#ffffff,stroke:#12283F
Um indicador de ausência (coluna 0/1) preserva a informação de que o valor faltava — útil principalmente em MAR e MNAR.
Estatísticas de imputação (média, mediana, moda) devem ser calculadas só no treino.
LIMPEZA DE DADOS O custo da imputação pela média
Os pontos imputados (triângulos) caem todos sobre a linha da média: a imputação simples encolhe a variância e enfraquece a relação entre as variáveis. Métodos condicionais (regressão, kNN, imputação múltipla) preservam melhor essa estrutura.
LIMPEZA DE DADOSOutlier: erro ou informação?
%%{init: {"themeVariables": {"fontSize": "18px"}, "flowchart": {"rankSpacing": 26, "nodeSpacing": 22, "padding": 8}}}%%
flowchart LR
A["Valor<br/>extremo"] --> B{"Impossível<br/>no domínio?"}
B -->|"sim: erro"| C["Corrigir na fonte<br/>ou tratar como ausente"]
B -->|não| D{"Cauda legítima<br/>da distribuição?"}
D -->|sim| E["Manter; usar log,<br/>RobustScaler ou<br/>modelos robustos"]
D -->|incerto| F["Investigar com<br/>especialista e comparar<br/>o modelo com e sem"]
style A fill:#8FB6D9,color:#12283F,stroke:#8FB6D9
Uma renda 1.000 vezes maior que a de todos os demais é provavelmente erro de digitação; uma renda 10 vezes maior pode ser um cliente real.
Em variáveis assimétricas (renda, preços), a regra do IQR marca como outlier muitos valores legítimos — prefira critérios ajustados ao domínio, ou aplique o critério após uma transformação logarítmica.
TRANSFORMAÇÃO DE DADOS Visão geral da transformação de dados
Escalonamento (padronização, normalização, RobustScaler) e transformação de forma (log, Box-Cox) já foram vistos na aula anterior — seguem sendo parte central da transformação.
Discretização: converter uma variável contínua em categorias (faixas etárias, faixas de renda).
Binarização: converter uma variável em indicador 0/1 a partir de um limiar (ex.: “atrasou o pagamento” a partir de dias de atraso).
Criação de variáveis derivadas (feature engineering): razões, interações entre variáveis, extração de dia da semana/mês a partir de datas.
Redução de dimensionalidade: combinar várias variáveis correlacionadas em poucos componentes (ex.: PCA).
TRANSFORMAÇÃO DE DADOS Por que escalonar, de novo: distâncias
Algoritmos baseados em distância (kNN, k-means, SVM) somam diferenças de todas as variáveis — quem tem unidade maior domina.
Cliente
Idade (anos)
Renda (R$)
A
30
5.000
B
60
5.500
C
31
8.000
Dist. euclidiana sem escalonar
Dist. padronizada (z-score)
A–B (30 anos de diferença)
500,9
3,01
A–C (1 ano de diferença)
3.000,0
1,67
Mais próximo de A
B
C
Padronização com \(z = (x - \mu)/\sigma\), usando \(\mu_{idade}=40\), \(\sigma_{idade}=10\), \(\mu_{renda}=6.000\), \(\sigma_{renda}=1.800\). Sem escalonar, a renda decide tudo e a idade é ignorada.
TRANSFORMAÇÃO DE DADOS Codificação de variáveis categóricas
%%{init: {"themeVariables": {"fontSize": "18px"}, "flowchart": {"rankSpacing": 26, "nodeSpacing": 22, "padding": 8}}}%%
flowchart LR
A["Variável<br/>categórica"] --> B{"Tem ordem<br/>natural?"}
B -->|sim| C["Codificação ordinal<br/>Fundamental=1, Médio=2,<br/>Superior=3"]
B -->|não| D{"Muitas<br/>categorias?"}
D -->|não| E["One-hot<br/>uma coluna 0/1<br/>por categoria"]
D -->|sim| F["Frequência, alvo ou<br/>hashing; agrupar raras<br/>em 'Outras'"]
style A fill:#8FB6D9,color:#12283F,stroke:#8FB6D9
cidade
cidade_SP
cidade_RJ
cidade_REC
São Paulo
1
0
0
Recife
0
0
1
Numerar cidades (1, 2, 3) inventa uma ordem que não existe: Recife passaria a ser “maior” que São Paulo.
TRANSFORMAÇÃO DE DADOS Discretização: como escolher as faixas
Larguras iguais: fácil de interpretar, mas em variáveis assimétricas concentra quase todos os casos nas primeiras faixas.
Frequências iguais (quantis): faixas com o mesmo número de casos — mais informativas, com cortes menos “redondos”.
Por conhecimento de domínio: faixas com significado (ex.: até 25, 26–40, 41–60, 60+).
TRANSFORMAÇÃO DE DADOS Discretização de uma variável contínua
Discretizar facilita a interpretação (ex.: em relatórios) e pode ajudar modelos lineares a capturar relações não lineares — mas descarta informação e introduz fronteiras arbitrárias entre faixas.
TRANSFORMAÇÃO DE DADOS Binarização
Converte uma variável em um indicador a partir de um limiar \(\tau\):
\[b(x) = \begin{cases} 1, & x > \tau \\ 0, & x \le \tau \end{cases}\]
dias_atraso
atrasou (\(\tau = 0\))
valor_compra
compra_alta (\(\tau = 500\))
0
0
120
0
3
1
500
0
45
1
1.800
1
Útil quando estar acima ou abaixo do limiar importa mais do que a magnitude (0 dias de atraso x qualquer atraso).
Também usada para transformar contagens em presença/ausência (ex.: “comprou ou não comprou”).
O limiar deve vir do domínio do problema ou ser escolhido apenas com dados de treino.
TRANSFORMAÇÃO DE DADOS Criação de variáveis derivadas
Dado de origem
Variável derivada
Por que ajuda
data de nascimento e data de referência
idade
O modelo usa um número comparável entre pessoas
valor do empréstimo e renda
comprometimento = valor / renda
A razão resume o risco melhor do que cada valor isolado
data da transação
dia da semana, mês, fim de semana
Captura sazonalidade e hábitos
várias transações por cliente
contagem, soma, média, última compra
Agrega dados de granularidade mais fina (junção 1:N)
duas variáveis \(x_1, x_2\)
interação \(x_1 \cdot x_2\)
Permite efeitos combinados em modelos lineares
É a etapa em que o conhecimento de domínio mais melhora um modelo — frequentemente mais do que trocar de algoritmo.
Cuidado: variáveis derivadas de informação futura são vazamento.
TRANSFORMAÇÃO DE DADOS Variáveis cíclicas: o mês não é uma reta
Dezembro (12) e janeiro (1) são meses vizinhos, mas na escala 1 a 12 estão a 11 unidades de distância.
Solução: representar o mês \(m\) como um ponto no círculo,
\[x = \sin\!\left(\tfrac{2\pi m}{12}\right), \quad y = \cos\!\left(\tfrac{2\pi m}{12}\right)\]
Agora dezembro e janeiro ficam a \(2\sin(\pi/12) \approx 0{,}52\) um do outro. Vale também para hora do dia, dia da semana e ângulos.
TRANSFORMAÇÃO DE DADOS Redução de dimensionalidade com PCA
O PCA combina variáveis correlacionadas em componentes ortogonais, ordenados pela variância que explicam — reduz dimensionalidade preservando o máximo de informação possível.
Como o PCA se baseia em variância, as variáveis devem estar na mesma escala antes de aplicá-lo.
Os componentes resultantes são combinações lineares das variáveis originais e perdem a interpretabilidade direta de cada atributo.
TRANSFORMAÇÃO DE DADOS PCA: a intuição geométrica e quantos componentes manter
Escolha o número de componentes pela variância acumulada desejada (ex.: 90%) ou pelo “cotovelo” da curva.
Os componentes são ajustados no treino e apenas aplicados ao teste.
PIPELINE E VAZAMENTO Ajustar no treino, aplicar no treino e no teste
Etapa
O que é “aprendido”
Ajustar (fit) em
Aplicar (transform) em
Imputação
média, mediana ou moda
treino
treino e teste
Escalonamento
\(\mu\) e \(\sigma\) (ou mín. e máx.)
treino
treino e teste
Codificação
categorias e, se usado, o alvo
treino
treino e teste
PCA
componentes principais
treino
treino e teste
Balanceamento
—
—
somente treino
Regras de domínio
—
—
treino e teste
O teste simula dados novos: nada dele pode influenciar os parâmetros do pré-processamento.
Em código, isso significa usar um pipeline (ex.: Pipeline do scikit-learn, recipes do R) e não transformar a base inteira de uma vez.
SÍNTESE
%%{init: {"flowchart": {"nodeSpacing": 10}}}%%
flowchart LR
A["Integração"] --> A2["Consolidar múltiplas fontes<br/> em uma base única"]
B["Eliminação manual"] --> B2["Remover IDs, constantes e<br/> vazamento óbvio"]
C["Amostragem"] --> C2["Reduzir custo preservando<br/> representatividade"]
D["Desbalanceamento"] --> D2["Balancear classes ou ajustar<br/> métricas e pesos"]
E["Limpeza"] --> E2["Corrigir duplicatas, formatos<br/> e inconsistências"]
F["Transformação"] --> F2["Discretizar, reduzir dimensão,<br/> criar features"]
CHECKLIST Checklist de pré-processamento
Pergunta
Etapa
As fontes têm chave confiável e granularidade compatível? A contagem de linhas faz sentido após a junção?
Integração
Há colunas de identificação, constantes ou com vazamento?
Eliminação manual
A amostra representa a população e as proporções das classes?
Amostragem
A classe de interesse é rara? Estou usando métricas adequadas?
Desbalanceamento
Há duplicatas, formatos mistos, valores fora do domínio ou ausentes?
Limpeza
Escala, forma, categorias e dimensão estão adequadas ao algoritmo?
Transformação
Tudo o que aprende com os dados foi ajustado só no treino?
Pipeline
Conclusões
O pré-processamento transforma o diagnóstico da EDA em uma base pronta para o modelo
Integração e limpeza garantem que a base seja consistente e confiável antes de qualquer outra etapa.
Eliminação manual e amostragem definem quais dados — colunas, linhas, e quantos registros — entram no pipeline.
Balanceamento e transformação ajustam como esses dados são apresentados ao modelo.
Cada técnica tem um custo: eliminar descarta informação, amostrar introduz variância, balancear artificialmente pode distorcer a distribuição real, discretizar e reduzir dimensão perdem granularidade.
Toda decisão de pré-processamento deve ser aplicada de forma consistente ao treino e ao teste — e, quando envolve estatísticas dos dados (médias, escalas, componentes de PCA), ajustada apenas no treino, para evitar vazamento de dados.
Referências
HAN, J.; KAMBER, M.; PEI, J. Data Mining: Concepts and Techniques. 3. ed. Morgan Kaufmann, 2011.
KUHN, M.; JOHNSON, K. Feature Engineering and Selection: A Practical Approach for Predictive Models. CRC Press, 2019.
WICKHAM, H.; GROLEMUND, G. R for Data Science. 2. ed. O’Reilly, 2023.
JAMES, G.; WITTEN, D.; HASTIE, T.; TIBSHIRANI, R. An Introduction to Statistical Learning. 2. ed. Springer, 2021.