12 KiB
Introducción a la predicción de series de tiempo
Boceto de Tomomi Imura
En esta lección y la siguiente, aprenderás un poco acerca de la predicción de series de tiempo, una parte interesante y valiosa del repertorio de de un científico de ML, la cual es un poco menos conocida que otros temas. La predicción de series de tiempo es una especie de 'bola de cristal': basada en el rendimiento pasado de una variable como el precio, puedes predecir su valor potencial futuro.
🎥 Da clic en la imagen de arriba para ver un video acerca de la predicción de series de tiempo
Examen previo a la lección
Es un campo útil e interesante con valor real para el negocio, dada su aplicación directa a problemas de precio, inventario e incidentes de cadenas de suministro. Mientras que las técnicas de aprendizaje profundo han comenzado a usarse para ganar más conocimiento para mejorar el rendimiento de futuras predicciones, la predicción de series de tiempo sigue siendo un campo muy informado por técnicas de aprendizaje automático clásico.
El útil plan de estudios de series de tiempo de Penn State puede ser encontrado aquí
Introducción
Supón que mantienes un arreglo de parquímetros inteligentes que proveen datos acerca de que tan seguido son usados y con qué duración de tiempo.
¿Qué pasaría si pudieras predecir, basado en el rendimiento pasado del medidor, su valor futuro de acuerdo a las leyes de suministro y demanda?
Predecir de forma precisa cuándo actuar para así lograr tu objetivo es una desafío que podría ser abordado con la predicción de series de tiempo.No haría feliz a la gente que le cobraran más en hora pico cuando están buscando un lugar para estacionarse, ¡pero sería una forma segura de generar ingresos para limpiar las calles!
Exploremos algunos de los tipos de algoritmos de series de tiempo e iniciemos un notebook para limpiar y preparar algunos datos. Los datos que analizarás son tomados de la competencia de predicción de GEFCom2014. Esta consiste de 3 años de carga eléctrica por hora y los valores de temperatura entre el 2012 y 2014. Dados los patrones históricos de carga eléctrica y temperatura, puedes predecir valores futuros de carga eléctrica.
En este ejemplo, aprenderás cómo predecir un paso de tiempo adelante, usando sólo la carga histórica. Antes de iniciar, sin embargo, es útil entender qué está pasando detrás de escena.
Algunas definiciones
Al encontrar el término 'series de tiempo' necesitas entender su uso en varios contextos diferentes.
🎓 Series de tiempo
En matemáticas, "una serie de tiempo es una serie de puntos de datos indexados (o listados o graficados) en orden de tiempo. Más comúnmente, una serie de tiempo es una secuencia tomada en puntos sucesivos igualmente espaciados en el tiempo." Un ejemplo de una serie de tiempo es el valor diario de cierre de el Promedio Industrial Down Jones. El uso de gráficos de series de tiempo y modelado estadístico se encuentra frecuentemente en el procesamiento de señales, predicción del clima, predicción de sismos, y otros campos donde ocurren eventos y los puntos de datos pueden ser graficados en el tiempo.
🎓 Análisis de series de tiempo
El análisis de series de tiempo, es el análisis de los datos de las series de tiempo previamente mencionadas. Los datos de las series de tiempo pueden tomar distintas formas, incluyendo 'series de tiempo interrumpidas' las cuales detectan patrones en la evolución de las series de tiempo antes y después de un evento de interrupción. El tipo de análisis necesario para las series de tiempo depende de la naturaleza de los datos. Los datos de series de tiempo en sí mismos pueden tomar la forma de series de números o caracteres.
El análisis a realizar, usa una variedad de métodos, incluyendo dominio de frecuencia y dominio de tiempo, lineal y no lineal y más. Aprende más acerca de varias formas de analizar este tipo de datos.
🎓 Predicción de series de tiempo
La predicción de series de tiempo es el uso de un modelo para predecir valores futuros basándose en patrones mostrados por datos previamente recopilados como ocurrieron en el pasado. Mientras es posible usar modelos de regresión para explorar los datos de las series de tiempo, con índices de tiempo como variables x en un plano, dichos datos se analizan mejor usando tipos especiales de modelos.
Los datos de series de timpo son una lista de observaciones ordenadas, a diferencia de los datos que pueden ser analizados por regresión lineal. El más común es ARIMA, el cual es un acrónimo que significa "Autoregressive Integrated Moving Average".
Los modelos ARIMA "relacionan el valor presente de una serie de valores pasados y errores de predicción anteriores". Estos son más apropiados para el análisis de datos en el dominio de tiempo, donde los datos están se ordenan en el tiempo.
Existen varios tipos de modelos ARIMA, los cuales puedes aprender aquí y que conocerás más tarde.
En la siguiente lección, construirás un modelo ARIMA usando series de tiempo univariante, las cual se enfoca en una variable que cambia su valor en el tiempo. Un ejemplo de este tipo de datos es este conjunto de datos que registra la concentración mensual de CO2 en el Observatorio Mauna Loa:
CO2 | YearMonth | Year | Month |
---|---|---|---|
330.62 | 1975.04 | 1975 | 1 |
331.40 | 1975.13 | 1975 | 2 |
331.87 | 1975.21 | 1975 | 3 |
333.18 | 1975.29 | 1975 | 4 |
333.92 | 1975.38 | 1975 | 5 |
333.43 | 1975.46 | 1975 | 6 |
331.85 | 1975.54 | 1975 | 7 |
330.01 | 1975.63 | 1975 | 8 |
328.51 | 1975.71 | 1975 | 9 |
328.41 | 1975.79 | 1975 | 10 |
329.25 | 1975.88 | 1975 | 11 |
330.97 | 1975.96 | 1975 | 12 |
✅ Identifica la variable que cambia en el tiempo en este conjunto de datos
Características de datos de series de tiempo a considerar
Al mirar datos de series de tiempo, puedes notar que tienen ciertas características que necesitas tomar ne consideración y mitigar para entender mejor sus patrones. Si consideras los datos de las series de tiempo como proporcionando potencialmente una 'señal' que quieres analizar, estas características pueden ser interpretadas como 'ruido'. Frecuentemente necesitarás reducir este 'ruido' al compensar algunas de estas características usando ciertas técnicas estadísticas.
Aquí hay algunos conceptos que deberías saber para ser capaz de trabajar con las series de tiempo:
🎓 Tendencias
Las tendencias se definen como incrementos y decrementos medibles en el tiempo. Lee más. En el contexto de las series de tiempo, se trata de cómo usar las tendencias y, si es necesario, eliminarlas.
La estacionalidad se define como fluctuaciones periódicas, tales como prisas de vacaciones que pueden afectar las ventas, por ejemplo. Da un vistazo a cómo los distintos tipos de gráficos muestran la estacionalidad en los datos.
🎓 Valores atípicos
Los valores atípicos están muy lejos de la varianza de datos estándar.
🎓 Ciclos de largo plazo
Independiente de la estacionalidad, los datos pueden mostrar un ciclo de largo plazo como un declive que dura más de un año.
🎓 Varianza constante
En el tiempo, algunos datos muestran fluctuaciones constantes, tales como el uso de energía por día y noche.
🎓 Cambios abruptos
Los datos pueden mostrar un cambio abrupto que puede necesitar mayor análisis. El cierre abrupto de negocios debido al COVID, por ejemplo, causó cambios en los datos.
✅ Aquí hay una muestra de gráfico de series de tiempo mostrando la moneda diaria en juego gastada en algunos años. ¿Puedes identificar alguna de las características listadas arriba en estos datos?
Ejercicio - comenzando con los datos de uso de energía
Comencemos creando un modelo de series de tiempo para predecir el uso futuro de energía dato su uso pasado.
Los datos en este ejemplo se tomaron de la competencia de predicción GEFCom2014. Consta de 3 años de valores de carga eléctrica y de temperatura medidos por hora entre 2012 y 2014.
Tao Hong, Pierre Pinson, Shu Fan, Hamidreza Zareipour, Alberto Troccoli y Rob J. Hyndman, "Probabilistic energy forecasting: Global Energy Forecasting Competition 2014 and beyond", International Journal of Forecasting, vol.32, no.3, pp 896-913, July-September, 2016.
-
En el directorio
working
de esta lección, abre el archivo notebook.ipynb. Empieza agregando las bibliotecas que te ayudarán a cargar y visualizar datosimport os import matplotlib.pyplot as plt from common.utils import load_data %matplotlib inline
Nota, estás usando los archivos del direcorio
common
incluido el cual configura tu ambiente y maneja la descarga de los datos. -
Ahora, examina los datos como un dataframe llamando
load_data()
yhead()
:data_dir = './data' energy = load_data(data_dir)[['load']] energy.head()
Puedes ver que hay dos columnas representando la fecha y la carga:
load 2012-01-01 00:00:00 2698.0 2012-01-01 01:00:00 2558.0 2012-01-01 02:00:00 2444.0 2012-01-01 03:00:00 2402.0 2012-01-01 04:00:00 2403.0 -
Ahora, grafica los datos llamando
plot()
:energy.plot(y='load', subplots=True, figsize=(15, 8), fontsize=12) plt.xlabel('timestamp', fontsize=12) plt.ylabel('load', fontsize=12) plt.show()
-
Ahora, grafica la primer semana de Julio de 2014, al proveerla como entrada a
energy
en el patrón[from date]: [to date]
:energy['2014-07-01':'2014-07-07'].plot(y='load', subplots=True, figsize=(15, 8), fontsize=12) plt.xlabel('timestamp', fontsize=12) plt.ylabel('load', fontsize=12) plt.show()
¡Un hermoso gráfico! Da un vistazo a estos gráficos y ve si puedes determinar alguna de las características listadas arriba. ¿Que podemos suponer al visualizar los datos?
En la siguiente lección, crearás un modelo ARIMA para realizar algunas predicciones.
🚀Desafío
Haz una lista de todas las industrias y áreas de consulta en las que puedes pensar que se beneficiarían de la predicción de series de tiempo. ¿Puedes pensar en una aplicación de estas técnicas en las artes, en la econometría, ecología, venta al menudeo, la industria, finanzas? ¿Dónde más?
Examen posterior a la lección
Revisión y autoestudio
Aunque no las cubriremos aquí, las redes neuronales son usadas algunas veces para mejorar los métodos clásicos de predicción de series de tiempo. Lee más acerca de ellas en este artículo