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,
- divida o conjunto de trens em 5 conjuntos.
- ajuste iterativamente um modelo em 4 conjuntos e teste o desempenho no restante.
- 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"?