Validação cruzada é uma técnica para avaliar modelos de forma mais confiável, especialmente quando você tem poucos dados. Em vez de fazer uma única divisão treino/teste, você faz várias e tira a média.
A versão mais comum é k-fold cross-validation:
- Divida o dataset em k partes iguais (k = 5 ou 10 é comum).
- Para cada parte: treine nas outras k-1 partes, teste nessa parte.
- Faça a média das k performances.
Vantagens:
- Mais robusto: cada exemplo é usado para teste em algum momento.
- Reduz sorte/azar: uma divisão ruim não distorce o resultado.
- Detecta variância: se as performances variam muito entre folds, seu modelo é instável.
Variações:
- Stratified k-fold: mantém a proporção de classes em cada fold (importante quando há classes raras).
- Leave-one-out: caso extremo, k = número de exemplos. Cada exemplo é seu próprio fold de teste.
- Time series split: para dados temporais, sempre treine no passado e teste no futuro (não pode "vazar" futuro para o passado).
- Group k-fold: quando exemplos pertencem a grupos (ex: vários exames do mesmo paciente), garante que o grupo todo fica num fold só.
Para o profissional brasileiro:
- scikit-learn em Python torna validação cruzada um one-liner.
- AutoML (H2O, AutoGluon) já faz validação cruzada por baixo dos panos.
- Para LLMs via API, validação cruzada não se aplica diretamente — você usa benchmarks como MMLU, BBH ou seus próprios eval sets.
Erros comuns a evitar:
- Vazamento de dados: features que dependem do target, ou pré-processamento feito antes do split.
- Cherry-picking: rodar várias vezes e reportar só o melhor resultado.
- Validação só uma vez: sem repetições é difícil saber se o resultado foi sorte.
Validação cruzada é uma daquelas técnicas básicas que separam ciência de dados séria de "experimentação de fim de semana". Use sempre que possível.
