Test Data
Os dados de teste são uma divisão reservada, avaliada uma única vez após todo o treinamento e ajuste, para estimar o desempenho em dados novos. Divisões, tamanho, armadilhas e código.
Os dados de teste, também chamados conjunto de teste ou conjunto de reserva, são a parte de um conjunto de dados reservada para medir um modelo finalizado de aprendizado de máquina (ML). Não participam do ajuste dos pesos do modelo nem de nenhuma decisão de desenvolvimento, como a arquitetura, os hiperparâmetros, o checkpoint ou o limiar de confiança, e são avaliados quando essas decisões estão finalizadas. Como o modelo e seus desenvolvedores nunca se adaptaram a esses dados, sua acurácia, revocação ou precisão média (mAP) fornece uma estimativa não enviesada do desempenho do modelo em novos dados da mesma distribuição; é esse número que as equipes usam para decidir se um modelo está pronto para a implantação.
Divisões de treinamento, validação e teste#
Um conjunto de dados costuma ser dividido em três subconjuntos disjuntos, cada um com uma função diferente:
- Dados de treinamento: Os exemplos dos quais o otimizador aprende, ajustando os pesos para reduzir a perda.
- Dados de validação: Avaliados repetidamente durante o desenvolvimento para comparar hiperparâmetros, interromper o treinamento antecipadamente e escolher o melhor checkpoint.
- Dados de teste: Avaliados uma vez no final para informar a métrica usada para julgar o projeto.
Divisões de 80/10/10 ou 70/15/15 são comuns em conjuntos de dados com milhares de exemplos, enquanto conjuntos de milhões podem reservar alguns por cento. O tamanho necessário para o conjunto de teste depende da precisão exigida: o erro padrão de uma acurácia p medida em n exemplos é a raiz quadrada de p(1 − p)/n; portanto, 1.000 imagens de teste com 90% de acurácia dão um intervalo de confiança de 95% de cerca de ±1,9 pontos percentuais, e 10.000 imagens reduzem esse valor para cerca de ±0,6. A nomenclatura varia entre áreas, e muitos artigos relatam os resultados finais no ImageNet usando o conjunto de validação oficial, porque os rótulos de teste do ImageNet não são públicos. No Ultralytics YOLO, um YAML de conjunto de dados exige caminhos train e val e aceita um caminho opcional test; o treinamento avalia val após cada época para escolher best.pt, e model.val(data="data.yaml", split="test") avalia o modelo finalizado nas imagens reservadas no modo de validação.
Por que o conjunto de teste deve permanecer intocado#
Cada decisão tomada com base em uma pontuação ajusta um pouco o modelo a esses dados. Quando muitas configurações competem no conjunto de validação, a vencedora é, em parte, aquela que teve sorte com aqueles exemplos específicos, então sua pontuação de validação superestima o desempenho em outros dados. O experimento a seguir com scikit-learn escolhe a melhor quantidade de vizinhos para um classificador de k-vizinhos mais próximos em um conjunto de dados pequeno e ruidoso e compara a acurácia de validação e teste do vencedor em 30 conjuntos de dados aleatórios:
import numpy as np
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
val_scores, test_scores = [], []
for seed in range(30):
# A small, noisy dataset split 60/20/20 into train, validation, and test
X, y = make_classification(n_samples=400, n_features=20, n_informative=4, flip_y=0.2, random_state=seed)
X_train, X_rest, y_train, y_rest = train_test_split(X, y, test_size=0.4, random_state=seed)
X_val, X_test, y_val, y_test = train_test_split(X_rest, y_rest, test_size=0.5, random_state=seed)
# Model selection: keep the neighbor count with the best validation accuracy
scores = {k: KNeighborsClassifier(k).fit(X_train, y_train).score(X_val, y_val) for k in range(1, 51)}
best_k = max(scores, key=scores.get)
val_scores.append(scores[best_k])
# The test set is scored once, after the choice is final
test_scores.append(KNeighborsClassifier(best_k).fit(X_train, y_train).score(X_test, y_test))
print(f"Chosen model, mean of 30 runs: validation {np.mean(val_scores):.3f}, test {np.mean(test_scores):.3f}")Os modelos escolhidos obtêm, em média, 0,805 na validação e 0,758 no teste, portanto selecionar entre 50 candidatos inflou a estimativa de validação em quase cinco pontos. Ajustar os modelos com base no conjunto de teste ocultaria essa diferença e levaria o mesmo otimismo ao resultado relatado, uma forma de vazamento de dados. Benchmarks públicos se protegem disso mantendo os rótulos ocultos: os resultados de teste-dev do COCO vêm do envio de previsões a um servidor de avaliação. Para grandes modelos de linguagem (LLMs), perguntas de teste que aparecem em dados de pré-treinamento em escala da Web contaminam um benchmark, e é por isso que o LiveCodeBench continua adicionando novos problemas de competições e avalia cada modelo com problemas publicados depois do limite temporal de seu treinamento.
Como criar um conjunto de teste confiável#
Uma pontuação de teste prevê o desempenho no mundo real somente quando o conjunto de teste se parece com os dados que o modelo encontrará, sejam cenas de rua para veículos autônomos ou exames para análise de imagens médicas:
- Reproduza as condições de implantação: Câmeras, iluminação, estações do ano, geografia e equilíbrio entre classes devem refletir a produção. Um detector de direção precisa de cenas noturnas, com chuva e neve em seu conjunto de teste, mesmo que a maioria das viagens ocorra com tempo bom.
- Mantenha a independência: Quadros do mesmo vídeo, exames do mesmo paciente e fotos da mesma cena devem ficar em uma única divisão. Dados ordenados no tempo são divididos por data, para que o modelo seja testado com dados futuros.
- Teste com diferentes fontes: Em imagens médicas, a validação externa com exames de outros hospitais e modelos de scanner mostra se um modelo aprendeu anatomia ou o equipamento de uma instituição específica.
- Limpe os rótulos: Erros nos rótulos de teste limitam a acurácia mensurável e podem alterar a classificação dos modelos, por isso os rótulos de teste merecem a revisão mais cuidadosa.
- Relate os segmentos: Métricas por classe e por condição revelam falhas que uma única média oculta.
Mesmo um conjunto de teste cuidadosamente reconstruído pode alterar os resultados: quando pesquisadores recriaram o conjunto de teste do ImageNet seguindo o processo original de coleta, a acurácia caiu de 11 a 14 pontos percentuais em uma ampla variedade de modelos, embora os ganhos no conjunto de teste original tenham se mantido; os autores atribuíram a queda a imagens um pouco mais difíceis, não a anos de reutilização do conjunto de teste.
Dados de teste e termos relacionados#
- Validação cruzada: Alterna qual parte dos dados de desenvolvimento serve como validação, produzindo uma estimativa mais estável para a seleção de modelos. Um conjunto de teste separado ainda fornece o número final.
- Conjunto de dados de benchmark: Um conjunto de teste público compartilhado por uma área de pesquisa. Como todas as equipes o avaliam durante anos, aos poucos ele deixa de ser composto por dados nunca vistos.
- Conjunto de dados de referência: Um conjunto de referência selecionado e de alta qualidade, com respostas verificadas, frequentemente usado como conjunto de teste fixo para testes de regressão de aplicações com LLMs.










