🧠FFVAcademy

Dados: o Combustível da IA

8 min de leitura·+30 XP
Pré-requisitos (0/1)0%

Recomendamos completar os pré-requisitos antes de seguir, mas nada te impede de continuar.

“Dados são o novo petróleo” — mas petróleo bruto não move carro. Precisa ser extraído, refinado e distribuído. Com dados é igual: a qualidade, o balanceamento e a forma como você divide o dataset determinam se o modelo vai aprender de verdade ou decorar lixo. Neste artigo, você vai entender o pipeline de dados que sustenta toda IA moderna — da coleta ao train/val/test split, passando por data leakage, class imbalance e augmentation.

O que são dados de treinamento

Para aprender, um modelo precisa de exemplos. Cada exemplo é um par: uma entrada e uma saída esperada (no caso supervisionado), ou simplesmente uma amostra da distribuição que queremos modelar (não-supervisionado).

Tipo de tarefaInputLabel (saída)Dataset famoso
Classificação de imagemFoto 224×224 pixels"gato", "cachorro", "carro"ImageNet (14M imagens, 21k classes)
Tradução"Que horas são?" (pt-BR)"What time is it?" (en)WMT (milhões de pares paralelos)
LLM (pré-treino)Sequência de tokensPróximo tokenCommon Crawl (~15T tokens)
Detecção de fraudeTransação bancária (features)"fraude" ou "legítima"Proprietário (bancos não compartilham)
Speech-to-textÁudio em chunksTranscrição textoLibriSpeech (960h de áudio)

Note que para LLMs, os dados não são rotulados por humanos — o label é simplesmente o próximo token no texto original. Isso é o que tornou o pré-treino em escala possível: a internet é um dataset auto-rotulado de trilhões de exemplos.

Qualidade vs Quantidade: os 5 pilares

A intuição “mais dados = melhor modelo” é parcialmente verdade, mas dados ruins em escala ensinam coisas erradas em escala. O modelo aprende exatamente o que está nos dados — incluindo vieses, erros e inconsistências.

🗺️ Os 5 pilares da qualidade de dados
1. RELEVÂNCIA
Os dados representam o problema real?
Treinar detector de gatos com fotos de estúdio não funciona em fotos de celular.
Distribuição de treino ≠ produção = falha.
2. DIVERSIDADE
Cobre todos os cenários de produção?
Rostos: todas etnias, idades, iluminações
Modelos de reconhecimento falharam em grupos sub-representados (MIT/NIST 2019)
3. LIMPEZA
Sem duplicatas, labels errados, ruído excessivo ou dados corrompidos.
Garbage in = garbage out.
Até 30% dos labels em crowdsourcing são erros.
4. BALANCEAMENTO
Classes equilibradas?
99% gato + 1% cachorro ensina "tudo é gato".
Detecção de fraude: 0.1% positivo.
5. ATUALIDADE
Dados refletem o estado atual?
Modelo de preços de 2019 não sabe sobre inflação pós-pandemia.
LLMs com cutoff de 2023 não sabem de 2025.
⚠️
Exemplo real: modelos de reconhecimento facial treinados predominantemente com rostos brancos têm taxa de erro até 34× maior em rostos de mulheres negras (Gender Shades, Joy Buolamwini 2018). O viés estava nos dados de treinamento. Diversidade não é política — é requisito técnico.

Train / Validation / Test: a divisão sagrada

Treinar e avaliar nos mesmos dados é como dar a prova pro aluno estudar. Ele vai se sair bem, mas não aprendeu de verdade. A solução é dividir o dataset em três partes com papéis distintos:

🗺️ Split padrão e papel de cada conjunto — 100k exemplos
TRAIN SET (70–80%)
70k exemplos
O modelo aprende aqui
Forward pass → loss → backprop → update pesos
Pode ser visto múltiplas vezes (épocas)
usado toda época
VALIDATION SET (10–15%)
15k exemplos
Ajusta hiperparâmetros (lr, epochs, batch)
NÃO atualiza pesos
Detecta overfitting: val loss sobe enquanto train cai
monitoramento contínuo
TEST SET (10–15%)
15k exemplos
JUIZ FINAL — tocado UMA única vez
Mede performance em dados nunca vistos
Tocar e ajustar = contaminar
⚠️ Uma vez no final
🚨
Armadilha clássica: normalizar os dados (calcular média/std) antes de fazer o split. A média do dataset inteiro inclui informação do test set — isso é data leakage. O correto: calcular estatísticas apenas no train set e aplicar (transform) nos outros conjuntos.

Data Leakage: o assassino silencioso

Data leakage acontece quando o modelo tem acesso, direto ou indireto, a informação que não teria em produção. As métricas ficam excelentes no lab e o modelo quebra no mundo real — às vezes sem nenhum aviso.

Tipo de leakageExemplo concretoComo prevenir
Target leakage"Data do diagnóstico" como feature para prever "tem doença?" — a data já pressupõe o diagnósticoAnalisar correlação feature-target; remover features que revelam a resposta
Train-test contaminationMesmo paciente aparece no train e no test — o modelo aprendeu aquele indivíduoGroup split: garantir que a mesma unidade (paciente, sessão) não cruza conjuntos
Temporal leakageUsar dados de julho para prever o que aconteceu em junhoTime-based split: train em dados mais antigos, test em dados mais recentes
Preprocessing leakageStandardScaler.fit() em todo o dataset antes do splitFit apenas no train; transform nos demais com os mesmos parâmetros
python
# ❌ ERRADO — leakage: fit no dataset inteiro
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)  # inclui test set!
X_train, X_test = train_test_split(X_scaled)

# ✅ CORRETO — fit apenas no train
X_train, X_test, y_train, y_test = train_test_split(X, y)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)   # aprende stats do train
X_test = scaler.transform(X_test)         # aplica as mesmas stats

O erro de preprocessing leakage é tão comum que frameworks modernos como scikit-learn tem o Pipeline exatamente para forçar o fit/transform correto durante cross-validation.

Class Imbalance: quando 99% não significa nada

Detecção de fraude: 99.9% das transações são legítimas. Se o modelo prevê “legítima” para tudo, acerta 99.9%. Mas erra 100% das fraudes — exatamente o que deveria detectar. Isso é class imbalance e é um dos problemas mais comuns em ML de produção.

TécnicaComo funcionaQuando usar
Class weightsAumenta o peso da loss para a classe rara — o modelo é "punido mais" por errar a minoriaImbalance moderado (1–10%); mais simples
Oversampling (SMOTE)Gera exemplos sintéticos da classe minoritária interpolando vizinhos reaisTabular data com poucos exemplos da classe rara
UndersamplingRemove exemplos da classe majoritária aleatoriamenteDataset enorme onde perder dados não prejudica
Focal LossReduz loss de exemplos fáceis, foca nos difíceisImbalance extremo; usado no RetinaNet (object detection)
Métricas corretasF1, precision, recall, AUROC em vez de accuracySEMPRE — accuracy mascara imbalance

📋 Dataset com 5% da classe positiva — qual técnica?

Class weights + F1 como métrica

Mais simples de implementar, não altera o dataset, e funciona bem para imbalance moderado (1–10%). Para imbalance extremo (0.1%), combinar com SMOTE para gerar mais exemplos da classe rara.

Alt: SMOTEQuando a classe rara tem poucos exemplos e você precisa gerar mais para o modelo aprender a fronteira de decisão.

Alt: Focal LossPara imbalance extremo em imagens/object detection onde SMOTE não se aplica.

Data Augmentation: criar dados a partir de dados

Quando dados reais são escassos ou caros, podemos gerar variações dos dados existentes sem mudar o significado. Uma foto de gato rotacionada 15° ainda é um gato — mas agora é um novo exemplo de treino.

DomínioTécnicasExemplo concreto
ImagensFlip, rotação, crop, color jitter, mixup, cutout, CutMixFoto de gato flipada horizontalmente ainda é gato; mixup combina 2 imagens com label misto
TextoBack-translation, sinônimos, paráfrase via LLM, word dropout"O cão é grande" → inglês → "The dog is big" → pt-BR → "O cachorro é grande"
ÁudioTime stretch, pitch shift, adição de ruído de fundo, reverbVoz com eco de ambiente ainda é a mesma frase
TabularSMOTE, noise injection, feature crossover, Gaussian noiseTransação de fraude com valor ±2% ainda é fraude
💡
Dados sintéticos com LLMs (2024–2025): uma prática crescente é usar GPT-4/Claude para gerar dados de treino para modelos menores. O Phi-3 da Microsoft foi treinado parcialmente em “textbooks” gerados por GPT-4. O risco: cada geração de “modelo treinado em output de modelo” degrada a qualidade — isso é model collapse. Dados reais servem de âncora.

De onde vêm os dados dos LLMs

O pipeline de dados de um LLM moderno começa com coleta bruta em escala de terabytes e termina em um dataset curado de alta qualidade — o que sobra depois de filtrar o lixo:

🗺️ Pipeline de dados de um LLM moderno
🌐Coleta brutaCommon Crawl (250B páginas) · GitHub (1T tokens) · Wikipedia · Livros · Reddit · StackOverflow
🔍DeduplicaçãoRemover duplicatas exatas e near-duplicates (MinHash + LSH) — até 30% do Common Crawl é duplicado
🧹Filtragem de qualidadeRemover spam, boilerplate, conteúdo adulto, PII, toxicidade — classificadores treinados nessa tarefa
⚖️BalanceamentoProporcional por língua, domínio, tipo de conteúdo — sobrerepresentar código e ciência
📦Dataset final2–15T tokens de alta qualidade · Custo de processamento: ~$2–5M · Custo de treino: $30–100M+
FonteVolume estimadoPrósContras
Common Crawl~15T tokens brutos → ~2T após filtroEnorme, diverso, gratuitoMuito ruído, spam, duplicatas, vieses de quem escreve na web
Wikipedia~4B tokens (en)Alta qualidade, factual, estruturadoViés enciclopédico; pouca linguagem informal
GitHub~1T tokens de códigoCódigo real, multilinguagem, comentáriosMuitos repos abandonados; código de má qualidade
LivrosMilhões de livrosProsa longa e bem escrita; raciocínio elaboradoCopyright questionável (NYT vs OpenAI, Authors Guild)
Dados sintéticosIlimitado em teoriaCuradoria controlável; útil para nichosRisco de model collapse em gerações subsequentes

Feature engineering: preparando os dados para o modelo

Dados brutos raramente entram direto no modelo. Precisam ser transformados em features — representações numéricas que o modelo consegue processar:

TransformaçãoO que fazQuando usar
Normalização (min-max)Escala valores para [0, 1]: (x - min) / (max - min)Features com ranges muito diferentes (ex: idade vs salário)
Padronização (z-score)Transforma para média=0, std=1: (x - μ) / σQuando a distribuição importa (regressão, SVM, PCA)
One-hot encodingCategoria → vetor binário: "gato" → [1,0,0], "cão" → [0,1,0]Features categóricas com baixa cardinalidade (<50 categorias)
TokenizaçãoTexto → sequência de IDs inteiros via BPE/WordPieceQualquer input textual para Transformers e LLMs
Embedding lookupID inteiro → vetor denso de dimensão d (aprendido no treino)Alta cardinalidade (cidades, produtos, usuários)
💡
Para LLMs, feature engineering é quase zero — o Transformer aprende suas próprias representações (embeddings) do zero. Mas para ML clássico (tabular, séries temporais), engenharia de features continua sendo o fator #1 de performance. Competições Kaggle são ganhas por features, não por arquiteturas.

Perguntas e respostas

Se dados sintéticos são baratos, por que não usar só eles?

Porque dados sintéticos gerados por um modelo herdam os vieses e limitações desse modelo. Se você treinar o modelo B em outputs do modelo A, e depois treinar C em outputs de B, a qualidade degrada a cada geração — isso é model collapse (demonstrado por Shumailov et al., 2024). Dados reais servem como “âncora de realidade”. A melhor estratégia: misturar dados reais curados com sintéticos gerados por modelos mais capazes.

Cross-validation substitui o test set?

Não. Cross-validation (k-fold) substitui o validation set: divide o train em k partes, treina em k-1, valida em 1, rotaciona k vezes e faz média. Dá estimativa mais robusta de generalização — especialmente com datasets pequenos onde separar 15% para validation “dói”. Mas o test set continua reservado como juiz final e deve ser tocado apenas uma vez.

Quanto dado preciso para treinar um modelo bom?

Depende radicalmente da tarefa e do approach. Regras práticas: (1) fine-tuning de LLM com LoRA: 1k–10k exemplos curados são suficientes; (2) treinamento do zero de NLP: 100k–1M; (3) LLM do zero competitivo: 1–15 trilhões de tokens; (4) imagem com transfer learning de ImageNet: 100–1k por classe. Mais importante que quantidade: diversidade e qualidade — um dataset pequeno e limpo frequentemente supera um grande e sujo.

O que é dataset shift e por que minha performance cai em produção?

Dataset shift acontece quando a distribuição dos dados de produção difere do train. Três tipos: (1) covariate shift — distribuição de X muda, mas relação X→Y não; (2) label shift — frequência das classes muda; (3) concept drift — a própria relação X→Y muda com o tempo. Solução: monitorar distribuição de features em produção, retreinar periodicamente, usar técnicas de domain adaptation.
O que você aprendeu: dados de treinamento são a base de toda IA — e qualidade importa mais que quantidade. Você sabe dividir dados em train/val/test sem leakage, identificar e tratar class imbalance, usar augmentation para expandir datasets, e entender o pipeline de dados que alimenta LLMs. Você também conhece os 5 pilares da qualidade (relevância, diversidade, limpeza, balanceamento, atualidade) e como data leakage silenciosamente destrói métricas de produção. No próximo artigo: como a IA realmente aprende — loss function, gradiente descendente e backpropagation.
🧩

Quiz rápido

4 perguntas · Acerte tudo e ganhe o badge 🎯 Gabarito

Continue lendo