Como funciona a validação cruzada no trem (circunflexo)?

8

Eu li várias postagens sobre o pacote de sinal de intercalação e estou especificamente interessado na função de trem . No entanto, não tenho certeza se entendi corretamente como a função do trem funciona.

Para ilustrar meus pensamentos atuais, compus um exemplo rápido.

  • Primeiro, um especifica uma grade de parâmetros. Digamos que eu use o método gbm ; portanto, a grade de parâmetros para o meu modelo pode parecer:

    grid <- expand.grid( .n.trees=seq(10,50,10), .interaction.depth=seq(1,4,1), .shrinkage=c(0.01,0.001), .n.minobsinnode=seq(5,20,5))
  • Posteriormente, os parâmetros de controle para train (trainControl) são definidos. Gostaria de saber se meus pensamentos sobre validação cruzada usando train estão corretos e, portanto, neste exemplo, uso o seguinte:

    train_control <- trainControl('cv',10)
  • Por fim, a função de trem é executada. Por exemplo:

    fit <- train(x,y,method="gbm",metric="Kappa",trControl=train_control,tuneGrid=grid)

Agora, a maneira como presumo que o trem funciona é a seguinte:

  1. No exemplo acima, existem 160 (5 * 4 * 2 * 4) combinações possíveis de parâmetros
  2. Para cada combinação de parâmetros, o trem executa uma validação cruzada de 10 vezes
  3. Para cada combinação de parâmetros e para cada dobra (das 10 dobras), a métrica de desempenho (Kappa no meu exemplo) é calculada (no meu exemplo, isso implica que 1600 Kappa's são computados)
  4. Para cada combinação de parâmetros, a média da métrica de desempenho é calculada nas 10 dobras
  5. A combinação de parâmetros que possui a melhor métrica de desempenho médio é considerada os melhores parâmetros para o modelo

Minha pergunta é simples, meus pensamentos atuais estão corretos ?

Tomas
fonte

Respostas:

8

Sim você está correto. Se você quiser ver os detalhes:

  • Para observar os resultados da parametrização e o modelo final escolhido, é possível comparar fit$resultscom fit$bestTunee fit$finalModel(com o mesmo desempenho, o modelo menos complexo é escolhido).
  • Para observar o desempenho da parametrização do modelo final por partição e nova amostra, veja fit$resample. Observe que, com a alteração do valor para returnResampin, ?trainControlvocê pode configurar quais resultados você vê aqui (por exemplo, se você deseja vê-los também para outros que não o conjunto de parâmetros finalmente selecionado) - mas geralmente o padrão deve ser bom.
  • Para observar as previsões individuais feitas durante CV você pode habilitar savePredictions = Tem ?trainControl, em seguida olhar para fit$pred, por exemplo, como table(fit$pred$Resample).
geekoverdose
fonte