Zum Inhalt springen

Woche 6 | Session 4: Aufbau eines Klassifikationsbaums — Gini-Index, Aufteilung & Stoppkriterien

Kurs: Supply Chain Digitalisierung — Modul 3: Analytics im SCM



  • Session 3: Zeigte den OUTPUT des Klassifikationsbaums — 4 Blattknoten-Regeln, Vorhersagen, wie man ihn in der Fertigung einsetzt
  • Session 4: Erklärt, WIE der Baum aufgebaut wurde — der Algorithmus dahinter
  • Kernlogik des Algorithmus: Wiederholtes Aufteilen (Splitten) von Knoten durch Auswahl der Variablen und des Cutoffs, die die Unreinheit maximal reduzieren → bis ein Stoppkriterium erfüllt ist

Schritt 1 — Start mit dem Wurzelknoten (Knoten 0)

Abschnitt betitelt „Schritt 1 — Start mit dem Wurzelknoten (Knoten 0)“
  • Trainingsdaten: 700 Instanzen (Modell nutzt 700, kompletter Datensatz hat 1000 — 700 werden für das Training genutzt)
  • An der Wurzel (keine Merkmalsinformationen): 447 Maschinen sind ausgefallen (Ja) | 253 sind nicht ausgefallen (Nein)
  • Basiswahrscheinlichkeit: 447/700 = 64% Wahrscheinlichkeit, dass eine zufällig gewählte Maschine ausfällt
  • Problem der Basis: 64% unabhängig von Alter, Auslastung, Ölkontamination etc. — ignoriert alle nützlichen Informationen
  • Ziel des Baums: Merkmale einbeziehen, um die Genauigkeit über die 64% Basis hinaus zu verbessern
  • Gini bei Knoten 0: 1 − (0,64² + 0,36²) = 1 − (0,41 + 0,13) = 0,46 (nah am Maximum von 0,5 → hochgradig unreine Daten → Verbesserungspotenzial)

Konzepte der Unreinheit

Warum Unreinheit? Unreinheit = Zufälligkeit in einem Knoten. Ein reiner Knoten = alle Beobachtungen gehören zu einer Klasse → perfekte Vorhersage. Je geringer die Unreinheit an jedem Blattknoten, desto höher die Klassifikationsgenauigkeit. Ziel bei jeder Aufteilung: Wähle Variable + Cutoff, die die Unreinheit am stärksten reduzieren.

  • Gini-Index-Formel: Gini(t) = 1 − Σᵢ [ P(Klasse i | Knoten t) ]²
    • Für binär (k=2): Gini(t) = 1 − (p₁² + p₂²)
    • Bereich: 0 (perfekt rein) bis 0,5 (50-50 Aufteilung — maximale Unreinheit)
  • Entropie-Formel: Entropie(t) = − Σᵢ P(Klasse i | Knoten t) × log₂[ P(Klasse i | Knoten t) ]
    • Bereich: 0 (perfekt rein) bis 1 (50-50 Aufteilung — maximale Unreinheit)
SzenarioKlasse 1 (%)Klasse 2 (%)Gini-Index 1 − Σp²Entropie -Σp·log₂(p)Unreinheitsgrad
Alle in Klasse 1100%0%1 − (1² + 0²) = 0−(1·log₂1 + 0·log₂0) = 0Null ✓ (Rein)
Alle in Klasse 20%100%1 − (0² + 1²) = 0−(0·log₂0 + 1·log₂1) = 0Null ✓ (Rein)
50-50 Aufteilung50%50%1 − (0,5² + 0,5²) = 0,5−(0,5·log₂0,5 + 0,5·log₂0,5) = 1Maximum ✗
Knoten 0 (Wurzel)64%36%1 − (0,64² + 0,36²) = 0,46Hoch (nah am Max)

Gini-Index vs Entropie Diagramm

  • Form: Umgekehrtes U — symmetrisch um 0,5
  • Sowohl Gini als auch Entropie starten bei 0 (alle in einer Klasse) → steigen auf das Maximum bei 0,5 (50-50 Aufteilung) → fallen zurück auf 0
  • Implikation: Beim Aufteilen eines Knotens wollen wir Beobachtungen WEG von 0,5 zu einem der Enden (0 oder 1) bewegen → Unreinheit reduzieren → Genauigkeit verbessern

Aufteilungslogik — Wie man Variable und Cutoff auswählt

Abschnitt betitelt „Aufteilungslogik — Wie man Variable und Cutoff auswählt“

Aufteilung des Klassifikationsbaums

Bei jedem Knoten werden ALLE Variablen (Alter, Auslastung, MTBF, Öl etc.) mit ALLEN möglichen Cutoff-Werten ausprobiert. Für jedes (Variable, Cutoff) Paar wird die gewichtete Reduktion der Unreinheit berechnet.

  • Formel zur Reduktion der Unreinheit: ΔImpurity = Gini(Elternknoten) − [ w_links × Gini(linkes Kind) + w_rechts × Gini(rechtes Kind) ] wobei w_links = (Beobachtungen im linken Kind) / (Beob. im Elternknoten)
  • Wahl: Das (Variable, Cutoff) Paar, das das GRÖSSTE ΔImpurity liefert → das ist die beste Aufteilung

Verfolgung der Aufteilung Knoten für Knoten — Der vollständige Baum

Abschnitt betitelt „Verfolgung der Aufteilung Knoten für Knoten — Der vollständige Baum“

Knoten 0 Wurzel-Aufteilung

Alle Knoten — Beobachtungen, Gini, Aufteilungsvariable, Cutoff, Reduktion

Abschnitt betitelt „Alle Knoten — Beobachtungen, Gini, Aufteilungsvariable, Cutoff, Reduktion“
KnotenBeobachtungenJa% / Nein%GiniAufteilungsvariableCut-offReduktion der UnreinheitKindknoten
0 (Wurzel)700 gesamt (447 Ja, 253 Nein)64% / 36%0,46Ölkontamination5,50,052 (Maximum)→ Knoten 1, Knoten 2
1141 gesamtÖl ≤ 5,50,44Auslastung92,05%0,38 (Max bei Knoten 1)→ Knoten 3, Knoten 4
2559 gesamt (72% Ja)Öl > 5,50,40MTBF23,950,11 (Max bei Knoten 2)→ Knoten 5, Knoten 6
3 (Blatt)109 Beob.17% / 83%0,28STOPPVorhersage: FÄLLT NICHT AUS
4 (Blatt)~35 Beob.88% / 12%0,21STOPPVorhersage: FÄLLT AUS
5 (Blatt)493 Beob.77% / 23%0,35STOPPVorhersage: FÄLLT AUS
6 (Blatt)66 Beob.29% / 71%0,41STOPPVorhersage: FÄLLT NICHT AUS

Genauigkeitsentwicklung — Wie jede Aufteilung die Vorhersage verbessert

Abschnitt betitelt „Genauigkeitsentwicklung — Wie jede Aufteilung die Vorhersage verbessert“

Visualisierung der Genauigkeitsverbesserung

StufeVerfügbare InformationenBeste VorhersagegenauigkeitInterpretation
Knoten 0 (Keine Info)Keine — wir wissen nur, dass die Maschine existiert64% (Basis)64% Ausfallwahrscheinlichkeit basierend auf reiner Historie.
Nach Split 1 (Knoten 2)Ölkontamination > 5,572% (+8%)Die Information hoher Ölkontamination verbessert die Genauigkeit.
Nach Split 2 (Knoten 5)Öl > 5,5 UND MTBF ≤ 23,9577% (+5%)MTBF-Informationen erhöhen die Genauigkeit auf 77%.
Knoten 4 (Bestes Blatt)Öl ≤ 5,5 UND Auslastung > 92,05%88% (+24%)Höchste Genauigkeit — überlastete Maschinen fallen sehr wahrscheinlich aus.

Fazit: Jede Aufteilung fügt Informationen hinzu → die Genauigkeit steigt. Jede zusätzliche Aufteilung bringt weniger Genauigkeitsverbesserung als die vorherige (abnehmender Grenznutzen) → Grund zum Aufhören.


Warum ein Stopp entscheidend ist — Overfitting: Ohne Stopp: Baum teilt sich weiter auf → schließlich hat jedes Blatt nur 1 Beobachtung → 100% Genauigkeit auf Trainingsdaten.

  • Problem: Modell hat Trainingsdaten “auswendig gelernt”, anstatt Muster zu lernen → schlechte Genauigkeit bei neuen Testdaten (Overfitting).
  • Lösung: Stoppkriterien anwenden, um ein einfacheres, allgemeingültigeres Modell zu erstellen.

Drei Stoppkriterien, die bei Klassifikationsbäumen verwendet werden

Abschnitt betitelt „Drei Stoppkriterien, die bei Klassifikationsbäumen verwendet werden“
StoppkriteriumDefinitionWie in diesem Beispiel verwendet
Max. BaumtiefeStoppt das Aufteilen, sobald der Baum eine vorgegebene maximale Tiefe erreicht.Tiefe = 2 verwendet. Keine weitere Aufteilung danach.
Min. Beobachtungen pro KnotenTeile keinen Knoten auf, wenn er weniger als eine Mindestanzahl (oder %) an Beobachtungen enthält.Knoten 6 hat ~9% und Knoten 4 ~5%, würde bei min=10% einen Stopp auslösen.
Min. Reduktion der UnreinheitNicht aufteilen, wenn der Reinheitsgewinn unter einem Schwellenwert (Epsilon) liegt.Verhindert winzige, bedeutungslose Aufteilungen.

4-Schritte-Algorithmus — Wie man einen Klassifikationsbaum aufbaut

Abschnitt betitelt „4-Schritte-Algorithmus — Wie man einen Klassifikationsbaum aufbaut“
  1. Start bei der Wurzel: Lege alle Trainingsdaten in den Wurzelknoten (Knoten 0). Berechne den initialen Gini-Index (oder Entropie).
  2. Finde den besten Split: Probiere für jeden Knoten alle möglichen (Variable, Cutoff) Kombinationen aus. Wähle diejenige mit der maximalen Reduktion der Unreinheit (ΔImpurity).
  3. Wiederholen: Wende Schritt 2 auf jeden neu erstellten internen Knoten an. Teile weiter auf, bis ein Stoppkriterium erfüllt ist.
  4. Stoppen und klassifizieren: Weise jedem Blattknoten die Mehrheitsklasse als Vorhersage zu. Berichte Wahrscheinlichkeit = Anteil dieser Klasse im Blatt, und Support = Anteil der Trainingsdaten in diesem Blatt.

  • Wurzelknoten-Basis: 700 Beobachtungen | 64% Ausfallrate | Gini = 0,46 — hohe Unreinheit, Verbesserung nötig
  • Unreinheitsmaße: Gini-Index = 1 − Σp² | Entropie = −Σp·log₂(p). Beide = 0 für reine Knoten, Maximum bei 50-50 Aufteilung.
  • Aufteilungskriterium: Wähle (Variable, Cutoff) mit maximaler ΔImpurity
  • Genauigkeitsentwicklung: 64% (Basis) → 72% (nach Öl-Split) → 77%/88% (nach 2. Split)
  • Stoppkriterien: Max. Tiefe | Min. Beobachtungen pro Knoten | Min. ΔImpurity
  • Overfitting: Kein Stopp → 100% Trainingsgenauigkeit, aber schlechte Testgenauigkeit. Stopp = essenziell für Verallgemeinerung.
  • Nächste Session: Python in der Praxis — dieses exakte Modell im Code implementieren