Como escolher um classificador após a validação cruzada?


12

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?


Eu acho que essa pergunta depende muito da métrica usada para determinar a "melhor abordagem". Quantificadamente, muitas pessoas usam a precisão, mas, dependendo do conjunto de dados, outras métricas podem ser usadas, como uma média harmônica como o F1-Score. Portanto, a escolha da métrica pode ser igualmente importante.
Nathan McCoy

@NathanMcCoy bem, supondo que escolhemos precisão, escolheríamos o classificador com a maior precisão de teste?
Armon Safai

Certo! Apenas tentando mencionar algo mais para pensar :)
Nathan McCoy

Respostas:


15

Você faz a validação cruzada quando deseja fazer uma destas duas coisas:

  • Seleção de modelo
  • Estimativa de erro de um modelo

A seleção do modelo pode ocorrer em diferentes cenários:

  • Selecionando um algoritmo versus outros para um problema / conjunto de dados específico
  • Selecionando hiperparâmetros de um algoritmo específico para um problema / conjunto de dados específico

(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


Entendo, você realmente precisa ter dados de teste separados ou pode treinar seu classificador em 100% de todos os dados que você possui, pois já fizemos a validação cruzada e obtivemos o erro de teste aproximado para o modelo?
Armon Safai

+1 em "escolheu o que apresentou melhor desempenho em relação ao erro e sua variação entre dobras ". Todo mundo parece ignorar a variação entre dobras ao selecionar modelos.
stmax

Por que devo me importar com o erro de teste se apenas o erro CV é o que me interessa? Perguntei porque você escreveu "realmente sobre o erro estimado dado pelo procedimento CV".
HelloWorld

Outra pergunta. E se o melhor modelo do CV não for o melhor quando criado para todo o conjunto de dados?
HelloWorld

1
Você constrói o modelo com 100% dos dados, ou seja, com 100% dos dados usados ​​para validação cruzada. Se você dividiu anteriormente os dados originais em 80% a 20% para treinamento e teste adicional, você faz CV em 80%, selecione o modelo e treine novamente os 80%. Ter um conjunto de testes neste caso (20%) apenas permite ver como está se comportando com novos dados invisíveis (você pode pensar que são dados que ficaram disponíveis no futuro), mas a estimativa de erro usada é a do CV . Esperamos que ele produza um erro semelhante com novos dados se for um bom modelo (que 20%, ou realmente novos dados). @ArmonSafai
Javierfdr 15/09/16

8

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.


Eu pensei que a validação cruzada k-fold cria k modelos diferentes, pois existem 10 conjuntos diferentes de dados de treinamento.
Armon Safai

Confira minha resposta atualizada. Refinei-o para abordar a questão mais diretamente e explicar melhor com um exemplo.
tuomastik

Entendo, então quando você finalmente treinar seu classificador, você usa todos os seus dados para treinar o classificador depois de ter escolhido o seu algoritmo de validação cruzada
Armon Safai

Sim, se você não deseja realizar nenhuma análise adicional, como otimização do hiperparâmetro, que requer uma validação cruzada aninhada em que o loop interno do CV cuida do ajuste do hiperparâmetro e o loop externo do CV avalia o desempenho do modelo em um conjunto de dados independente com otimização ideal. hiperparâmetros.
tuomastik

1

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.)


Então, quando fazemos a validação cruzada, escolhemos apenas o modelo que tem a maior precisão de teste?
Armon Safai

quando você diz teste, você quer dizer o teste do conjunto de dados de validação, certo?
Hima Varsha

sim isso é o que quero dizer
Armon Safai

depois que usamos a validação cruzada para selecionar o modelo com melhor desempenho (por exemplo, você tem 2 modelos de regressão linear ou rede neural), treinamos esse modelo (seja a regressão linear ou a rede neural) em todos os dados
Hima Varsha

1
@HimaVarsha, então, se decidirmos fazer a média, como escolheríamos o "classificador médio"?
Armon Safai
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.