Pesquisa em grade na validação cruzada k-fold

16

Eu tenho um conjunto de dados de 120 amostras em uma configuração de validação cruzada de 10 vezes. Atualmente, eu escolho os dados de treinamento do primeiro holdout e faço uma validação cruzada 5 vezes para escolher os valores de gama e C pela pesquisa em grade. Estou usando o SVM com o kernel RBF. Como estou fazendo uma validação cruzada de dez 10 para relatar a precisão, lembre-se, realizo essa pesquisa de grade nos dados de treinamento de cada exercício (existem 10 exercícios, cada um com 10% de teste e 90% de dados de treinamento)? Isso não consumiria muito tempo?

Se eu usar a gama e C do primeiro holdout e usá-lo para o restante dos 9 holdouts da validação cruzada k-fold, isso é uma violação, porque eu teria usado os dados do trem para obter gama e C e novamente usar o parte dos dados do trem como teste no segundo suporte?

user13420
fonte
Esta pergunta precisa de mais informações. Qual modelo você está usando? O que são gama e C neste modelo? Além disso, você poderia fornecer essas informações editando a pergunta e não com comentários.
probabilityislogic

Respostas:

14

Sim, isso seria uma violação, pois os dados de teste para as dobras 2-10 da validação cruzada externa teriam sido parte dos dados de treinamento da dobra 1, que foram usados ​​para determinar os valores do kernel e dos parâmetros de regularização. Isso significa que algumas informações sobre os dados de teste vazaram potencialmente para o design do modelo, o que potencialmente fornece um viés otimista para a avaliação de desempenho, o que é mais otimista para modelos que são muito sensíveis à configuração dos hiperparâmetros (ou seja, favorece firmemente os modelos com um recurso indesejável).

É provável que esse viés seja mais forte para conjuntos de dados pequenos, como este, pois a variação do critério de seleção de modelo é maior para conjuntos de dados pequenos, o que incentiva a super adaptação do critério de seleção de modelo, o que significa que mais informações sobre os dados de teste podem vazar através.

Eu escrevi um artigo sobre isso há um ou dois anos, pois fiquei bastante surpreso com a magnitude dos desvios que a validação cruzada aninhada completa pode introduzir, o que pode facilmente reduzir a diferença de desempenho entre os sistemas classificadores. O artigo é "Sobre adaptação excessiva na seleção de modelos e viés de seleção subsequente na avaliação de desempenho" Gavin C. Cawley, Nicola LC Talbot; JMLR 11 (Jul): 2079-2107, 2010.

O ajuste essencial dos hiperparâmetros deve ser considerado parte integrante da adaptação do modelo, portanto, toda vez que você treinar o SVM em uma nova amostra de dados, reajuste independentemente os hiperparâmetros para essa amostra. Se você seguir essa regra, provavelmente não poderá dar muito errado. Vale a pena a despesa computacional para obter uma estimativa de desempenho imparcial, caso contrário, você corre o risco de tirar conclusões erradas de seu experimento.

Dikran Marsupial
fonte
1
Minha experiência pessoal também me tornou muito cauteloso em relação a essas fontes de sobreajuste.
Cbeleites suporta Monica
6

Depois de fazer a pesquisa em grade para cada modelo substituto, você pode e deve verificar algumas coisas:

  • variação dos parâmetros otimizados (aqui e C ). Os parâmetros ótimos são estáveis? Caso contrário, você provavelmente está com problemas.γC
  • Compare o desempenho relatado da validação cruzada interna e externa.
    Se a validação cruzada interna (ou seja, ajuste) parecer muito melhor do que a validação externa (validação do modelo final), também estará com problemas: você está se adaptando demais. Existe um risco substancial de que os parâmetros ajustados não sejam ótimos. No entanto, se a validação cruzada externa for feita corretamente (todos os conjuntos de testes são realmente independentes dos respectivos modelos substitutos), pelo menos você ainda terá uma estimativa imparcial (!) Do desempenho do modelo. Mas você não pode ter certeza de que é o ideal.
  • Quão pronunciado é o ideal? O desempenho diminui rapidamente para parâmetros abaixo do ideal? Quão bom é o desempenho ideal?

Há muito a dizer sobre o ajuste excessivo pela seleção de modelos. No entanto, é bom ter em mente que tanto a variação quanto o viés otimista podem realmente prejudicar

  • variação significa que você pode acabar acidentalmente muito longe dos hiperparâmetros realmente ótimos.
  • mas também o viés pode prejudicar: se você estiver se ajustando demais, poderá enfrentar situações em que muitos modelos parecem perfeitos para a validação cruzada interna (mas na verdade não são). Nesse caso, o ajuste pode se perder, porque não reconhece as diferenças entre os modelos.
  • Se o viés depende dos hiperparâmetros, você está com um grande problema.

Se você está interessado em um exemplo e pode ler alemão, eu poderia colocar minha tese do Diplom online.

Na minha experiência, o ajuste de hiperparâmetros é uma idéia extremamente eficaz para o ajuste excessivo ...

Agora, se você perceber que está se adaptando demais, terá basicamente duas opções:

  • relate que a otimização teve um problema de sobreajuste, mas que você fez uma validação externa adequada que resultou em ... (resultados da validação cruzada externa).
  • restringir a complexidade do modelo. Uma maneira de fazer isso é corrigir hiperparâmetros:

Como alternativa ao ajuste dos hiperparâmetros para cada conjunto de treinamento, você pode pré-especificar (hiper) parâmetros (ou seja, corrigi-los com antecedência). Faço isso o máximo possível para meus modelos, pois geralmente tenho menos casos do que você, veja abaixo.
No entanto, essa correção deve ser feita de maneira honesta e honesta: por exemplo, solicitei a um colega seus parâmetros otimizados em um conjunto de dados semelhante (experimento independente) ou fiz um pré-experimento, incluindo a pesquisa em grade nos parâmetros. Esse primeiro experimento é usado para fixar alguns parâmetros experimentais, bem como modelar parâmetros para o experimento real e a análise de dados. Veja abaixo mais explicações.

Obviamente, é possível fazer testes adequados em modelos otimizados automaticamente (validação dupla ou aninhada), mas o tamanho da amostra pode não permitir a divisão dos dados duas vezes .
Nessa situação, é muito melhor IMHO relatar uma estimativa honesta para um modelo que foi construído usando experiência profissional em como escolher parâmetros de modelagem do que relatar uma estimativa super-otimista em algum tipo de modelo otimizado automaticamente.
Outro ponto de vista sobre a situação é que você precisa trocar

  • pior desempenho devido à retirada de mais um monte de casos para otimização de parâmetros (tamanho menor da amostra de treinamento => modelo pior, mas parâmetros "ideais")
  • pior desempenho devido à fixação de parâmetros abaixo do ideal pelo especialista (mas com dados de treinamento maiores).

Alguns pensamentos semelhantes sobre uma pergunta semelhante: /stats//a/27761/4598


Sobre a fixação de parâmetros e os comentários de Dikran Marsupial

Estou usando o termo hiperparâmetros como Dikran Marsupial o usa em seu artigo (link em sua resposta)

Eu trabalho com dados espectroscópicos. Esse é um tipo de medida em que a análise e modelagem de dados geralmente inclui bastante pré-processamento. Isso pode ser visto como hiper-parâmetros (por exemplo, que ordem do polinômio deve ser usada para a linha de base? Quais canais de medição devem ser incluídos?). Existem outras decisões mais próximas dos seus parâmetros svm, por exemplo, quantos componentes principais usar se um PCA for feito para redução da dimensionalidade antes que o modelo "real" seja treinado? E às vezes eu também uso a classificação SVM, então tenho que decidir sobre os parâmetros SVM.

Agora, o IMHO, a melhor maneira de corrigir hiperparâmetros é se você tiver motivos que vêm do aplicativo. Por exemplo, eu normalmente decido sobre que tipo de linha de base usar por razões físicas / químicas / biológicas (ou seja, conhecimento sobre a amostra e o comportamento espectroscópico que se segue). No entanto, não conheço essa argumentação que ajuda com os parâmetros SVM ...

O caso dos pré-experimentos que mencionei acima é o seguinte:

  • pegamos dados de várias células (queremos distinguir diferentes linhas de células).
  • Os espectros são analisados, a SVM de validação cruzada dupla iterada é executada (passou uma ou duas noites no servidor de computação).

    • γC
    • Também observo um certo ajuste excessivo: a validação cruzada externa não é tão boa quanto os resultados do ajuste. Isso é como esperado.
    • Ainda assim, existem diferenças no desempenho ao longo da faixa de ajuste dos hiperparâmetros, e o desempenho na grade de ajuste parece razoavelmente suave. Boa.
  • Minha conclusão é: embora eu não tenha certeza de que os hiperparâmetros finais sejam ótimos, a validação cruzada externa me fornece uma estimativa adequada do desempenho dos modelos substitutos.

  • Durante a parte experimental, decidimos algumas mudanças na configuração experimental (coisas que não afetam o sinal de ruído dos dados, mas que dão um passo adiante na automatização do instrumento)

  • Melhoramos as configurações experimentais e adquirimos novos espectros. Como as células são, elas precisam ser cultivadas de fresco. Ou seja, o novo conjunto de dados são até lotes de cultura independentes.

Agora, enfrento a decisão: devo "pular" a validação cruzada interna e seguir os hiperparâmetros que determinei com os dados antigos?

  • Como mencionado acima, corro o risco de que esses hiper-parâmetros pré-determinados não sejam ideais.
  • Mas também não posso ter certeza de obter hiperparâmetros realmente ótimos fazendo a validação cruzada interna (de ajuste).
  • No entanto, o ajuste nos dados antigos era estável.
  • Fazendo a otimização, treinarei com menos amostras: como tenho, de qualquer maneira, Too Few Samples (TM), espero obter modelos piores se eu reservar mais amostras para uma segunda rodada de validação cruzada.

Portanto, nesse caso, decidi seguir parâmetros fixos (com experiência em dados semelhantes e sabendo que no futuro teremos que fazer nossa "lição de casa", incluindo, entre outras coisas, verificar novamente essas decisões com grandes dados).

Observe que o importante é pular a interna ( validação cruzada de ajuste ), não a externa. Com hiperparâmetros fixos, obtenho uma estimativa imparcial do desempenho de um modelo possivelmente subótimo. É verdade que essa estimativa está sujeita a alta variação, mas essa variação é basicamente a mesma, seja eu o ajuste interno ou não.
Ignorando a vaidação cruzada externa, eu obteria uma estimativa otimista de um modelo ajustado - que, dependendo da aplicação e dos dados, pode ser inútil (se muito otimista demais) e o viés otimista pode ser claramente inaceitável.

cbeleites suporta Monica
fonte
desculpe ter que rebaixar esta resposta, mas o uso de valores pré-especificados para os hiperparâmetros não é uma boa prática, pois a generalização ideal depende de configurações apropriadas para esses parâmetros, que variam de conjunto de dados a conjunto de dados (e, para problemas, poucos dados da amostra para provar). Uma pesquisa em grade pré-experimento é ainda pior, pois resulta exatamente na mesma forma de viés discutida em meu artigo. Para SVMs, o problema de dividir os dados duas vezes não se aplica, pois você pode usar a validação cruzada de exclusão virtual como critério de seleção de modelo no CV interno, quase de graça.
Dikran Marsupial 20/08/2012
Verificar a variação nos parâmetros otimizados, no entanto, é uma excelente sugestão. Se você tiver dados suficientes para que os parâmetros e hiperparâmetros possam ser estimados com segurança a partir dos dados, os tipos de viés mencionados no meu artigo provavelmente não serão um problema. No entanto, se houver muita variabilidade nos valores otimizados de hiperparâmetros, devido a um pequeno conjunto de dados, esse é o tipo de situação em que a validação cruzada aninhada e outras abordagens rigorosas são realmente necessárias para evitar vieses substanciais na estimativa de desempenho.
Dikran Marsupial
@DikranMarsupial: expliquei meus antecedentes um pouco mais claramente, dê uma olhada. Além disso, li seu artigo mais detalhadamente. Eu acho que nossos pontos não estão tão distantes. Se quiser, vamos nos encontrar no chat - Eu tenho um monte de perguntas sobre o seu papel ...
cbeleites suporta Monica
@DikranMarsupial: (infelizmente, para a maioria dos meus dados, não posso usar o analítico, pois tenho estruturas de dados aninhadas / hierárquicas). Além disso, eu encontrei algumas surpresas feias com o leave-one-out, então eu repeti a validação do k-fold ou out-of-bootstrap. No entanto, isso é fora de tópico para esta pergunta.
Cbeleites suporta Monica
@DikranMarsupial: Se os parâmetros otimizados não são estáveis, estou com problemas de qualquer maneira. Obviamente, não posso concluir que posso usar esses parâmetros para os novos dados. Mas também, eu não os chamaria (quais dos muitos conjuntos de parâmetros?) São ideais para o modelo final ... Vi a otimização ficando completamente louca, mas isso sempre vinha com resultados muito super-otimistas da validação interna (ajuste) . E que eu posso medir comparando a validação cruzada externa com a estimativa de validação cruzada interna do modelo ideal. Atualizou a resposta de acordo.
Cbeleites suporta Monica
5

γCkterr(γ,C)γCγ,C{2-neu,2-neu+1,...,2nvocê}γ

A chave que eu acho é procurar alguma suavidade na superfície ao redor dos mínimos locais (ou cada projeção de 1 dim) e não apenas pegar o mínimo global.

γ(pσ)-1pγCC

muratoa
fonte
Então, digamos que eu tenha um conjunto de dados com 120 amostras. Devo encontrar gama e C inicialmente usando 120 amostras. Em seguida, faça a validação cruzada 10 vezes usando a mesma gama e C para os k holdouts ao usar 90% dos dados para treinar e 10% dos dados para testar? Não significaria que eu usei o mesmo conjunto de treinamento para obter gama e C e parte das amostras também estão no conjunto de testes?
user13420
γC
(γ,C)(γ,C)(γ,C)
2
λβ
2
λβλββ(λ)