¿Hay empresas que han reducido drásticamente la tasa de procesos defectuosos a través de modelos de IA? (con la biblioteca SHAP)

Caso de cliente de Hashicrapper que redujo drásticamente la tasa de procesos defectuosos utilizando un modelo de IA. Explicación detallada del proceso de recopilación y preprocesamiento de datos.

4
¿Hay empresas que han reducido drásticamente la tasa de procesos defectuosos a través de modelos de IA? (con la biblioteca SHAP)

0. Resumen

Uno de los casos de uso de Hashscraper fue utilizar un modelo de IA para reducir la tasa de defectos en la producción. Se ha escrito este artículo para explicar de manera más profunda y comprensible las predicciones del modelo de aprendizaje automático.

1. Definición del Problema

1.1. Establecimiento de Objetivos

En resumen, en el caso del cliente, se observaron diferencias en la tasa de defectos entre las máquinas en función de 128 variables. El objetivo era predecir los productos defectuosos a través de un modelo de aprendizaje automático, analizar qué variables causaban los defectos y ajustar esas variables para reducir la tasa de defectos.

1.2. Formulación de Hipótesis

Se planteó la hipótesis de que al extraer y ajustar las variables clave a través de un modelo de aprendizaje automático en el proceso de producción, se reduciría la tasa de defectos.

2. Recopilación de Datos

2.1. Determinación de la Fuente de Datos

Nuestro cliente proporcionó directamente los datos de cada máquina en la fábrica.

Dado que estos datos son internos de la empresa, no podemos compartirlos directamente, por lo que solo mostramos capturas de pantalla de las carpetas.

2.2. Recopilación de Datos

Solicitamos al menos 10,000 registros de datos y pedimos la mayor cantidad posible. Los datos crudos que recibimos fueron:
- Máquina 1: 3,931 registros
- Máquina 2: 16,473 registros
- Máquina 3: 2,072 registros
- Máquina 4: 16,129 registros
- Máquina 5: 57,970 registros
- Máquina 6: 78,781 registros

En total, utilizamos aproximadamente 175,000 registros de datos para entrenar el modelo.

3. Preprocesamiento de Datos

3.1. Limpieza de Datos

La limpieza de datos es crucial para el entrenamiento del modelo. Personalmente, creo que al menos el 80% del aprendizaje automático se basa en la limpieza de datos.

Si se entrena un modelo con datos mal limpiados, el modelo resultante no aprenderá correctamente (básicamente, basura adentro, basura afuera).

3.2. Proceso de Trabajo

3.2.1. Procesamiento de Codificación de Archivos

Al cargar los archivos CSV, los codificamos en 'cp949' o 'utf-8' según fuera necesario.

for file_path in file_paths:
    try:
        df = pd.read_csv(file_path, encoding='cp949', header=None)
    except UnicodeDecodeError:
        df = pd.read_csv(file_path, encoding='utf-8', header=None)

3.2.2. Etiquetado

Para etiquetar, combinamos la fecha y la hora, y vinculamos los datos de la columna Y con esa hora:

for i in range(len(result_df_new) - 1):
    start_time, end_time = result_df_new['Datetime'].iloc[i], result_df_new['Datetime'].iloc[i + 1]
    selected_rows = df_yaxis[(df_yaxis['Datetime'] >= start_time) & (df_yaxis['Datetime'] < end_time)]
    results.append(1 if all(selected_rows['결과'].str.contains('OK')) else 0)
results.append(0)

3.2.3. Fusión de Datos

Combinamos los datos preprocesados de cada máquina:

data = pd.concat([df1,df2,df3,df4,df6])
data.reset_index(drop=True,inplace=True)

3.2.4. Eliminación de Datos Duplicados

Los datos duplicados pueden sesgar el conjunto de datos y causar problemas de aprendizaje de la diversidad de datos. Además, pueden provocar sobreajuste, por lo que eliminamos todos los datos duplicados:

data = data.drop_duplicates().reset_index(drop=True)

3.2.5. Manejo de Valores Ausentes

Visualizamos los valores ausentes utilizando la biblioteca missingno. Eliminamos las columnas con muchos valores ausentes, ya que pueden causar problemas similares a los mencionados anteriormente.

3.3. Ingeniería de Características

La ingeniería de características implica crear nuevas características o transformar las existentes para mejorar el rendimiento del modelo. Dado que consideramos que cada valor de característica era importante y no teníamos un conocimiento preciso de cada uno, no realizamos ingeniería de características.

3.4. Análisis Exploratorio de Datos (EDA)

Verificación de la Distribución de Datos

Utilizamos gráficos como histogramas y boxplots para verificar la distribución de los datos.

Análisis de la Relación

Analizamos la correlación entre las características para identificar las importantes o resolver problemas de multicolinealidad.

4. Tipo de Muestreo

4.1. Manejo de Desbalance de Datos

Dado el desbalance de datos, probamos diferentes técnicas de submuestreo combinadas con varios modelos. Intentamos varias técnicas de submuestreo, como:
- Submuestreo Aleatorio (RUS): Eliminar datos aleatoriamente de la clase mayoritaria
- NearMiss: Mantener solo los k datos de la clase minoritaria más cercanos a los datos de la clase mayoritaria
- Tomek Links: Encontrar pares de datos más cercanos y eliminar los de la clase mayoritaria
- Vecinos Cercanos Editados (ENN): Utilizar el algoritmo k-NN para eliminar datos de la clase mayoritaria
- Regla de Limpieza de Vecindario (NCL): Versión extendida de ENN

Finalmente, determinamos que el Submuestreo ENN era el más adecuado para nuestro modelo.

# NearMiss 인스턴스 생성
nm = NearMiss()

# 언더샘플링 수행
X_resampled, y_resampled = nm.fit_resample(data.drop('결과', axis=1), data['결과'])

# 언더샘플링 결과를 DataFrame으로 변환
data_sample = pd.concat([X_resampled, y_resampled], axis=1)

5. Modelado

5.1. Selección del Modelo

Dependiendo del tipo de problema (clasificación, regresión, clustering, etc.), se elige un modelo de aprendizaje automático adecuado. Aunque probamos varios modelos, finalmente elegimos un modelo basado en los resultados de PyCaret.

PyCaret es una biblioteca de automatización de análisis de datos y aprendizaje automático de código abierto para Python. PyCaret permite a los usuarios construir y experimentar rápidamente con pipelines completos de análisis de datos y aprendizaje automático con poco código.

5.2. Entrenamiento del Modelo

Entrenamos el modelo con los datos de entrenamiento. Finalmente, el modelo de CatBoost produjo los valores más altos de AUC y F1-score.

Explicación de las Métricas de Evaluación:

AUC (Área Bajo la Curva):
- El AUC representa el área bajo la curva ROC (Receiver Operating Characteristic).
- El valor de AUC está entre 0 y 1, y cuanto más cerca esté de 1, mejor se considera el rendimiento del clasificador.
- El AUC es especialmente útil en distribuciones de clases desequilibradas.

F1-Score:
- El F1-Score es la media armónica de la precisión y la exhaustividad.
- La precisión es la proporción de verdaderos positivos entre los positivos predichos, y la exhaustividad es la proporción de verdaderos positivos entre todos los verdaderos positivos.
- El valor del F1-Score está entre 0 y 1, y cuanto mayor sea, mejor se considera el rendimiento del modelo.

6. Conclusión: Extracción de Variables y Adición de Funciones Intuitivas

Finalmente, implementamos un sistema que recopila datos en tiempo real de las máquinas en la fábrica, realiza predicciones a través de este modelo, extrae las variables relacionadas con los productos defectuosos utilizando la biblioteca SHAP y presenta los resultados en un archivo Excel para que los trabajadores de la fábrica puedan ver fácilmente si un producto es defectuoso o no con un solo clic.

¿Qué es SHAP?

SHAP es una herramienta utilizada para explicar cuánto influye cada característica de un modelo de aprendizaje automático en una predicción. Aumenta la 'transparencia' del modelo y mejora la confianza en cómo se realizan las predicciones.

Conclusión

En casos como el mencionado anteriormente, Hashscraper está llevando a cabo proyectos basados en modelos de IA como se describió anteriormente. Desde el preprocesamiento de datos hasta el modelado y la interfaz intuitiva para los usuarios finales, hemos podido reducir efectivamente la tasa de defectos en la producción.

Comments

Add Comment

Your email won't be published and will only be used for reply notifications.

Sigue leyendo

Get notified of new posts

We'll email you when 해시스크래퍼 기술 블로그 publishes new content.

Your email will only be used for new post notifications.