Il y a une entreprise qui a considérablement réduit le taux de processus défectueux grâce à un modèle d'IA? (avec la bibliothèque SHAP)

Cas client de Hashscrapper réduisant de manière significative le taux de processus défectueux en utilisant un modèle d'IA. Explication détaillée de la collecte et du prétraitement des données.

4
Il y a une entreprise qui a considérablement réduit le taux de processus défectueux grâce à un modèle d'IA? (avec la bibliothèque SHAP)

0. Introduction

Un des cas clients de HashScraper a utilisé un modèle d'IA pour réduire le taux de défauts observés en usine. J'ai rédigé cet article pour expliquer de manière approfondie et compréhensible les prédictions du modèle d'apprentissage automatique.

1. Définition du Problème

1.1. Objectif

En bref, dans le cas client, les taux de défauts variaient d'une machine à l'autre en fonction de 128 variables. L'objectif était de prédire les produits défectueux à l'aide d'un modèle d'apprentissage automatique, d'analyser les variables responsables des défauts prédits par le modèle et de les ajuster pour réduire le taux de défauts.

1.2. Hypothèse

Nous avons formulé l'hypothèse selon laquelle en extrayant et en ajustant les variables clés du processus à l'aide du modèle d'apprentissage automatique, nous pourrions réduire le taux de défauts.

2. Collecte de Données

2.1. Détermination de la Source de Données

Nos clients nous ont directement fourni les données de chaque machine de l'usine.

Ces données étant internes à l'entreprise, nous ne pouvons pas les divulguer directement, nous vous montrons juste des captures d'écran des dossiers.

2.2. Collecte de Données

Nous avons demandé un minimum de 10 000 données et nos clients nous ont fourni autant de données que possible. Les données brutes que nous avons reçues étaient les suivantes :
- Machine 1 : 3 931 données
- Machine 2 : 16 473 données
- Machine 3 : 2 072 données
- Machine 4 : 16 129 données
- Machine 5 : 57 970 données
- Machine 6 : 78 781 données

Au total, nous avons utilisé environ 175 000 données pour entraîner le modèle.

3. Prétraitement des Données

3.1. Nettoyage des Données

Le nettoyage des données est crucial pour l'apprentissage du modèle. Je dirais que c'est plus de 80% de l'apprentissage par l'IA.

Si vous entraînez un modèle avec des données mal nettoyées, vous obtiendrez un modèle qui n'apprendra pas correctement (pour simplifier, si vous mettez des déchets en entrée, vous obtiendrez des déchets en sortie).

3.2. Ordre des Opérations

3.2.1. Traitement de l'Encodage des Fichiers

Lors du chargement des fichiers, nous avons dû encoder en 'cp949' ou 'utf-8' pour les lire.

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. Étiquetage

Pour étiqueter, nous avons combiné la date et l'heure, puis relié ces données à l'axe y :

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. Fusion des Données

Nous avons fusionné les données prétraitées de chaque machine :

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

3.2.4. Suppression des Doublons

Les doublons peuvent biaiser le jeu de données et poser des problèmes de diversité et de surapprentissage. Nous avons donc supprimé tous les doublons :

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

3.2.5. Gestion des Valeurs Manquantes

Nous avons visualisé les valeurs manquantes avec la bibliothèque missingno. Les colonnes avec de nombreuses valeurs manquantes ont été supprimées. La raison de la suppression des colonnes avec de nombreuses valeurs manquantes est similaire à celle évoquée précédemment.

3.3. Ingénierie des Fonctionnalités

Pour améliorer les performances du modèle, il est possible de créer de nouvelles fonctionnalités ou de transformer les fonctionnalités existantes. Comme nous considérions chaque valeur de fonctionnalité comme importante et ne les connaissions pas toutes précisément, nous n'avons pas effectué d'ingénierie des fonctionnalités.

3.4. Analyse des Données Exploratoire (EDA)

Vérification de la Distribution des Données

Nous utilisons des graphiques tels que des histogrammes et des boîtes à moustaches pour vérifier la distribution des données.

Analyse de la Corrélation

Nous analysons la corrélation entre les fonctionnalités pour identifier les fonctionnalités importantes ou résoudre les problèmes de multicollinéarité.

4. Types d'Échantillonnage

4.1. Traitement des Déséquilibres de Données

Étant donné le déséquilibre des données, nous avons combiné plusieurs modèles avec des sous-échantillonnages. Nous avons essayé diverses techniques de sous-échantillonnage :
- Sous-échantillonnage Aléatoire (RUS) : Suppression aléatoire de données de la classe majoritaire
- NearMiss : Maintien des k données de la classe minoritaire les plus proches des données de la classe majoritaire
- Liens de Tomek : Identification des paires de données les plus proches et suppression des données de la classe majoritaire
- Voisins les Plus Proches Modifiés (ENN) : Utilisation de l'algorithme des k plus proches voisins pour supprimer les données de la classe majoritaire
- Règle de Nettoyage du Voisinage (NCL) : Version étendue de ENN

Finalement, nous avons décidé que la technique de sous-échantillonnage ENN était la plus adaptée pour notre modèle.

# 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. Modélisation

5.1. Sélection du Modèle

En fonction du type de problème (classification, régression, clustering, etc.), nous choisissons le modèle d'apprentissage automatique approprié. Bien que nous ayons testé plusieurs modèles, nous avons finalement choisi le modèle en nous basant sur les meilleurs résultats obtenus avec PyCaret.

PyCaret est une bibliothèque open source d'automatisation de l'analyse de données et de l'apprentissage automatique en Python. PyCaret permet de construire et d'expérimenter rapidement des pipelines d'analyse de données et d'apprentissage automatique avec peu de code.

5.2. Entraînement du Modèle

Nous avons formé le modèle avec les données d'apprentissage. Finalement, le modèle CatBoost a donné les meilleures valeurs d'AUC et de F1-score.

Explication des Métriques d'Évaluation :

AUC (Aire sous la Courbe) :
- L'AUC représente l'aire sous la courbe ROC (Receiver Operating Characteristic).
- La valeur de l'AUC est comprise entre 0 et 1, plus elle est proche de 1, meilleure est la performance du classifieur.
- L'AUC est particulièrement utile pour les distributions de classes déséquilibrées.

F1-Score :
- Le F1-Score est la moyenne harmonique de la précision et du rappel.
- La précision est le ratio des vrais positifs parmi les prédictions positives, tandis que le rappel est le ratio des vrais positifs parmi les vrais positifs réels.
- La valeur du F1-Score est comprise entre 0 et 1, plus elle est élevée, meilleure est la performance du modèle.

6. Conclusion : Extraction des Variables et Ajout de Fonctionnalités Intuitives

En fin de compte, nous avons mis en place une solution complète qui permet de recevoir en temps réel les données brutes des machines de l'usine, de prédire à l'aide de ce modèle, d'extraire les variables responsables des défauts à l'aide de la bibliothèque SHAP.

De plus, pour les travailleurs de l'usine, nous avons utilisé PyInstaller pour créer un fichier Excel qui leur permet de visualiser facilement les étapes du processus et de juger si les données brutes sont des produits défectueux ou non en un seul clic.

Qu'est-ce que SHAP ?

SHAP signifie SHapley Additive exPlanations, un outil utilisé pour expliquer l'impact de chaque fonctionnalité d'un modèle d'apprentissage automatique sur les prédictions. Cela améliore la "transparence" du modèle et renforce la confiance dans la façon dont les prédictions sont faites.

Conclusion

Dans des cas comme celui-ci, HashScraper mène des projets basés sur des modèles d'IA de la manière décrite ci-dessus. En fournissant une solution complète, de la prétraitement des données à la modélisation, en passant par une interface intuitive pour les utilisateurs finaux, nous avons pu réduire efficacement les taux de défauts dans les processus de production réels.

Comments

Add Comment

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

Continuer la lecture

Get notified of new posts

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

Your email will only be used for new post notifications.