Modelo final da validação cruzada de séries temporais

10

Tenho experiência anterior com validação cruzada 'normal' dobra K para ajuste de modelo e estou um pouco confuso com o aplicativo em modelos de séries temporais.

Entendo que, para modelos de séries temporais, o corolário da validação cruzada é o procedimento de 'origem progressiva' descrito por Hyndman . Isso faz bastante sentido para mim e o código abaixo demonstra o uso da tsCVfunção no R, no blog de Hydman , para mostrar como os erros diferem do CV versus o conjunto de dados inteiro de uma só vez.

library(fpp)
e <- tsCV(dj, rwf, drift=TRUE, h=1)
sqrt(mean(e^2, na.rm=TRUE))
## [1] 22.68249
sqrt(mean(residuals(rwf(dj, drift=TRUE))^2, na.rm=TRUE))
## [1] 22.49681

Agora, nesse link acima, ele menciona que o parâmetro deriva é re-estimado em cada nova origem de previsão. No CV 'normal', eu teria uma grade de parâmetros que avaliaria em cada dobra, para obter uma média para determinar os melhores parâmetros a serem usados. Eu usaria esses 'melhores' parâmetros para ajustar-se ao conjunto completo de treinamento e o usaria como meu modelo final para avaliar meu conjunto de testes realizado anteriormente. Observe que isso é validação cruzada aninhada, portanto não estou treinando no meu conjunto de testes em nenhum momento.

Isto claramente não é o caso com o procedimento de 'origem rolar para a frente', onde os parâmetros são optimizados para cada dobra (pelo menos para os métodos como R bats, tbats, auto.arima, etc.). Estou enganado ao pensar sobre esse método em termos de ajuste de parâmetros do modelo ou como escolheria os parâmetros do modelo de série temporal para definir o modelo final que seria usado? Ou o ajuste de parâmetros não considera um problema nos modelos de séries temporais em que a otimização parece fazer parte do ajuste do modelo e o resultado do CV é apenas dizer o desempenho geral de cada modelo? E que o modelo final construído com a maioria dos dados no final é o modelo que eu usaria?

Sei que isso pode ser reformulado em uma pergunta ainda mais simples. Após a validação cruzada ('rolling forward origin'), apenas uso o último modelo construído (com o maior superconjunto como o modelo final ajustado? Ou o que é sugerido?

cdeterman
fonte
Antes da função tsCV, criei uma função semelhante que não treinou ou reestimou nada durante a validação cruzada. Curioso para saber se o que eu fiz foi errado ou não.
datajack

Respostas:

1

Você pode combinar a origem progressiva progressiva com a validação cruzada com dobras k (também conhecida como backtesting com validação cruzada). Determine as dobras na frente uma vez e, a cada momento do rolamento, percorra as dobras k, treine em k-1 e teste em k. A união de todas as dobras de teste realizadas oferece uma cobertura completa de todo o conjunto de dados naquele momento, e as dobras de trem cobrem o conjunto de dados k-1 vezes naquele momento, que você pode agregar da maneira que for mais apropriada (por exemplo, média ) Em seguida, marque o trem e faça o teste separadamente, como faria normalmente para obter os resultados separados do trem / teste naquele momento.

Ao otimizar parâmetros, crie primeiro um conjunto separado de holdouts e, em seguida, faça a validação cruzada descrita apenas nos dados restantes. Para que cada parâmetro seja otimizado, é necessário decidir se esse parâmetro é independente do tempo (para que você possa executar a otimização em todos os tempos de rolagem) ou depende do tempo (para que o parâmetro seja otimizado separadamente a cada momento). Nesse último caso, você pode representar o parâmetro como uma função do tempo (possivelmente linear) e, em seguida, otimizar os coeficientes independentes do tempo dessa função o tempo todo.

Michael Brundage
fonte
0

Se você otimizasse os parâmetros para os dados de teste, ajustaria parcialmente seus dados para testar dados em vez de dados de treinamento. Você deseja saber qual método é melhor para reter dados, não como, por exemplo, o que uma gama deve ser configurada em um modelo de Holt Winters.

AnscombesGimlet
fonte
Você está correto, mas o seu comentário me faz perceber que falhei em dizer que essa situação seria validação cruzada aninhada para que os modelos não sejam treinados no conjunto de testes de espera. Eu estou falando sobre o ajuste de parâmetros em si (por exemplo, um único método) e na seleção de ajuste / modelo aninhado.
cdeterman
Digamos que eu complete a validação cruzada e Holt Winters venceu, eu recolojo o conjunto de dados completo para obter a gama para o modelo final?
cdeterman