Na validação cruzada k-fold, a subamostra de treinamento inclui um conjunto de testes?

8

Nesta página da Wikipedia , na subseção para validação cruzada com dobras K, diz "Na validação cruzada com dobras k, a amostra original é dividida aleatoriamente em k subamostras de tamanho igual. Das k subamostras, uma única subamostra é retida como dados de validação para testando o modelo, e as subamostras k - 1 restantes são usadas como dados de treinamento ". Os dados de teste não estão na imagem.

Enquanto em um livro eu li o autor indica claramente

  1. Os dados completos são divididos em três conjuntos: conjunto de treinamento, conjunto de teste e conjunto de validação (ou subamostras no idioma da Wikipédia).
  2. Das subamostras k, uma subamostra é retida como dados de validação, uma outra subamostra é retida como dados de teste e as subamostras k-2 são usadas como dados de treinamento.

Que é verdade?

ozi
fonte
Nota lateral: "validação" tem significados diferentes em campos diferentes. Alguns autores o utilizam para indicar um tipo de teste usado para selecionar modelos (eu sugeriria que o conjunto de testes de otimização seria mais intuitivo), enquanto em outros campos validação significa demonstrar que o modelo final é adequado para sua finalidade.
cbeleites descontente com SX 17/03/14

Respostas:

10

Ambos estão corretos em seu próprio contexto. Eles estão descrevendo duas maneiras diferentes de seleção de modelos em diferentes situações.

Em geral, quando você está selecionando e testando modelos, seus dados são divididos em três partes: conjunto de treinamento, conjunto de validação e conjunto de testes. Você usa seu conjunto de treinamento para treinar modelos diferentes, estimar o desempenho em seu conjunto de validação, depois selecionar o modelo com desempenho ideal e testá-lo em seu conjunto de testes.

Por outro lado, se você estiver usando a validação cruzada de dobra K para estimar o desempenho de um modelo, seus dados serão divididos em dobras K, você percorrerá as dobras K e cada vez que usar uma dobra como teste (ou validação) ajuste e use as dobras restantes (K-1) como conjunto de treinamento. Em seguida, você calcula a média de todas as dobras para obter o desempenho estimado do teste do seu modelo. É a isso que a página da Wikipedia está se referindo.

Mas lembre-se de que isso é para testar um modelo específico. Se você possui vários modelos candidatos e deseja fazer a seleção de modelos também, é necessário selecionar um modelo apenas com seu conjunto de treinamento para evitar essa sutil falácia da lógica circular.. Assim, você divide ainda mais os 'dados de treinamento' das dobras (K-1) em duas partes, uma para treinamento e outra para validação. Isso significa que você faz uma 'validação cruzada' primeiro para selecionar o modelo ideal dentro das dobras (K-1) e depois testa esse modelo ideal na sua dobra de teste. Em outras palavras, você está realizando uma validação cruzada de dois níveis, uma é a validação cruzada K-fold em geral e, em cada loop de validação cruzada, há uma validação cruzada extra (K-1) para seleção de modelo. Em seguida, você tem o que declarou em sua pergunta: 'Das k subamostras, uma subamostra é retida como dados de validação, outra subamostra é retida como dados de teste e k-2 subamostras são usadas como dados de treinamento'.

Yuanning
fonte
1
A validação cruzada de dois níveis também é conhecida como validação cruzada dupla ou aninhada. Embora o CV aninhado e as estratégias de divisão em três conjuntos sejam semelhantes, pois ambos usam um conjunto de testes para seleção / otimização e outro para avaliar o desempenho do modelo otimizado, eles não são os mesmos: a validação cruzada de dobras k aninhadas cria k * k '(geralmente = k - 1) * não. dos modelos substitutos combinados de hiperparâmetros testados, a estratégia direta de 3 conjuntos apenas um para cada combinação de hiperparâmetros.
cbeleites descontente com SX 17/03/14
(A citação Wiki não fala sobre o propósito da validação em tudo que pode ser diferente da seleção.)
cbeleites infeliz com SX
você pode confirmar meus pseudocódigos?
ozi
1

Aqui, estou re-declarando o que obtive da resposta de @Yuanning e dos comentários de @cbeleites na forma de pseudocódigo. Isso pode ser útil para pessoas como eu.

Para medir o desempenho de um modelo determinado, precisamos apenas de conjuntos de treinamento e teste:

function measure_performance(model, full_test_set, k_performance):
    subset_list <- divide full_test_set into k_performance subsets
    performances <- empty array
    for each sub_set in subset_list:
        test_set <- sub_set
        training_set <- the rest of the full_test_set
        model <- train model with training_set
        performance <- test model with test_set
        append performance to performances
    end for each
    return mean of the values in peformances
end function

Mas se precisarmos fazer a seleção do modelo, devemos fazer o seguinte:

function select_model(data, k_select, k_performance):
    subset_list <- divide data into k_select subsets
    performances <- empty array
    for each sub_set in subset_list:
        validation_set <- assume that this sub_set is validation set
        test_set <- one other random sub_set (Question: How to select test_set)
        training_set <- assume remaining as training set
        model <- get a model with the help of training_set and validation_set
        performance <- measure_performance(model,test_set, k_performance)
    end for each
    return model with the best performance (for this, performances will be scanned)
end function
ozi
fonte
Está k_performancedestinado a ser o rótulo para uma específica dobra entre o total de número de k_selectdobras de desempenho? Suponho que isso vá para sua pergunta sobre "Como selecionar test_set". Eu também gostaria de receber feedback específico sobre isso. Eu já vi essa validação cruzada 'aninhada' para a seleção de modelos, mas nunca descrita em detalhes.
clarpaul
No contexto da validação cruzada, o problema da seleção de modelos com base apenas nos dados de treinamento (mesmo se validados cruzadamente nesses dados) é especificamente articulado aqui: en.wikipedia.org/wiki/… . A afirmação (baseada em várias referências) é que as estimativas de desempenho validadas cruzadas, baseadas inteiramente nos dados de treinamento, estão sujeitas a alta variação (isto é, com relação à escolha dos dados de treinamento), apesar do procedimento de validação cruzada.
Clarpaul 21/03