Por que os ajustes da validação cruzada k (fold) (k)? Ou por que ocorre discrepância entre CV e conjunto de testes?

7

Recentemente, eu estava trabalhando em um projeto e achei minha taxa de erro de validação cruzada muito baixa, mas o teste definiu uma taxa de erro muito alta. Isso pode indicar que meu modelo está se ajustando demais. Por que minha validação cruzada não se superajustou enquanto meu conjunto de testes se superajustou?

Mais especificamente, tenho cerca de 2 milhões de observações com 100 variáveis ​​(n >> p). Dividi aleatoriamente o conjunto de dados em 80/20 para treinar e testar. Então, eu ajustei um modelo (ou seja, XGboost) usando uma validação cruzada de 5 vezes no conjunto de treinamento e a taxa de erro estimada é bastante baixa. Então, usei o mesmo parâmetro e usei todo o conjunto de treinamento para ajustar-se ao modelo. Surpreendentemente, quando usei o conjunto de testes para avaliar o desempenho do modelo, a taxa de erro é significativamente maior que a taxa de erro CV. Por quê?

Editar:

(Sobre a taxa de erro)

A taxa de erro é na verdade logloss multinomial. Atingi uma taxa de erro de CV de 1.320044 (+/- 0.002126) e uma taxa de erro de teste de 1.437881. Eles podem parecer próximos olhando para esses dois números, mas na verdade não são. Não sei como justificar isso, mas tenho certeza de que eles são diferentes na escala de desempenho deste projeto, que é de ~ 1,55 a ~ 1,30.

O caminho da validação cruzada de 5 vezes é como a seguir,

  1. divida o conjunto de trens em 5 conjuntos.
  2. ajuste iterativamente um modelo em 4 conjuntos e teste o desempenho no restante.
  3. calcule a média do desempenho de todas as cinco iterações.

Quero dizer, se minhas configurações de parâmetro tornarem o modelo superajustado, eu devo vê-lo neste procedimento de validação cruzada, certo? Mas não o vejo até usar o conjunto de testes. Sob que circunstâncias na terra isso poderia acontecer?

Obrigado!

Adicionado:

A única razão pela qual pude pensar por que a taxa de erro CV difere da taxa de erro do conjunto de testes é

A validação cruzada não terá bom desempenho com dados externos se os dados que você possui não forem representativos dos dados que você estará tentando prever! - aqui

Mas dividi aleatoriamente 8/2 o conjunto de dados de 2 milhões de amostras e acredito que o conjunto de trens e o conjunto de testes devem ter a mesma distribuição de variáveis.

(Perdoe-me por postar a mesma pergunta aqui também.)

Editar:

(Sobre o vazamento de dados)

Recebi uma recomendação interessante do @darXider na validação cruzada . Ele diz,

Às vezes, na engenharia de recursos, você deve ter cuidado para evitar vazamentos de dados entre os conjuntos de treinamento e teste. Por exemplo, se você faz um PCA em seus dados originais e intocados, usa PC1 e PC2 como recursos "novos" e, em seguida, divide seu conjunto de dados em treinamento e teste, você está vazando informações do conjunto de treinamento para o conjunto de teste. Isso aumentará sua pontuação. Você mencionou que, após alguma engenharia de recursos, sua pontuação no CV e no teste começaram a discordar. Isso pode sugerir algum tipo de vazamento de informações entre o conjunto de treinamento e o conjunto de testes.

Gostaria de saber o que é exatamente o "vazamento de dados" e por que a engenharia de recursos antes da divisão ainda pode causar "vazamento de dados"?

user7117436
fonte
O DP de +/- 0,002 parece muito bom para o CV de 5 vezes, considerando sua média de 1,32 - você poderia dar as pontuações de dobras individuais?
Neil Slater #

Respostas:

3

Concordo com o comentário que você recebeu da Cross Validated - o vazamento de dados é algo que se encaixa nessa configuração de problema, pois é conhecido por causar uma pontuação CV muito otimista quando comparada à pontuação do teste. Poderíamos confirmar que, na verdade, é um problema de vazamento de dados, se você forneceu informações sobre as etapas de pré-processamento de dados realizadas.

Vazamento de dados significa que as informações estão vazando dos dados de teste para os dados de treinamento, fazendo com que o modelo treinado superestime o desempenho esperado e generalize mal os dados não vistos, porque as informações vazadas permitem que o modelo aprenda algo que de outra forma não seria aprender.

Como exemplo, digamos que você teve apenas uma pequena quantidade de exemplos de treinamento e acaba sintetizando mais exemplos de treinamento que são de alguma forma semelhantes aos outros exemplos de treinamento. Se você implementar a síntese antes do loop CV e não dentro dela (dentro de cada dobra), sua precisão CV disparará, mas a precisão do teste será baixa. Além da síntese de dados, o vazamento de dados também pode ocorrer com outras etapas de pré-processamento, como dimensionar os dados, inserir valores ausentes ou executar a seleção de recursos.

tuomastik
fonte