IA E MACHINE LEARNING

Divisão treino/validação/teste

Particionamento de um conjunto de dados em três subconjuntos disjuntos para machine learning: treino (ajuste de parâmetros), validação (seleção de hiperparâmetros) e teste (avaliação final imparcial). Padrão metodológico para evitar contaminação.

Definição estendida

Divisão treino/validação/teste é o particionamento de um conjunto de dados em três subconjuntos disjuntos com funções metodologicamente distintas em projetos de machine learning. O conjunto de treino é usado para ajustar os parâmetros do modelo (pesos, coeficientes, regras). O conjunto de validação é usado para selecionar hiperparâmetros (taxa de aprendizado, profundidade de árvore, número de camadas), comparar modelos candidatos, e tomar decisões de arquitetura — sem contaminar a avaliação final. O conjunto de teste é usado uma única vez, no fim do processo, para estimar performance generalizável; tocar no teste durante desenvolvimento é uma das fontes mais documentadas de viés metodológico em ML aplicado. Proporções típicas variam: 60/20/20, 70/15/15, ou 80/10/10 quando o conjunto é grande. A formalização do paradigma é livro-texto desde Hastie, Tibshirani e Friedman (The Elements of Statistical Learning, 2009); Kohavi (1995) ofereceu a primeira comparação sistemática entre divisão fixa e validação cruzada para estimação de erro.

Quando se aplica

Divisão treino/validação/teste é apropriada quando o conjunto de dados é grande o suficiente para que cada subconjunto preserve representatividade da distribuição completa. Aplicações típicas: classificação supervisionada com milhares a milhões de exemplos (visão computacional, NLP, sistemas de recomendação), regressão preditiva com séries históricas, qualquer tarefa supervisionada em que o objetivo é estimar performance fora da amostra. Para dados temporais, a divisão deve respeitar ordem cronológica (treino sempre anterior a teste) — divisão aleatória vaza informação do futuro para o passado. Para dados agrupados (múltiplas observações por sujeito), divisão deve agrupar por sujeito para evitar vazamento.

Quando NÃO se aplica

Não se aplica em conjuntos pequenos onde reservar 20-30% para teste deixaria treino com poucos exemplos para aprender — validação cruzada (k-fold, leave-one-out) é alternativa preferível. Não se aplica em projetos puramente exploratórios sem hipótese preditiva. Não substitui validação externa em domínio diferente — modelo treinado e testado no mesmo dataset captura padrões locais que podem não generalizar para outras populações ou contextos. Em séries temporais com não-estacionariedade severa, divisão simples não captura mudança de regime — abordagens com janela móvel ou validação prospectiva são necessárias.

Aplicações por área

Visão computacional: divisão padrão em datasets como ImageNet, COCO, MNIST com ratios pré-definidos pela comunidade. — NLP: datasets como GLUE, SQuAD vêm com divisões oficiais para garantir comparabilidade entre publicações. — Saúde: ML clínico exige divisão por paciente (não por amostra), com validação externa em hospital diferente para confiar no modelo. — Finanças: divisão temporal estrita para previsão de séries; teste sempre em período posterior ao treino.

Armadilhas comuns

A primeira armadilha é tocar no teste durante desenvolvimento — tunar hiperparâmetros olhando para teste invalida a estimativa de performance. A segunda é vazamento de dados: features que codificam informação do futuro (ex.: incluir variável calculada com dados pós-treino), divisão sem agrupar por sujeito, normalização computada com todo dataset (deveria ser apenas com treino e aplicada nos demais). A terceira é assumir que ratio padrão (80/10/10) sempre serve — em conjuntos pequenos, k-fold cross-validation é mais robusto. A quarta é ignorar estratificação em problemas com classes desbalanceadas — divisão aleatória pode produzir teste sem exemplos de classes minoritárias. A quinta é confiar em performance no teste como garantia de produção — distribution shift entre dados de teste e dados em produção real é fonte primária de degradação de modelos deployados.

Última atualização —