Colección de citas famosas - Slogan de motivación - Ajuste óptimo de parámetros del modelo de cometa gris

Ajuste óptimo de parámetros del modelo de cometa gris

Este es un curso básico en la creación y ajuste de modelos predictivos. Dirigido a proporcionar algo de sentido común básico para los usuarios de nivel cero.

Puedes utilizar el modelo Prophet o Silver Sparrow. Este artículo se centra en el modelo SILVERKITE.

SILVERKITE descompone las series de tiempo en varios componentes y crea características basadas en el tiempo, características autorregresivas y características proporcionadas por el usuario, como características macroeconómicas y sus interacciones, luego realiza modelos de regresión de aprendizaje automático para comprender la relación entre las series de tiempo. y estas características. Las predicciones se basan en las relaciones aprendidas y los valores futuros de estas características. Por lo tanto, incluir las funciones adecuadas es clave para el éxito.

Las funciones comunes incluyen:

Contiene funciones derivadas de fecha y hora, como día del año, hora del día, día de la semana, is_weekend, etc. Estas funciones son muy útiles al capturar patrones especiales. Por ejemplo, para la mayoría de los datos relacionados con los negocios, existen diferentes patrones ya sea que los fines de semana hayan terminado o no.

Primero defina la característica básica "ct1", que calcula el tiempo transcurrido desde el primer día de los datos de entrenamiento en años (puede ser una fracción). Por ejemplo, si los datos de entrenamiento comienzan desde "2018-01-01", entonces "2018-01" tiene ct1=0.0, "2008". La granularidad de ct1 se puede definir según sea necesario. Se pueden aplicar funciones de crecimiento independientes a ct1. Por ejemplo, ct2 se puede definir como ct1 al cuadrado para simular un crecimiento exponencial.

Tendencia Tendencia describe la tendencia promedio de una serie temporal. Se define por un término de crecimiento con posibles puntos de cambio. En cada punto de cambio, la tasa de crecimiento puede cambiar (más rápido o más lento). Por ejemplo, si se utiliza "ct1" (crecimiento lineal) con puntos de cambio, la tendencia se modelará como lineal por partes.

La periodicidad estacional describe el patrón periódico de una serie temporal. Contiene múltiples niveles, incluido el ciclo diario, el ciclo semanal, el ciclo mensual, el ciclo trimestral y el ciclo anual. La periodicidad se define mediante series de Fourier de diferentes órdenes. Cuanto mayor sea el orden, más patrones periódicos detallados podrá aprender el modelo. Sin embargo, un orden demasiado grande puede provocar un sobreajuste.

Los eventos incluyen días festivos y otros eventos a corto plazo que pueden afectar temporalmente la serie temporal, como el fin de semana de Acción de Gracias. Por lo general, los eventos siguen un patrón y se repiten en un momento conocido en el futuro. Estas características consisten en indicadores que cubren el día del evento y sus fechas adyacentes.

Las características autorregresivas incluyen observaciones de series temporales pasadas y su agregación. Por ejemplo, puede utilizar observaciones del día anterior, promedios de la semana pasada o el mismo día laborable durante los últimos 7 días, etc. Tenga en cuenta que las funciones autorregresivas son muy útiles en pronósticos a corto plazo, pero deben evitarse en pronósticos a largo plazo. La razón es que los pronósticos a largo plazo se centran más en la exactitud de las tendencias, la estacionalidad y los eventos. Calcule términos de retraso y términos autorregresivos en pronósticos a largo plazo basados ​​en valores pronosticados. Cuanto más lejos pronosticamos en el futuro, más valores de pronóstico se necesitan para crear el término autorregresivo, lo que hace que el pronóstico sea más inestable.

Las características adicionales asociadas con las series de tiempo pueden, como se esperaba, afectar las características macroeconómicas de la serie de tiempo. Tenga en cuenta que estas funciones deben proporcionarse manualmente durante el entrenamiento y la predicción.

Cualquier acoplamiento entre las características anteriores

Ahora usamos un ejemplo para recorrer todo el proceso de creación y ajuste. Los datos utilizados fueron vistas de la página de Wikipedia de Peyton Manning.

El conjunto de datos abarca del 2007-12-10 al 2016-01-20.

Cargue datos df en UnivariateTimeSeries y cree un objeto UnivariateTimeSeries. El objeto ts se puede utilizar convenientemente para el análisis y trazado de datos exploratorios.

Dibuja un diagrama de tiempo de los datos originales.

Puedes crear un modelo predictivo simple basado en tu conjunto de datos. Tenga en cuenta que si no proporciona ningún parámetro adicional, todos los parámetros del modelo estarán predeterminados.

Los parámetros predeterminados son conservadores, por lo que podemos usarlos como modelo de referencia para evaluar la dificultad de la predicción y mejorarla aún más si es necesario.

Para conocer el proceso detallado del modelo de predicción simple, consulte: /p/2c40becc7ae2.

Trazar la curva de predicción

Podemos ver que el modelo de predicción se ajusta bien a los datos existentes, pero no tenemos evidencia de que prediga bien el futuro.

División del conjunto de entrenamiento-conjunto de prueba

En términos generales, evaluar el desempeño de un modelo es retener una parte del conjunto de entrenamiento y luego usar esta parte para evaluar el desempeño del modelo. modelo.

Debido a que siempre predecimos datos futuros, una parte del conjunto de datos de entrenamiento se reserva de atrás hacia adelante como conjunto de prueba.

De forma predeterminada, los resultados devueltos por run_forecast_config crearán una división de prueba de entrenamiento y colocarán los resultados de la prueba en result.backtest.

El rango del conjunto de prueba es consistente con el rango de tiempo que queremos predecir de forma predeterminada. Podemos obtener los resultados de la evaluación:

Indicadores de evaluación

Desde aquí, podemos ver el rendimiento de predicción del modelo en el conjunto de prueba. Puede centrarse en uno o varios de estos indicadores. Suele incluir:

MSE:

Error medio. Puede verse afectado por valores extremos.

RMSE:

Error cuadrático medio, la raíz cuadrada de MSE

Mei:

Error medio absoluto, el promedio de los errores absolutos. Puede verse afectado por valores extremos.

MedAE:

Error absoluto mediano, la mediana de los errores absolutos. Menos afectado por valores extremos.

MAPE:

Error porcentual absoluto medio, que mide el error porcentual correspondiente al valor real. Esto resulta útil cuando desea considerar errores relativos en lugar de errores absolutos. Por ejemplo, para una observación verdadera de 10, un error de 1 se considera 10, mientras que para una observación verdadera de 100, un error de 1 se considera 1. Este es nuestro indicador predeterminado favorito.

Medalla:

El error porcentual absoluto de la mediana (la versión mediana de MAPE) se ve menos afectado por los valores extremos.

En este ejemplo, utilizamos MAPE como métrica. Al observar estos resultados, podemos conocer aproximadamente el efecto de predicción del modelo sobre datos desconocidos. En promedio, la diferencia entre los valores previstos y verdaderos del modelo de referencia es 11,3.

Validación cruzada de series temporales

La calidad de las predicciones depende en gran medida de la ventana de tiempo de evaluación. La ventana de evaluación elegida anteriormente puede resultar un período relativamente fácil/impredecible. Por lo tanto, es más sólido realizar evaluaciones durante períodos de tiempo más largos cuando el tamaño del conjunto de datos lo permita. Consideremos un enfoque más general para evaluar modelos predictivos: validación cruzada de series temporales.

La validación cruzada de series temporales se basa en divisiones continuas de series temporales. Por ejemplo, si queremos evaluar mediante triple validación cruzada, todos los datos de entrenamiento se dividen de tres formas diferentes. Dado que nuestro periodo de previsión es de 365 días, haremos:

Primera oferta: formación del 10-12-2007 al 20-01-2013, previsión del 21-01-2013 al 2014-.

Primer descuento: entrenamiento del 10-12-2007 al 20-01-2014, predicción del 21-01-2014 al 2015-.

Primer descuento: entrenamiento del 10-12-2007 al 20-01-2015, predicción del 21-01-2015 al 2016-.

El método de división se puede ajustar de forma flexible. Consulte la ayuda, no entraré en detalles aquí.

El rendimiento del modelo predictivo es la media de tres evaluaciones.

De forma predeterminada, los resultados devueltos por run_forecast_config también han sido validados de forma cruzada internamente.

Puedes configurar los parámetros de validación cruzada tú mismo. Lo que se debe tener en cuenta aquí es que los datos retenidos detrás de los datos de test_horizon no tienen validación cruzada.

Al ajustar los parámetros, debe elegir el grupo de parámetros con el mejor rendimiento de validación cruzada.

Ahora que sabes cómo evaluar el rendimiento de un modelo, veamos si podemos mejorar el rendimiento del modelo ajustando los parámetros.

Anormal

Las anomalías son desviaciones de un indicador que no se espera que vuelvan a ocurrir en el futuro. Los valores atípicos pueden hacer que los modelos se ajusten a la anomalía como una propiedad inherente de la serie temporal, lo que genera predicciones inexactas. Estas anomalías se pueden identificar mediante gráficos superpuestos.

Como se puede ver en la superposición anterior, hay dos datos anormales relativamente grandes: marzo de 2012 y junio de 2010. También se pueden detectar otros pequeños datos anormales, pero el impacto es relativamente pequeño. Las plantillas SILVERKITE ahora admiten el enmascaramiento de valores atípicos proporcionando un diccionario de información anónima. Puede ajustar estos valores o dejarlos en blanco (en cuyo caso los valores atípicos no se utilizarán en el ajuste).

Puede encontrar una introducción detallada en /pages/stepbystep/0300_input.

Aquí definimos un marco de datos anónimo_df, enmascaramos los valores atípicos como valores nulos y los empaquetamos en un diccionario anónimo_info.

Agregar funciones relacionadas

Crecimiento y tendencias

Crecimiento y tendencias

Primero, veamos el crecimiento y las tendencias. Consulte /pages/model_components/0200_growth para obtener una configuración detallada del crecimiento.

De estas dos características, nos centramos más en las tendencias a largo plazo. Se puede ver en el gráfico de los datos originales que no existe un patrón de crecimiento obvio y que el modelo se puede ajustar con un crecimiento lineal.

Por otro lado, puede haber puntos potenciales de cambio de tendencia en los que el modelo de crecimiento lineal cambiará su pendiente.

Los detalles de los puntos de cambio se pueden encontrar en /pages/model_components/0500_change points.

Estos puntos de cambio pueden ser detectados por la clase ChangepointDetector. Puedes ver Detección de puntos de cambio

Aquí exploramos la detección automática de puntos de cambio.

Los parámetros para esta detección automática de puntos de cambio están personalizados para este conjunto de datos.

Puedes ver los puntos de cambio de tendencia detectados automáticamente en la figura. Los resultados muestran que hubo una tendencia general ascendente antes de 2012, y luego hubo una tendencia general a la baja.

Si proporcionamos los parámetros de los puntos de cambio de tendencia al modelo, estas características de cambio de tendencia se agregarán automáticamente al modelo.

Estacionalidad

Características periódicas

A continuación, veamos las características cíclicas. Consulte /pages/model_components/0300_seasonality para obtener detalles de configuración. Se puede ver un ejemplo rápido en Detección de estacionalidad.

Las características periódicas de este ejemplo se resumen a continuación:

Por lo tanto, para purificar las características estacionales, incluimos el orden estacional semanal y anual. se puede ajustar. Aquí ajustamos el orden de la semana a 5 y el orden del año a 10.

Para obtener información sobre ajustes, consulte /pages/model_components/0300_seasonality.

También agregaremos la interacción de acoplamiento entre las características de la semana y las características de la temporada de fútbol en el modelo más adelante.

El modelo SILVERKITE también admite puntos de cambio periódicos, después de los cuales los efectos periódicos muestran un comportamiento diferente. Para el modelo SILVERKITE, esto significa que se pueden cambiar los coeficientes de la serie de Fourier. Si el rendimiento de la validación cruzada es deficiente y se detectan puntos de cambio estacional en el análisis exploratorio, podemos decidir agregar esta característica.

Para obtener más información, consulte: doc:/gallery/quick start/0200 \ u punto de cambio \ u detección.

Días festivos y eventos

Días festivos y eventos

Luego nos fijamos en los días festivos y eventos. Los detalles de la configuración de eventos y vacaciones se pueden encontrar en /pages/model_components/0400_events.

Pregúntese qué días festivos podrían afectar los valores de las series temporales. Creemos que los días festivos importantes en los Estados Unidos afectan las visitas a las páginas de Wikipedia porque la mayoría de los fanáticos del fútbol se encuentran en los Estados Unidos. (Este conjunto de datos son vistas de Celebpedia, así que dilo).

Algunos eventos, como el Super Bowl, también pueden aumentar las visitas a la página. Por lo tanto, agregamos días festivos en EE. UU. y fechas del Super Bowl como eventos personalizados.

Estacionalidad a través de la tabla periódica anual

Entre los países que se pueden seleccionar para vacation_lookup_countries, se puede seleccionar "China". Traje mis propias vacaciones en China.

Autoregresivo

Autoregresivo

La propiedad autorregresiva es muy útil en pronósticos a corto plazo, pero puede ser riesgosa en pronósticos a largo plazo. Consulte /pages/model_components/0800_autoregression para obtener más detalles.

Personalizaciones

Personalización

Ahora consideremos algunas características personalizadas que pueden ser relevantes para las visitas a la página. Puede consultar la documentación de otros regresores aquí/pages/model_components/0700_regressors.

Observamos que la temporada de fútbol afecta en gran medida las visitas a la página, por lo que necesitamos utilizar una función de regresión para identificar la temporada de fútbol.

Hay muchas formas de incluir esta funcionalidad: agregar métricas para toda la temporada; agregar la cantidad de días al inicio (final) de la temporada y la cantidad de días al inicio (final) de la estación.

El primero tiene un impacto consistente en todas las fechas de la temporada, mientras que el segundo cuantifica los diferentes impactos al inicio y al final de la temporada.

Si no estás seguro de qué efecto incluir, puedes incluir ambos.

SILVERKITE puede elegir la regresión de crestas como algoritmo de ajuste para evitar el sobreajuste de demasiadas funciones.

Tenga en cuenta que también se pueden agregar muchas características temporales al modelo, y también se le pueden agregar algunas de las características calculadas por Silver Kite.

Extra_pred_colsas es una expresión chivata arbitraria. Para obtener una lista completa de estas características, consulte ~greykite. Dale. característica. series_temporales_características. BUILD_TIME_FEATURES_df.

Si SILVERKITE no crea automáticamente la función, debemos crearla con anticipación y agregarla a los datos df.

Aquí creamos la característica "is_football_season".

Tenga en cuenta que también debemos proporcionar columnas personalizadas para el período de pronóstico.

El método específico es crear primero un df para cubrir la marca de tiempo durante el período de predicción, que se puede pasar. La función make_future_dataframe en la clase UnivariateTimeSeries.

Luego, creamos una nueva columna de regresión personalizada para este df.

Interacciones

Acoplamiento de interacciones

Finalmente, consideremos el acoplamiento mutuo de problemas de predicción. En términos generales, si una característica se ve afectada por otra característica, entonces las dos características ahora están acopladas.

Al igual que la estacionalidad

El término de multiplicación is_football_season xweekly_seasonality captura este patrón.

Puede utilizar la función cols_interact para crear acoplamientos entre funciones del ciclo estacional y otras funciones.

Además, las características de los términos de multiplicación mes x semanal_estacionalidad y dow_woy también afectarán la periodicidad semanal. Estas características también se pueden agregar, pero aquí no nos importa.

Cols_interact se puede usar nuevamente para crear mes x semana_temporada, al igual que el anterior is_football_season x semana_temporada.

El Dow_woy lo calcula automáticamente SILVERKITE. Simplemente puede agregar el nombre a extra_pred_cols.

Juntando las cosas

Juntando las cosas

Ahora, juntemos todas estas cosas y creemos un nuevo modelo predictivo. Consulte /pages/step by step/0400 _ configuración para obtener más detalles.

Primero configuramos la clase MetadataParam, que incluye las propiedades básicas de la propia serie temporal.

A continuación, definimos la clase ModelComponentsParam, que contiene propiedades relacionadas con el propio modelo.

Ahora, ejecutemos el modelo usando la nueva configuración. Los parámetros del modelo de evaluación son los mismos que antes y ajustar los parámetros es más justo.

Ahora, podemos ver que después de analizar el problema y agregar las características apropiadas, la prueba de validación cruzada MAPE es 5.4, que es mejor que el 7.3 de la línea base.

Los MAPE triples son 3,9, 8,7 y 3,8 respectivamente. La mejora en el primer pliegue es la más significativa. Después de la investigación, se puede encontrar que el segundo pliegue no mejora porque hay un punto de cambio de tendencia al comienzo del período de prueba. Es difícil predecir algo como esto a menos que lo veamos.

En el paso de validación cruzada, la forma de evitar esta situación es establecer diferentes periodos de evaluación. Pero independientemente de este período de tiempo, está bien, porque puede volver a suceder en el futuro.

Durante la previsión, podemos monitorear los valores reales y previstos y volver a entrenar el modelo en función de los patrones de datos más recientes. En el diccionario de puntos de cambio, ajuste regularization_strength y no_change point_distance_from_end en consecuencia, o agregue puntos de cambio especificados manualmente a los puntos de cambio detectados automáticamente. Consulte /pages/model_components/0500_change point para obtener más detalles.

También podemos dibujar un mapa de previsión.

Para estudiar más a fondo el mecanismo del modelo, también es útil consultar el resumen del modelo.

El módulo ModelSummary proporciona estimaciones, significancia, valores P, intervalos de confianza, etc. Estos ayudan a los usuarios a comprender cómo funciona el modelo y cómo mejorarlo aún más.

El resumen de modelos es un método general que se puede utilizar de la siguiente manera.

El resumen del modelo muestra información del modelo, coeficientes y su importancia, así como algunas estadísticas resumidas. Por ejemplo, podemos ver los puntos de cambio y el grado de cambio en la tasa de crecimiento en cada punto de cambio.

Podemos ver que algunos días festivos tienen un impacto significativo en el modelo, como Navidad, Día del Trabajo, Acción de Gracias, etc. Podemos ver la importancia de la temporada de fútbol y las interacciones estacionales semanales. Para obtener una guía resumida del modelo más detallada, consulte: doc:/gallery/quick start/0400\umodel\usummary.

A través de este ejemplo, podrás saber cómo elegir parámetros y optimizar el modelo.

Aquí enumeramos algunos pasos y técnicas que pueden ayudar a elegir el mejor modelo.

Qué puedes hacer:

(~ grey kite . framework . input . univariate_time_series.

univariatetimeseries.plot_quantiles_and_overlays).

Asigne estos puntos a NA a menos que esté seguro de que está corrigiendo los valores atípicos.

Si la serie temporal no tiene un patrón de crecimiento típico, se puede considerar un crecimiento lineal con puntos de cambio de tendencia. Pruebe diferentes configuraciones de detección de puntos de cambio. También puede marcar los puntos de cambio detectados para ver si son significativos para usted. La plantilla también admite puntos de cambio personalizados. Si los resultados de la detección automática de puntos de cambio no tienen sentido para usted, puede proporcionar sus propios puntos de cambio.

Cuanto mayor sea el orden, más detalles se aprenden, pero cuanto mayor sea el orden, más conducirá al sobreajuste. Estos también se pueden encontrar mediante gráficos superpuestos. No existe un enfoque único para elegir un ciclo, así que explore diferentes órdenes de ciclos y compare los resultados.

¿Necesitas agregar un evento personalizado? Si desea agregar eventos personalizados, recuerde agregar un período de pronóstico.

Tenga en cuenta que también debe proporcionar el valor del coeficiente de regresión para el período de pronóstico. Puede utilizar otra serie de tiempo como regresor siempre que tenga una verdad sobre el terreno/un buen pronóstico que cubra su período de pronóstico.

Dos características están acopladas si existe una correlación entre ellas. Por ejemplo, "si la temporada de fútbol está en marcha" y "periodicidad semanal" están acoplados. También puedes intentar usar plot_quantifies_and_overlays. De forma predeterminada, tenemos algunos términos de acoplamiento predefinidos, consulte feature_set_enabled lt

Este es un algoritmo para modelar entre características y secuencias de eventos. Para obtener una lista completa de algoritmos opcionales, consulte Fit_algorithm

Si no conoce la diferencia, puede intentar comparar los resultados. Si no quiere probarlo, simplemente use el algoritmo de regresión de crestas y "crestas", que es una opción segura.

Vale la pena señalar que esta plantilla admite la búsqueda automática en cuadrícula utilizando diferentes conjuntos de parámetros. Para cada parámetro, si se proporciona una configuración en la lista, ejecutará automáticamente cada combinación y seleccionará la combinación con el mejor rendimiento de validación cruzada. Esto ahorrará mucho tiempo. Ver búsqueda en cuadrícula

Siga su conocimiento e intuición, utilice estos parámetros y obtendrá una buena predicción.