Erros Comuns em Data Science que Você Deve Evitar (Guia Prático)

Erros Comuns em Data Science que Você Deve Evitar (Guia Prático)

“`html





Erros Comuns em Data Science que Você Deve Evitar

Data Science • Prática e qualidade

Erros Comuns em Data Science que Você Deve Evitar

Se você quer resultados consistentes (e sustentáveis) em projetos de dados, precisa atacar os
problemas que mais geram retrabalho: validação falha, dados “vazando”, métricas desalinhadas e
decisões sem controle estatístico.

1) Vazamento de dados (data leakage)

O vazamento acontece quando informações do futuro (ou do conjunto de teste) influenciam as transformações
aplicadas ao treino. Em data science, isso costuma ocorrer em etapas “inofensivas” do pipeline:
normalização, codificação categórica, agregações e até seleção de variáveis.

  • Padronização/transformações antes do split: média e desvio calculados usando treino + teste.
  • Feature engineering com agregações globais: somas/médias calculadas usando todo o dataset.
  • Target encoding impróprio: codificar categorias usando o rótulo do conjunto de validação/teste.
  • Prévias e filtros com informação do rótulo: remover “outliers” com base em y.
Regra de ouro: qualquer estatística usada para transformar entradas deve ser estimada
apenas no treino e aplicada na validação/teste.

2) Validação fraca ou incorreta

Avaliação não é só “rodar um modelo”. É desenhar um esquema de validação que respeite
a estrutura do problema. Quando isso falha, o melhor modelo no notebook pode virar um desempenho ruim em produção.

  • Usar uma única divisão treino/teste: aumenta variância e pode mascarar instabilidades.
  • Ignorar o tipo de dado: dados temporais exigem splits temporais; dados por usuário exigem splits por grupo.
  • CV “quebrando” dependências: amostras correlacionadas entram em treino e validação ao mesmo tempo.
  • Não checar estabilidade: não observar variação por fold (média e dispersão).
Dica prática: se há ordem temporal, usuário ou sessão, trate isso no split.
Métrica “alta” com validação errada é, na prática, uma falha silenciosa.

3) Métrica desalinhada com o objetivo do negócio

Um dos erros mais comuns é escolher métricas “convenientes” que não refletem o custo real
das decisões. A consequência é previsões que parecem boas em score, mas falham no comportamento desejado.

  • Classificação desbalanceada: usar acurácia sem considerar base rate.
  • Priorizar média sem olhar cauda: em risco/fraude, poucos casos dominam perdas.
  • Não validar calibração: probabilidades mal calibradas quebram limiares e políticas.
  • Otimizando hiperparâmetros para a métrica errada: tuning vira “caça ao número”.
Checklist rápido:
(1) qual é a decisão? (2) qual custo de falso positivo e falso negativo? (3) qual horizonte temporal?
(4) a métrica reflete isso?

4) Falta de controle experimental e análise de erros

Sem rastreabilidade e análise, você não sabe se melhorou de verdade — ou apenas ajustou coincidências do dataset.
E sem inspeção de erros, o ciclo vira tentativa/erro sem aprendizado.

  • Sem baseline: começar direto com um modelo complexo sem uma referência simples.
  • Sem reprodutibilidade: números que não batem por falta de seed, versões e pipeline.
  • Não inspecionar erros: aceitar “métrica subiu” sem entender quais casos falham e por quê.
  • Confundir overfitting com ganho: treino melhora, validação piora — mas ninguém olha a curva.
Abordagem correta: registre datasets, transformações, seed, métricas por fold e análise de exemplos
(por segmento, por faixa de probabilidade, por unidade/usuário).

Exemplo: pipeline sem vazamento + validação consistente (Python)

import numpy as np
from sklearn.model_selection import TimeSeriesSplit
from sklearn.pipeline import Pipeline
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.impute import SimpleImputer
from sklearn.linear_model import LogisticRegression

# X: features, y: rótulo
# col_num: colunas numéricas, col_cat: colunas categóricas
# Importante: faça o split ANTES de qualquer transformação que dependa dos dados.

tscv = TimeSeriesSplit(n_splits=5)

preprocess = ColumnTransformer(
    transformers=[
        ("num", Pipeline(steps=[
            ("imputer", SimpleImputer(strategy="median")),
            ("scaler", StandardScaler())
        ]), col_num),
        ("cat", Pipeline(steps=[
            ("imputer", SimpleImputer(strategy="most_frequent")),
            ("onehot", OneHotEncoder(handle_unknown="ignore"))
        ]), col_cat),
    ],
    remainder="drop"
)

model = Pipeline(steps=[
    ("preprocess", preprocess),
    ("clf", LogisticRegression(max_iter=2000))
])

scores = []
for train_idx, test_idx in tscv.split(X):
    X_train, X_test = X.iloc[train_idx], X.iloc[test_idx]
    y_train, y_test = y.iloc[train_idx], y.iloc[test_idx]

    model.fit(X_train, y_train)              # estatísticas aprendidas apenas no treino
    pred = model.predict_proba(X_test)[:,1] # use sua métrica real (ex.: PR-AUC, logloss, etc.)

    # Exemplo simples de métrica (troque pela sua métrica de negócio)
    acc = ((pred > 0.5) == y_test).mean()
    scores.append(acc)

print("média:", np.mean(scores), "std:", np.std(scores))

Quer deixar seus projetos mais consistentes?

Leitura recomendada: explore outros posts do yurideveloper.com.br para aprofundar em
validação, métricas e desenho de pipeline sem retrabalho — do jeito que você consegue aplicar no dia a dia.



Ver outros posts

Feito para você evitar erros que custam tempo, confiança e qualidade — antes de virar “só mais um notebook”.



“`