00:01 Introducción
02:18 El pronóstico moderno
06:37 Volviéndose probabilístico
11:58 La historia hasta ahora
15:10 Plan probable para hoy
17:18 Bestiario de predicciones
28:10 Métricas - CRPS - 1/2
33:21 Métricas - CRPS - 2/2
37:20 Métricas - Monge-Kantorovich
42:07 Métricas - likelihood - 1/3
47:23 Métricas - likelihood - 2/3
51:45 Métricas - likelihood - 3/3
55:03 Distribuciones 1D - 1/4
01:01:13 Distribuciones 1D - 2/4
01:06:43 Distribuciones 1D - 3/4
01:15:39 Distribuciones 1D - 4/4
01:18:24 Generadores - 1/3
01:24:00 Generadores - 2/3
01:29:23 Generadores - 3/3
01:37:56 Por favor, espere mientras lo ignoramos
01:40:39 Conclusión
01:43:50 Próxima clase y preguntas de la audiencia

Descripción

Un pronóstico se dice que es probabilístico, en lugar de determinista, si contiene un conjunto de probabilidades asociadas con todos los posibles resultados futuros, en lugar de señalar un resultado particular como “el” pronóstico. Los pronósticos probabilísticos son importantes siempre que la incertidumbre sea irreducible, lo cual casi siempre es el caso cuando se trata de sistemas complejos. Para las cadenas de suministro, los pronósticos probabilísticos son esenciales para tomar decisiones sólidas frente a condiciones futuras inciertas.

Transcripción completa

Slide 1

Bienvenidos a esta serie de clases sobre supply chain. Soy Joannes Vermorel y hoy presentaré “Forecast Probabilístico para Supply Chain”. El pronóstico probabilístico es uno de los cambios de paradigma más importantes, si no el más importante, en más de un siglo de ciencia de pronósticos estadísticos. Sin embargo, a nivel técnico, en su mayoría es más de lo mismo. Si estamos viendo modelos de pronóstico probabilístico o sus alternativas no probabilísticas, son las mismas estadísticas, las mismas probabilidades. El pronóstico probabilístico refleja un cambio en la forma en que debemos pensar sobre el pronóstico en sí mismo. El cambio más grande que trae el pronóstico probabilístico a la cadena de suministro no se encuentra en la ciencia del pronóstico. El cambio más grande se encuentra en la forma en que se operan y optimizan las cadenas de suministro en presencia de modelos predictivos.

El objetivo de la clase de hoy es ofrecer una introducción técnica al pronóstico probabilístico. Al final de esta clase, deberías poder entender de qué se trata el pronóstico probabilístico, cómo diferenciarlo de los pronósticos no probabilísticos, cómo evaluar la calidad de un pronóstico probabilístico e incluso ser capaz de diseñar tu propio modelo de pronóstico probabilístico básico. Hoy no cubriré la explotación de los pronósticos probabilísticos con fines de toma de decisiones en el contexto de las cadenas de suministro. El enfoque actual se centra exclusivamente en establecer los fundamentos del pronóstico probabilístico. La mejora de los procesos de toma de decisiones en la cadena de suministro a través de los pronósticos probabilísticos se tratará en la próxima clase.

Slide 2

Para entender la importancia de los pronósticos probabilísticos, es necesario tener un poco de contexto histórico. La forma moderna de pronóstico, el pronóstico estadístico, en contraposición a la adivinación, surgió a principios del siglo XX. El pronóstico surgió en un contexto científico más amplio donde las ciencias duras, unas pocas disciplinas muy exitosas como la cinética, el electromagnetismo y la química, lograron resultados aparentemente precisos de manera arbitraria. Estos resultados se obtuvieron a través de lo que en esencia fue un esfuerzo de varios siglos, que se remonta, por ejemplo, a Galileo Galilei, en el desarrollo de tecnologías superiores que permitirían formas superiores de medición. Mediciones más precisas, a su vez, alimentarían el desarrollo científico al permitir a los científicos probar y desafiar sus teorías y predicciones de manera aún más precisa.

En este contexto más amplio donde algunas ciencias tuvieron un éxito increíble, el campo emergente del pronóstico a principios del siglo XX se propuso esencialmente replicar lo que esas ciencias duras habían logrado en el ámbito de la economía. Por ejemplo, si observamos a pioneros como Roger Babson, uno de los padres del pronóstico económico moderno, estableció una exitosa empresa de pronóstico económico en Estados Unidos a principios del siglo XX. El lema de la empresa era literalmente: “Para cada acción, hay una reacción igual y opuesta”. La visión de Babson era trasladar el éxito de la física newtoniana al ámbito de la economía y, en última instancia, lograr resultados igualmente precisos.

Sin embargo, después de más de un siglo de pronósticos académicos estadísticos, en los que operan las cadenas de suministro, la idea de lograr resultados arbitrariamente precisos, que se traduce en términos de pronóstico en lograr pronósticos arbitrariamente precisos, sigue siendo tan esquiva como lo era hace más de un siglo. Durante un par de décadas, ha habido voces en el mundo más amplio de la cadena de suministro que han planteado preocupaciones de que estos pronósticos nunca serán lo suficientemente precisos. Ha habido un movimiento, como la fabricación ajustada, que entre otros ha abogado por disminuir en gran medida la dependencia de las cadenas de suministro de estos pronósticos poco confiables. De eso se trata el just-in-time: si puedes fabricar y servir justo a tiempo todo lo que el mercado necesita, entonces de repente ya no necesitas un pronóstico confiable y preciso.

En este contexto, el pronóstico probabilístico es una rehabilitación del pronóstico, pero con ambiciones mucho más modestas. El pronóstico probabilístico parte de la idea de que existe una incertidumbre irreducible sobre el futuro. Todos los futuros son posibles, simplemente no son igualmente posibles, y el objetivo del pronóstico probabilístico es evaluar comparativamente la probabilidad respectiva de todos esos futuros alternativos, no colapsar todos los futuros posibles en un solo futuro.

Slide 3

La perspectiva newtoniana sobre los pronósticos económicos estadísticos ha fracasado en esencia. La opinión entre nuestra comunidad de que los pronósticos arbitrariamente precisos pueden lograrse alguna vez ha desaparecido en gran medida. Sin embargo, curiosamente, casi todo el software de cadena de suministro y una gran cantidad de prácticas de gestión de cadena de suministro están en realidad arraigados en su núcleo en la suposición de que estos pronósticos estarán disponibles en última instancia.

Por ejemplo, la Planificación de Ventas y Operaciones (S&OP) se basa en la idea de que se puede lograr una visión unificada y cuantificada de la empresa si todas las partes interesadas se unen y colaboran en la construcción de un pronóstico conjunto. De manera similar, el open-to-buy también es esencialmente un método basado en la idea de que es posible construir pronósticos precisos desde arriba hacia abajo. Además, incluso cuando observamos muchas herramientas que son muy comunes cuando se trata de pronósticos y planificación en el ámbito de las cadenas de suministro, como la inteligencia empresarial y las hojas de cálculo, esas herramientas están orientadas en gran medida hacia un pronóstico de series de tiempo de un solo punto. Esencialmente, la idea es que puedes extender tus datos históricos hacia el futuro, teniendo un punto por período de tiempo de interés. Estas herramientas, por diseño, tienen una enorme cantidad de fricción cuando se trata de comprender incluso el tipo de cálculos que están involucrados en un pronóstico probabilístico, donde no hay un solo futuro sino todos los futuros posibles.

De hecho, el pronóstico probabilístico no se trata de decorar un pronóstico clásico con algún tipo de incertidumbre. El pronóstico probabilístico tampoco se trata de establecer una lista corta de escenarios, siendo cada escenario un pronóstico clásico por sí mismo. Los métodos de cadena de suministro convencionales no funcionan con pronósticos probabilísticos porque, en su núcleo, se basan implícita o explícitamente en la idea de que existe algún tipo de pronóstico de referencia, y que todo girará en torno a este pronóstico de referencia. En cambio, el pronóstico probabilístico es la evaluación numérica frontal de todos los futuros posibles.

Naturalmente, estamos limitados por la cantidad de recursos informáticos que tenemos, por lo que cuando digo “todos los futuros posibles”, en la práctica, solo consideraremos una cantidad finita de futuros. Sin embargo, teniendo en cuenta el tipo de potencia de procesamiento moderna que tenemos, la cantidad de futuros que realmente podemos considerar se extiende hasta los millones. Ahí es donde la inteligencia empresarial y las hojas de cálculo tienen dificultades. No están diseñados para el tipo de cálculos que se requieren al tratar con pronósticos probabilísticos. Este es un problema de diseño de software. Verás, una hoja de cálculo tiene acceso a las mismas computadoras y la misma potencia de procesamiento, pero si el software no viene con el tipo correcto de diseño, algunas tareas pueden ser increíblemente difíciles de lograr, incluso si tienes una gran cantidad de potencia de procesamiento.

Por lo tanto, desde una perspectiva de la cadena de suministro, el mayor desafío para adoptar la previsión probabilística es abandonar décadas de herramientas y prácticas que se basan en un objetivo muy ambicioso, pero creo que equivocado, que es lograr pronósticos arbitrariamente precisos. Me gustaría señalar de inmediato que sería increíblemente equivocado pensar en la previsión probabilística como una forma de lograr pronósticos más precisos. Este no es el caso. Los pronósticos probabilísticos no son más precisos y no se pueden utilizar como un reemplazo directo de los pronósticos clásicos y convencionales. La superioridad de los pronósticos probabilísticos radica en las formas en que se pueden explotar esos pronósticos con fines de cadena de suministro, especialmente para la toma de decisiones en el contexto de las cadenas de suministro. Sin embargo, nuestro objetivo hoy es simplemente comprender de qué se tratan esos pronósticos probabilísticos, y la explotación de esos pronósticos probabilísticos se abordará en la próxima conferencia.

Slide 5

Esta conferencia es parte de una serie de conferencias sobre cadena de suministro. Estoy tratando de mantener esas conferencias bastante independientes entre sí. Sin embargo, estamos llegando a un punto en el que realmente ayudará a la audiencia si se ven esas conferencias en secuencia, ya que estaré haciendo referencia con frecuencia a lo que se presentó en conferencias anteriores.

Entonces, esta conferencia es la tercera del quinto capítulo, que está dedicado a modelado predictivo. En el primer capítulo de esta serie, presenté mis puntos de vista sobre las cadenas de suministro como campo de estudio y práctica. En el segundo capítulo, presenté metodologías. De hecho, la mayoría de las situaciones de la cadena de suministro son adversas por naturaleza, y esas situaciones tienden a derrotar a las metodologías ingenuas. Necesitamos tener metodologías adecuadas si queremos lograr algún grado de éxito en el ámbito de las cadenas de suministro.

El tercer capítulo estuvo dedicado a la parsimonia de la cadena de suministro, con un enfoque exclusivo en el problema y la naturaleza misma del desafío al que nos enfrentamos en diversas situaciones que abarcan las cadenas de suministro. La idea detrás de la parsimonia de la cadena de suministro es ignorar por completo todos los aspectos que están en el lado de la solución, ya que solo queremos poder mirar exclusivamente el problema antes de elegir la solución que queremos usar para abordarlo.

En el cuarto capítulo, realicé una encuesta de una amplia gama de ciencias auxiliares. Estas ciencias no son la cadena de suministro en sí; son otros campos de investigación que son adyacentes o de apoyo. Sin embargo, creo que un dominio básico de esas ciencias auxiliares es un requisito para la práctica moderna de las cadenas de suministro.

Finalmente, en el quinto capítulo, nos adentramos en las técnicas que nos permiten cuantificar y evaluar el futuro, especialmente para producir declaraciones sobre el futuro. De hecho, todo lo que hacemos en la cadena de suministro refleja en cierto grado una cierta anticipación del futuro. Si podemos anticipar el futuro de una mejor manera, entonces podremos tomar mejores decisiones. De eso trata este quinto capítulo: obtener ideas cuantitativamente mejores sobre el futuro. En este capítulo, los pronósticos probabilísticos representan una forma fundamental en nuestro enfoque para abordar el futuro.

Slide 6

El resto de esta conferencia se divide en cuatro secciones de longitud desigual. Primero, vamos a revisar los tipos más comunes de pronósticos, más allá del clásico. Aclararé lo que quiero decir con pronóstico clásico en un momento. De hecho, muy pocas personas en los círculos de la cadena de suministro se dan cuenta de que hay muchas opciones sobre la mesa. El propio pronóstico probabilístico debe entenderse como un paraguas que cubre un conjunto bastante diverso de herramientas y técnicas.

En segundo lugar, presentaremos métricas para evaluar la calidad de los pronósticos probabilísticos. No importa lo que suceda, un pronóstico probabilístico bien diseñado siempre te dirá: “Bueno, había una probabilidad de que esto sucediera”. Entonces, la pregunta es: ¿cómo distingues lo que es realmente un buen pronóstico probabilístico de uno malo? Ahí es donde entran en juego esas métricas. Hay métricas especializadas que están completamente dedicadas a la situación de pronóstico probabilístico.

En tercer lugar, realizaremos un examen en profundidad de las distribuciones unidimensionales. Son el tipo más simple de distribución y, aunque tienen limitaciones obvias, también son el punto de entrada más fácil al ámbito del pronóstico probabilístico.

En cuarto lugar, tocaremos brevemente los generadores, que a menudo se conocen como métodos de Monte Carlo. De hecho, hay una dualidad entre los generadores y los estimadores de densidad de probabilidad, y esos métodos de Monte Carlo nos darán un camino para abordar problemas de mayor dimensión y formas de pronóstico probabilístico.

Slide 7

Hay múltiples tipos de pronósticos, y este aspecto no debe confundirse con el hecho de que hay múltiples tipos de modelos de pronóstico. Cuando los modelos no pertenecen al mismo tipo o clase de pronóstico, ni siquiera están resolviendo los mismos problemas. El tipo más común de pronóstico es el pronóstico puntual. Como ejemplo, si digo que mañana las ventas totales en euros en una tienda serán de 10,000 euros para el agregado de ventas totales del día, estoy haciendo un pronóstico puntual sobre lo que sucederá en esta tienda mañana. Si repito este ejercicio y comienzo a construir un pronóstico de series de tiempo haciendo una declaración para el día de mañana, luego otra declaración para el día después de mañana, tendré múltiples puntos de datos. Sin embargo, todo eso sigue siendo un pronóstico puntual porque, esencialmente, estamos eligiendo nuestra batalla al elegir un cierto nivel de agregación y, en ese nivel de agregación, nuestros pronósticos nos dan un solo número, que se supone que es la respuesta.

Ahora, dentro del tipo de pronóstico puntual, hay múltiples subtipos de pronósticos dependiendo de qué métrica se esté optimizando. La métrica más comúnmente utilizada es probablemente el error cuadrático, por lo que tenemos un error cuadrático medio, que te da el pronóstico promedio. Por cierto, este tiende a ser el pronóstico más utilizado porque es el único pronóstico que es al menos algo aditivo. Ningún pronóstico es completamente aditivo; siempre viene con toneladas de advertencias. Sin embargo, algunos pronósticos son más aditivos que otros, y claramente, los pronósticos promedio tienden a ser los más aditivos de todos. Si quieres tener un pronóstico promedio, lo que tienes es esencialmente un pronóstico puntual que se optimiza en función del error cuadrático medio. Si usas otra métrica, como el error absoluto, y optimizas en función de eso, lo que obtendrás es un pronóstico mediano. Si usas la función de pérdida pinball que presentamos en la primera conferencia de esta quinta serie de conferencias de la cadena de suministro, lo que obtendrás es un pronóstico de cuantil. Por cierto, como podemos ver hoy, estoy clasificando los pronósticos de cuantil como solo otro tipo de pronóstico puntual. De hecho, con el pronóstico de cuantil, esencialmente obtienes una sola estimación. Esta estimación puede tener un sesgo, que es intencional. De eso se trata los cuantiles, pero aún así, en mi opinión, califica completamente como un pronóstico puntual porque la forma del pronóstico es solo un punto único.

Ahora, está el pronóstico de conjunto, que devuelve un conjunto de puntos en lugar de un solo punto. Hay una variación dependiendo de cómo construyas el conjunto. Si observamos un pronóstico PAC, PAC significa Probablemente Aproximadamente Correcto. Este es esencialmente un marco introducido por Valiant hace aproximadamente dos décadas, y establece que el conjunto, que es tu predicción, tiene una cierta probabilidad de que se observe un resultado dentro de tu conjunto que estás prediciendo con una cierta probabilidad. El conjunto que produces en realidad son todos los puntos que caen dentro de una región caracterizada por una distancia máxima a un punto de referencia. De alguna manera, la perspectiva PAC sobre el pronóstico ya es un pronóstico de conjunto porque la salida ya no es un punto. Sin embargo, lo que tenemos sigue siendo un punto de referencia, un resultado central, y lo que tenemos es una distancia máxima a este punto central. Simplemente estamos diciendo que hay una cierta probabilidad especificada de que el resultado finalmente se observe dentro de nuestro conjunto de predicción.

El enfoque PAC se puede generalizar a través del enfoque conforme. La predicción conforme establece: “Aquí tienes un conjunto, y te digo que hay esta probabilidad dada de que el resultado esté dentro de este conjunto”. Donde la predicción conforme generaliza el enfoque PAC es que las predicciones conformes ya no están vinculadas a tener un punto de referencia y la distancia al punto de referencia. Puedes darle forma a este conjunto de la manera que quieras, y seguirás siendo parte del paradigma de pronóstico de conjunto.

El futuro se puede representar de una manera aún más detallada y compleja: el pronóstico de distribución. El pronóstico de distribución te proporciona una función que mapea todos los posibles resultados a sus respectivas densidades de probabilidad locales. De alguna manera, comenzamos con el pronóstico puntual, donde el pronóstico es solo un punto. Luego pasamos al pronóstico de conjunto, donde el pronóstico es un conjunto de puntos. Finalmente, el pronóstico de distribución es técnicamente una función o algo que generaliza una función. Por cierto, cuando uso el término “distribución” en esta conferencia, siempre se referirá implícitamente a una distribución de probabilidades. Los pronósticos de distribución representan algo aún más rico y complejo que un conjunto, y eso será nuestro enfoque hoy.

Hay dos formas comunes de abordar las distribuciones: el enfoque de densidad y el enfoque de generador. Cuando digo “densidad”, básicamente me refiero a la estimación local de las densidades de probabilidad. El enfoque de generador implica un proceso generativo de Monte Carlo que genera resultados, llamados desviaciones, que se supone que reflejan la misma densidad de probabilidad local. Estas son las dos formas principales de abordar los pronósticos de distribución.

Más allá de la distribución, tenemos construcciones de orden superior. Esto puede ser un poco complicado de entender, pero mi punto aquí, aunque no vamos a cubrir las construcciones de orden superior hoy, es simplemente señalar que el pronóstico probabilístico, cuando se centra en generar distribuciones, no es el objetivo final; es solo un paso, y hay más. Las construcciones de orden superior son importantes si queremos poder obtener respuestas satisfactorias a situaciones simples.

Para entender de qué se tratan las construcciones de orden superior, consideremos una tienda minorista simple con una política de descuento para productos que se acercan a su fecha de vencimiento. Obviamente, la tienda no quiere tener inventario muerto en sus manos, por lo que se aplica automáticamente un descuento cuando los productos están muy cerca de su fecha de vencimiento. La demanda que generaría esta tienda depende en gran medida de esta política. Por lo tanto, el pronóstico que nos gustaría tener, que puede ser una distribución que represente las probabilidades para todos los posibles resultados, debería depender de esta política. Sin embargo, esta política es un objeto matemático; es una función. Lo que nos gustaría tener no es un pronóstico probabilístico, sino algo más meta: una construcción de orden superior que, dada una política, pueda generar la distribución resultante.

Desde una perspectiva de la cadena de suministro, cuando pasamos de un tipo de pronóstico al siguiente, obtenemos mucha más información. Esto no debe confundirse con hacer que el pronóstico sea más preciso; se trata de acceder a un tipo diferente de información en su totalidad, como ver el mundo en blanco y negro y de repente adquirir la capacidad de ver colores en lugar de simplemente obtener una mayor resolución. En cuanto a las herramientas, las hojas de cálculo y las herramientas de inteligencia empresarial son bastante adecuadas para lidiar con pronósticos puntuales. Dependiendo del tipo de pronóstico de conjunto que estés considerando, pueden ser adecuadas, pero ya estás estirando sus capacidades de diseño. En realidad, no están diseñadas para lidiar con ningún tipo de pronóstico de conjunto sofisticado más allá del obvio, donde simplemente estás definiendo un rango con valores mínimos y máximos en el rango de valores esperados. Veremos que, esencialmente, si queremos tener alguna posibilidad de trabajar con pronósticos de distribución o incluso construcciones de orden superior, necesitamos un tipo diferente de herramientas en su totalidad, aunque esto debería aclararse en un momento.

Slide 8

Para comenzar con los pronósticos probabilísticos, intentemos caracterizar qué hace que un buen pronóstico probabilístico. De hecho, no importa lo que suceda, un pronóstico probabilístico te dirá que, sin importar qué tipo de resultado observes, había una probabilidad de que esto sucediera. Entonces, bajo esas condiciones, ¿cómo diferencias un buen pronóstico probabilístico de uno malo? Ciertamente no es porque sea probabilístico que de repente todos los modelos de pronóstico sean buenos.

Esto es exactamente de lo que tratan las métricas dedicadas a los pronósticos probabilísticos, y el Continuous Ranked Probability Score (CRPS) es la generalización del error absoluto para los pronósticos probabilísticos unidimensionales. Lamento mucho este nombre horrendo: el CRPS. No se me ocurrió esta terminología; me la entregaron. La fórmula del CRPS se muestra en la pantalla. Esencialmente, la función F es la función de distribución acumulativa; es el pronóstico probabilístico que se está haciendo. El punto x es la observación real, y el valor del CRPS es algo que se calcula entre tu pronóstico probabilístico y la única observación que acabas de hacer.

Podemos ver que, esencialmente, el punto se convierte en un pronóstico cuasi-probabilístico propio a través de la función escalón de Heaviside. Introducir la función escalón de Heaviside es simplemente el equivalente de convertir el punto que acabamos de observar en una distribución de probabilidad de Dirac, que es una distribución que concentra toda la masa de probabilidad en un solo resultado. Luego tenemos una integral, y esencialmente, el CRPS está haciendo algún tipo de coincidencia de formas. Estamos comparando la forma de la función de distribución acumulativa (CDF) con la forma de otra CDF, la asociada con la Dirac que coincide con el punto que observamos.

Desde la perspectiva de un pronóstico puntual, el CRPS es desconcertante no solo por la fórmula complicada, sino también porque esta métrica toma dos argumentos que no tienen el mismo tipo. Uno de esos argumentos es una distribución, y el otro es solo un punto de datos. Entonces, aquí tenemos una asimetría que no existe con la mayoría de las otras métricas de pronóstico puntual, como el error absoluto y el error cuadrático medio. En el CRPS, esencialmente estamos comparando un punto con una distribución.

Si queremos entender más sobre lo que calculamos con el CRPS, una observación interesante es que el CRPS tiene la misma unidad que la observación. Por ejemplo, si x se expresa en euros, y el valor del CRPS entre F y x también es homogéneo en términos de unidades a euros, es por eso que digo que el CRPS es una generalización del error absoluto. Por cierto, si colapsas tu pronóstico probabilístico en una Dirac, el CRPS te da un valor que es exactamente el error absoluto.

Slide 9

Aunque el CRPS puede parecer intimidante y complicado, la implementación es en realidad bastante sencilla. En la pantalla hay un pequeño script de Envision que ilustra cómo se puede utilizar el CRPS desde la perspectiva de un lenguaje de programación. Envision es un lenguaje de programación específico del dominio dedicado a la optimización predictiva de las cadenas de suministro, desarrollado por Lokad. En estas conferencias, estoy utilizando Envision por claridad y concisión. Sin embargo, ten en cuenta que no hay nada único en Envision; los mismos resultados se podrían obtener en cualquier lenguaje de programación, ya sea Python, Java, JavaScript, C#, F# o cualquier otro. Mi punto es que solo tomaría más líneas de código, así que me quedo con Envision. Todos los fragmentos de código presentados aquí en esta conferencia y, por cierto, en las anteriores también, son independientes y completos. Técnicamente podrías copiar y pegar este código y se ejecutaría. No hay módulos involucrados, no hay código oculto y no hay entorno que configurar.

Entonces, volviendo al fragmento de código. En las líneas uno y dos, definimos distribuciones unidimensionales. Volveré a explicar cómo funcionan realmente esas distribuciones unidimensionales en Envision, pero aquí tenemos dos distribuciones: una es una distribución de Poisson, que es una distribución discreta unidimensional, y la segunda en la línea dos es la misma distribución de Poisson pero desplazada dos unidades hacia la derecha. Eso es lo que significa el “+2”. En la línea tres, calculamos la distancia CRPS entre una distribución y el valor 3, que es un número. Así que aquí estamos encontrando esta asimetría en términos de tipos de datos de los que estaba hablando. Luego, los resultados se muestran en la parte inferior, como puedes ver en la parte inferior de la pantalla.

En la línea cuatro, calculamos el CRPS entre la distribución A y la distribución B. Aunque la definición clásica de CRPS es entre una distribución y un solo punto, es completamente sencillo generalizar esta definición a un par de distribuciones. Lo único que tienes que hacer es tomar la misma fórmula para el CRPS y reemplazar la función de paso de Heaviside por la función de distribución acumulativa de la segunda distribución. Las declaraciones “show” de las líneas tres a seis resultan en la visualización que puedes ver en la parte inferior de la pantalla, que es literalmente una captura de pantalla.

Entonces, vemos que usar CRPS no es más difícil o complicado que usar cualquier función especial, como la función coseno. Obviamente, es un poco molesto si tienes que volver a implementar el coseno tú mismo, pero considerando todo, no hay nada especialmente complicado en CRPS. Ahora, sigamos adelante.

Slide 10

El problema de Monge-Kantorovich nos da una idea de cómo abordar el proceso de coincidencia de formas que se produce en CRPS pero con dimensiones superiores. Recuerda, CRPS está realmente limitado a la dimensión uno. La coincidencia de formas es conceptualmente algo que se podría generalizar a cualquier número de dimensiones, y el problema de Monge-Kantorovich es muy interesante, especialmente porque, en su esencia, es en realidad un problema de cadena de suministro.

El problema de Monge-Kantorovich, originalmente no relacionado con la previsión probabilística, fue introducido por el científico francés Gaspard Monge en un memorando de 1781 titulado “Mémoire sur la théorie des déblais et des remblais”, que podría traducirse aproximadamente como “Memoria sobre la teoría de mover tierra”. Una forma de entender el problema de Monge-Kantorovich es pensar en una situación en la que tenemos una lista de minas, denotadas como M en la pantalla, y una lista de fábricas, denotadas como F. Las minas producen mineral y las fábricas consumen mineral. Lo que queremos es construir un plan de transporte, T, que mapee todo el mineral producido por las minas al consumo requerido por las fábricas.

Monge definió la letra C como el costo de mover todo el mineral de las minas a las fábricas. El costo es la suma para transportar todo el mineral desde cada mina a cada fábrica, pero obviamente hay formas muy ineficientes de transportar el mineral. Entonces, cuando decimos que tenemos un costo específico, nos referimos a que el costo refleja el plan de transporte óptimo. Esta letra C representa el mejor costo alcanzable al considerar el plan de transporte óptimo.

Este es esencialmente un problema de la cadena de suministro que ha sido estudiado extensamente a lo largo de los siglos. En la formulación completa del problema, hay restricciones en T. Por razones de concisión, no incluí todas las restricciones en la pantalla. Hay una restricción, por ejemplo, de que el plan de transporte no debe exceder la capacidad de producción de cada mina, y cada fábrica debe estar completamente satisfecha, teniendo una asignación que coincida con sus requisitos. Hay muchas restricciones, pero son bastante verbosas, por lo que no las incluí en la pantalla.

Ahora, si interpretamos la lista de minas y la lista de fábricas como dos distribuciones de probabilidad, tenemos una forma de convertir una métrica puntual en una métrica de distribución. Esta es una idea clave sobre la coincidencia de formas en dimensiones superiores a través de la perspectiva de Monge-Kantorovich. Otro término para esta perspectiva es la métrica de Wasserstein, aunque principalmente se refiere al caso no discreto, que es de menor interés para nosotros.

La perspectiva de Monge-Kantorovich nos permite transformar una métrica puntual, que puede calcular la diferencia entre dos números o dos vectores de números, en una métrica que se aplica a distribuciones de probabilidad que operan en el mismo espacio. Este es un mecanismo muy poderoso. Sin embargo, el problema de Monge-Kantorovich es difícil de resolver y requiere una capacidad de procesamiento sustancial. Durante el resto de la conferencia, me centraré en técnicas que son más fáciles de implementar y ejecutar.

Slide 11

La perspectiva bayesiana consiste en mirar una serie de observaciones desde el punto de vista de una creencia previa. La perspectiva bayesiana se entiende generalmente en oposición a la perspectiva frecuentista, que estima la frecuencia de los resultados basándose en observaciones reales. La idea es que la perspectiva frecuentista no viene con creencias previas. Por lo tanto, la perspectiva bayesiana nos brinda una herramienta conocida como verosimilitud para evaluar el grado de sorpresa al considerar las observaciones y un modelo dado. El modelo, que es esencialmente un modelo de previsión probabilística, es la formalización de nuestras creencias previas. La perspectiva bayesiana nos brinda una forma de evaluar un conjunto de datos con respecto a un modelo de previsión probabilística. Para entender cómo se hace esto, debemos comenzar con la verosimilitud para un solo punto de datos. La verosimilitud, cuando tenemos una observación x, es la probabilidad de observar x según el modelo. Aquí, se asume que el modelo está completamente caracterizado por theta, los parámetros del modelo. La perspectiva bayesiana generalmente asume que el modelo tiene algún tipo de forma paramétrica, y theta es el vector completo de todos los parámetros del modelo.

Cuando decimos theta, asumimos implícitamente que tenemos una caracterización completa del modelo probabilístico, lo que nos da una densidad de probabilidad local para todos los puntos. Por lo tanto, la verosimilitud es la probabilidad de observar este único punto de datos. Cuando tenemos la verosimilitud para el modelo theta, es la probabilidad conjunta de observar todos los puntos de datos en el conjunto de datos. Suponemos que estos puntos son independientes, por lo que la verosimilitud es un producto de probabilidades.

Si tenemos miles de observaciones, es probable que la verosimilitud, como producto de miles de valores menores que uno, sea numéricamente muy pequeña. Un valor muy pequeño suele ser difícil de representar con la forma en que se representan los números de punto flotante en las computadoras. En lugar de trabajar directamente con la verosimilitud, que es un número muy pequeño, tendemos a trabajar con el logaritmo de la verosimilitud. El logaritmo de la verosimilitud es simplemente el logaritmo de la verosimilitud, que tiene la increíble propiedad de convertir la multiplicación en suma.

El logaritmo de la verosimilitud del modelo theta es la suma del logaritmo de todas las verosimilitudes individuales para todos los puntos de datos, como se muestra en la última línea de la ecuación en la pantalla. La verosimilitud es una métrica que nos da una medida de ajuste para un pronóstico probabilístico dado. Nos dice qué tan probable es que el modelo haya generado el conjunto de datos que observamos. Si tenemos dos pronósticos probabilísticos en competencia, y si dejamos de lado todos los demás problemas de ajuste por un momento, deberíamos elegir el modelo que nos dé la mayor verosimilitud o el mayor logaritmo de verosimilitud, porque cuanto más alto, mejor.

La verosimilitud es muy interesante porque puede operar en dimensiones altas sin complicaciones, a diferencia del método de Monge-Kantorovich. Siempre y cuando tengamos un modelo que nos dé una densidad de probabilidad local, podemos usar la verosimilitud, o más realistamente, el logaritmo de la verosimilitud como una métrica.

Slide 12

Además, tan pronto como tengamos una métrica que pueda representar la bondad del ajuste, significa que podemos optimizar en contra de esta misma métrica. Todo lo que se necesita es un modelo con al menos un grado de libertad, lo que básicamente significa al menos un parámetro. Si optimizamos este modelo en función de la verosimilitud, nuestra métrica de bondad del ajuste, con suerte obtendremos un modelo entrenado en el que hayamos aprendido a producir al menos un pronóstico probabilístico decente. Esto es exactamente lo que se está haciendo aquí en la pantalla.

En las líneas uno y dos, generamos un conjunto de datos simulado. Creamos una tabla con 2,000 líneas, y luego en la línea dos, generamos 2,000 desviaciones, nuestras observaciones de una distribución de Poisson con una media de dos. Así que tenemos nuestras 2,000 observaciones. En la línea tres, comenzamos un bloque de autodiferenciación, que es parte del paradigma de programación diferenciable. Este bloque ejecutará un descenso de gradiente estocástico e iterará muchas veces sobre todas las observaciones en la tabla de observaciones. Aquí, la tabla de observaciones es la tabla T.

En la línea cuatro, declaramos el único parámetro del modelo, llamado lambda. Especificamos que este parámetro debe ser exclusivamente positivo. Este parámetro es lo que intentaremos redescubrir a través del descenso de gradiente estocástico. En la línea cinco, definimos la función de pérdida, que es simplemente menos el logaritmo de la verosimilitud. Queremos maximizar la verosimilitud, pero el bloque de autodiferenciación intenta minimizar la pérdida. Por lo tanto, si queremos maximizar el logaritmo de la verosimilitud, tenemos que agregar este signo menos delante del logaritmo de la verosimilitud, que es exactamente lo que hemos hecho.

El parámetro lambda aprendido se muestra en la línea seis. No sorprendentemente, el valor encontrado es muy cercano al valor dos, porque comenzamos con una distribución de Poisson con una media de dos. Creamos un modelo de pronóstico probabilístico que también es paramétrico y tiene la misma forma, una distribución de Poisson. Queríamos redescubrir el único parámetro de la distribución de Poisson, y eso es exactamente lo que obtenemos. Obtenemos un modelo que está dentro de aproximadamente un uno por ciento de la estimación original.

Acabamos de aprender nuestro primer modelo de pronóstico probabilístico, y todo lo que se necesitó fueron básicamente tres líneas de código. Obviamente, este es un modelo muy simple; sin embargo, muestra que no hay nada intrínsecamente complicado en el pronóstico probabilístico. No es su pronóstico habitual de cuadrados medios, pero aparte de eso, con las herramientas adecuadas como la programación diferenciable, no es más complicado que un pronóstico puntual clásico.

Slide 13

La función log_likelihood.poisson que usamos anteriormente es parte de la biblioteca estándar de Envision. Sin embargo, no hay magia involucrada. Veamos cómo se implementa esta función en realidad. Las dos primeras líneas en la parte superior nos dan la implementación de la verosimilitud logarítmica de la distribución de Poisson. Una distribución de Poisson está completamente caracterizada por su único parámetro, lambda, y la función de verosimilitud logarítmica solo toma dos argumentos: el único parámetro que caracteriza completamente la distribución de Poisson y la observación real. La fórmula real que he escrito es literalmente material de libro de texto. Es lo que obtienes cuando implementas la fórmula de libro de texto que caracteriza la distribución de Poisson. No hay nada especial aquí.

Presta atención al hecho de que esta función está marcada con la palabra clave autodiff. Como hemos visto en la conferencia anterior, la palabra clave autodiff asegura que la diferenciación automática pueda fluir correctamente a través de esta función. La verosimilitud logarítmica de la distribución de Poisson también utiliza otra función especial, log_gamma. La función log_gamma es el logaritmo de la función gamma, que es la generalización de la función factorial a números complejos. Aquí, solo necesitamos la generalización de la función factorial a números reales positivos.

La implementación de la función log_gamma es un poco verbosa, pero nuevamente es material de libro de texto. Utiliza una aproximación de fracción continua para la función log_gamma. Lo bueno aquí es que tenemos la diferenciación automática trabajando para nosotros todo el tiempo. Comenzamos con el bloque autodiff, llamando a la función log_likelihood.poisson, que está implementada como una función autodiff. Esta función, a su vez, llama a la función log_gamma, también implementada con el marcador autodiff. Básicamente, somos capaces de producir nuestros métodos de pronóstico probabilístico en tres líneas de código porque tenemos una biblioteca estándar bien diseñada que ha sido implementada, prestando atención a la diferenciación automática.

Slide 14

Ahora, pasemos al caso especial de las distribuciones discretas unidimensionales. Estas distribuciones están por todas partes en una cadena de suministro y representan nuestro punto de entrada al pronóstico probabilístico. Por ejemplo, si queremos pronosticar los tiempos de entrega con una granularidad diaria, podemos decir que hay una cierta probabilidad de tener un tiempo de entrega de un día, otra probabilidad de tener un tiempo de entrega de dos días, tres días, y así sucesivamente. Todo eso se acumula en un histograma de probabilidades para los tiempos de entrega. De manera similar, si estamos mirando la demanda de un determinado SKU en un día determinado, podemos decir que hay una probabilidad de observar cero unidades de demanda, una unidad de demanda, dos unidades de demanda, y así sucesivamente.

Si juntamos todas estas probabilidades, obtenemos un histograma que las representa. De manera similar, si estamos pensando en el nivel de stock de un SKU, es posible que estemos interesados en evaluar cuánto stock quedará para este SKU al final de la temporada. Podemos utilizar un pronóstico probabilístico para determinar la probabilidad de que no queden unidades en stock al final de la temporada, una unidad en stock, dos unidades, y así sucesivamente. Todas estas situaciones se ajustan al patrón de ser representadas mediante un histograma con compartimentos asociados a cada resultado discreto del fenómeno de interés.

El histograma es la forma canónica de representar una distribución discreta unidimensional. Cada compartimento está asociado a la masa de probabilidad para el resultado discreto. Sin embargo, dejando de lado el caso de uso de visualización de datos, los histogramas son un poco decepcionantes. De hecho, trabajar con histogramas es un poco complicado si queremos hacer algo más que visualizar esas distribuciones de probabilidad. Básicamente, tenemos dos clases de problemas con los histogramas: la primera dificultad está relacionada con los recursos informáticos y la segunda dificultad está relacionada con la expresividad de programación de los histogramas.

En cuanto a los recursos informáticos, debemos considerar que la cantidad de memoria necesaria para un histograma es fundamentalmente ilimitada. Puedes pensar en un histograma como un arreglo que crece tanto como sea necesario. Cuando se trata de un solo histograma, incluso uno excepcionalmente grande desde la perspectiva de la cadena de suministro, la cantidad de memoria necesaria no es un problema para una computadora moderna. El problema surge cuando no tenemos solo un histograma, sino millones de histogramas para millones de SKU en un contexto de cadena de suministro. Si cada histograma puede crecer bastante, gestionar estos histogramas puede convertirse en un desafío, especialmente considerando que las computadoras modernas tienden a ofrecer acceso no uniforme a la memoria.

Por otro lado, la cantidad de CPU necesaria para procesar estos histogramas también es ilimitada. Si bien las operaciones en los histogramas son en su mayoría lineales, el tiempo de procesamiento aumenta a medida que la cantidad de memoria crece debido al acceso no uniforme a la memoria. Como resultado, existe un interés significativo en establecer límites estrictos en la cantidad de memoria y CPU requeridos.

La segunda dificultad con los histogramas es la falta de un álgebra adjunta. Si bien puedes realizar la suma o multiplicación de valores por compartimento al considerar dos histogramas, hacerlo no dará como resultado algo que tenga sentido al interpretar el histograma como una representación de una variable aleatoria. Por ejemplo, si tomas dos histogramas y realizas una multiplicación punto a punto, terminas con un histograma que ni siquiera tiene una masa de uno. Esta no es una operación válida desde la perspectiva de un álgebra de variables aleatorias. No puedes realmente sumar o multiplicar histogramas, por lo que estás limitado en lo que puedes hacer con ellos.

Slide 15

En Lokad, el enfoque que hemos encontrado más práctico para tratar con estas ubicuas distribuciones discretas unidimensionales es introducir un tipo de dato dedicado. El público probablemente está familiarizado con los tipos de datos comunes que existen en la mayoría de los lenguajes de programación, como enteros, números de punto flotante y cadenas de texto. Estos son los tipos de datos primitivos típicos que se encuentran en todas partes. Sin embargo, nada impide que introduzcas tipos de datos más especializados que se ajusten especialmente a nuestros requisitos desde una perspectiva de cadena de suministro. Esto es exactamente lo que hizo Lokad con el tipo de dato ranvar.

El tipo de dato ranvar está dedicado a distribuciones discretas unidimensionales, y el nombre es una abreviatura de variable aleatoria. Técnicamente, desde una perspectiva formal, el ranvar es una función de Z (el conjunto de todos los enteros, positivos y negativos) a probabilidades, que son números entre cero y uno. La masa total de Z siempre es igual a uno, ya que representa distribuciones de probabilidad.

Desde una perspectiva puramente matemática, algunos podrían argumentar que la cantidad de información que se puede introducir en dicha función puede ser arbitrariamente grande. Esto es cierto; sin embargo, la realidad es que, desde una perspectiva de cadena de suministro, hay un límite muy claro en cuanto a cuánta información relevante puede contener un solo ranvar. Si bien es teóricamente posible crear una distribución de probabilidad que requiera megabytes para representarse, no existen tales distribuciones que sean relevantes para fines de cadena de suministro.

Es posible diseñar un límite superior de 4 kilobytes para el tipo de dato ranvar. Al tener un límite en la memoria que este ranvar puede ocupar, también obtenemos un límite superior en cuanto al uso de la CPU para todas las operaciones, lo cual es muy importante. En lugar de tener un límite ingenuo que limite los compartimentos a 1,000, Lokad introduce un esquema de compresión con el tipo de dato ranvar. Esta compresión es esencialmente una representación con pérdida de los datos originales, perdiendo resolución y precisión. Sin embargo, la idea es diseñar un esquema de compresión que proporcione una representación suficientemente precisa de los histogramas, de modo que el grado de aproximación introducido sea insignificante desde una perspectiva de cadena de suministro.

Los detalles del algoritmo de compresión involucrado con el tipo de dato ranvar están más allá del alcance de esta conferencia. Sin embargo, este es un algoritmo de compresión muy simple que es órdenes de magnitud más simple que los tipos de algoritmos de compresión utilizados para imágenes en tu computadora. Como beneficio adicional de tener un límite en la memoria que este ranvar puede ocupar, también obtenemos un límite superior en cuanto al uso de la CPU para todas las operaciones, lo cual es muy importante. Finalmente, con el tipo de dato ranvar, el punto más importante es que obtenemos un álgebra de variables que nos brinda una forma de operar realmente sobre estos tipos de datos y hacer todo tipo de cosas que queremos hacer con tipos de datos primitivos, como tener todo tipo de primitivas para combinarlos de formas que se ajusten a nuestros requisitos.

Slide 16

Para ilustrar lo que significa trabajar con ranvars, consideremos una situación de pronóstico de tiempo de entrega, más específicamente, un pronóstico probabilístico de un tiempo de entrega. En la pantalla se muestra un breve script de Envision que muestra cómo construir dicho pronóstico probabilístico. En las líneas 1-5, introducimos la tabla T que contiene los cuatro tiempos de entrega de variación, con valores de 11 días, 10 días, 13 días y 90 días. Si bien cuatro observaciones son muy pocas, desafortunadamente es muy común tener un número muy limitado de puntos de datos en lo que respecta a las observaciones de tiempo de entrega. De hecho, si estamos considerando un proveedor en el extranjero que recibe dos órdenes de compra al año, entonces se necesitan dos años para recopilar esos cuatro puntos de datos. Por lo tanto, es importante tener técnicas que puedan funcionar incluso con un conjunto de observaciones increíblemente limitado.

En la línea 7, creamos un ranvar agregando directamente las cuatro observaciones. Aquí, el término “ranvar” que aparece en la línea 7 es en realidad un agregador que toma una serie de números como entradas y devuelve un único valor del tipo de dato ranvar. El resultado se muestra en la parte superior derecha de la pantalla, que es un ranvar empírico.

Sin embargo, este ranvar empírico no es una representación realista de la distribución real. Por ejemplo, aunque podemos observar un tiempo de espera de 11 días y un tiempo de espera de 13 días, parece poco realista no poder observar un tiempo de espera de 12 días. Si interpretamos este ranvar como un pronóstico probabilístico, diría que la probabilidad de observar un tiempo de espera de 12 días es cero, lo cual parece incorrecto. Obviamente, esto es un problema de sobreajuste.

Para solucionar esta situación, en la línea 8, suavizamos el ranvar original llamando a la función “smooth”. La función de suavizado reemplaza básicamente el ranvar original con una mezcla de distribuciones. Para cada intervalo de la distribución original, reemplazamos el intervalo con una distribución de Poisson con una media centrada en el intervalo, ponderada según la probabilidad respectiva de los intervalos. A través de la distribución suavizada, obtenemos el histograma que se muestra en el centro a la derecha de la pantalla. Esto ya se ve mucho mejor; ya no tenemos brechas extrañas y no tenemos una probabilidad cero en el medio. Además, al observar la probabilidad de observar un tiempo de espera de 12 días, este modelo nos da una probabilidad distinta de cero, lo cual suena mucho más razonable. También nos da una probabilidad distinta de cero para superar los 20 días, y considerando que teníamos cuatro puntos de datos y ya observamos un tiempo de espera de 19 días, la idea de que un tiempo de espera de hasta 20 días sea posible parece muy razonable. Por lo tanto, con este pronóstico probabilístico, tenemos una buena dispersión que representa una probabilidad distinta de cero para esos eventos, lo cual es muy bueno.

Sin embargo, a la izquierda tenemos algo un poco extraño. Si bien está bien que esta distribución de probabilidad se extienda hacia la derecha, lo mismo no se puede decir acerca de la izquierda. Si consideramos que los tiempos de espera que observamos fueron los resultados de los tiempos de transporte, debido al hecho de que tarda nueve días para que el camión llegue, parece poco probable que alguna vez observemos un tiempo de espera de tres días. En este sentido, el modelo es bastante irrealista.

Por lo tanto, en la línea 9, introducimos un ranvar ajustado condicionalmente diciendo que debe ser mayor que el tiempo de espera más pequeño observado. Tenemos “min_of(T, x)” que toma el valor más pequeño entre los números de la tabla T, y luego usamos “max” para hacer el máximo entre una distribución y un número. El resultado tiene que ser mayor que este valor. El ranvar ajustado se muestra a la derecha en la parte inferior, y aquí vemos nuestro pronóstico final de tiempo de espera. El último se siente como un pronóstico probabilístico muy razonable del tiempo de espera, considerando que tenemos un conjunto de datos increíblemente limitado con solo cuatro puntos de datos. No podemos decir que sea un gran pronóstico probabilístico; sin embargo, argumentaría que este es un pronóstico de calidad de producción, y este tipo de técnicas funcionarían bien en producción, a diferencia de un pronóstico de punto promedio que subestimaría en gran medida el riesgo de tiempos de espera variables.

La belleza de los pronósticos probabilísticos es que, aunque pueden ser muy rudimentarios, ya te brindan cierto grado de mitigación para decisiones mal informadas que resultarían de la aplicación ingenua de un pronóstico promedio basado en los datos observados.

Slide 17

Más generalmente, los ranvars admiten una amplia gama de operaciones: es posible sumar, restar y multiplicar ranvars, al igual que es posible sumar, restar y multiplicar enteros. En el fondo, debido a que estamos tratando con variables aleatorias discretas en términos de semántica, todas estas operaciones se implementan como convoluciones. En la pantalla, el histograma mostrado en la parte inferior se obtiene mediante la multiplicación de dos distribuciones de Poisson, respectivamente de media dos y tres. En la cadena de suministro, la multiplicación de variables aleatorias se llama convolución directa. En el contexto de la cadena de suministro, la multiplicación de dos variables aleatorias tiene sentido para representar, por ejemplo, los resultados que se pueden obtener cuando los clientes buscan los mismos productos pero con multiplicadores variables. Digamos que tenemos una librería que atiende a dos cohortes de clientes. Por un lado, tenemos la primera cohorte compuesta por estudiantes, que compran una unidad cuando entran a la tienda. En esta librería ilustrativa, tenemos una segunda cohorte compuesta por profesores, que compran 20 libros cuando entran a la tienda.

Desde una perspectiva de modelado, podríamos tener un pronóstico probabilístico que represente las tasas de llegada a la librería tanto de estudiantes como de profesores. Esto nos daría la probabilidad de observar cero clientes en el día, un cliente, dos clientes, etc., revelando la distribución de probabilidad de observar un cierto número de clientes en cualquier día dado. La segunda variable te daría las respectivas probabilidades de comprar uno (estudiantes) versus comprar 20 (profesores). Para tener una representación de la demanda, simplemente multiplicaríamos esas dos variables aleatorias juntas, lo que resultaría en un histograma aparentemente errático que refleja los multiplicadores presentes en los patrones de consumo de tus cohortes.

Slide 18

Los generadores de Monte Carlo, o simplemente generadores, representan un enfoque alternativo para el pronóstico probabilístico. En lugar de exhibir una distribución que nos da la densidad de probabilidad local, podemos exhibir un generador que, como sugiere el nombre, genera resultados que se espera que sigan implícitamente las mismas distribuciones de probabilidad locales. Existe una dualidad entre los generadores y las densidades de probabilidad, lo que significa que los dos son básicamente dos facetas de la misma perspectiva.

Si tienes un generador, siempre es posible promediar los resultados obtenidos de este generador para reconstruir estimaciones de las densidades de probabilidad locales. Por el contrario, si tienes densidades de probabilidad locales, siempre es posible generar desviaciones según esta distribución. Fundamentalmente, estos dos enfoques son solo diferentes formas de ver la misma naturaleza probabilística o estocástica del fenómeno que estamos tratando de modelar.

El script en la pantalla ilustra esta dualidad. En la línea uno, introducimos un bloque de Monte Carlo, que será iterado por el sistema, al igual que los bloques de auto-diferenciación se iteran a través de muchas etapas de descenso de gradiente estocástico. El bloque de Monte Carlo se ejecutará 2,000 veces y a partir de este bloque, recopilaremos 2,000 desviaciones.

En la línea dos, dibujamos una desviación de una distribución de Poisson de media tres y luego le sumamos uno a la desviación. Básicamente, obtenemos un número aleatorio de esta distribución de Poisson y luego le sumamos uno. En la línea tres, recopilamos esta desviación en L1, que actúa como un acumulador para el ranvar del agregador. Este es el mismo agregador que presentamos anteriormente para nuestro ejemplo de tiempo de espera. Aquí, estamos recopilando todas esas observaciones en L1, lo que nos da una distribución unidimensional obtenida a través de un proceso de Monte Carlo. En la línea cinco, construimos la misma distribución discreta unidimensional, pero esta vez lo hacemos con el álgebra de variables aleatorias. Entonces, simplemente usamos Poisson menos tres y le sumamos uno. En la línea cinco, no hay ningún proceso de Monte Carlo en marcha; es puramente una cuestión de probabilidades discretas y convoluciones.

Cuando comparamos las dos distribuciones visualmente en las líneas siete y ocho, vemos que son casi idénticas. Digo “casi” porque, aunque estamos usando 2,000 iteraciones, que es mucho, no es infinito. Las desviaciones entre las probabilidades exactas que obtienes con ranvar y las probabilidades aproximadas que obtienes con el proceso de Monte Carlo aún son perceptibles, aunque no grandes.

A veces los generadores se llaman simuladores, pero no te equivoques, son lo mismo. Siempre que tengas un simulador, tienes un proceso generativo que subyace implícitamente a un proceso de pronóstico probabilístico. Siempre que haya un simulador o generador involucrado, la pregunta que debes tener en mente es: ¿cuál es la precisión de esta simulación? No es precisa por diseño, al igual que es muy posible tener pronósticos completamente inexactos, probabilísticos o no. Puedes obtener fácilmente una simulación completamente inexacta.

Con los generadores, vemos que las simulaciones son solo una forma de ver la perspectiva de pronóstico probabilístico, pero esto es más como un detalle técnico. No cambia nada sobre el hecho de que, al final, quieres tener algo que sea una representación precisa del sistema que estás tratando de caracterizar con tu pronóstico, probabilístico o no.

Slide 19

El enfoque generativo no solo es muy útil, como veremos con un ejemplo específico en un minuto, sino que también es conceptualmente más fácil de entender, al menos ligeramente, en comparación con el enfoque con densidades de probabilidad. Sin embargo, el enfoque de Monte Carlo tampoco está exento de tecnicismos. Hay algunas cosas que son necesarias si quieres que este enfoque sea viable en un contexto de producción para una cadena de suministro del mundo real.

Primero, los generadores deben ser rápidos. Monte Carlo siempre es un compromiso entre la cantidad de iteraciones que te gustaría tener y la cantidad de iteraciones que puedes permitirte, considerando los recursos informáticos disponibles. Sí, las computadoras modernas tienen mucha potencia de procesamiento, pero los procesos de Monte Carlo pueden consumir muchos recursos. Quieres algo que sea, por defecto, súper rápido. Si volvemos a los ingredientes presentados en la segunda conferencia del cuarto capítulo, tenemos funciones muy rápidas como ExhaustShift o WhiteHash que son esenciales para la construcción de las primitivas que te permiten generar generadores aleatorios elementales que son súper rápidos. Necesitas eso, de lo contrario, tendrás problemas. En segundo lugar, necesitas distribuir tu ejecución. La implementación ingenua de un programa de Monte Carlo es simplemente tener un bucle que itera secuencialmente. Sin embargo, si solo estás utilizando una CPU para abordar tus requisitos de Monte Carlo, esencialmente estás volviendo a la potencia de cálculo que caracterizaba a las computadoras hace dos décadas. Este punto se tocó en la primera conferencia del cuarto capítulo. En las últimas dos décadas, las computadoras se han vuelto más potentes, pero principalmente agregando CPUs y grados de paralelización. Entonces, necesitas tener una perspectiva distribuida para tus generadores.

Por último, la ejecución debe ser determinista. ¿Qué significa eso? Significa que si se ejecuta el mismo código dos veces, debería dar los mismos resultados exactos. Esto puede parecer contraintuitivo porque estamos tratando con métodos aleatorios. Sin embargo, la necesidad de determinismo surgió muy rápidamente. Se descubrió de manera dolorosa durante los años 90 cuando las finanzas comenzaron a utilizar generadores de Monte Carlo para sus precios. Las finanzas se adentraron en el camino del pronóstico probabilístico hace bastante tiempo y utilizaron ampliamente los generadores de Monte Carlo. Una de las cosas que aprendieron fue que si no tienes determinismo, se vuelve casi imposible replicar las condiciones que generaron un error o un fallo. Desde la perspectiva de la cadena de suministro, los errores en los cálculos de los pedidos de compra pueden ser increíblemente costosos.

Si quieres lograr cierto grado de preparación para la producción del software que rige tu cadena de suministro, necesitas tener esta propiedad determinista siempre que estés tratando con Monte Carlo. Ten en cuenta que muchas soluciones de código abierto provienen de la academia y no se preocupan en absoluto por la preparación para la producción. Asegúrate de que cuando estés tratando con Monte Carlo, tu proceso sea súper rápido por diseño, distribuido por diseño y determinista, para que tengas la oportunidad de diagnosticar los errores que inevitablemente surgirán con el tiempo en tu configuración de producción.

Hemos visto una situación en la que se introdujo un generador para replicar lo que de otra manera se hacía con una variable aleatoria. Como regla general, siempre que puedas prescindir de las densidades de probabilidad con variables aleatorias sin involucrar a Monte Carlo, es mejor. Obtendrás resultados más precisos y no tendrás que preocuparte por la estabilidad numérica, que siempre es un poco complicada con Monte Carlo. Sin embargo, la expresividad del álgebra de las variables aleatorias es limitada, y ahí es donde Monte Carlo realmente brilla. Estos generadores son más expresivos porque te permiten comprender situaciones que no se pueden abordar solo con un álgebra de variables aleatorias.

Ilustremos esto con una situación de cadena de suministro. Considera un solo SKU con un nivel de stock inicial, un pronóstico probabilístico de la demanda y un período de interés que abarca tres meses, con un envío entrante en el medio del período. Suponemos que la demanda se satisface inmediatamente con el stock disponible o se pierde para siempre. Queremos saber el nivel de stock esperado al final del período para el SKU, ya que saber eso nos ayudará a decidir cuánto riesgo tenemos en términos de inventario muerto.

La situación es traicionera porque se ha diseñado de tal manera que hay una tercera posibilidad de que ocurra un faltante de stock justo en medio del período. El enfoque ingenuo sería tomar el nivel de stock inicial, la distribución de la demanda para todo el período y restar la demanda del nivel de stock, lo que resultaría en el nivel de stock restante. Sin embargo, esto no tiene en cuenta el hecho de que podríamos perder una parte justa de la demanda si tenemos un faltante de stock mientras el reabastecimiento entrante aún está pendiente. Hacerlo de manera ingenua subestimaría la cantidad de stock que tendremos al final del período y sobrestimaría la cantidad de demanda que se servirá.

El script que se muestra modela la aparición de faltantes de stock para que podamos tener un estimador correcto para el nivel de stock de este SKU al final del período. Desde las líneas 1 a 10, estamos definiendo los datos simulados que caracterizan nuestro modelo. Las líneas 3 a 6 contienen los parámetros para el modelo ISSM. Ya hemos visto el modelo ICSM en la primera conferencia de este quinto capítulo. Esencialmente, este modelo genera una trayectoria de demanda con un punto de datos por día. El período de interés se define en la tabla de días, y tenemos los parámetros para esta trayectoria al principio.

En las conferencias anteriores, presentamos el modelo AICSM y los métodos necesarios a través de la programación diferenciable para aprender estos parámetros. Hoy, estamos utilizando el modelo, asumiendo que hemos aprendido todo lo que necesitamos aprender. En la línea 7, definimos el stock inicial disponible, que normalmente se obtendría del ERP o WMS. En las líneas 9 y 10, definimos la cantidad y la fecha de reabastecimiento. Estos puntos de datos normalmente se obtendrían como un tiempo estimado de llegada proporcionado por el proveedor y almacenado en el ERP. Suponemos que la fecha de entrega se conoce perfectamente; sin embargo, sería fácil reemplazar esta fecha única con un pronóstico probabilístico del tiempo de entrega.

Desde las líneas 12 a 21, tenemos el modelo ISSM que genera la trayectoria de la demanda. Estamos dentro de un bucle de Monte Carlo y, para cada iteración de Monte Carlo, iteramos sobre cada día del período de interés. La iteración de los días comienza en la línea 13. Tenemos la mecánica de ESSM en marcha, pero en las líneas 19 y 20, actualizamos la variable en existencia. La variable en existencia no forma parte del modelo ISSM; esto es algo adicional. En la línea 19, decimos que el stock en existencia es el stock en existencia de ayer más el envío entrante, que será cero para la mayoría de los días y cinco unidades para el 13 de septiembre. Luego, en la línea 20, actualizamos el stock en existencia diciendo que se consumen cierto número de unidades por la demanda del día, y tenemos este máximo 0 para decir que el nivel de stock no puede ser negativo.

Finalmente, recopilamos el stock final en existencia en la línea 21, y en la línea 23, este stock final en existencia se muestra. Este es el histograma que ves a la derecha de la pantalla. Aquí, vemos una distribución con una forma muy irregular. Esta forma no se puede obtener a través del álgebra de variables aleatorias. Los generadores son increíblemente expresivos; sin embargo, no debes confundir la expresividad de estos generadores con la precisión. Si bien los generadores son increíblemente expresivos, evaluar la precisión de dichos generadores no es trivial. No te equivoques, cada vez que tienes un generador o simulador en juego, tienes un pronóstico de probabilidad en juego, y las simulaciones pueden ser dramáticamente inexactas, al igual que cualquier pronóstico, probabilístico o de otro tipo.

Slide 20

Ya ha sido una conferencia larga, y aún hay muchos temas sobre los que ni siquiera he hablado hoy. La toma de decisiones, por ejemplo, si todos los futuros son posibles, ¿cómo decidimos algo? No he respondido a esta pregunta, pero se abordará en la próxima conferencia.

También es importante considerar dimensiones superiores. Una distribución unidimensional es un punto de partida, pero una cadena de suministro necesita más. Por ejemplo, si nos quedamos sin stock para un determinado SKU, podemos experimentar canibalización, donde los clientes naturalmente recurren a un sustituto. Nos gustaría modelar esto, aunque de manera rudimentaria.

Los constructos de orden superior también juegan un papel. Como dije, predecir la demanda no es como predecir los movimientos de los planetas. Tenemos efectos autocumplidos por todas partes. En algún momento, queremos considerar e incorporar nuestras políticas de precios y políticas de reposición de stock. Para hacer eso, necesitamos constructos de orden superior, lo que significa que dado una política, obtienes un pronóstico probabilístico del resultado, pero debes inyectar la política dentro de los constructos de orden superior.

Además, dominar los pronósticos probabilísticos implica numerosas recetas numéricas y experiencia en el dominio para saber qué distribuciones son las más adecuadas para ciertas situaciones. En esta serie de conferencias, presentaremos más ejemplos más adelante.

Finalmente, está el desafío del cambio. El pronóstico probabilístico es una ruptura radical de las prácticas convencionales de la cadena de suministro. Con frecuencia, las cuestiones técnicas relacionadas con los pronósticos probabilísticos son solo una pequeña parte del desafío. La parte difícil es reinventar la organización misma para que pueda comenzar a utilizar estos pronósticos probabilísticos en lugar de confiar en pronósticos puntuales, que son básicamente pensamientos deseados. Todos estos elementos se tratarán en conferencias posteriores, pero llevará tiempo, ya que tenemos mucho terreno que cubrir.

Slide 21

En conclusión, los pronósticos probabilísticos representan una ruptura radical desde la perspectiva del pronóstico puntual, donde esperamos algún tipo de consenso sobre el único futuro que se supone que sucederá. El pronóstico probabilístico se basa en la observación de que la incertidumbre del futuro es irreducible. Un siglo de ciencia de pronósticos ha demostrado que todos los intentos de lograr pronósticos precisos han fracasado. Por lo tanto, nos encontramos con muchos futuros indefinidos. Sin embargo, los pronósticos probabilísticos nos brindan técnicas y herramientas para cuantificar y evaluar estos futuros. El pronóstico probabilístico es un logro significativo. Se necesitó casi un siglo para aceptar la idea de que el pronóstico económico no era como la astronomía. Si bien podemos predecir con gran precisión la posición exacta de un planeta dentro de un siglo, no tenemos ninguna esperanza de lograr algo remotamente equivalente en el ámbito de las cadenas de suministro. La idea de tener un pronóstico para gobernarlos a todos simplemente no volverá. Sin embargo, muchas empresas todavía se aferran a la esperanza de que en algún momento se logrará el único pronóstico verdaderamente preciso. Después de un siglo de intentos, esto es básicamente un pensamiento deseador.

Con las computadoras modernas, esta perspectiva de un solo futuro no es la única perspectiva en la ciudad. Tenemos alternativas. El pronóstico probabilístico existe desde los años 90, hace tres décadas. En Lokad, hemos estado utilizando pronósticos probabilísticos para impulsar cadenas de suministro en producción durante más de una década. Puede que aún no sea convencional, pero está muy lejos de ser ciencia ficción. Ha sido una realidad para muchas empresas en finanzas durante tres décadas y en el mundo de la cadena de suministro durante una década.

Si bien los pronósticos probabilísticos pueden parecer intimidantes y altamente técnicos, con las herramientas adecuadas, son solo unas pocas líneas de código. No hay nada particularmente difícil o desafiante en el pronóstico probabilístico, al menos en comparación con otros tipos de pronósticos. El mayor desafío cuando se trata de pronósticos probabilísticos es renunciar a la comodidad asociada con la ilusión de que el futuro está perfectamente bajo control. El futuro no está perfectamente bajo control y nunca lo estará, y considerando todo, probablemente sea lo mejor.

Slide 22

Esto concluye la conferencia de hoy. La próxima vez, el 6 de abril, presentaré la toma de decisiones en el despacho de inventario minorista, y veremos cómo los pronósticos probabilísticos que se han presentado hoy pueden ser utilizados para impulsar una decisión básica de la cadena de suministro, es decir, el reabastecimiento de inventario en una red minorista. La conferencia se llevará a cabo el mismo día de la semana, miércoles, a la misma hora del día, 3 PM, y será el primer miércoles de abril.

Pregunta: ¿Podemos optimizar la resolución en términos de precisión versus volumen de RAM para Envision?

Sí, absolutamente, aunque no en Envision en sí. Esta es una elección que hicimos en el diseño de Envision. Mi enfoque cuando se trata de Supply Chain Scientist es liberarlos de las cuestiones técnicas de bajo nivel. Los 4 kilobytes de Envision son mucho espacio, lo que permite una representación precisa de la situación de su cadena de suministro. Por lo tanto, la aproximación que se pierde en términos de resolución y precisión es inconsecuente.

Ciertamente, cuando se trata del diseño de su algoritmo de compresión, hay muchas compensaciones que se deben considerar. Por ejemplo, los cubos que están muy cerca de cero necesitan tener una resolución perfecta. Si desea tener la probabilidad de observar cero unidades de demanda, no desea que su aproximación agrupe los cubos para cero demanda, una unidad y dos unidades. Sin embargo, si está buscando cubos para la probabilidad de observar 1,000 unidades de demanda, agrupar 1,000 y 1,001 unidades de demanda probablemente está bien. Por lo tanto, hay muchos trucos para desarrollar un algoritmo de compresión que se ajuste realmente a los requisitos de la cadena de suministro. Esto es órdenes de magnitud más simple en comparación con lo que está sucediendo en la compresión de imágenes. Mi opinión es que una herramienta diseñada correctamente básicamente abstraería el problema para los científicos de la cadena de suministro. Esto es demasiado bajo nivel y no es necesario microoptimizar en la mayoría de los casos. Si eres Walmart y no tienes solo 1 millón de SKU sino varios cientos de millones de SKU, entonces la microoptimización podría tener sentido. Sin embargo, a menos que estemos hablando de cadenas de suministro excepcionalmente grandes, creo que se puede tener algo que sea lo suficientemente bueno como para que el impacto en el rendimiento de no tener una optimización completa sea en su mayoría inconsecuente.

Pregunta: ¿Cuáles son las consideraciones prácticas que se deben tener en cuenta desde una perspectiva de la cadena de suministro al optimizar esos parámetros?

Cuando se trata de pronósticos probabilísticos en la cadena de suministro, tener una precisión superior a una de cada 100,000 es típicamente inconsecuente, simplemente porque nunca se tiene suficientes datos para tener una precisión en términos de estimación de sus probabilidades que sea más granular que una parte de cada 100,000.

Pregunta: ¿Qué industria se beneficia más del enfoque de pronóstico probabilístico?

La respuesta corta es que cuanto más erráticos e irregulares sean tus patrones, mayores serán los beneficios. Si tienes una demanda intermitente, obtendrás grandes beneficios; si tienes una demanda errática, obtendrás grandes beneficios; si tienes tiempos de entrega muy variables y perturbaciones erráticas en tus cadenas de suministro, obtendrás los mayores beneficios. En el otro extremo del espectro, digamos, por ejemplo, si estuviéramos analizando la cadena de suministro de distribución de agua, el consumo de agua es extremadamente uniforme y casi nunca tiene grandes perturbaciones, solo micro perturbaciones como máximo. Este es el tipo de problema que no se beneficia del enfoque probabilístico. La idea es que hay algunas situaciones en las que los pronósticos puntuales clásicos te brindan pronósticos muy precisos. Si te encuentras en una situación en la que tus pronósticos para todos tus productos tienen un error de menos del cinco por ciento al mirar hacia adelante, entonces no necesitas pronósticos probabilísticos; te encuentras en una situación en la que tener un pronóstico realmente preciso funciona. Sin embargo, si eres como muchas empresas en situaciones en las que la precisión de tus pronósticos es muy baja, con una divergencia del 30% o más, entonces te beneficiarás enormemente del pronóstico probabilístico. Por cierto, cuando digo un error de pronóstico del 30%, siempre me refiero al pronóstico muy desagregado. Muchas empresas te dirán que sus pronósticos tienen una precisión del 5%, pero si agregas todo, esto puede ser una percepción muy engañosa de la precisión de tus pronósticos. La precisión de tus pronósticos solo importa a nivel más desagregado, típicamente a nivel de SKU y a nivel diario, porque tus decisiones se toman a nivel de SKU y a nivel diario. Si a nivel de SKU y a nivel diario puedes obtener tus pronósticos más desagregados con una precisión del 5%, entonces no necesitas pronósticos probabilísticos. Sin embargo, si observas inexactitudes de dos dígitos en términos de porcentajes, entonces te beneficiarás enormemente del pronóstico probabilístico.

Pregunta: Dado que los tiempos de entrega pueden ser estacionales, ¿descompondrías los pronósticos de los tiempos de entrega en múltiples pronósticos, uno para cada temporada distinta, para evitar mirar una distribución multimodal?

Esta es una buena pregunta. La idea aquí es que típicamente construirías un modelo paramétrico para tus tiempos de entrega que incluya un perfil de estacionalidad. Lidiar con la estacionalidad de los tiempos de entrega no es fundamentalmente muy diferente de lidiar con cualquier otra ciclicidad, como hicimos en la conferencia anterior para la demanda. La forma típica no es construir múltiples modelos, porque como señalaste correctamente, si tienes múltiples modelos, observarás todo tipo de saltos extraños cuando pases de una modalidad a la siguiente. Típicamente es mejor tener solo un modelo con un perfil de estacionalidad en el medio del modelo. Sería como una descomposición paramétrica donde tienes un vector que te da el efecto semanal que impacta el tiempo de entrega en una determinada semana del año. Tal vez tengamos tiempo en una conferencia posterior para dar un ejemplo más extenso de eso.

Pregunta: ¿Es el pronóstico probabilístico un buen enfoque cuando se desea pronosticar una demanda intermitente?

Absolutamente. De hecho, creo que cuando tienes una demanda intermitente, el pronóstico probabilístico no solo es un buen método, sino que el pronóstico puntual clásico es completamente absurdo. Con el pronóstico clásico, típicamente tendrías dificultades para lidiar con todos esos ceros. ¿Qué haces con esos ceros? Terminas con un valor muy bajo y fraccionario, lo cual no tiene mucho sentido. Con la demanda intermitente, la pregunta que realmente quieres responder es: ¿Mi stock es lo suficientemente grande como para satisfacer esos picos de demanda que tienden a surgir de vez en cuando? Si usas un pronóstico promedio, nunca lo sabrás.

Solo para volver al ejemplo de la librería, si dices que en una semana determinada observas un promedio de una unidad de demanda por día, ¿cuántos libros necesitas tener en tu librería para tener una alta calidad de servicio? Supongamos que la librería se reabastece todos los días. Si solo atiendes a estudiantes, entonces si tienes en promedio una unidad de demanda todos los días, tener tres libros en stock resultará en una calidad de servicio muy alta. Sin embargo, si de vez en cuando viene un profesor que busca 20 libros a la vez, entonces tu calidad de servicio, si solo tienes tres libros en la tienda, será pésima porque nunca podrás atender a ninguno de los profesores. Esto suele ser el caso con la demanda intermitente: no solo es el hecho de que la demanda sea intermitente, sino también que algunos picos de demanda pueden variar significativamente en términos de magnitud. Ahí es donde el pronóstico probabilístico realmente brilla, ya que puede capturar la estructura fina de la demanda en lugar de agruparla en promedios donde se pierde toda esta estructura fina.

Pregunta: Si reemplazamos el tiempo de entrega con una distribución, ¿la punta representada por una curva de campana suave en la primera diapositiva para el generador?

Hasta cierto punto, si aleatorizas más, tiendes a dispersar las cosas. En la primera diapositiva sobre el generador, tendríamos que realizar el experimento con diferentes configuraciones para ver qué obtenemos. La idea es que cuando queremos reemplazar el tiempo de entrega con una distribución, lo hacemos porque tenemos una idea del problema que nos dice que el tiempo de entrega está variando. Si confiamos absolutamente en nuestro proveedor y han sido increíblemente confiables, entonces está perfectamente bien decir que el ETA (tiempo estimado de llegada) es lo que es y es una estimación casi perfecta de la realidad. Sin embargo, si hemos visto que en el pasado los proveedores a veces eran erráticos o no alcanzaban el objetivo, entonces es mejor reemplazar el tiempo de entrega con una distribución.

Introducir una distribución para reemplazar el tiempo de entrega no necesariamente suaviza los resultados que obtienes al final; depende de lo que estés observando. Por ejemplo, si estás observando el caso más extremo de exceso de inventario, un tiempo de entrega variable puede incluso exacerbar el riesgo de tener inventario muerto. ¿Por qué es eso? Si tienes un producto muy estacional y un tiempo de entrega variable, y el producto llega después del final de la temporada, te quedas con un producto que está fuera de temporada, lo cual magnifica el riesgo de tener inventario muerto al final de la temporada. Entonces, es complicado. El hecho de convertir una variable en su reemplazo probabilístico no suavizará naturalmente lo que observarás; a veces, puede hacer que la distribución sea aún más aguda. Entonces, la respuesta es: depende.

Excelente, creo que eso es todo por hoy. Nos vemos la próxima vez.