Quando fazemos a validação cruzada k-fold, devemos apenas usar o classificador que tem a maior precisão de teste? Qual é geralmente a melhor abordagem para obter um classificador da validação cruzada?
Quando fazemos a validação cruzada k-fold, devemos apenas usar o classificador que tem a maior precisão de teste? Qual é geralmente a melhor abordagem para obter um classificador da validação cruzada?
Respostas:
Você faz a validação cruzada quando deseja fazer uma destas duas coisas:
A seleção do modelo pode ocorrer em diferentes cenários:
(observe que, se você está selecionando um algoritmo - melhor para chamá-lo de modelo - e também fazendo pesquisa de hiperparâmetros, é necessário fazer a validação cruzada aninhada. O Nested-CV é realmente necessário? )
A validação cruzada garante até certo ponto que a estimativa de erro seja a mais próxima possível como erro de generalização para esse modelo (embora isso seja muito difícil de aproximar). Ao observar o erro médio entre dobras, é possível ter uma boa projeção do erro esperado para um modelo construído no conjunto de dados completo. Também é importante observar a variação da previsão, ou seja, quanto o erro varia de dobra para dobra. Se a variação for muito alta (valores consideravelmente diferentes), o modelo tenderá a ser instável. O bootstrapping é o outro método que fornece uma boa aproximação nesse sentido. Sugiro que leia com atenção a seção 7 do livro "Elementos de aprendizagem estatística", disponível gratuitamente em: ELS-Standford
Como foi mencionado anteriormente, você não deve levar o modelo construído em nenhuma das dobras. Em vez disso, você deve recriar o modelo com o conjunto de dados completo (aquele que foi dividido em dobras). Se você tiver um conjunto de testes separado, poderá usá-lo para experimentar este modelo final, obtendo um erro semelhante (e certamente deve ser maior) do que o obtido pelo CV. Você deve, no entanto, confiar no erro estimado fornecido pelo procedimento CV.
Após realizar o CV com diferentes modelos (combinação de algoritmos, etc), escolheu o que apresentou melhor desempenho em relação ao erro e sua variação entre as dobras. Você precisará reconstruir o modelo com todo o conjunto de dados. Aí vem uma confusão comum em termos: nos referimos à seleção de modelos, pensando que o modelo é o modelo pronto para prever construído em dados, mas, neste caso, refere-se à combinação de algoritmo + procedimentos de pré-processamento que você aplica. Portanto, para obter o modelo real necessário para fazer previsões / classificação, é necessário construí-lo usando a combinação vencedora em todo o conjunto de dados.
A última coisa a observar é que, se você estiver aplicando algum tipo de pré-processamento, usa as informações da classe (seleção de recurso, redução de dimensionalidade do LDA etc.), isso deve ser executado em todas as dobras e não nos dados anteriormente. Este é um aspecto crítico. Faça o mesmo se você estiver aplicando métodos de pré-processamento que envolvam informações diretas de dados (PCA, normalização, padronização etc.). No entanto, você pode aplicar um pré-processamento que não depende dos dados (excluir uma variável após a opinião de um especialista, mas isso é meio óbvio). Este vídeo pode ajudá-lo nessa direção: CV da maneira certa e errada
Aqui, uma boa explicação final sobre o assunto: seleção de CV e modelo
Não. Você não seleciona nenhum dos k classificadores criados durante a validação cruzada com dobras k. Primeiro, o objetivo da validação cruzada não é apresentar um modelo preditivo, mas avaliar a precisão com que um modelo preditivo será executado na prática. Segundo, por uma questão de argumento, digamos que você usaria a validação cruzada com dobra k com k = 10 para descobrir qual dos três algoritmos de classificação diferentes seria o mais adequado para solucionar um determinado problema de classificação. Nesse caso, os dados são divididos aleatoriamente em k partes de tamanho igual. Uma das peças é reservada para teste e as demais peças k-1 serão usadas para treinamento. O processo de validação cruzada é repetido k (vezes) vezes para que em cada iteração uma parte diferente seja usada para teste. Depois de executar a validação cruzada, você olha para os resultados de cada dobra e se pergunta qual algoritmo de classificação (nenhum dos modelos treinados!) É o mais adequado. Você não deseja escolher o algoritmo que tem a maior precisão de teste em uma das 10 iterações, porque talvez tenha acontecido aleatoriamente que os dados de teste nessa iteração específica contivessem exemplos muito fáceis, o que resultaria em alta precisão de teste. O que você quer fazer é escolher o algoritmo que produziu a melhor precisão o que leva a alta precisão do teste. O que você quer fazer é escolher o algoritmo que produziu a melhor precisão o que leva a alta precisão do teste. O que você quer fazer é escolher o algoritmo que produziu a melhor precisãomédia de todas as k dobras . Agora que você escolheu o algoritmo, pode treiná-lo usando todos os seus dados de treinamento e começar a fazer previsões de maneira natural.
Isso está além do escopo desta pergunta, mas você também deve otimizar os hiperparâmetros do modelo (se houver) para tirar o máximo proveito do algoritmo selecionado. As pessoas geralmente realizam otimização de hiperparâmetros usando validação cruzada.
Então, vamos supor que você tenha um treinamento do qual você está usando 80% como treinamento e 20% como dados de validação. Podemos treinar nos 80% e testar nos 20% restantes, mas é possível que os 20% que tomamos não sejam semelhantes aos dados reais dos testes e possam ter um desempenho ruim depois. Portanto, para evitar isso, podemos usar a validação cruzada k-fold.
Então, digamos que você tenha modelos diferentes e queira saber qual é o melhor desempenho com seu conjunto de dados, a validação cruzada k-fold funciona muito bem. Você pode conhecer os erros de validação nos desempenhos da validação k e escolher o melhor modelo com base nisso. Geralmente, esse é o objetivo da validação cruzada k-fold.
Chegando a apenas um modelo e se você estiver verificando com a validação cruzada k-fold, poderá obter uma estimativa aproximada dos erros dos dados de teste, mas when you are actually training it finally, you can use the complete training data
(porque é assumido aqui que todos os dados terão um desempenho melhor do que uma parte dele) Às vezes, pode não ser o caso, mas essa é a suposição geral.)