Icono del sitio Javier Campos .es

Deep learning para predecir el precio del hummus de chocolate

Deep learning para predecir precio de productos de supermercado

Actualización: nueva versión web disponible aquí. La versión web utiliza TensorFlow.js y el modelo entrenado con TensorFlow. Su código también lo he subido a github.

Versión web con TensorFlow.js para probar el modelo entrenado.

A continuación crearemos una red neuronal paso a paso con TensorFlow 2 y Keras, con el objetivo de entrenarla con información de productos de supermercado y poder así predecir precios de productos desconocidos.

La idea surge como curiosidad para contestar a esto: sabiendo cuánto vale el hummus y cuánto vale el chocolate en un supermercado, ¿Cuánto valdría el hummus de chocolate? ¿Cómo de buena puede ser una predicción del precio de productos no conocidos por la red neuronal?

Los datos iniciales no son todo lo buenos que nos gustaría, al contar solo para el entrenamiento con solo esta info de cada producto:

No se tiene info de los ingredientes de los productos (más allá de los que puedan aparecer en el nombre del producto), ni del proceso de fabricación, ni lugar de procedencia… a priori podemos pensar que no vamos a conseguir buenos resultados…

Ejemplo de resultados obtenidos para productos que no existen:

Durante la fase de entrenamiento se llega a un error absoluto medio (Mae) de 0.10 € y a un error de 0.60 € en la fase de test. Hay un overfitting pendiente de resolver (ver apartado siguiente).

Error obtenido durante la fase de entrenamiento.

Disclaimer y trabajo futuro

Es la primera red neuronal que hago, seguro que hay muchas cosas que se pueden mejorar y seguiré aprendiendo.

La base de datos de productos utilizada para el entrenamiento es de 2018 y se ha obtenido de internet. Contiene 6.000 productos aproximadamente.

Trabajo futuro (ToDo):

Distribución inicial de los productos (tamaño unitario – Precio)

He publicado el código fuente del cuaderno en github. Puedes importarlo en Google Colab.

Salir de la versión móvil