¿Qué algoritmo podría usarse para predecir el uso de consumibles dados los datos de compras pasadas?

10

Pensando en un problema supuestamente simple pero interesante, me gustaría escribir un código para pronosticar los consumibles que necesitaré en el futuro cercano dado el historial completo de mis compras anteriores. Estoy seguro de que este tipo de problema tiene una definición más genérica y bien estudiada (alguien sugirió que esto está relacionado con algunos conceptos en sistemas ERP y similares).

Los datos que tengo son el historial completo de compras anteriores. Digamos que estoy viendo suministros de papel, mis datos se ven como (fecha, hojas):

2007-05-10   500
2007-11-11  1000
2007-12-18  1000
2008-03-25   500
2008-05-28  2000
2008-10-31  1500
2009-03-20  1500
2009-06-30  1000
2009-09-29   500
2009-12-16  1500
2010-05-31   500
2010-06-30   500
2010-09-30  1500
2011-05-31  1000

no se 'muestrea' a intervalos regulares, por lo que creo que no califica como datos de series temporales .

No tengo datos sobre los niveles de existencias reales cada vez. Me gustaría utilizar estos datos simples y limitados para predecir cuánto papel necesitaré en (por ejemplo) 3,6,12 meses.

Hasta ahora llegué a saber que lo que estoy buscando se llama Extrapolación y no mucho más :)

¿Qué algoritmo podría usarse en tal situación?

¿Y qué algoritmo, si es diferente del anterior, también podría aprovechar algunos puntos de datos más que dan los niveles de suministro actuales (por ejemplo, si sé que en la fecha XI me quedaban hojas de papel Y)?

Siéntase libre de editar la pregunta, el título y las etiquetas si conoce una mejor terminología para esto.

EDITAR: por lo que vale, intentaré codificar esto en python. Sé que hay muchas bibliotecas que implementan más o menos cualquier algoritmo por ahí. En esta pregunta, me gustaría explorar los conceptos y las técnicas que podrían usarse, con la implementación real que se dejará como ejercicio para el lector.

Lucas404
fuente
1
Estimados estadísticos, solo quiero informarles que esta pregunta no ha sido abandonada. Volveré a este problema específico tan pronto como encuentre tiempo y motivación (léase: el jefe me dice que haga esto) e investigaré sus preciosas respuestas y eventualmente marcaré una como aceptada (lo que para mí significará "realmente implementado").
Luke404

Respuestas:

12

La pregunta se refiere a la tasa de consumo versus tiempo. Esto requiere una regresión de la tasa contra el tiempo ( no una regresión de las compras totales contra el tiempo). La extrapolación se logra mediante la construcción de límites de predicción para futuras compras.

Varios modelos son posibles. Dado el traslado a una oficina sin papel (que ha estado en curso durante aproximadamente 25 años :-), podríamos adoptar un modelo exponencial (disminución). El resultado se representa mediante el siguiente diagrama de dispersión del consumo, en el que se dibuja la curva exponencial (ajustada mediante mínimos cuadrados ordinarios a los logaritmos del consumo) y sus límites de predicción del 95%. Se esperaría que los valores extrapolados se encuentren cerca de la línea y entre los límites de predicción con un 95% de confianza.

Figura

El eje vertical muestra páginas por día en una escala lineal. La línea continua azul oscura es el ajuste: es realmente exponencial pero se acerca notablemente a ser lineal. El efecto del ajuste exponencial aparece en las bandas de predicción, que en esta escala lineal se colocan asimétricamente alrededor del ajuste; en una escala logarítmica, serían simétricos.

Un modelo más preciso explicaría el hecho de que la información de consumo es más incierta durante períodos de tiempo más cortos (o cuando las compras totales son más pequeñas), lo que podría ajustarse utilizando mínimos cuadrados ponderados. Dada la variabilidad en estos datos y la gran igualdad del tamaño de todas las compras, no vale la pena el esfuerzo adicional.

Este enfoque acomoda los datos de inventario intermedio , que se pueden utilizar para interpolar las tasas de consumo en momentos intermedios. En tal caso, debido a que las cantidades intermedias de consumo podrían variar considerablemente, sería aconsejable el enfoque de mínimos cuadrados ponderados.

¿Qué pesos usar? Podríamos considerar el consumo de papel, que necesariamente se acumula en cantidades integrales de papel, como un recuento que varía independientemente de un día a otro. En períodos cortos, la varianza del conteo sería, por lo tanto, proporcional a la duración del período. La varianza del recuento por día sería inversamente proporcional a la duración del período. En consecuencia, las ponderaciones deben ser directamente proporcionales proporcionales a los períodos transcurridos entre los inventarios. Así, por ejemplo, el consumo de 1000 hojas entre 2007-05-10 y 2007-11-11 (aproximadamente 180 días) tendría casi cinco veces el peso del consumo de 1000 hojas entre 2007-11-11 y 2007-12- 18, un período de solo 37 días.

La misma ponderación se puede acomodar en los intervalos de predicción. Esto daría lugar a intervalos relativamente amplios para las predicciones de consumo durante un día en comparación con la predicción de consumo durante, digamos, tres meses.

Tenga en cuenta que estas sugerencias se centran en modelos simples y predicciones simples, apropiadas para la aplicación prevista y la gran variabilidad obvia en los datos. Si las proyecciones involucran, digamos, gastos de defensa para un país grande, nos gustaría acomodar muchas más variables explicativas, explicar la correlación temporal y proporcionar información mucho más detallada en el modelo.

whuber
fuente
Si se hubieran muestreado los datos a intervalos regulares, ¿ habría sido apropiado utilizar recuentos en lugar de tasas ?
MannyG
1
@MannyG Sí, pero solo porque los recuentos serían directamente proporcionales a las tasas, no porque sería apropiado usar los recuentos mismos. La necesidad de usar las tasas aquí es clara cuando consideramos lo que realmente significa predecir un valor futuro: debe especificar el intervalo de tiempo del consumo previsto. Por lo tanto, se predice una cantidad por vez para obtener una cantidad, lo que implica que esa cantidad debe ser una cantidad por unidad de tiempo: una tasa de consumo .
whuber
@whuber Disculpe pero no puedo entender claramente qué modelos se describen en su respuesta y en qué puntos uno termina y comienza otro. Tengo un problema similar y partes de su respuesta parecen exactamente lo que necesito, pero tengo que estudiar un poco más sobre este asunto y no puedo decir al leer su respuesta si está hablando de modelos distintos o ciertos que Se mejora gradualmente. ¿Existe un nombre formal para el modelo con los pesos que está describiendo? ¿Su primer modelo (disminución exponencial) involucra pesos? Gracias por adelantado.
Agis
@rensokuken Describo un modelo y una variación que pondera los datos. La segunda mitad de esta respuesta sugiere cómo determinar los pesos. No conozco ningún nombre formal más allá de "mínimos cuadrados ponderados".
whuber
@whuber ya veo. Al principio estás describiendo esto y luego, cuando agregas pesos, estás describiendo esto , ¿verdad? Además, ¿tiene algún recurso para mirar, relacionado con la solución particular y para un principiante en el pronóstico? Gracias por la aclaración.
Agis
5

Este es definitivamente el problema del aprendizaje automático (actualicé las etiquetas en su publicación). Lo más probable es que esto sea una regresión lineal . En resumen, la regresión lineal intenta recuperar la relación entre 1 variable dependiente y 1 o más variables independientes. La variable dependiente aquí es el uso de consumibles . Para variables independientes sugiero intervalos de tiempo entre compras. También puede agregar variables más independientes, por ejemplo, el número de personas que usaron consumibles en cada momento, o cualquier otra cosa que pueda afectar la cantidad de compras. Puede encontrar una buena descripción de la regresión lineal junto con la implementación en Python aquí .

En teoría, también es posible que no solo los intervalos de tiempo entre compras, sino también los momentos en el tiempo influyan en las cantidades. Por ejemplo, por alguna razón en enero la gente puede querer más papel que, por ejemplo, en abril. En este caso, no puede usar el número de mes como variable independiente en sí mismo debido a la naturaleza de la regresión lineal en sí (el número del mes es solo una etiqueta, pero se usará como cantidad). Entonces tienes 2 formas de superar esto.

Primero, puede agregar 12 variables adicionales , una para cada mes , y establecer cada variable en 1 si representa el mes de la compra y en 0 si no lo es. Luego usa la misma regresión lineal.

En segundo lugar, puede usar un algoritmo más sofisticado, como M5 ' , que es una combinación de regresión lineal y árboles de decisión (puede encontrar una descripción detallada de este algoritmo en Minería de datos: Herramientas y técnicas prácticas de aprendizaje automático ).

amigo
fuente
Depende de la cantidad de datos sobre el usuario que tenga. Si es suficiente (por ejemplo,> 100 transacciones durante> 1 año), puede entrenar un modelo para este usuario específico. De lo contrario, el modelo general sobre todos los usuarios puede brindarle mejores resultados. Puede usar la validación cruzada para medir el rendimiento de ambos enfoques.
amigo
5

no se 'muestrea' a intervalos regulares, por lo que creo que no califica como datos de series temporales.

Aquí hay una idea sobre cómo pronosticar las compras: considere los datos como una serie de demanda intermitente . Es decir, tiene una serie de tiempo muestreada a intervalos regulares, pero los valores positivos obviamente están espaciados irregularmente. Rob Hyndman tiene un buen artículo sobre el uso del método de Croston para pronosticar series de demanda intermitente. Mientras que también programo mucho en Python, se ahorrará un montón de tiempo de exploración usando el método de Croston, así como otros métodos de predicción de series de tiempo, fácilmente disponibles en excelente paquete de Rob R pronóstico .

Josh Hemann
fuente
1
+1 Por ofrecer una nueva idea. Sin embargo, leer detenidamente la introducción y las conclusiones del documento de Shenstone & Hyndman sugiere que el método de Croston generalmente no es muy bueno: el documento se centra en tratar de justificar y comprender un procedimiento popular que resulta ser limitado; lo mejor que los autores pueden decir es que a pesar de esto, "los pronósticos ... aún pueden ser útiles". Además, parece que este modelo no pudo acomodar los datos adicionales sobre "niveles de suministro actuales" según lo solicitado por el OP.
whuber
3

Estoy bastante seguro de que está intentando hacer un análisis de regresión para ajustar una línea a sus puntos de datos. Hay muchas herramientas para ayudarlo, MS Excel es la más accesible. Si desea lanzar su propia solución, lo mejor es repasar sus estadísticas ( aquí y aquí , tal vez). Una vez que ajusta una línea a sus datos, puede extrapolar hacia el futuro.

EDITAR: Aquí hay una captura de pantalla del ejemplo de Excel que mencioné en los comentarios a continuación. Las fechas en negrita son fechas aleatorias en el futuro que escribí yo mismo. Los valores en negrita en la columna B son valores extrapolados calculados por el sabor de la regresión exponencial de Excel. ingrese la descripción de la imagen aquí

EDIT2: OK, para responder la pregunta de "¿Qué técnicas puedo usar?"

  • regresión exponencial (mencionada anteriormente)
  • Método de Holt
  • Método de invierno
  • ARIMA

Consulte esta página para obtener una pequeña introducción sobre cada uno: http://www.decisioncraft.com/dmdirect/forecastingtechnique.htm


fuente
Esto me llevó a preguntarme: ¿cuáles son mis puntos de datos? no las compras individuales, eso no tendría en cuenta cuánto tiempo pasa entre ellas y, por lo tanto, el consumo total de un recurso determinado. ¿Tal vez debería interpolarlos para obtener un promedio a intervalos regulares (por ejemplo, cantidad por semana) y luego usarlo como una entrada de datos de series de tiempo para extrapolar datos futuros?
Piense en la diferencia en el tiempo como la diferencia en sus valores 'x' en una gráfica. La mayoría de los tipos de análisis de regresión tendrán en cuenta las diferencias variadas. Pruebe sus datos de muestra usando la función CRECIMIENTO en Excel, que usa regresión exponencial. Si cambia las fechas, sus valores proyectados cambiarán en consecuencia.
3

Comenzó como un comentario, creció demasiado ...

no se 'muestrea' a intervalos regulares, por lo que creo que no califica como datos de series temporales

Esta es una conclusión errónea: ciertamente es una serie temporal. Una serie de tiempo puede muestrearse de manera irregular, solo tiende a requerir enfoques diferentes de los habituales cuando lo es.

Este problema parece estar relacionado con problemas estocásticos como los niveles de las presas (el agua generalmente se usa a un ritmo bastante estable con el tiempo, a veces aumentando o disminuyendo más o menos rápidamente, mientras que otras veces es bastante estable), mientras que los niveles de las presas tienden a aumentar solo rápidamente (esencialmente en saltos), a medida que ocurre la lluvia. El uso del papel y los patrones de reabastecimiento pueden ser algo similares (aunque la cantidad solicitada puede tender a ser mucho más estable y en números mucho más redondeados que las cantidades de lluvia, y ocurrir cada vez que el nivel baja).

También se relaciona con el capital de la compañía de seguros (pero se invierte): aparte del capital inicial, el dinero de las primas (costos operativos netos) y las inversiones ingresan de manera bastante constante (a veces más o menos), mientras que los pagos de las pólizas de seguro tienden a hacerse en cantidades relativamente grandes. cantidades

Ambas cosas han sido modeladas y pueden proporcionar una pequeña idea de este problema.

Glen_b -Reinstate a Monica
fuente
-1

deberías echar un vistazo a WEKA. Es una herramienta y una API Java con un conjunto de algoritmos de aprendizaje automático. En particular, debe buscar algoritmos de clasificación.

Buena suerte


fuente
¿Cómo me daría un algoritmo de clasificación una predicción cuantitativa?
@ Luke404: Weka tiene 3 tipos de algoritmos (clasificación, agrupación y minería de asociaciones), y decidieron poner la regresión en la sección de clasificación. Pero en general tiene razón, la clasificación y la predicción cuantitativa son cosas un poco diferentes.
amigo el
-1

Me gustaría utilizar lineal de mínimos cuadrados para ajustar un modelo para el consumo acumulativo (es decir, total de páginas por fecha de funcionamiento). Una suposición inicial sería utilizar un polinomio de primer grado. Sin embargo, los residuos indican que el primer grado no está ajustando los datos en el ejemplo, por lo que el siguiente paso lógico sería aumentarlo a un ajuste de segundo grado (es decir, cuadrático). Esto elimina la curvatura en los residuos, y el coeficiente ligeramente negativo para el término cuadrado significa que la tasa de consumo está disminuyendo con el tiempo, lo que parece intuitivo dado que la mayoría de las personas probablemente tienden a usar menos papel con el tiempo. Para estos datos, no creo que necesite ir más allá de un ajuste de segundo grado, ya que puede comenzar a sobreajustar y la extrapolación resultante puede no tener sentido.

Puede ver los ajustes (incluida la extrapolación) y los residuos en los gráficos a continuación.

ajuste residual

Si puede, puede ser bueno realizar bootstrapping para obtener una mejor estimación de los errores de predicción.

dnlbrky
fuente
Debido a que los residuos en el consumo acumulado estarían fuertemente correlacionados, este método no parece estadísticamente justificado. Usando un ajuste cuadrático solo documentos sobre este problema fundamental; No puede curarlo.
whuber
-2

Creo que puede obtener sus datos utilizando la investigación de operaciones .

¿Por qué no intenta encontrar algunas ecuaciones que toman como variables la cantidad de papel utilizado por período de tiempo, los usuarios del papel, etc.?


fuente