Si tengo una tienda minorista y tengo una manera de medir cuántas personas ingresan a mi tienda cada minuto y marcan la hora de esos datos, ¿cómo puedo predecir el tráfico peatonal futuro?
He examinado los algoritmos de aprendizaje automático, pero no estoy seguro de cuál usar. En mis datos de prueba, una tendencia año tras año es más precisa en comparación con otras cosas que he probado, como KNN (con lo que creo que son parámetros sensibles y función de distancia).
Casi parece que esto podría ser similar al modelado financiero, donde se manejan datos de series temporales. ¿Algunas ideas?
machine-learning
time-series
usuario1132959
fuente
fuente
Respuestas:
El problema con modelos como KNN es que no tienen en cuenta la estacionalidad (variaciones de tendencia dependientes del tiempo). Para tenerlos en cuenta, debe utilizar el análisis de series temporales.
Para los datos de recuento, como el suyo, puede usar modelos de promedio móvil lineal regresivo automático generalizado (GLARMA). Afortunadamente, hay un paquete R que los implementa ( glarma ).
La viñeta es un buen recurso para la teoría detrás de la herramienta.
fuente
Creo que las respuestas de Christopher anteriores son completamente sensatas. Como un enfoque alternativo (o tal vez, además del consejo que ha dado), podría comenzar visualizando un poco los datos para tratar de tener una idea aproximada de lo que está sucediendo.
Si aún no lo ha hecho, puede intentar agregar el mes y el día de la semana como características; si termina con KNN, esto ayudará al modelo a mejorar la estacionalidad.
Como una forma diferente de asumir esto, podría considerar comenzar con un modelo muy, muy básico (como OLS) ... estos a menudo contribuyen en gran medida a generar predicciones razonables.
Finalmente, cuanto más sepamos sobre sus datos, más fácil será para nosotros ayudar a generar sugerencias. ¿Qué período de tiempo está observando? ¿Cuáles son las características que estás usando actualmente? etc.
Espero que esto ayude --
fuente
Puedes probar Neural Network. Puede encontrar 2 excelentes explicaciones sobre cómo aplicar NN en series de tiempo aquí y aquí .
Tenga en cuenta que es una buena práctica:
Debido a que lo que está buscando es un problema de regresión, las funciones de activación deben ser
linear
y nosigmoid
otanh
y su objetivo es minimizar elsum-of-squares error
(como oposición a la maximización denegative log-likelihood
un problema de clasificación).fuente
Como @Christopher Lauden mencionó anteriormente, el análisis de series de tiempo es más apropiado para este tipo de cosas. Sin embargo, si desea hacer un "enfoque de aprendizaje automático" más tradicional, algo que he hecho en el pasado es bloquear sus datos en ventanas de tiempo superpuestas como características, luego úsela para predecir los próximos días (o semanas) ) tráfico.
Su matriz de características sería algo así como:
¿Dónde
tI
está el tráfico en el díaI
? La característica que va a predecir es el tráfico el día después de la última columna. En esencia, use una ventana de tráfico para predecir el tráfico del día siguiente.Cualquier tipo de modelo ML funcionaría para esto.
Editar
En respuesta a la pregunta, "¿puede explicar cómo utiliza esta matriz de características":
La matriz de características tiene valores que indican el tráfico pasado durante un período de tiempo (por ejemplo, tráfico por hora durante 1 semana), y lo usamos para predecir el tráfico para un período de tiempo específico en el futuro. Tomamos nuestros datos históricos y construimos una matriz de características del tráfico histórico y la etiquetamos con el tráfico en algún momento en el futuro (por ejemplo, 2 días después de la ventana en la función). Usando algún tipo de modelo de aprendizaje automático de regresión, podemos tomar datos históricos de tráfico e intentar construir un modelo que pueda predecir cómo se movió el tráfico en nuestro conjunto de datos históricos. La presunción es que el tráfico futuro se parecerá al tráfico pasado.
fuente
Bueno, en primer lugar, ni siquiera usaría cosas como el aprendizaje automático sin tener un conocimiento profundo. Las cosas simplistas que haría si tuviera esta serie de tiempo son:
Estas dos cosas lo ayudarán a comprender lo que su conjunto de datos le está diciendo. Luego, con eso en la mano, probablemente estará en un mejor estado para usar algoritmos de aprendizaje automático.
Además, actualmente estoy trabajando en la construcción de algo en series de tiempo, y el uso de análisis de series de tiempo lo ayudará mucho más que el aprendizaje automático. Por ejemplo, existen algoritmos de reconocimiento de patrones que puede usar que usan datos de todos los días para mostrar patrones, y los que usan hasta 3 a 6 meses de datos para capturar un patrón.
fuente
Aconsejaría no usar una red neuronal o equivalente ya que, supongo, usted tiene un buen historial basado en su experiencia con la tienda (es decir, que probablemente haya tendencias diarias / estacionales y cierto nivel de suavidad) y Me imagino una cantidad relativamente pequeña de datos. Una mejor opción de la OMI sería optar por un método del núcleo, como un proceso gaussiano o SVM.
fuente
Dando vida a este hilo, ya que esto podría ser útil para otros que aterrizan aquí con preguntas similares.
Facebook lanzó recientemente y una fuente abierta de su herramienta de pronóstico interna llamada Profeta https://facebookincubator.github.io/prophet/
Está disponible como paquetes de R y Python, y demuestra ser una solución interesante para alguien con poca experiencia en Machine Learning. Sin embargo, algunos conocimientos adicionales de ML permiten ajustar y optimizar los modelos producidos.
Recomiendo probar al Profeta como primer paso. La victoria rápida de esta solución es la facilidad y la velocidad de la construcción y prueba del modelo: literalmente puede obtener una proyección de descenso en cuestión de minutos. Se comporta muy bien en series de tiempo, captando la estacionalidad de los datos disponibles "naturalmente".
Debajo del capó, es similar a un modelo aditivo generalizado (GAM): más detalles en el documento dedicado: https://facebookincubator.github.io/prophet/static/prophet_paper_20170113.pdf
fuente