MACHINE LEARNING · PREPARAÇÃO DE DADOS

O modelo aprende a partir da representação que recebe.

Preparar dados significa transformar registros brutos em entradas coerentes, numéricas e compatíveis com o algoritmo, sem permitir que informações do teste vazem para o treinamento.

1

Entendersignificado, unidade e tipo

2

Limparausências, duplicatas e erros

3

Transformarcodificar e ajustar escalas

4

Validartreino, validação e teste

01 · PRIMEIRO: LEIA A TABELA

O tipo depende do significado, não apenas do formato.

Uma coluna inteira pode ser uma contagem, uma categoria codificada ou apenas um identificador. O tratamento correto muda em cada caso.

cliente_idrenda_mensalatrasosescolaridadecidadeaprovado
101R$ 4.850,502SuperiorUberabaSim
102R$ 2.100,005MédioFrancaNão
1030FundamentalUberlândiaNão
IDENTIFICADOR

cliente_id

Distingue linhas, mas a distância entre 101 e 102 geralmente não carrega informação útil.

normalmente remover de X
CONTÍNUA

renda_mensal

Valor medido que pode assumir casas decimais. Precisa converter moeda e tratar a ausência.

"R$ 4.850,50" → 4850.50
DISCRETA

atrasos

Contagem inteira: 0, 1, 2… É numérica e sua diferença possui significado.

5 − 2 = 3 atrasos
CATEGÓRICA

escolaridade e cidade

Escolaridade possui ordem; cidade é nominal. Elas não devem receber a mesma codificação automaticamente.

ordinal ≠ nominal

02 · FLUXO DE TRATAMENTO

Uma sequência segura e reproduzível.

1

Definir X e y

X contém as características usadas para prever. y é a resposta esperada: classe, valor contínuo, contagem etc.

X = [renda, atrasos, escolaridade, cidade]
y = aprovado
2

Separar treino, validação e teste

Faça a separação antes de aprender média, desvio, categorias ou qualquer estatística de transformação.

dados → treino | validação | teste
3

Ajustar transformações somente no treino

A média usada para imputar, a escala e o vocabulário de categorias são aprendidos no conjunto de treino.

transformador.fit(X_treino)
4

Aplicar a mesma regra aos demais conjuntos

Validação, teste e dados futuros recebem exatamente o transformador já ajustado.

X_teste_pronto = transformador.transform(X_teste)

03 · PRINCIPAIS TRATAMENTOS

Cada problema pede uma transformação diferente.

Valores ausentes

Investigue por que faltam. Depois remova, use constante ou impute com mediana, média, moda ou outro método.

renda ausente → mediana do treino

Categorias

Use Ordinal Encoding somente quando existe ordem. Para categorias nominais, One-Hot é uma opção comum.

cidade → três colunas 0/1

Escala

Padronização ajuda modelos baseados em distância, gradiente, produto escalar e regularização.

z = (x − μ) / σ

Outliers e erros

Diferencie valor extremo verdadeiro de erro de cadastro. Corrigir, limitar ou manter exige contexto.

idade = 250 → verificar origem

LIMPEZA E DESEMPENHO COMPUTACIONAL

Dados menores e coerentes exigem menos trabalho da máquina.

O custo de treinamento cresce com a quantidade de exemplos, características e bytes processados. Limpar não serve somente para melhorar a qualidade estatística: também pode reduzir memória, leituras do disco, multiplicações e tempo de cada época.

Menos linhas inúteis

Duplicatas fazem o algoritmo processar o mesmo exemplo várias vezes e ainda podem dar peso exagerado a um caso repetido.

1.000.000 − 200.000 duplicatas
= 800.000 linhas

Menos colunas inúteis

IDs, campos constantes e informações sem relação com o alvo aumentam matrizes e cálculos sem necessariamente fornecer sinal ao modelo.

cliente_id → avaliar e remover de X

Tipos adequados

Números guardados como texto precisam ser interpretados repetidamente. Convertê-los permite operações numéricas vetorizadas e representações compactas.

"R$ 4.850,50" → 4850.50

Representação proporcional

Imagens, textos e categorias podem ser reduzidos ou representados de forma esparsa quando a tarefa permitir, evitando carregar milhares de zeros.

matriz esparsa: guardar só ≠ 0
ProblemaAntesTransformaçãoPor que pode ficar mais rápido?Cuidado necessário
Linhas duplicadas1 milhão de registros; 200 mil repetidosDeduplicar → 800 mil registrosCerca de 20% menos exemplos processados por época.Repetições podem ser eventos reais; confirme a chave da duplicidade.
Número armazenado como texto"1.250,75"Converter para númeroEvita parsing repetido e permite cálculo numérico eficiente.Trate moeda, separadores e unidades antes da conversão.
ID com alta cardinalidade100 mil clientes diferentesRemover o ID quando ele apenas identifica a linhaEvita um One-Hot com até 100 mil colunas sem significado preditivo.Não remova uma variável que realmente carregue informação válida.
Imagem maior que a entrada do modelo4.000 × 3.000 = 12 milhões de pixelsRedimensionar para 224 × 224 = 50.176 pixelsAproximadamente 239 vezes menos pixels por imagem.Reduzir demais pode apagar detalhes importantes.
Coluna constantepaís = "Brasil" em todas as linhasRemover da matriz de entradaEconomiza armazenamento e operações; a coluna não separa exemplos.Confirme se continuará constante nos dados futuros.

Antes da limpeza

Uma época percorre todas as linhas, inclusive duplicatas, e todas as características, inclusive colunas sem informação.

custo aproximado ∝ linhas × características

Depois da limpeza

Com 20% menos linhas repetidas e 10 de 50 colunas inúteis removidas:

antes: 1.000.000 × 50 = 50 milhões
depois: 800.000 × 40 = 32 milhões
36% menos valores por época

04 · ESCALA COM NÚMEROS

Renda e atrasos não estão na mesma ordem de grandeza.

Antes

rendaatrasos
2.0001
5.0003
8.0005

Em uma distância euclidiana, a renda pode dominar quase toda a comparação.

Após padronização

renda_zatrasos_z
−1,225−1,225
00
1,2251,225
z = (x − média) / desvio

StandardScaler

Centraliza usando a média e divide pelo desvio padrão.

média ≈ 0 · desvio ≈ 1

Min-Max

Mapeia o intervalo observado no treino, geralmente para [0,1].

x'=(x−mín)/(máx−mín)

RobustScaler

Usa mediana e intervalo interquartil, sendo menos influenciado por extremos.

x'=(x−mediana)/IQR

05 · EMBEDDINGS, VETORES E GRAFOS

Transformar significado em coordenadas e relações.

Alguns dados não chegam como medidas prontas. Palavras, produtos, imagens e usuários precisam ser representados de uma forma que permita ao algoritmo calcular semelhança e aprender padrões.

Dado simbólico

A palavra “gato”, o identificador de um produto ou uma imagem ainda não formam uma entrada numérica útil.

"gato"

Embedding

Uma função aprendida transforma o item em um vetor denso com poucas dimensões.

[0,82; −0,14; 0,37; 0,61]

Espaço vetorial

Itens usados em contextos semelhantes tendem a ocupar regiões próximas.

distância(gato, felino) pequena

O que é um embedding?

Um embedding é uma representação vetorial aprendida. Cada item recebe uma lista de números, e o treinamento organiza esses números para preservar relações úteis à tarefa.

As posições individuais normalmente não possuem um significado fixo como “idade” ou “renda”. O significado aparece na combinação das dimensões e nas distâncias entre vetores.

E(item) = v ∈ ℝᵈ

E("gato") = [0,82; −0,14; 0,37; 0,61]
Projeção didática de um embedding
gatocachorrocoelhocarroônibusmotoanimais próximosveículos próximos

One-Hot

Cria uma posição para cada categoria. É simples e não aprende semelhança entre itens.

gato = [1, 0, 0, 0, 0]
cachorro = [0, 1, 0, 0, 0]
Bom quando:há poucas categorias e o modelo precisa de uma representação direta.

Embedding

Usa um vetor denso de dimensão escolhida e aprende suas coordenadas durante o treino.

gato = [0,82, −0,14, 0,37]
cachorro = [0,79, −0,09, 0,41]
Bom quando:há alta cardinalidade ou relações semânticas relevantes.

VETORES · COMO O ALGORITMO COMPARA?

Semelhança vira uma conta matemática.

Distância euclidiana

Mede a distância em linha reta. Quanto menor, mais próximos são os vetores.

d(a,b) = √Σ(aᵢ−bᵢ)²

Similaridade do cosseno

Compara o ângulo e reduz a influência do comprimento do vetor.

cos(a,b) = (a·b) ÷ (‖a‖‖b‖)

Produto escalar

Combina direção e magnitude. É comum em atenção e recomendação.

a·b = Σaᵢbᵢ

Exemplo com cosseno

Consulta q = [1; 0], produto A [0,9; 0,1] e produto B [0,2; 0,8].

cos(q,A) = 0,9 ÷ (1·√0,82) ≈ 0,994
cos(q,B) = 0,2 ÷ (1·√0,68) ≈ 0,243

A é o item mais semelhante à consulta.

GRAFOS · COMO ACELERAR A BUSCA?

O grafo evita comparar a consulta com todos os vetores.

Em uma busca exata ingênua, uma consulta é comparada com cada item. Em bases grandes, índices aproximados organizam atalhos para visitar somente uma parte promissora do espaço.

Busca exata

Para N vetores de dimensão d, o custo aproximado de uma varredura é:

comparações ≈ N × dVantagem: encontra o vizinho exato.
Limitação: a latência cresce com toda a base.

Índice em grafo · HNSW

Cada vetor vira um nó; arestas ligam vizinhos. A busca navega por camadas e conexões em direção às regiões mais próximas.

Vantagem: menor latência em bases grandes.
Troca: resultado aproximado, memória do índice e tempo de construção.

Grafo como índice × grafo como dado

Índice vetorial em grafo: as arestas são criadas para acelerar a busca por similaridade, como no HNSW. Dado naturalmente em grafo: as arestas já existem no problema — amizade, compra, citação ou transação. Nesse segundo caso, podemos criar características de conectividade, embeddings de nós ou usar redes neurais de grafos.

AplicaçãoItem transformadoVetor representaUso de grafoGanho esperado
Busca semânticaDocumento e perguntaSignificado do textoÍndice de vizinhos aproximadosEncontrar conteúdo semelhante com baixa latência.
RecomendaçãoUsuário e produtoPreferências e características latentesBusca de itens próximos ou grafo usuário–itemGerar candidatos relevantes sem pontuar todo o catálogo.
Busca de imagensImagemForma e conteúdo visual aprendidosÍndice vetorialRecuperar imagens visualmente próximas.
FraudeConta, dispositivo e transaçãoComportamento e contextoRelações reais entre entidadesRevelar grupos e caminhos suspeitos.

PIPELINE CORRETO

Representação, índice e modelo possuem responsabilidades diferentes.

1. PrepararLimpar e separar treino, validação e teste.
2. VetorizarTreinar, reutilizar ou ajustar o modelo de embedding.
3. IndexarConstruir o grafo somente com os vetores permitidos.
4. AvaliarMedir qualidade, recall da busca, latência e memória.

06 · QUAL MODELO PRECISA DO QUÊ?

A preparação depende do algoritmo.

“Precisa” abaixo significa a prática geral da implementação comum; bibliotecas específicas podem oferecer suporte adicional.

ModeloCategorias em textoEscala numéricaAusênciasObservação
Regressão linear / logísticaCodificarRecomendadaTratarOne-Hot para nominais; escala é especialmente útil com regularização.
SVMCodificarMuito importanteTratarMargens e kernels são sensíveis à escala.
k-NN / k-means / LVQ / RBFCodificarEssencialTratarDistâncias ficam distorcidas quando uma coluna domina a escala.
MLP / Perceptron / ADALINECodificarRecomendadaTratarEscalas semelhantes favorecem o gradiente e a convergência.
Árvore / Random ForestDepende da bibliotecaGeralmente dispensávelDependeNo scikit-learn, categorias normalmente precisam virar números.
XGBoost / LightGBM / CatBoostPode haver suporte nativoGeralmente dispensávelDependeConsulte a configuração da biblioteca antes de codificar.
Naive BayesDepende da varianteDependeTratarGaussianNB, MultinomialNB e CategoricalNB esperam representações diferentes.
CNNNão é a entrada típicaPixels normalizadosConforme dadoImagens costumam ser convertidas para [0,1] ou outra escala consistente.
Transformer de textoTokenização + embeddingsTratamento próprioMáscara / token especialTokens viram IDs e depois vetores aprendidos.

07 · PIPELINE

A mesma preparação deve acompanhar o modelo.

separar colunasimputarcodificarescalartreinar
numéricas  → mediana → StandardScaler
ordinais  → valor mais frequente → OrdinalEncoder
nominais  → valor mais frequente → OneHotEncoder
                                   ↓
                              modelo final