Tengo experiencia previa con validación cruzada K-fold 'normal' para el ajuste del modelo y estoy un poco confundido por la aplicación en modelos de series temporales.
Tengo entendido que para los modelos de series temporales, el corolario de la validación cruzada es el procedimiento de "origen progresivo" descrito por Hyndman . Esto tiene mucho sentido para mí y el siguiente código demuestra el uso de la tsCV
función en R, del blog de Hydman , para mostrar cómo los errores difieren de CV frente a todo el conjunto de datos de una sola 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
Ahora, en el enlace de arriba, menciona que el parámetro de deriva se vuelve a estimar en cada nuevo origen de pronóstico. En el CV 'normal', tendría una cuadrícula de parámetros que evaluaría en cada pliegue para poder obtener un promedio para determinar los mejores parámetros a utilizar. Luego usaría esos 'mejores' parámetros para ajustar el conjunto de entrenamiento completo y lo usaría como mi modelo final para evaluar mi conjunto de pruebas previamente presentado. Tenga en cuenta que esta es una validación cruzada anidada, por lo que no estoy entrenando en mi conjunto de pruebas en ningún momento.
Esto claramente no es el caso con el procedimiento 'rodando hacia adelante origen', donde los parámetros están optimizados para cada pliegue (al menos para los métodos R como bats
, tbats
, auto.arima
, etc.). ¿Me equivoco al pensar en este método en términos de ajuste de parámetros del modelo o cómo elegiría los parámetros del modelo de serie temporal para establecer el modelo final que se utilizaría? ¿O el ajuste de parámetros no considera un problema con los modelos de series temporales en los que la optimización parece ser parte del ajuste del modelo y el resultado del CV es simplemente decir qué tan bien se desempeña cada modelo en general? ¿Y que el modelo final construido con la mayoría de los datos al final es el modelo que usaría?
Me doy cuenta de que esto se puede reformular en una pregunta aún más simple. Después de la validación cruzada ('origen progresivo'), ¿acabo de usar el último modelo construido (con el superconjunto más grande como modelo ajustado final? ¿O qué se sugiere?
fuente
Respuestas:
Puede combinar el origen de avance con validación cruzada k-fold (también conocido como backtesting con validación cruzada). Determine los pliegues por adelantado una vez, y en cada tiempo de rodadura repita por los k pliegues, entrene en k-1 y pruebe en k. La unión de todos los pliegues de prueba extendidos le brinda una cobertura completa de todo el conjunto de datos en ese momento, y los pliegues del tren cubren el conjunto de datos k-1 veces en ese momento, que puede agregar de la manera apropiada (por ejemplo, media ) Luego, califique el tren y la prueba por separado, como lo haría normalmente para obtener las puntuaciones del tren / prueba por separado en ese momento.
Al optimizar los parámetros, cree primero un conjunto de reserva separado y luego realice la validación cruzada que se describe solo en los datos restantes. Para que cada parámetro se optimice, debe decidir si ese parámetro es independiente del tiempo (para que pueda realizar la optimización en todos los tiempos sucesivos) o depende del tiempo (para que el parámetro se optimice por separado en cada momento). Si es lo último, puede representar el parámetro como una función del tiempo (posiblemente lineal) y luego optimizar los coeficientes independientes del tiempo de esa función en todo momento.
fuente
Si optimizas los parámetros a los datos de prueba, estarías ajustando parcialmente tus datos a los datos de prueba en lugar de los datos de entrenamiento. Desea saber qué método es mejor sobre los datos retenidos y no, por ejemplo, qué gamma debería establecerse en un modelo Holt Winters.
fuente