Este repositorio contiene el código correspondiente al proyecto final de la Especialización en inteligencia artificial (CEIA) de la Universidad de Buenos Aires (UBA).
En el mismo se aborda el problema de modelar un equipo de extracción de aceite vegetal para evaluar si es posible hacer una estimación puntual del contenido de materia grasa teniendo como variables de entrada distintos datos de sensores de campo. Otro objetivo importante del proyecto es conocer mejor el comportamiento del proceso a partir del análisis de datos.
Inicialmente el trabajo se divide en 4 etapas:
- Import data: El objetivo de esta etapa es desarrollar una cadena de procesamiento de datos que reciba los archivos entregados por el sistema de control, y sea capaz de estructurarlos de manera que faciliten el análisis y procesamiento posterior. se realiza la importación de datos provenientes de un sistema SCADA y se estructuran para poder trabajar luego. Se alinean los timestamps, corrigen nombres de las features, se agrupan en un solo formato todos los chunks de datos.
Figura 1: pipeline para la importación de datos
- Data processing: se realiza un análisis exploratorio de los datos, detección de outliers, evaluación de correlaciones y normalización de los datos.
Figura 2: matriz de correlación (Pearson) de los datos
Figura 3: criterio de la información mutua con respecto a la variable que se intenta predecir
Figura 4: distribuciones originales de los datos
Figura 5: detección de outliers en la variable velocidad_extractor
Figura 6: análisis de concentraciones dentro del extractor
-
Feature selection: se seleccionan las features que mayor información aportan a distintos modelos, para seleccionar las variables se utiliza el criterio de la información mutua y análisis de correlaciones. También se utilizaron métoso de selección como RFE y SFS. En base a los resultados se armá el dataset final para entrenar los modelos de Machine learning y Deep learning.
-
Model selection: en esta sección comenzamos a trabajar con los datos procesados provenientes de la etapa anterior para seleccionar el modelo que mejor performa sobre los datos. Fue probado un modelo de cada familia, considerando: support vector machine, random forest, XGBoost y redes neuronales MLP. Fue realizada una breve búsqueda de hiperparámetros utilizando GridSearch.
Figura 7: métricas sobre el set de validación
Figura 8: métricas sobre el set de validación luego del fine tuning
Figura 9: métricas obtenidas para distintos ohorizontes temporales
Figura 10: métricas obtenidas sobre el set de test
Ajuste de hiperparámetros utilizando OPTUNA: En base al análisis realizado se decidió utilizar un modelo de la familia XGBOOST. Para realizar el ajuste fino de los hiperparámetros se utilizó el framework OPTUNA, el cual aportó explicabilidad al impacto de cada hiparparámetro en la performance del modelo.
A continuación se pueden ver algunas imágenes obtenidas durante el ajuste fino de hiperparámetros.
Figura 11: gráfico de coordenadas paralelas
Figura 12: historial de optimización de HPs
Figura 13: importancia de los HPs para el modelo desarrollado
Figura 14: gráfico de contorno para un subconjunto en particular de HPs
Prueba en el conjunto de test:
Finalmente, con el modelo obtenido luego del ajuste fino de hiperparámetros, se realizó una prueba sobre el conjunto de test.
Figura 15: predicciones sobre el conjunto de test
Análisis utilizando SHAP values:
Para aportar mayor explicabilidad a las decisiones tomadas por el modelo desarrollado se realizó un análisis utilizando valores SHAP.
A continuación se ve un gráfico de los valores SHAP para todas las características de entrada al modelo y también un gráfico específico para las características más importantes que se encontraron en el análisis.
Figura 16: valores SHAP obtenidos en el conjunto de test
Figura 17: valores SHAP obtenidos para la variable humedad de semilla
Figura 18: valores SHAP obtenidos para la variable temperatura de laminado
















