Está en la página 1de 4

Especialización en inteligencia de datos orientada al big data - UNLP 2021 - Aplicaciones de Inteligencia de Datos - Docente a

cargo: Dr. Aurelio Fernandez Bariviera (Univ. Rovira i Virgili – España)

Modelo de pronóstico de días de inventario de artículos,


basado en datos históricos de Mercado Libre Argentina

Ing. Marcelo Taffarel Ing. Marcelo Gerardi


mmtaffarel@gmail.com marcelogerardi@gmail.com

Abstract: Este trabajo surge a raíz de una competencia organizada por la empresa Mercado libre, en la cual se proporcionó una
serie de tiempo de ventas históricas, con el objetivo de predecir, dentro de los 30 días siguientes, cuales son las probabilidades de
que un artículo determinado se agote para cada uno de esos días. Para la resolución del problema se utilizó un modelo de Redes
Neuronales Artificiales y en base a los resultados se calcularon las probabilidades diarias de quedarse sin stock.

Keywords: Control de inventario, Regresión lineal, Redes Neuronales Artificiales, Días de inventario

1. I NTRODUCCIÓN El objetivo de este trabajo es desarrollar un modelo


Este trabajo tiene como objetivo determinar cuánto predictivo para obtener las probabilidades diarias de que se
tiempo (en días) tardará en venderse por completo el agote el stock de un producto en particular. Desarrollamos un
inventario de un determinado artículo. En la teoría de la modelo de redes neuronales artificiales (RNA), mediante el
gestión de inventarios, este concepto se conoce como días cual se intenta predecir la cantidad vendida de un producto
de inventario. El dataset proporcionado cuenta con el stock en un instante de tiempo dado.
de cada artículo y deberá proporcionar una predicción de la
Las RNA se han utilizado durante muchos años en el
cantidad de días que tardará en agotarse. Para ello se
reconocimiento de patrones y, hoy en día se utilizan en
deberán predecir las ventas diarias de los próximos 30 días
finanzas para mejorar las previsiones en los mercados de
y en base a ellas y al stock de producto, calcular la
valores, pero también pueden aplicarse a la gestión de
probabilidad de cada uno de los días. En lugar de dar una
inventario, ya que este se rige por el comportamiento de los
estimación puntual. En pocas palabras, se debe responder la
meses anteriores (tendencia). Por ese motivo emplearemos
siguiente pregunta: “¿Cuáles son las probabilidades de que
una RNA para la resolución de este problema planteado, la
el inventario objetivo se agote en un día?', '¿Y en dos días?”
cual será “alimentada” con la cantidad de ventas de períodos
y así sucesivamente hasta el día 30.
de tiempo anteriores al que se desea estimar, tipo de listado,
El dataset utilizado en este trabajo consta de 8 atributos tipo de envío, si el envío es gratis o pago, el stock al último
con datos del sitio de subastas mercadolibre.com, Está día, y la fecha del dia a predecir.
comprendido por dos meses (febrero y marzo de 2021) de
datos de ventas a nivel diario para un subconjunto de SKU Con toda esta información la RNA debe pronosticar un
(unidad de mantenimiento de Stock o código de artículo). nivel de ventas diario, partiendo del comportamiento
Cada fila corresponde a una combinación de fecha-SKU histórico de dicha variable (sold_quantity).
particular. Se puede pensar en un SKU como una
combinación de un artículo y una variación. Además de Este documento está organizado de la siguiente manera:
SKU, identificador único para cada producto, y date, fecha En la próxima sección se explica la metodología aplicada y
en que se realizaron las ventas, para cada fila, están los datos. En la sección 3 se presentan los resultados
disponibles los atributos, sold_quantity, número de obtenidos y en la sección 4 se presentan las conclusiones de
unidades de SKU que se vendieron en una fecha en la investigación.
particular, listing_type, tipo de listado que tenía el SKU
para esa fecha en particular. Los valores posibles son
“Classic” o “Premium” y se relacionan con la exposición
que tienen los artículos y la tarifa que se cobra al vendedor
como comisión de venta. Otra ventaja importante de un
artículo que figura como “Premium”, significa que podrá
ser pagado en cuotas sin interés, shipping_logistic_type,
tipo de método de envío ofrecido para el SKU en esa fecha.
Los valores posibles son, (“fulfillment”, “cross_docking” y
“drop_off”), shipping_payment, indica si el envío del
SKU ofrecido en esa fecha fue gratuito o con costo, desde
la perspectiva del comprador, site_id, indica el país donde
se realizaron las ventas y target_stock, es Nivel de
inventario, (número de unidades del SKU correspondiente
para el que estimarán por cuantos días contará con stock
(Días de Inventario)).
Especialización en inteligencia de datos orientada al big data - UNLP 2021 - Aplicaciones de Inteligencia de Datos - Docente a
cargo: Dr. Aurelio Fernandez Bariviera (Univ. Rovira i Virgili – España)

Fig. 1: Ventas entre febrero y marzo de 2021 en el sitio Mercado libre Argentina Fig 2, Matriz de correlación

2. Caso de estudio
2.1 Datos
Utilizamos un set de datos proporcionado por
listing_type
Mercadolibre, sobre ventas diarias de productos y nivel de
stock de los mismos, cuenta con datos de Mercadolibre shipping_logistic_type
Brasil, México y Argentina, para este trabajo se segmentaron
los datos correspondientes a Mercadolibre Argentina. Se shipping_payment
utilizó, para el diseño del modelo, RapidMiner y un script Target_stock
desarrollado en Python para el cálculo de las probabilidades.
date_day

date_month
2.2 Construcción del modelo
La predicción fue resuelta generando un modelo date_week
mediante una red neuronal artificial. Para ello, inicialmente Thresthold node
se segmentaron los datos, dejando solamente los
correspondientes a Mercadolibre Argentina, luego,
mediante la matriz de correlación, Fig [2], no se detectaron Fig. 3. Red neuronal
atributos fuertemente correlacionados por lo que no hubo
que descartar ningún atributo. El atributo a predecir (label), Modelo:
Node 1 (Sigmoid) Node 2 (Sigmoid)
es sold_quantity. ---------------- ----------------
El proceso fue realizado con la herramienta de análisis listing_type: 0,038 listing_type: -0,044
shipping_logistic_type: -0,002 shipping_logistic_type: -0,016
de datos RapidMiner, donde se realizaron diferentes shipping_payment: 0,021 shipping_payment: 0,020
operaciones. Primeramente se numerizaron los atributos target_stock: -0,227 target_stock: -0,221
listing_type, shipping_logistic_type y shipping_payment. date_day: 0,006 date_day: 0,056
Otros atributos utilizados fueron date_day, date_month, date_month: 0,000 date_month: -0,007
date_week: -0,018 date_week: -0,002
date_week, (estos surgen de la numerización del atributo Bias: -0,100 Bias: -0,087
date) y finalmente target_stock que es la cantidad de Node 3 (Sigmoid) Node 4 (Sigmoid)
inventario al último día (31 de marzo), el atributo site_id fue ---------------- ----------------
utilizado para segmentar los datos a la región Argentina y el listing_type: -0,007 listing_type: -0,019
shipping_logistic_type: 0,030 shipping_logistic_type: -0,019
atributo SKU para luego hacer las estimaciones para un shipping_payment: -0,024 shipping_payment: -0,045
producto en particular. target_stock: -0,158 target_stock: -0,172
date_day: -0,020 date_day: -0,026
Para el entrenamiento del modelo, se utilizó un 80% del date_month: 0,018 date_month: 0,013
dataset original y el 20% restante fue usado para testing. date_week: -0,017 date_week: 0,002
Bias: -0,052 Bias: -0,038
La RNA se entrenó con 200 ciclos de training, un Node 5 (Sigmoid) Output ( Regression Linear)
learning rate de 0,01 y un momento de 0,9. Una vez ---------------- -------------------
generado el modelo, se realizaron las pruebas de listing_type: 0,018 Node 1: -0,270
performance, lo que nos arrojó un error medio cuadrático shipping_logistic_type: 0,055 Node 2: -0,296
shipping_payment: 0,017 Node 3: -0,197
de 7,773 +/- 0,000. target_stock: -0,202 Node 4: -0,257
El modelo generado está compuesto de cinco nodos de date_day: -0,026 Node 5: -0,224
date_month: -0,025 Threshold: -0,337
entrada, cinco nodos ocultos y el Bias y un nodo de salida date_week: 0,046
[fig.3]. Bias: -0,058
Especialización en inteligencia de datos orientada al big data - UNLP 2021 - Aplicaciones de Inteligencia de Datos - Docente a
cargo: Dr. Aurelio Fernandez Bariviera (Univ. Rovira i Virgili – España)
Finalmente, se procesó el archivo CSV obtenido en 4 Conclusiones
RapidMiner con un script Python y en base a las Es posible, mediante Redes Neuronales Artificiales,
predicciones de ventas del día n, se recalculó el stock hacer predicciones acertadas de acuerdo a la época del año
diario el cual se utiliza como dato de entrada para el y manejar niveles de inventarios correctos que ayuden a
siguiente día n+1 y así hasta llegar al día 30, luego se manejar eficientemente un negocio. Gracias a las
calculan las probabilidades diarias de quedarse sin stock capacidades de aprender en base a datos históricos de las
para un SKU en particular, para ello se recorre el vector RNA, es posible hacer uso de ellas en problemas de
generado, se suma la cantidad vendida del día anterior predicción, donde la variable a estimar sigue con un
con la cantidad vendida del día actual (ventas patrón de comportamiento similar a lo largo del tiempo,
acumuladas), hasta que este sea igual al stock, y se Nos hemos encontrado con el inconveniente en
realiza el cociente entre la cantidad diaria vendida y el donde en ciertos días hay picos de venta y nuestro modelo
total de ventas predichas, lo que nos da la probabilidad no logró predecirlo eficientemente, pero en general hace
de quedarse sin stock de cada día. aproximaciones con un error relativamente bajo. Si bien
las redes neuronales pueden utilizarse para este tipo de
P(NOStock) = Sold_Quantity_Predict / ∑ Sold_Quantity_Predict
predicciones, existen muchas variables que en este
3 Resultados obtenidos ejemplo no han sido tenidas en cuenta y podrían influir
Después de realizar varios ensayos, con un k = 2, mucho en las ventas, como por ejemplo medios de pago,
es decir, la red utiliza la información de 2 meses para promociones bancarias, descuentos, estacionalidad de
predecir las ventas del tercer mes, y con 200 ciclos de ciertos productos, etc., pero igualmente, en general se
entrenamiento, nos da como resultado las estimaciones de logró una buena aproximación a lo que se pedía realizar.
ventas diarias, las que se pueden ver comparadas con las
ventas reales diarias [Fig.4]

Fig.4, Comparación entre ventas (rojo) y estimaciones (amarillo)

Por ejemplo, se puede observar de la salida del script de


Python, en el que para un SKU, nos devuelve el stock inicial,
un vector con las 30 ventas diarias predichas y un vector con
las 30 probabilidades, una por cada día.

Para el SKU 14528


stock inicial = 8
Predicciones de ventas diarias:
[1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1,
0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1,
0, 0, 0, 0, 0, 1, 0]
Probabilidades diarias de agotar el Stock:
[0.020833333333333332, 0.041666666666666664,
0.0625, 0.08333333333333333, 0.10416666666666667,
0.125, 0.125, 0.125, 0.14583333333333334,
0.16666666666666666, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0]

En este ejemplo se puede observar que, en base a las


estimaciones de ventas diarias, cada día van aumentando las
probabilidades de quedarse si stock hasta llegar, para este
SKU, al día 10 que es el día en que más chances hay de agotar
el inventario. Se destaca que al estar hablando de
probabilidades, la suma de todas ellas da 1.
Especialización en inteligencia de datos orientada al big data - UNLP 2021 - Aplicaciones de Inteligencia de Datos - Docente a
cargo: Dr. Aurelio Fernandez Bariviera (Univ. Rovira i Virgili – España)

Referencias

1. Meli Challenge 2021- https://ml-challenge.mercadolibre.com


2. Redes neuronales con Python - Joaquín Amat Rodrigo https://www.cienciadedatos.net/documentos/py35-redes-neuronales-
python.html
3. Paper Laula Lazzarini - Are Technical Trading Rules Useful to Beat the Market? Evidence from the Brazilian Stock Market
https://ideas.info.unlp.edu.ar/aplicaciones-de-inteligencia-de-datos/Contents/Material/View/Access/f73de7de-06f7-11ea-
866e-b26a7e7cf880

También podría gustarte