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.
fuente
Respuestas:
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.
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.
fuente
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 ).
fuente
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 .
fuente
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.
EDIT2: OK, para responder la pregunta de "¿Qué técnicas puedo usar?"
Consulte esta página para obtener una pequeña introducción sobre cada uno: http://www.decisioncraft.com/dmdirect/forecastingtechnique.htm
fuente
Comenzó como un comentario, creció demasiado ...
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.
fuente
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
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.
Si puede, puede ser bueno realizar bootstrapping para obtener una mejor estimación de los errores de predicción.
fuente
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