Es gibt ein Unternehmen, das mithilfe eines KI-Modells die Ausschussrate drastisch reduziert hat. (mit der SHAP-Bibliothek)

Kundenbeispiel für Hash-Scraper, der die Ausschussrate mit Hilfe von KI-Modellen drastisch gesenkt hat. Detaillierte Erklärung des Daten sammelns und vorverarbeitens.

4
Es gibt ein Unternehmen, das mithilfe eines KI-Modells die Ausschussrate drastisch reduziert hat. (mit der SHAP-Bibliothek)

0. Überblick

Ein Fallbeispiel von Hashscraper, bei dem ein KI-Modell verwendet wurde, um die Ausschussrate in der Produktion zu reduzieren. Dieser Text wurde verfasst, um die Vorhersagen des Machine-Learning-Modells genauer und verständlicher zu erklären.

1. Problemdefinition

1.1. Zielsetzung

Kurz gesagt, basierend auf 128 Variablen in jedem Arbeitsgang, bei denen die Ausschussrate je nach Maschine variierte, war das Ziel, die Ausschussrate zu reduzieren, indem die Variablen analysiert wurden, die zu Ausschüssen führten, nachdem das Machine-Learning-Modell die Vorhersage für fehlerhafte Produkte getroffen hatte.

1.2. Hypothesenbildung

Es wurde die Hypothese aufgestellt, dass durch die Extraktion und Anpassung der Hauptvariablen im Produktionsprozess die Ausschussrate gesenkt werden kann.

2. Datensammlung

2.1. Festlegung der Datenquelle

Die Daten wurden direkt von unserem Kunden in der Fabrik für jede Maschine bereitgestellt.

Da es sich um interne Unternehmensdaten handelt, ist eine direkte Offenlegung schwierig, daher zeigen wir nur einen Ausschnitt der Ordnerstruktur.

2.2. Datenerfassung

Es wurden mindestens 10.000 Datensätze angefordert, und es wurde darum gebeten, so viele Daten wie möglich bereitzustellen.

Die erhaltenen Rohdaten waren:
- Maschine 1: 3.931 Datensätze
- Maschine 2: 16.473 Datensätze
- Maschine 3: 2.072 Datensätze
- Maschine 4: 16.129 Datensätze
- Maschine 5: 57.970 Datensätze
- Maschine 6: 78.781 Datensätze

Insgesamt wurden etwa 175.000 Datensätze verwendet, um das Modell zu trainieren.

3. Datenbereinigung

3.1. Datenbereinigung

Die Datenbereinigung ist äußerst wichtig für das Training des Modells. Ich würde sagen, dass mindestens 80% des Machine-Learning-Lernens auf der Datenbereinigung beruhen.

Wenn schlecht bereinigte Daten zum Training verwendet werden, führt dies zu einem schlecht lernenden Modell. (Es ist so, als würde man Müll hineingeben und Müll herausbekommen.)

3.2. Arbeitsablauf

3.2.1. Behandlung der Dateicodierung

Die Dateien wurden mit unterschiedlichen Codierungen geladen, einige mit 'cp949' und andere mit 'utf-8'.

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. Labeling-Arbeit

Um das Labeling durchzuführen, wurden Datum und Uhrzeit kombiniert und mit den Y-Achsendaten verknüpft:

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. Datenzusammenführung

Die vorverarbeiteten Daten für jede Maschine wurden zusammengeführt:

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

3.2.4. Entfernen von Duplikaten

Duplikate können eine Verzerrung im Datensatz verursachen und das Modell daran hindern, die Vielfalt der Daten zu lernen. Duplikate wurden daher entfernt, um Überanpassungsprobleme zu vermeiden:

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

3.2.5. Behandlung von fehlenden Werten

Die fehlenden Werte wurden mithilfe der missingno-Bibliothek visualisiert. Spalten mit vielen fehlenden Werten wurden vollständig entfernt. Der Grund für das Entfernen von Spalten mit vielen fehlenden Werten ist ähnlich wie oben erwähnt.

3.3. Feature Engineering

Um die Leistung des Modells zu verbessern, werden neue Features erstellt oder vorhandene Features transformiert. Da wir nicht genau wussten, was jedes Feature bedeutet und alle Features als wichtig erachteten, haben wir kein spezielles Feature Engineering durchgeführt.

3.4. EDA (Explorative Datenanalyse)

Überprüfung der Datenverteilung

Die Verteilung der Daten wird mithilfe von Histogrammen, Boxplots usw. überprüft.

Analyse der Korrelation

Die Korrelation zwischen den Features wird analysiert, um wichtige Features zu identifizieren oder das Problem der Multikollinearität zu lösen.

4. Sampling-Typen

4.1. Behandlung von Datenungleichgewichten

Da die Daten stark unausgeglichen waren, haben wir verschiedene Under-Sampling-Techniken in Kombination mit verschiedenen Modellen ausprobiert. Folgende Under-Sampling-Techniken wurden angewendet:

  • Random Under-sampling (RUS): Zufälliges Entfernen von Daten aus der Mehrheitsklasse
  • NearMiss: Nur die k nächsten Datenpunkte der Minderheitsklasse werden beibehalten
  • Tomek Links: Finden der nächsten Datenpaare und Entfernen von Daten der Mehrheitsklasse
  • Edited Nearest Neighbors (ENN): Verwendung des k-NN-Algorithmus zum Entfernen von Daten der Mehrheitsklasse
  • Neighbourhood Cleaning Rule (NCL): Erweiterte Version von ENN

Letztendlich wurde festgestellt, dass ENN Under-Sampling am besten zum Modell passte und daher angewendet wurde.

# 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. Modellierung

5.1. Modellauswahl

Je nach Art des Problems (Klassifizierung, Regression, Clustering usw.) wird das geeignete Machine-Learning-Modell ausgewählt. Wir haben verschiedene Modelle getestet, aber letztendlich das Modell basierend auf den besten Ergebnissen von PyCaret ausgewählt.

PyCaret ist eine Open-Source-Datenanalyse- und Machine-Learning-Automatisierungsbibliothek für Python. PyCaret ermöglicht es Benutzern, mit wenig Code eine vollständige Datenanalyse- und Machine-Learning-Pipeline schnell aufzubauen und zu experimentieren.

5.2. Modelltraining

Das Modell wird mit Trainingsdaten trainiert. Letztendlich ergab sich, dass das CatBoost-Modell die höchsten AUC- und F1-Score-Werte lieferte.

Erläuterung der Bewertungsmetriken:

AUC (Fläche unter der Kurve):
- AUC steht für den Bereich unter der ROC (Receiver Operating Characteristic) Kurve.
- Der AUC-Wert liegt zwischen 0 und 1, wobei ein Wert nahe bei 1 auf eine gute Leistung des Klassifizierers hinweist.
- AUC ist besonders nützlich bei ungleichen Klassenverteilungen.

F1-Score:
- Der F1-Score ist das harmonische Mittel aus Präzision und Recall.
- Präzision ist das Verhältnis der korrekt positiv vorhergesagten Fälle zur Gesamtzahl der positiv vorhergesagten Fälle, während Recall das Verhältnis der korrekt positiven Fälle zur Gesamtzahl der tatsächlich positiven Fälle ist.
- Der F1-Score liegt zwischen 0 und 1, wobei ein höherer Wert auf eine bessere Leistung des Modells hinweist.

6. Abschluss: Ableitung von Variablen und Hinzufügen von Funktionen zur Verbesserung der Anschaulichkeit

Letztendlich haben wir Echtzeit-Rohdaten von Maschinen in der Fabrik erhalten, diese durch das Modell vorhergesagt und mithilfe der SHAP-Bibliothek die Variablen für fehlerhafte Produkte abgeleitet.

Zusätzlich haben wir für die Arbeiter in der Fabrik einen einfachen Excel-Output erstellt, der ihnen ermöglicht, die Variablen und die Entscheidung, ob ein Produkt fehlerhaft ist oder nicht, auf einen Blick zu sehen. Dies wurde durch die Verwendung von PyInstaller erreicht, um einen einfachen Prozess zu gewährleisten, bei dem durch Klicken auf eine Excel-Datei zugegriffen werden kann, um die Variablen und die Ausschussentscheidung für die Rohdaten anzuzeigen.

Was ist SHAP?

SHAP steht für SHapley Additive exPlanations und wird verwendet, um zu erklären, wie stark jedes Feature eines Machine-Learning-Modells die Vorhersage beeinflusst. Dies erhöht die "Transparenz" des Modells und verbessert das Vertrauen in die Art und Weise, wie Vorhersagen getroffen werden.

Fazit

In einem Fall wie diesem hat Hashscraper basierend auf einem solchen KI-Modell das Projekt durchgeführt. Durch die Bereitstellung einer vollständigen Lösung von der Datenbereinigung über die Modellierung bis hin zur benutzerfreundlichen Benutzeroberfläche für Endbenutzer konnten wir die Ausschussrate in der tatsächlichen Produktion effektiv reduzieren.

Comments

Add Comment

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

Weiterlesen

Get notified of new posts

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

Your email will only be used for new post notifications.