914 lines
24 KiB
Plaintext
914 lines
24 KiB
Plaintext
---
|
||
title: "Explainable AI"
|
||
subtitle: "LIME & RBE auf Random Forest <br> mit Adult Census Datensatz"
|
||
filters:
|
||
- include-code-files
|
||
date: today
|
||
date-format: "D.M.YYYY"
|
||
format:
|
||
revealjs:
|
||
incremental: true
|
||
slide-number: c
|
||
css: custom.css
|
||
footer: "Mario, Jan, Nick, Andi, Sebastian, Paul | TINF22B3 | Explainable AI "
|
||
---
|
||
|
||
# Datensatz
|
||
Analyse der Daten
|
||
|
||
## Adult Census Datensatz
|
||
|
||
- Enthält demografische Informationen aus der US-Volkszählung
|
||
- Soll Einkommen einer Person vorhersagen (<|>50000$ pro Jahr)
|
||
|
||
|
||
## Datensatzauswahl
|
||
- Gut strukturiert und saubere Daten
|
||
- Weit verbreiteter Benchmark in der Forschung und im maschinellen Lernen --> wird in vielen Studien verwendet
|
||
- Vielfalt der Variablen Typen --> enthält sowohl kategorische als auch numerische Variablen
|
||
- Realistisches Datenset --> gut geeignet für praxisnahe Anwendungen
|
||
|
||
:::{.notes}
|
||
|
||
1. Gut strukturierte und saubere Daten
|
||
Der Datensatz enthält strukturierte, tabellarische Daten mit klar definierten Spalten.
|
||
Fehlende Werte sind begrenzt, sodass weniger Datenbereinigung erforderlich ist.
|
||
2. Klassifikationsproblem für Machine Learning
|
||
Zielvariable: Einkommen (über oder unter 50.000 USD jährlich).
|
||
Ideal für binäre Klassifikationsmodelle (z. B. Logistic Regression, Decision Trees, Random Forests, Neural Networks).
|
||
3. Vielfältige Feature-Typen
|
||
Beinhaltet sowohl kategorische (z. B. Beruf, Geschlecht, Bildungsniveau) als auch numerische (z. B. Alter, Arbeitsstunden pro Woche) Variablen.
|
||
Ermöglicht das Testen verschiedener Feature-Engineering-Methoden.
|
||
4. Ein realistisches Datenset
|
||
Reale demografische und sozioökonomische Daten aus der US-Volkszählung (1994).
|
||
Praktisch für praxisnahe Anwendungen wie Sozialforschung, Wirtschaftsanalyse oder politische Entscheidungsfindung.
|
||
5. Gut dokumentiert & weit verbreitet
|
||
Häufig verwendet in Tutorials, Forschungsarbeiten und Kaggle-Wettbewerben.
|
||
Viele Ressourcen und Beispielcodes verfügbar.
|
||
6. Ideal für Fairness- und Bias-Analysen
|
||
Der Datensatz enthält sensible Merkmale wie Geschlecht und Ethnie.
|
||
Eignet sich für Studien zur Diskriminierung und Fairness von Algorithmen.
|
||
|
||
:::
|
||
|
||
## Enthaltene Daten im Datensatz {.smaller}
|
||
|
||
| Column Name | Data Type |
|
||
|------------|-----------|
|
||
| age | int64 |
|
||
| workclass | object |
|
||
| fnlwgt | int64 |
|
||
| education | object |
|
||
| education.num | int64 |
|
||
| marital.status | object |
|
||
| occupation | object |
|
||
| relationship | object |
|
||
| race | object |
|
||
| sex | object |
|
||
| capital.gain | int64 |
|
||
| capital.loss | int64 |
|
||
| hours.per.week | int64 |
|
||
| native.country | object |
|
||
| income | object |
|
||
|
||
|
||
:::{.notes}
|
||
1. age (numerisch)
|
||
Alter der Person (in Jahren).
|
||
2. workclass (kategorisch)
|
||
Art der Anstellung der Person.
|
||
Private (privatwirtschaftlich)
|
||
Self-emp-not-inc (selbstständig, aber nicht als Unternehmen)
|
||
Self-emp-inc (selbstständig mit Unternehmen)
|
||
Government (staatliche Anstellung: Local, State, Federal)
|
||
Without-pay (ohne Bezahlung)
|
||
Never-worked (nie gearbeitet)
|
||
3. fnlwgt (numerisch)
|
||
Final weight: Gewichtungsfaktor für Hochrechnungen in der Volkszählung -> gibt an wie viele Menschen mit ähnlichen Merkmalen in der Gesamtbevölkerung durch diese einzelne Person repräsentiert werden
|
||
Wird meist für ML-Modelle nicht genutzt. --> für unseren Datensatz normalerweise nicht wichtig aber da wir eine Gewichtung machen
|
||
4. education (kategorisch)
|
||
Bachelors (Bachelor-Abschluss)
|
||
Masters (Master-Abschluss)
|
||
Doctorate (Promotion)
|
||
5. education.num (numerisch)
|
||
9 (High School)
|
||
16 (Promotion)
|
||
6. marital.status (kategorisch)
|
||
Familienstand der Person.
|
||
Married (verheiratet)
|
||
Divorced (geschieden)
|
||
Never-married (nie verheiratet)
|
||
Separated (getrennt lebend)
|
||
Widowed (verwitwet)
|
||
7. occupation (kategorisch)
|
||
Beruf der Person.
|
||
8. relationship (kategorisch)
|
||
Beziehung zur Familie im Haushalt.
|
||
Husband (Ehemann)
|
||
Wife (Ehefrau)
|
||
Own-child (eigenes Kind)
|
||
Unmarried (unverheiratet)
|
||
9. race (kategorisch)
|
||
Ethnische Zugehörigkeit der Person.
|
||
White (weiß)
|
||
Black (schwarz)
|
||
Asian-Pac-Islander (asiatisch-pazifische Herkunft)
|
||
10. sex (kategorisch)
|
||
Geschlecht der Person.
|
||
Werte: Male (männlich), Female (weiblich)
|
||
11. capital.gain (numerisch)
|
||
Kapitalgewinne (z. B. durch Investitionen).
|
||
12. capital.loss (numerisch)
|
||
Kapitalverluste (z. B. aus Investitionen).
|
||
13. hours.per.week (numerisch)
|
||
Durchschnittliche Arbeitsstunden pro Woche.
|
||
14. native.country (kategorisch)
|
||
Herkunftsland der Person.
|
||
15. income (Zielvariable, kategorisch)
|
||
Einkommensklasse der Person.
|
||
<=50K (Jahreseinkommen ≤50.000 USD)
|
||
>50K (Jahreseinkommen >50.000 USD)
|
||
|
||
:::
|
||
|
||
## Analyse des Datensatzes {.smaller}
|
||
- Datensatzgröße
|
||
- Anzahl und Art der Datentypen
|
||
- Fehlende Werte in den einzelnen Spalten
|
||
- Statistische Zusammenfasung
|
||
|
||
. . .
|
||
|
||
```{python}
|
||
import pandas as pd
|
||
|
||
# Daten einlesen
|
||
df = pd.read_csv("../sample_data/adult_census_income/adult.csv")
|
||
df.describe()
|
||
```
|
||
|
||
|
||
## Prozentuale Verteilung der Personen im Datensatz
|
||
|
||
{height=500 fig-align="center"}
|
||
|
||
|
||
# Datenvorverarbeitung
|
||
Auffüllen von fehlenden Werten, Umwandlung von Variablen
|
||
|
||
## Überprüfung auf fehlende oder ungültige Werte
|
||
|
||
```{python}
|
||
#| echo: true
|
||
# Überprüfen auf fehlende Werte oder '?'
|
||
for col in df.columns:
|
||
missing_count = df[df[col] == '?'].shape[0]
|
||
if missing_count > 0:
|
||
print(f"Spalte '{col}' hat {missing_count} Einträge mit '?'")
|
||
```
|
||
|
||
## Ersetzung von fehlenden/ ungültigen Werten (vorher) {.smaller}
|
||
```{python}
|
||
df.iloc[:5, :7]
|
||
```
|
||
|
||
## Ersetzung von fehlenden/ ungültigen Werten (nachher){.smaller}
|
||
|
||
```{python}
|
||
import numpy as np
|
||
|
||
# Ersetzen von '?' durch NaN und dann durch den häufigsten Wert
|
||
df_clean = df.copy()
|
||
|
||
for col in df_clean.columns:
|
||
if df_clean[col].dtype == 'object':
|
||
# Ersetze '?' durch NaN
|
||
df_clean[col] = df_clean[col].replace('?', np.nan)
|
||
|
||
# Ersetze NaN durch den häufigsten Wert
|
||
most_frequent = df_clean[col].mode()[0]
|
||
df_clean[col] = df_clean[col].fillna(most_frequent)
|
||
|
||
|
||
df_clean.iloc[:5, :7]
|
||
```
|
||
|
||
## Umwandlung der Variablen
|
||
|
||
- Von Katergorischen Variablen zu Numerischen
|
||
- Beispiel Geschlecht:
|
||
- Mann -> 1
|
||
- Frau -> 0
|
||
|
||
- Wird benötigt um mit dem Datensatz weiter zu arbeiten zu können -> ML-Modelle benötigen numerische Werte um sinnvolle Berechnungen
|
||
durchführen zu können
|
||
|
||
|
||
# ML-Modell
|
||
Auswahl, Beschreibung, Hyperparameter, Güte
|
||
|
||
## Auswahl eines geeigneten Modells
|
||
|
||
<br>
|
||
|
||
| Kriterium | Unsere Situation |
|
||
|- |-- |
|
||
| Art der Daten | Strukturiert |
|
||
| Datenmenge | ~32.500 Einträge |
|
||
| Komplexität | 13-dimensionale Daten --> eher komplex |
|
||
| Ziel und Art der Klassifizierung | Binäre Klassifizierung (>/< 50.000$ Einkommen)|
|
||
|
||
<br>
|
||
|
||
--> Gute Voraussetzungen für **Random Forest**
|
||
|
||
:::{.notes}
|
||
Außerdem:
|
||
|
||
- Rechenressourcen
|
||
- Zeit für Training
|
||
:::
|
||
|
||
|
||
## Random Forest
|
||
|
||
- **Ensemble-Learning-Verfahren**, bestehend aus vielen Entscheidungsbaummodellen (bei uns 100 Bäume)
|
||
- **Training:** Jeder Baum wird auf zufälliger Teilmenge der Daten und zufälliger Teilmenge der Features trainiert
|
||
- **Vorhersagen:** Ergebnisse aller Bäume werden aggregiert, um eine finale Vorhersage zu erhalten
|
||
- Keine Aktivierungsfunktionen oder Layer
|
||
|
||
:::{.notes}
|
||
- **Ensemble Learning**: Mehrere verschiedene Lernalgorithmen, um bessere Ergebnisse zu erhalten als mit einem einzelnen Lernalgorithmus
|
||
- Gute Leistung bei verschiedenen Arten von Daten
|
||
- Robustheit gegenüber Overfitting
|
||
- Fähigkeit, mit fehlenden Werten und kategorischen Variablen umzugehen
|
||
- **Eingebaute Feature Importance**
|
||
- **Aktivierungsfunktionen:** Entscheidungsbäume, basieren auf Regeln und Splits, ohne mathematische Aktivierungsfunktionen.
|
||
- **Layers:** Es gibt keine Schichten (Layers) im klassischen Sinne, wie bei neuronalen Netzwerken. Jeder Baum ist ein eigenständiger Klassifikator.
|
||
:::
|
||
|
||
## Random Forest {background-image="img/Random_Forest_Tree_Example.png"}
|
||
|
||
|
||
## Hyperparameter
|
||
|
||
> *Parameter, die vor dem Training festgelegt werden müssen*
|
||
|
||
| Hyperparameter | Bedeutung |
|
||
|- |-- |
|
||
| n_estimators | Anzahl an Bäumen |
|
||
| max_depth | Maximale Tiefe eines Baumes |
|
||
| min_samples_split | Mindestanzahl an Samples, um ein Split durchzuführen |
|
||
| min_samples_leaf | Mindestanzahl an Samples in einem Blatt |
|
||
|
||
## Hyperparameter-Tuning {.smaller}
|
||
|
||
> *Optimierung der Hyperparameter, um die Modellgüte zu verbessern*
|
||
|
||
```{.python include="../extracted_cells/cell15.py"
|
||
code-line-numbers="|2-7|10-11|15"
|
||
end-line=15}
|
||
```
|
||
. . .
|
||
|
||
```json
|
||
{
|
||
'max_depth': None,
|
||
'min_samples_leaf': 2,
|
||
'min_samples_split': 2,
|
||
'n_estimators': 100
|
||
}
|
||
```
|
||
|
||
## Hyperparameter-Tuning {.smaller}
|
||
```{.python include="../extracted_cells/cell15.py"
|
||
code-line-numbers="2-7,10-11,15|18,21|24-27"
|
||
end-line=27}
|
||
```
|
||
|
||
## Modellgüte {.smaller auto-animate=true}
|
||
:::{.notes}
|
||
- **Accuracy**: Anteil der korrekt klassifizierten Instanzen
|
||
- **Precision**: Anteil der als positiv klassifizierten Instanzen, die tatsächlich positiv sind
|
||
- **Recall**: Anteil der tatsächlich positiven Instanzen, die als positiv klassifiziert wurden
|
||
- **F1-Score**: Harmonisches Mittel aus Precision und Recall
|
||
:::
|
||
|
||
```{.json code-line-numbers="|2|3|4|5"}
|
||
{
|
||
'Accuracy': 0.8607,
|
||
'Precision': 0.7613,
|
||
'Recall': 0.6142,
|
||
'F1 Score': 0.6798
|
||
}
|
||
```
|
||
|
||
. . .
|
||
|
||
**Konfusionsmatrix**
|
||
|
||
. . .
|
||
|
||
{width=50%}
|
||
|
||
|
||
## Konfusionsmatrix {auto-animate=true}
|
||
|
||

|
||
|
||
:::{.notes}
|
||
- (oben links) Tatsächlich sind die meisten weniger als 50K und auch richtig vorhergesagt
|
||
- (unten rechts) Zweitgrößte Gruppe: Mehr als 50k und auch so vorhergesagt
|
||
- (unten links) Drittgrößte Gruppe: Eigentlich mehr als 50k aber als weniger vorhergesagt
|
||
- (oben rechts) Kleinste Gruppe: Tatsächlich weniger als 50k aber als mehr vorhergesagt
|
||
:::
|
||
|
||
## Feature Importances
|
||
|
||
> *Metrik, wie viel ein Feature zur Vorhersage des Modells beiträgt*
|
||
|
||
{width=80%}
|
||
|
||
|
||
# LIME {visibility="uncounted"}
|
||
Local Interpretable Model-agnostic Explanations
|
||
|
||
## 1. Grundprinzip:
|
||
- LIME erklärt einzelne Vorhersagen eines beliebigen ML-Modells
|
||
- Es arbeitet modellunabhängig (model-agnostic)
|
||
- Erzeugt lokale, interpretierbare Erklärungen für einzelne Vorhersagen
|
||
|
||
## 2. Funktionsweise im Detail:
|
||
|
||
### Ausgangssituation:
|
||
|
||
- Ein trainiertes ML-Modell liegt vor
|
||
- Eine spezifische Vorhersage soll erklärt werden
|
||
- Das Original-Modell wird als "Black Box" behandelt
|
||
|
||
## 2. Funktionsweise im Detail:
|
||
|
||
### Prozessschritte:
|
||
|
||
- Sampling um den Datenpunkt:
|
||
- Erzeugt synthetische Samples in der Nachbarschaft des zu erklärenden Datenpunkts
|
||
- Verwendet Perturbationen (kleine Änderungen) der Original-Features
|
||
|
||
- Gewichtung der Samples:
|
||
- Näher liegende Samples erhalten höhere Gewichte
|
||
|
||
|
||
## 2. Funktionsweise im Detail:
|
||
|
||
### Prozessschritte:
|
||
|
||
- Feature-Transformation:
|
||
- Konvertiert die Daten in ein interpretierbares Format
|
||
- Bei Texten z.B. Umwandlung in binäre Features (Wort vorhanden/nicht vorhanden)
|
||
|
||
- Training eines einfachen Modells:
|
||
- typischer weise durch lineare Regression
|
||
- Verwendet die gewichteten Samples
|
||
- Optimiert auf lokale Genauigkeit
|
||
- damit man ein leicht Interpretierbares Modell bekommt
|
||
|
||
## 2. Funktionsweise im Detail:
|
||
|
||
Extraktion der Erklärung:
|
||
|
||
{width=80% fig-align="center"}
|
||
|
||
|
||
:::{.notes}
|
||
Hier sind zwei Beispiele wie die Erklärung von LIME extrahiert werden kann.
|
||
Einmal als Grafik durch ein Balkendiagramm und einmal als Tabelle.
|
||
Roter Bereich: Je größer der Rote Bereich, je geringer wird die Chance mehr als 50k zu bekommen
|
||
Grüner Bereich: Je größer der Grüne Bereich, je größer wird die Chance mehr als 50k zu bekommen
|
||
:::
|
||
|
||
## 3. Wichtige Eigenschaften: {.smaller}
|
||
|
||
- Lokalität:
|
||
- Fokussiert sich auf lokale Umgebung der zu erklärenden Instanz
|
||
- Erzeugt keine globalen Erklärungen für das gesamte Modell
|
||
|
||
- Interpretierbarkeit:
|
||
- Nutzt einfache, verständliche Modelle für Erklärungen
|
||
- Meist lineare Modelle oder Entscheidungsbäume
|
||
|
||
- Modell-Agnostik:
|
||
- Funktioniert mit jedem ML-Modell
|
||
- Benötigt nur Zugriff auf Vorhersagefunktion
|
||
|
||
## 4. Vorteile und Grenzen: {.smaller}
|
||
:::{.notes}
|
||
LIME ist instabil, bedeuted das wenn man LIME zweimal ausführen würde, kann es sein das es nicht auf das gleiche Ergebnis kommt, sondern die Gewichtung anders verteilt.
|
||
:::
|
||
|
||
- Vorteile:
|
||
- Flexibel einsetzbar
|
||
- Intuitiv verständliche Erklärungen
|
||
- Unterstützt verschiedene Datentypen
|
||
|
||
- Grenzen:
|
||
- Nur lokale Erklärungen
|
||
- Sampling kann rechenintensiv sein
|
||
- LIME ist instabil
|
||
|
||
- LIME ist besonders nützlich, wenn man:
|
||
- Einzelne Vorhersagen verstehen möchten
|
||
- Mit komplexen Modellen arbeitet
|
||
- Modelle debuggen oder verbessern will
|
||
|
||
|
||
## LIME Anwendungsszenarien
|
||
::: {.nonincremental}
|
||
**Medizinische Diagnostik und Gesundheitswesen**
|
||
|
||
- Krebsdiagnose: Erklärung, welche Merkmale in medizinischen Bildern zu einer Krebsdiagnose beitragen
|
||
:::
|
||
|
||
## LIME Anwendungsszenarien
|
||
::: {.nonincremental}
|
||
**Medizinische Diagnostik und Gesundheitswesen**
|
||
|
||
- Krebsdiagnose: Erklärung, welche Merkmale in medizinischen Bildern zu einer Krebsdiagnose beitragen
|
||
|
||
**Finanzwesen und Kreditvergabe**
|
||
|
||
- Kreditwürdigkeitsprüfung: Transparente Begründung für Kreditablehnungen oder -genehmigungen
|
||
- Betrugserkennung: Erklärung, warum bestimmte Transaktionen als verdächtig eingestuft werden
|
||
:::
|
||
|
||
## LIME Anwendungsszenarien
|
||
::: {.nonincremental}
|
||
**Medizinische Diagnostik und Gesundheitswesen**
|
||
|
||
- Krebsdiagnose: Erklärung, welche Merkmale in medizinischen Bildern zu einer Krebsdiagnose beitragen
|
||
|
||
**Finanzwesen und Kreditvergabe**
|
||
|
||
- Kreditwürdigkeitsprüfung: Transparente Begründung für Kreditablehnungen oder -genehmigungen
|
||
- Betrugserkennung: Erklärung, warum bestimmte Transaktionen als verdächtig eingestuft werden
|
||
|
||
**Personalabteilung und Recruiting**
|
||
|
||
- Bewerberselektion: Erklärung, welche Qualifikationen oder Fähigkeiten bei der Kandidatenauswahl entscheidend waren
|
||
:::
|
||
|
||
|
||
## LIME Berechnungskosten
|
||
|
||
LIME skaliert:
|
||
|
||
::: {.nonincremental}
|
||
- Linear mit der Anzahl der Samples (N)
|
||
- Quadratisch bis kubisch mit der Anzahl der Features (D)
|
||
- Linear mit der Komplexität des zu erklärenden Modells M(D)
|
||
:::
|
||
|
||
Komplexität in BigO Notation:
|
||
|
||
::: {.nonincremental}
|
||
- **O(N × M(D))**, wenn das zu erklärende Modell komplex ist
|
||
- **O(N × D²)**, wenn das lineare Modell der rechenintensivste Teil ist
|
||
:::
|
||
|
||
|
||
:::{.notes}
|
||
**Große Datensätze generell Machbar**
|
||
- Dürfen nur nicht zu viele Features haben, das erhöhe stark den Rechenaufwand
|
||
:::
|
||
|
||
|
||
|
||
## Rule Based Explenation
|
||
|
||
{height=400 fig-align="center"}
|
||
|
||
:::{.notes}
|
||
- Verfahren wird gefüttert mit
|
||
- Daten und Labels
|
||
|
||
- Erstellt draus Regeln
|
||
:::
|
||
|
||
## Detaillierte Erklärung und Funktionsweise
|
||
|
||
{height=400 fig-align="center"}
|
||
|
||
::: {.notes}
|
||
- Menschen lernen schneller als Tiere
|
||
- Menschen kommunizieren schneller / besser
|
||
- Vor allem auf Grund von Regeln
|
||
- Satzbau, Erklärungen, Logik
|
||
|
||
- Hund Sitz beibringen
|
||
- braucht viele iterationen (mit Belohnungen)
|
||
- Mensch kann deutlicher erklären was das Ziel ist
|
||
|
||
- Regel Basiertes Lernen kommt zum Einsatz
|
||
- Anstatt (unverständlicher) neuronaler Netze
|
||
- oder komplexen mathematischen Modellen
|
||
|
||
- Verwendung von logischen Rgeln
|
||
- extrahiert aus Daten oder durch Experten definiert
|
||
:::
|
||
|
||
|
||
|
||
## Beispiel Regel
|
||
|
||
<br>
|
||
|
||
> WENN
|
||
|
||
> Fieber über 38°C
|
||
|
||
> UND Husten
|
||
|
||
> DANN Grippe
|
||
|
||
## Beispiel Regel {.text-align-right}
|
||
|
||
<br>
|
||
|
||
> WENN
|
||
|
||
> capital.gain ≤ 7073.50 UND
|
||
|
||
> education.num ≤ 12.50 UND
|
||
|
||
> capital.loss > 2218.50 UND
|
||
|
||
> DANN Einkommen > 50K
|
||
|
||
## Vorteile
|
||
- Transparenz: Menschen können Entscheidungen leicht <br> nachvollziehen
|
||
- Überprüfbarkeit: Regeln können durch Experten überprüft <br> und Ausgewertet werden
|
||
- Anpassbarkeit: Vordefinierte Regeln von Experten können <br> mit maschinell erstellten Regeln ergänzt werden
|
||
|
||
|
||
{.absolute top=10 right=10 height="900"}
|
||
|
||
|
||
::: {.notes}
|
||
Transparenz: Menschen können Entscheidungen leicht nachvollziehen
|
||
Überprüfbarkeit: Regeln können durch Experten überprüft werden und Anpassungen vorgenommen werden
|
||
Anpassbarkeit: Vordefinierte Regeln von Experten können mit maschinell erstellten Regeln kombiniert werden
|
||
- (Modellunabhängig)
|
||
:::
|
||
|
||
## Nachteile/Herausforderungen
|
||
- Skalierbarkeit: komplexen Anwendungsgebiete können eine hohe <br> Anzahl an Regeln schnell erreichen
|
||
- Gereralität: Regeln sind oft domänenspezifisch und benötigen <br> für unterschiedliche Kontexte entsprechend anpassungen
|
||
- Widersprüche: Regeln können zu Widersprüchen untereinander <br> führen und müssen daher angepasst werden
|
||
|
||
{.absolute top=10 right=10 height="900"}
|
||
|
||
::: {.notes}
|
||
- Skalierbarkeit: In komplexen Anwendungsgebieten können die Anzahl an Regeln schnell sehr hoch werden.
|
||
- Gereralität: Regeln sind oft domänenspezifisch und müssen für unterschiedliche Kontexte entsprechend angepasst werden
|
||
- Widersprüche: Regeln können zu Widersprüchen untereinander führen und müssen daher angepasst werden
|
||
:::
|
||
|
||
|
||
## RBE Anwendungsszenarien
|
||
::: {.nonincremental}
|
||
**Medizinische Diagnostik und Gesundheitswesen**
|
||
|
||
- Diagnostische Systeme: Ärzte benötigen klare Regeln, um Diagnosevorschläge zu verstehen und zu validieren
|
||
:::
|
||
|
||
:::{.notes}
|
||
|
||
Medizin / Gesundheitswesen
|
||
|
||
- **Regeln, warum welche Diagnose vorgeschlagen wurde**
|
||
|
||
Finanzwesen
|
||
|
||
- **Regeln, warum Transaktion verdächtig ist**
|
||
- **Regeln, warum Kredit genehmigt / abgelehnt wurde**
|
||
|
||
Versicherungswesen
|
||
|
||
- **Regeln, warum Prämien zu stande kommen**
|
||
- **Regeln, warum Schadensansprüche geltend gemacht werden können**
|
||
:::
|
||
|
||
## RBE Anwendungsszenarien
|
||
::: {.nonincremental}
|
||
**Medizinische Diagnostik und Gesundheitswesen**
|
||
|
||
- Diagnostische Systeme: Ärzte benötigen klare Regeln, um Diagnosevorschläge zu verstehen und zu validieren
|
||
|
||
**Versicherungswesen**
|
||
|
||
- Risikobewertung: Transparente Regeln zur Prämienberechnung
|
||
- Schadenregulierung: Nachvollziehbare Entscheidungskriterien für Schadensansprüche
|
||
:::
|
||
|
||
:::{.notes}
|
||
|
||
Medizin / Gesundheitswesen
|
||
|
||
- **Regeln, warum welche Diagnose vorgeschlagen wurde**
|
||
|
||
Finanzwesen
|
||
|
||
- **Regeln, warum Transaktion verdächtig ist**
|
||
- **Regeln, warum Kredit genehmigt / abgelehnt wurde**
|
||
|
||
Versicherungswesen
|
||
|
||
- **Regeln, warum Prämien zu stande kommen**
|
||
- **Regeln, warum Schadensansprüche geltend gemacht werden können**
|
||
:::
|
||
|
||
|
||
## RBE Anwendungsszenarien
|
||
::: {.nonincremental}
|
||
**Medizinische Diagnostik und Gesundheitswesen**
|
||
|
||
- Diagnostische Systeme: Ärzte benötigen klare Regeln, um Diagnosevorschläge zu verstehen und zu validieren
|
||
|
||
**Versicherungswesen**
|
||
|
||
- Risikobewertung: Transparente Regeln zur Prämienberechnung
|
||
- Schadenregulierung: Nachvollziehbare Entscheidungskriterien für Schadensansprüche
|
||
|
||
**Finanzwesen und Kreditvergabe**
|
||
|
||
- Betrugserkennung: Einfach verständliche Regeln zur Identifikation verdächtiger Transaktionen
|
||
- Kreditentscheidungen: Banken müssen Ablehnungen oder Genehmigungen rechtlich begründen können
|
||
:::
|
||
|
||
:::{.notes}
|
||
|
||
Medizin / Gesundheitswesen
|
||
|
||
- **Regeln, warum welche Diagnose vorgeschlagen wurde**
|
||
|
||
Finanzwesen
|
||
|
||
- **Regeln, warum Transaktion verdächtig ist**
|
||
- **Regeln, warum Kredit genehmigt / abgelehnt wurde**
|
||
|
||
Versicherungswesen
|
||
|
||
- **Regeln, warum Prämien zu stande kommen**
|
||
- **Regeln, warum Schadensansprüche geltend gemacht werden können**
|
||
:::
|
||
|
||
## RBE Output
|
||
|
||
```
|
||
|--- marital.status_Married-civ-spouse <= 0.50
|
||
| |--- capital.gain <= 7073.50
|
||
| | |--- education.num <= 12.50
|
||
| | | |--- capital.loss <= 2218.50
|
||
| | | | |--- hours.per.week <= 40.50
|
||
| | | | | |--- Einkommen ≤ 50K
|
||
| | | | |--- hours.per.week > 40.50
|
||
| | | | | |--- Einkommen ≤ 50K
|
||
| | | |--- capital.loss > 2218.50
|
||
| | | | |--- fnlwgt <= 125450.50
|
||
| | | | | |--- Einkommen > 50K
|
||
| | | | |--- fnlwgt > 125450.50
|
||
| | | | | |--- Einkommen ≤ 50K
|
||
```
|
||
|
||
:::{.notes}
|
||
- Ich zeige euch keinen code aber zumindes den Output solltet ihr mal gesehen haben
|
||
- Als erstes den Decission Tree
|
||
- Und dann gescheit formatiert als Satz
|
||
- Richtigen Code wird später im Notebook vorgestellt
|
||
:::
|
||
|
||
## RBE Berechnungskosten
|
||
|
||
RBE skaliert:
|
||
|
||
::: {.nonincremental}
|
||
- N = Anzahl der Trainingsbeispiele
|
||
- D = Anzahl der Merkmale (Features)
|
||
:::
|
||
|
||
Komplexität in BigO Notation: **O(N × D × log N)**
|
||
|
||
|
||
:::{.notes}
|
||
|
||
Komplexität zusammengesetzt aus:
|
||
- Training des Surrogate-Modells (DecisionTreeClassifier)
|
||
- Vorhersagen mit dem Random Forest (Referenzmodell)
|
||
- Extraktion der Regeln aus dem Entscheidungsbaum
|
||
- Evaluierung des Surrogate-Modells
|
||
|
||
**Große Datensätze generell Machbar**
|
||
- Dürfen nur nicht zu viele Features haben, das erhöhe stark den Rechenaufwand
|
||
:::
|
||
|
||
|
||
::: {.center}
|
||
## Jetzt wird es Praktisch
|
||
:::
|
||
|
||
:::{.notes}
|
||
Jetzt das Notebook zeigen und konkret durchgehen
|
||
:::
|
||
|
||
|
||
## Vergleich der XAI-Verfahren
|
||
|
||
- Interpretierbarkeit
|
||
- Modellunabhängigkeit
|
||
- Genauigkeit / Konsistenz
|
||
- Anwendungsszenarien
|
||
|
||
|
||
## LIME Interpretierbarkeit
|
||
|
||
::: {.nonincremental}
|
||
- Leicht verständlich, welche Features relevant waren
|
||
- Auch verständlich Laien
|
||
:::
|
||
|
||
{height=400 fig-align="center"}
|
||
|
||
|
||
:::{.notes}
|
||
**Rote Balken**
|
||
- Features die die Wahrscheinlichkeit von >=50k verringern
|
||
|
||
**Grüne Balken**
|
||
- Features die die Wahrscheinlichkeit von >=50k erhöhen
|
||
:::
|
||
|
||
|
||
## LIME Modellabhängigkeit
|
||
|
||
::: {.nonincremental}
|
||
- Ist Model-Agnostic
|
||
- Behandelt jedes Modell als Blackbox
|
||
:::
|
||
|
||
|
||
:::{.notes}
|
||
Wie in LIME schon beschrieben
|
||
|
||
L: local
|
||
I: Interpretable
|
||
M: Model Agnostic
|
||
:::
|
||
|
||
## LIME Konsistenz
|
||
::: {.nonincremental}
|
||
- Die Ergebnisse sind instabil
|
||
- Können aber stark variieren da es auf zufälligen Abänderungen der Daten basiert
|
||
:::
|
||
|
||
{height=400 fig-align="center"}
|
||
|
||
|
||
:::{.notes}
|
||
**Wir haben 10 Erklärungen laufen lassen**
|
||
|
||
- Dann immer die Feature Wichtigkeit verglichen
|
||
- Geringe Varianz: Ähnliche Ergebnisse
|
||
- Hohe Varianz: Unterschiedliche Ergebnisse
|
||
|
||
=> Wir haben hier die Top 5 mit der größten Varianz => Immernoch gering
|
||
:::
|
||
|
||
|
||
## LIME Anwendungsszenarien
|
||
::: {.nonincremental}
|
||
- Medizinische Diagnostik und Gesundheitswesen
|
||
- Finanzwesen und Kreditvergabe
|
||
- Personalabteilung und Recruiting
|
||
:::
|
||
|
||
:::{.notes}
|
||
**Verständnis einer einzelnen Vorhersage**
|
||
:::
|
||
|
||
## RBE Interpretierbarkeit
|
||
|
||
::: {.nonincremental}
|
||
- Regeln Leicht Nachvollziehbar: Wenn-Dann-Struktur von Regeln
|
||
- Potenziell komplex bei vielen Regeln
|
||
- Auch für Laien Verständlich
|
||
:::
|
||
|
||
|
||
:::{.notes}
|
||
1. **Wenn-Dann-Struktur ist leicht zu verstehen, wie man auf Ergebnis kommt**
|
||
2. **Komplex / unübersichtlich wenn man viele Regeln hat**
|
||
3. **Regeln verstehen auch Lian**
|
||
:::
|
||
|
||
|
||
## RBE Interpretierbarkeit
|
||
|
||
Beispiel einer Regel: Vorhersagt > 50K
|
||
|
||
::: {.nonincremental}
|
||
- *WENN*
|
||
- *capital.gain ≤ 7073.50 UND*
|
||
- *education.num ≤ 12.50 UND*
|
||
- *capital.loss > 2218.50 UND*
|
||
- *DANN Einkommen > 50K*
|
||
:::
|
||
|
||
|
||
:::{.notes}
|
||
**Beispielregel für > 50K Einkommen**
|
||
:::
|
||
|
||
|
||
## RBE Modellabhängigkeit
|
||
|
||
::: {.nonincremental}
|
||
- **Inhärent regelbasierte Modelle** (modellabhängig)
|
||
- **Post-hoc regelbasierte Erklärungen** (modellunabhängig)
|
||
:::
|
||
|
||
Wir verwenden einen: **Surrogate-Entscheidungsbaum**
|
||
|
||
::: {.nonincremental}
|
||
- Dieser ist modellunabhängig
|
||
:::
|
||
|
||
:::{.notes}
|
||
|
||
**Inhärent regelbasierte Modelle**
|
||
- Diese Modelle sind ihre eigenen Erklärungen - die Regeln sind das Modell.
|
||
|
||
**Post-hoc regelbasierte Erklärungen**
|
||
- Diese Ansätze können prinzipiell auf jedes Modell angewendet werden und sind daher modellunabhängig.
|
||
|
||
|
||
**Surrogate-Entscheidungsbaum**
|
||
|
||
- **Post-hoc (Modellunabhängig)**
|
||
- **Bekommt Trainingsdaten und Random Forest Vorhersagen**
|
||
|
||
Die extrahierten Regeln bieten eine **globale Erklärung des Random Forest-Verhaltens**.
|
||
:::
|
||
|
||
|
||
## RBE Genauigkeit & Konsistenz
|
||
|
||
::: {.nonincremental}
|
||
- Genauigkeit: Wie nahe an Ergebnis von RF
|
||
- Konsistenz: Schwankungen der Genauigkeit
|
||
:::
|
||
|
||
{height=400 fig-align="center"}
|
||
|
||
:::{.notes}
|
||
|
||
Vorgehen:
|
||
|
||
- **Surrogate-Modell trainiert, sodass es RF-Vorhersagen nachahmt**
|
||
- **Vorhersage von Surrogate-Modell mit RF vergleichen**
|
||
- Berechnen die oft Vorhersagen gleich ist in %
|
||
|
||
|
||
Das ganze mit mehreren Baumtiefen
|
||
|
||
- So finden wir die **optimale Baumtiefe**
|
||
|
||
|
||
=> Man sieht **sehr hohe Genauigkeit**
|
||
|
||
:::
|
||
|
||
## RBE Anwendungsszenarien
|
||
::: {.nonincremental}
|
||
|
||
- Medizinische Diagnostik und Gesundheitswesen
|
||
- Finanzwesen und Kreditvergabe
|
||
- Versicherungswesen
|
||
:::
|
||
|
||
:::{.notes}
|
||
|
||
**Globlaler Überblick von Entscheidungslogik**
|
||
|
||
**Wieso Entscheidet das Modell Allgemein**
|
||
|
||
|
||
Medizin / Gesundheitswesen
|
||
|
||
- **Beispiel Schlaganfall**
|
||
|
||
- => Wir wollen wissen, warum er allgemein zur Diagnose kommt
|
||
:::
|
||
|
||
|
||
::: {.center}
|
||
## Vielen Dank für Eure Aufmerksamkeit!
|
||
::: |