Cómo aprovechar al máximo los datos de sus series temporales
Liberar el potencial de las series temporales

En nuestro Entregue los pedidos de su mercado a tiempo con el aprendizaje automático entrada en la que mencionamos brevemente las series temporales. Hablamos sobre cómo un series temporales es solo una serie de puntos de datos ordenados en el tiempo. Y una vez que lo tuvimos dato era posible predecir la duración de la preparación de un pedido basándose en observaciones anteriores.
Pero el mundo de series temporales es mucho más grande que eso. ¿Cómo sé si tengo series temporales datos en mis manos? ¿Qué puedo aprender de ello? ¿Solo son útiles para hacer pronósticos? ¿Tengo que ser un experto para obtener información a partir de los datos de series temporales? ¿Cómo podemos almacenar correctamente su representación?
En esta entrada, nuestro objetivo es responder a todas esas preguntas y mostrar el potencial de trabajar con datos de series temporales.
Cómo detectar una serie temporal
¿Cómo sabemos si ya tenemos un series temporales en nuestras manos? Y si no lo tiene, ¿dónde lo adquirimos? Hay dos cosas importantes que pueden ayudarnos a reconocer un series temporales:
- Tiene eventos que ocurren en el tiempo (¡días, horas o incluso milisegundos!).
- El orden temporal en el que ocurrieron estos eventos es pertinente. Si quisiéramos pronosticar el clima de mañana, queremos que el clima reciente sea más relevante para este pronóstico que el clima que teníamos hace unos meses.
- Un evento nuevo no reemplaza ni actualiza el anterior.
En resumen, si puede realizar un seguimiento de los cambios a lo largo del tiempo, entonces tiene un series temporales en tus manos. Por ejemplo: supongamos que estamos desarrollando un Entrega de comida aplicación. Para cada usuario, podemos simplemente almacenar su pedido actual en una base de datos y eliminar o actualizar su entrada una vez que se entregue. Sin embargo, los usuarios realizarán más de un pedido con nuestra aplicación a lo largo de su vida (¡ojalá!). Si solo almacenamos sus pedidos en curso y los liquidamos una vez finalizados, estamos perdiendo información útil.
¿Cuáles son sus restaurantes favoritos? ¿Cuándo suelen pedir comida? ¿Tenemos otros usuarios similares que pidan en un restaurante y esta persona no lo hace? Estas son algunas de las preguntas a las que podemos responder si almacenamos datos de series temporales.
Ahora que sabemos que quiero para usar datos de series temporales, almacenar la información que mencionamos anteriormente tendría un aspecto similar al siguiente:
datetimeuser_idfood_orderedrestaurant 2021-04-12 20:55 Hamburguesas Van Delay's 2021-04-12 21:042 Hamburguesas Hamburguesas Van Delay's 2021-04-13 13:23 Sushi Rising Salmon 2021-04-13 14:21 Pizza Tonio's
Si quisieras graficar la cantidad acumulada de pedidos para cada unidad de tiempo, probablemente tendría un aspecto similar al siguiente:

Ver solo un día de datos está bien, pero series temporales son geniales para echar un vistazo al panorama general:

Parece que nuestro negocio sufrió una caída a finales de 2021 y principios de 2022, ¡pero la cantidad de pedidos solo parece estar creciendo!
¿Y por qué detenerse en Entrega de comida? No es difícil encontrar muchos más ejemplos para series temporales y usos que podríamos darles:
- Tomemos un banco, por ejemplo. Uno de sus usuarios siempre realiza pequeñas transacciones a la misma empresa y cuentas durante el día. ¡Pero de repente aparece una transacción por una gran suma de dinero en mitad de la noche! Si el banco almacenara todas las transacciones que el usuario haya realizado a lo largo del tiempo, podría usar esa información para detectar un comportamiento anómalo y, a continuación, cancelar esa transacción o solicitar validaciones de seguridad adicionales.
- Es probable que a cualquier tipo de mercado le gustaría saber su rendimiento. ¿Cuántos usuarios acceden al caja página pero no compras nada? ¿A qué hora tenemos más compras? ¿Es diferente del momento en el que tenemos más visitas a nuestro Marketplace? Datos de series temporales puede respondernos fácilmente a esas preguntas, solo necesitamos saber cómo preguntar (o cómo consulta!).
Estas son algunas de las cosas que podemos obtener de nuestro series temporales. Ahora entremos cómo para hacer eso.
Obtención de información
Ahora que sabemos qué datos de series temporales es decir, supongamos que tenemos acceso a uno de ellos. Tal vez tienes un .csv archivo que representa su series temporales y están planeando iniciar un cuaderno jupyter. O puede que te gusten más las hojas de cálculo. Pero es más probable que guardes tus datos e interactúes con ellos series temporales a través de un Base de datos.
Pero, ¿por qué necesitaríamos interactuar con nuestros datos a través del Sistema de bases de datos? ¿No sería mejor simplemente extraer los datos y usar una hoja de cálculo o un cuaderno interactivo? Bueno, sí y no. Si tuviéramos que extraer los datos cada vez que quisiéramos obtener información, estaría bien la primera vez, pero se volvería aburrido rápidamente. Después de todo, extraer y descargar datos lleva tiempo. Y si cambiáramos de opinión y quisiéramos trabajar con un conjunto de datos diferente, ¡tendríamos que realizar una extracción larga y volver a descargarlo! ¡Además, nos limitaríamos a extraer únicamente los datos que quepan en nuestro ordenador!
Hacer una pregunta a un Base de datos se llama consulta. Y, afortunadamente, existe un lenguaje común para consultar la mayoría de las bases de datos: SQL. SQL ofrece una forma común de consulta diferentes bases de datos. Esto significa que no importa el Base de datos, si ya sabes SQL entonces puedes transferir tus conocimientos al instante.
¿Recuerdas nuestro ejemplo de restaurante? Teníamos un Base de datos almacenar cada pedido realizado por un usuario a lo largo del tiempo. Usemos SQL para conocer los cinco restaurantes más activos de la semana pasada:
Seleccione el restaurante, CONTAR (*) de la tabla donde Fecha y hora > Ahora () - Intervalo de 7 días Agrupar por restaurante Ordenar por recuento (*) DESLIMIT 5
Una consulta como esa es extremadamente fácil de escribir para cualquier persona con un poco de experiencia en SQL.
Lo que algunas personas no saben es que algunas bases de datos, que no se utilizan específicamente para series temporales, ten algo bastante ingenioso series temporales funciones. Por ejemplo PostgresSQL tiene el desfase función, que nos permite tomar un campo de una fila anterior. Y dado que estamos trabajando con series temporales, esta fila debe ser el evento anterior en el tiempo.
Usemos desfase para ver la diferencia en los pedidos de cada mes:
Seleccione Month, order_amount, lag (order_amount, 1) como ORDER_DIFFOVER (OrderByMonth) FROM (SelectMonth, COUNT (*) como ORDER_MOUNT del grupo de pedidos por mes) LIMIT5
MonthOrder_AmountOrder_Diff 15 de enero de 2005 50 de marzo 170-30
Y aunque no lo creas, también puedes usar una función para encontrar la correlación entre el valor de dos columnas: cordón! Veamos si hay un correlación entre la cantidad de pedidos y la cantidad de usuarios registrados.
Seleccione el mes, corr (order_amount, user_registration_amount) FROM (SelectMonth, COUNT (*) as Order_amount del grupo de pedidos por mes) ORDERS_BY_MONTHINNER JOIN (SelectMonth, COUNT (*) asUSER_REGISTRATION_AMOUNTFROMUSER_ACTIVITYWHERACTIVITY="USER_REGISTRATION» Grupo por mes) USER_ACTIVITY_BY_MONTHONOrders_by_month .month=user_activity_by_month.MonthOrderby2Desclimit3
Mes Correnero 0,94 de febrero 0,97 de marzo 0,97
¡Parece que hay una alta correlación entre esos dos valores después de todo!
Previsiones y predicciones
Hablamos de muchos usos de Previsiones en detalle en nuestro Mejorando el mercado tripartito con el aprendizaje automático. Lo que no mencionamos es que datos de series temporales es una oportunidad perfecta para usar Aprendizaje automático algoritmos: son rápidos, efectivos y fáciles de ajustar a sus necesidades.
Ingeniería de funciones es clave para el rendimiento de su modelo de aprendizaje automático. La buena noticia es que hay muchas funciones comunes a todas datos de series temporales. Tenga en cuenta estas funciones la próxima vez que quiera añadir nuevas funciones a su series temporales modelo de previsión:
- Funciones de fecha y hora son clave. Añadir el nombre de la hora o el día de un evento es una función sencilla pero eficaz. Usar una biblioteca como vacaciones también es una gran herramienta para saber si un evento en tu series temporales ocurrió durante unas vacaciones.
- Clasifica los rangos de tiempo que significan algo para tu aplicación. Por ejemplo, empresas con un hora feliz ¡podría clasificar los eventos que ocurren durante esas horas como una característica!
- ¿Recuerdas el retraso? Obtener un valor retrasado (una cantidad con respecto a una unidad de tiempo anterior) fue muy útil para obtener información. Pero también es algo muy común rasgo en Aprendizaje automático modelos. Ayuda a tu modelo a saber que los eventos que ocurrieron recientemente serán similares a los que estás intentando pronosticar. ¡Obtener los valores retrasados de la última hora, del último día a la misma hora y de la semana pasada a la misma hora es una gran idea!
¿Cómo puedo empezar a hacer estas previsiones? Hay muchísimas bibliotecas que hacen su trabajo, pero profeta y órbita ¡son algunos de nuestros favoritos!
¿Y qué ganamos con eso? Previsiones?
- Una manera fácil de saber qué esperar en el futuro.
Podemos planificar con antelación los resultados de nuestras previsiones. Ahora sabemos si necesitaremos contratar a más personas para un turno o si necesitaremos abastecernos de un producto. Hágalo manualmente o con un Optimización de la oferta y la demanda algoritmo!

El día aún no ha terminado, pero tenemos una buena estimación sobre lo que ocurrirá en las horas restantes del día gracias a nuestro pronóstico.
- Detecta comportamientos anómalos.
Podemos detectar que valores extremadamente altos o extremadamente bajos son valores atípicos comparándolos con nuestra previsión. Son excelentes para detectar comportamiento sospechoso y creando alarmas en torno a las métricas clave de su empresa. Si tuviéramos un series temporales para el dinero que procesa nuestra empresa, podríamos detectar alguna anomalía gracias al inferior y superior límites de nuestras previsiones.

Parece que se está procesando una cantidad habitual de dinero en 12 P.M.! Sin embargo, puede que no pase nada: tal vez algunos de nuestros negocios estén en auge. Pero la cantidad de dólares procesados se reduce a cero en 17 P.M.! ¿Se ha interrumpido nuestro servicio? Es mejor asegurarse de configurar una alarma para cuando el valor sea extremadamente bajo.
- Comprenda las tendencias y la estacionalidad de sus datos.
Series temporales son una herramienta poderosa y nos permiten obtener información sobre sus tendencias y patrones. Es increíble ver si su negocio tuvo un resultado positivo tendencia en su tercer trimestre, o compruebe si hay una estacionalidad al importe de las ventas durante determinados meses.
Pero, ¿por qué limitarnos a los acontecimientos que ocurrieron en el pasado? Tendencias también se puede obtener de predicciones! De esta forma, anticiparás las tendencias futuras que aún no se han producido y comprobarás si el futuro cae dentro de un determinado tipo de estacionalidad.
Almacenamiento y representación
Hay varias formas de almacenar series temporales, y la elección correcta depende de su caso de uso personal. ¿Estás empezando y aún no tienes tantos eventos? Entonces está bien empezar con un sencillo base de datos relacional, como PostgresSQL o María DB. Probablemente tengas algún tipo de Base de datos para almacenar información empresarial clave (usuarios registrados, saldo monetario, cosas por el estilo).
Está bien almacenar Datos de series temporales ahí cuando acabas de empezar. Además, es muy útil tener tanto los datos relacionados con su empresa como sus Datos de series temporales en el mismo lugar, ya que te permite unirse ambos para obtener información más poderosa. Y si quieres sacarles un poco de rendimiento extra bases de datos, entonces hay muchísimas formas de ajustarlos específicamente para tratar con Datos de series temporales.
¿Estás rastreando toneladas de eventos al mismo tiempo desde fuentes completamente diferentes? Entonces, tal vez un Lago de datos es la respuesta.

UN Lago de datos ¡es una forma increíble de unir múltiples fuentes de datos! Ya sean datos de bases de datos relacionales, eventos de usuarios rastreados por una API o incluso datos no estructurados, como archivos de texto o binarios. Esto significa que transformando y uniendo todos esos datos juntos se vuelven más fáciles y nos permiten enriquecer nuestro datos de series temporales o utilízalo para enriquecer algún otro tipo de datos.
A pesar de que la mayoría Lagos de datos no están optimizados específicamente para series temporales, su rendimiento sigue siendo muy bueno. Lo mejor es que desde un Lago de datos está inherentemente distribuido y escalable, es fácil adaptarlo para soportar cualquier cantidad de series temporales eventos, sin importar su cantidad o granularidad.
A pesar de que puedes alojar tu propio Lago de datos, a menudo es más fácil alojarlo en Nube utilizando proveedores como Amazon, Microsoft o Google.
Pero, ¿qué pasa si su caso de uso requiere que tenga lo mejor de ambos mundos? Necesita la facilidad de uso de un Base de datos con consultas increíblemente rápidas, pero con la escalabilidad de un Lago de datos.
Ha habido mucho crecimiento y expectación bases de datos de series temporales. Su objetivo es ser la mejor solución para trabajar con este tipo de datos.
Estos bases de datos de series temporales saber y esperar que datos de series temporales se acumula extremadamente rápido. Están optimizados para funcionar automáticamente escala a las necesidades del usuario. Esto significa que ambos datos inserción y consultas están optimizados para ser lo más rápidos posible.
Esto no suena muy diferente de lo normal Base de datos NoSQL que suelen ser fácilmente escalables. Pero otra de sus prioridades es usabilidad: la mayoría Bases de datos NoSQL introducen su propio dialecto para consultar datos en lugar de usar SQL.
Pero bases de datos de series temporales como Escala temporal concéntrese mucho en usabilidad manteniendo un dialecto SQL para las consultas. ¡Ahora podemos transferir inmediatamente nuestros conocimientos sobre las consultas de una base de datos a otra!
Finalizando
Esperamos que esta publicación te haya hecho sentir un poco menos de miedo y más interesado en el mundo de datos de series temporales! Puede empezar a obtener información útil de un series temporales enseguida. Recuerda que está bien empezar de a poco haciendo un seguimiento de algunos eventos que te parezcan interesantes y almacenándolos en un base de datos relacional y usando Consultas SQL y ligero métodos de previsión para obtener información útil.
Una vez que esta sencilla solución ya no se adapte a sus necesidades, es hora de escalar. Un buen sistema distribuido y escalable para almacenar los datos es una buena inversión. Si está buscando algoritmos de previsión, ¿cuáles son más uso intensivo de recursos informáticos ¡entonces reforzar la instancia que los ejecuta es una gran idea!
¿Necesita ayuda para decidir cuál de estas soluciones es la adecuada? tú ¿el mejor? ¿Está buscando desarrollar una infraestructura de datos confiable, segura y rentable para su series temporales datos? ¿Buscas algo real resultados empresariales a partir de sus datos? ¿En DATOS DE CHUCOS siempre trabajamos con clientes que tienen necesidades comerciales completamente diferentes y diferentes tipos de datos, ¡y nuestras soluciones siempre están hechas a la medida!
Si esto te parece interesante Póngase en contacto con nosotros!
Referencias útiles y lecturas adicionales
Hay mucho más por hacer series temporales ¡más de lo que hemos hablado aquí! Hay muchos temas que no hemos mencionado, y los que sí mencionamos se pueden explorar con mayor profundidad.
Estos son algunos de los recursos que te recomendamos si quieres profundizar series temporales!
Kulkarni, Ajay. Booz, Ryan. «¿Qué diablos son los datos de series temporales (y por qué necesito una base de datos de series temporales)?». Blog de escala temporal, URL
Athanasopoulos, Jorge. «Hyndman, Rob J. Forecasting: principios y práctica». Editado por oTexts, 2018.
Kashnitsky, Yuri. «Análisis de series temporales en Python». mlcourse.ai — Curso abierto de aprendizaje automático, URL.
Hamilton, James Douglas. «Análisis de series temporales». Editado por Princeton University Press, 2020.
Freedman, Mike. «Datos de series temporales: por qué (y cómo) usar una base de datos relacional en lugar de NoSQL». Blog de escala temporal, URL.
Latest Insights
¿Cómo sabes que es hora de hacer evolucionar tu marca?
.webp)
El lenguaje natural se une a los datos en tiempo real: análisis sin cuellos de botella

No todos los optimizadores de medios online están diseñados de la misma manera
