Ultralytics YOLO27: Entre na lista de espera.
Licenciar o YOLO
Voltar ao glossário da Ultralytics

Cross-Validation

A validação cruzada treina e avalia um modelo em k partições rotativas de um conjunto de dados para estimar sua capacidade de generalização. Veja as etapas do K-fold, variantes, vazamento de dados e código.

A validação cruzada estima o desempenho de um modelo com dados não vistos, treinando-o e avaliando-o várias vezes com diferentes divisões do mesmo conjunto de dados e combinando as pontuações. Na validação cruzada k-fold, os dados são divididos em k partes iguais, chamadas folds, e cada fold é usado uma vez como dados de validação, enquanto o modelo treina com os outros k − 1 folds. A média das k pontuações estima o desempenho e a sua dispersão mostra até que ponto essa estimativa depende dos exemplos que calharam no conjunto de validação. A validação cruzada é o método de avaliação padrão quando há poucos dados para que uma única divisão de validação produza uma pontuação fiável; também é muito usada para comparar algoritmos e ajustar hiperparâmetros sem utilizar os dados de teste.

Como funciona a validação cruzada k-fold#

O conjunto de dados é baralhado uma vez e dividido em k folds, normalmente 5 ou 10. Em cada uma das k rondas, é treinado um modelo novo com k − 1 folds e avaliado no fold restante, pelo que cada exemplo é usado exatamente uma vez para validação e k − 1 vezes para treino. Calcula-se a média das k pontuações e apresenta-se o resultado com o respetivo desvio-padrão. Depois de a validação cruzada selecionar um modelo ou conjunto de hiperparâmetros, o modelo final é normalmente novamente treinado com todos os dados de treino e essas definições. A validação cruzada leave-one-out é o caso extremo em que k é igual ao número de exemplos; utiliza a maior quantidade de dados para treino em cada ronda, mas exige treinar tantos modelos quantos os exemplos.

Interpretar as pontuações da validação cruzada#

A dispersão entre folds é tão informativa como a média. O script scikit-learn abaixo executa uma validação cruzada de 5 folds no conjunto de dados de cancro da mama incluído:

from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import StratifiedKFold, cross_val_score
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler

# 569 labeled tumor samples with 30 features each
X, y = load_breast_cancer(return_X_y=True)

# The scaler sits inside the pipeline, so each round fits it on that round's training folds only
model = make_pipeline(StandardScaler(), LogisticRegression(max_iter=1000))

# 5 stratified folds: each sample is validated exactly once
folds = StratifiedKFold(n_splits=5, shuffle=True, random_state=0)
scores = cross_val_score(model, X, y, cv=folds)
print("Fold accuracies:", scores.round(3))
print(f"Mean {scores.mean():.3f} +/- {scores.std():.3f}")

As cinco precisões por fold variam entre 0.956 e 1.000, com uma média de 0.979 e um desvio-padrão de 0.014. Uma única divisão 80/20 teria apresentado qualquer um desses cinco valores, um intervalo de 4.4 pontos percentuais. Colocar o normalizador no interior do pipeline impede que o fold de validação entre nas estatísticas do pré-processamento dos dados; normalizar primeiro o conjunto de dados completo provocaria fuga de dados de cada fold de validação para o treino.

Escolher uma variante de validação cruzada#

A validação k-fold simples pressupõe que os exemplos são independentes e permutáveis. Quando não são, uma divisão aleatória provoca fuga de informação ou cria folds que não representam a tarefa:

  • k-fold estratificado: mantém em cada fold as proporções de classes do conjunto de dados completo, o que é importante quando uma classe rara poderia não aparecer num fold.
  • K-fold por grupos: mantém todos os exemplos de um grupo, como um paciente, vídeo ou local de campo, na mesma partição, para que o modelo nunca seja validado com quase duplicatas de suas imagens de treinamento. O k-fold estratificado por grupos combina as duas restrições.
  • Divisão de séries temporais: treina apenas com dados passados e valida com o período seguinte, alargando a janela de treino em cada ronda, porque baralhar dados ordenados no tempo permite ao modelo ver o futuro.
  • Validação cruzada aninhada: executa um ciclo interno de validação cruzada para ajustar hiperparâmetros dentro de cada fold externo, para que a pontuação externa não seja inflacionada pelo ajuste nos mesmos folds usados para a calcular.

Validação cruzada para aprendizagem profunda#

Treinar uma rede profunda k vezes multiplica o custo computacional por k; por isso, conjuntos de dados grandes, como o ImageNet e o COCO, usam uma única divisão fixa de validação, que já é suficientemente grande para produzir uma pontuação estável. A validação cruzada é vantajosa em pequenos conjuntos de dados de visão, com algumas centenas a alguns milhares de imagens, onde uma divisão de validação pode conter apenas alguns exemplos de cada classe. O guia de validação cruzada K-Fold da Ultralytics divide um conjunto de dados de deteção em cinco folds com o KFold do scikit-learn, cria listas de imagens de treino e validação e um YAML do conjunto de dados para cada fold e treina um modelo YOLO26 por fold. Como as imagens de deteção costumam conter várias classes, não podem ser estratificadas por um único rótulo; por isso, o guia também regista, para cada classe em cada fold, o rácio entre os rótulos de validação e os de treino.

  • Validação hold-out: uma única divisão, como 80/20, avaliada uma vez. Exige uma execução de treino e é adequada para conjuntos de dados grandes; a pontuação depende dos exemplos que ficam na divisão de validação.
  • Bootstrapping: cria conjuntos de treino por amostragem com reposição e avalia cada modelo nos exemplos que ficaram de fora da amostra. O k-fold divide os dados sem reposição, pelo que cada exemplo pertence exatamente a um fold.
  • Avaliação no conjunto de teste: a validação cruzada seleciona modelos e definições. Um conjunto de teste separado, excluído de todos os folds, fornece a estimativa final para o modelo escolhido.

Explore as soluções

Visão computacional no desporto

Visão computacional no desporto

Descubra como o Ultralytics YOLO impulsiona a visão computacional no esporte com rastreamento de jogadores e bolas, análise de desempenho, insights para treinadores e reabilitação de atletas.
Saiba mais
Visão computacional para imagens aéreas

Visão computacional para imagens aéreas

Transforma imagens de drones e aéreas em informações em tempo real para a agricultura, a aquacultura, a conservação e a análise geoespacial com Ultralytics YOLO.
Saiba mais
Visão computacional no setor aeroespacial

Visão computacional no setor aeroespacial

Aplica visão computacional na indústria aeroespacial com Ultralytics YOLO para inspecionar aeronaves, detetar objetos estranhos na pista (FOD), apoiar operações aeroportuárias em terra e detetar defeitos em materiais compósitos.
Saiba mais
Visão computacional na segurança

Visão computacional na segurança

Protege todas as instalações com os modelos Ultralytics YOLO. A IA visual permite monitorizar perímetros, detetar ameaças, reconhecer matrículas e melhorar a segurança no local de trabalho.
Saiba mais
Visão computacional na robótica

Visão computacional na robótica

Potencia máquinas mais inteligentes com os modelos Ultralytics YOLO. A IA visual na robótica permite navegação autónoma, perceção, rastreamento de objetos e controlo em tempo real.
Saiba mais
Visão computacional na logística

Visão computacional na logística

Otimize a logística com os modelos Ultralytics YOLO. A IA de visão permite inspecionar pacotes, fazer triagem, rastrear veículos e monitorar a segurança em tempo real nos armazéns.
Saiba mais
Visão computacional no varejo

Visão computacional no varejo

Reinvente o varejo com os modelos Ultralytics YOLO. A IA de visão permite rastrear o estoque, monitorar prateleiras, gerenciar filas e obter insights mais inteligentes sobre clientes.
Saiba mais
Visão computacional na área da saúde

Visão computacional na área da saúde

Desenvolva soluções de saúde com os modelos Ultralytics YOLO. A IA de visão na área da saúde permite obter imagens médicas mais rapidamente, diagnósticos mais inteligentes e monitoramento de pacientes.
Saiba mais
Visão computacional na manufatura

Visão computacional na manufatura

Otimize a manufatura com modelos Ultralytics YOLO. A IA visual impulsiona o controle de qualidade, a detecção de defeitos, a conformidade com o uso de EPI e a automação da linha de montagem.
Saiba mais
Visão computacional no setor automotivo

Visão computacional no setor automotivo

Aplique visão computacional no setor automotivo com modelos Ultralytics YOLO. A IA visual aumenta a segurança viária, aprimora a assistência ao condutor e viabiliza a automação de veículos para estradas mais inteligentes.
Saiba mais
Visão computacional na agricultura

Visão computacional na agricultura

Leve a IA de visão à agricultura inteligente com os modelos Ultralytics YOLO. Aprimore o monitoramento de plantações, o rastreamento de animais e a agricultura de precisão para obter safras maiores e mais inteligentes.
Saiba mais

Vamos construir juntos o futuro da IA!

Comece sua jornada rumo ao futuro do aprendizado de máquina