Validação cruzada aninhada contra overfitting

Dec 04 2022
Em tarefas de aprendizado de máquina, verificamos nossos modelos com um conjunto de validação para que não sejam superajustados. Na verdade, usamos a abordagem de validação cruzada para garantir que esse conjunto de validação esteja em constante mudança, a fim de não escolher o melhor modelo por superajuste indireto a um conjunto de validação fixo.

Em tarefas de aprendizado de máquina, verificamos nossos modelos com um conjunto de validação para que não sejam superajustados. Na verdade, usamos a abordagem de validação cruzada para garantir que esse conjunto de validação esteja em constante mudança, a fim de não escolher o melhor modelo por superajuste indireto a um conjunto de validação fixo. Mas mesmo se usarmos a validação cruzada, nosso modelo provavelmente nos surpreenderá com dados de teste adicionais não vistos. Na verdade, algumas das técnicas populares que usamos permitem que nosso modelo tome algumas decisões por meio do overfitting ao conjunto de validação.

Os mais populares são:

  • Otimização de hiperparâmetros
  • Seleção de recurso
  • Parada Antecipada

Quando você tenta encontrar um parâmetro ideal ou conjunto de recursos para seu modelo com os dados fornecidos usando K-Fold ou qualquer esquema de validação cruzada, você está alimentando as características do conjunto de dados para seu modelo indiretamente. Assim, seu modelo é convergido para um hiperparâmetro ou conjunto de recursos que terá um bom desempenho em todo o conjunto de dados. Provavelmente teria um desempenho ruim em um cenário de dados não visto.

Caso de Parada Antecipada

Ao treinar seu modelo com validação cruzada, você encerra o treinamento de seu modelo antecipadamente observando o conjunto de validação. Na verdade, seu modelo está superajustando indiretamente a divisão de validação. Este esquema também não permite simular o cenário de dados não vistos.

Validação cruzada aninhada

Com o Nested Cross-Validation, você poderá executar as duas aplicações que mencionei acima novamente usando um esquema de validação cruzada e também aprenderá o desempenho do seu modelo em dados não vistos.

Validação cruzada padrão

Normalmente, ao tentar treinar seu modelo usando um esquema de validação cruzada, você usaria um loop padrão como o abaixo:

Mas esse esquema tem os pontos fracos que mencionei acima.

Variante aninhada

Fonte da imagem: https://www.baeldung.com/cs/k-fold-cross-validation

Vamos à implementação:

  • Em primeiro lugar, implementamos o primeiro CV, que chamamos de CV externo. Esta é a mesma abordagem de currículo que usamos antes.
  • Em seguida, dividimos a parte do trem deste CV novamente com outro CV. Também podemos chamá-lo de currículo interno. Aqui, na verdade, isolamos a divisão de validação de nosso CV externo do diagrama CV interno.
  • A partir de agora, os dados de validação do nosso CV externo podem ser contados como dados não vistos para todas as operações que fazemos no CV interno . Porque não há possibilidade de ver esses dados em nenhuma dobra interna do CV.

É exatamente a mesma abordagem que descrevi acima. Os modelos são treinados com o CV interno. Também são coletadas suas previsões para divisões de validação do CV externo de validação. Você também pode obter uma pontuação calculando a média das pontuações dessas previsões de divisão de validação de CV externas ou pode combiná-las com a abordagem OOF para criar um vetor de previsão de todos os dados que você possui.

Conclusão

É do seu interesse usar essa abordagem de validação cruzada para qualquer problema em que você queira simular o desempenho em dados não vistos o máximo possível. Porque toda abordagem ingênua que inclui ajuste ou parada antecipada faz com que o desempenho do seu modelo seja enviesado em relação aos dados que você usa.