intial commit (forked from private repo)
This commit is contained in:
914
slides/slides.qmd
Normal file
914
slides/slides.qmd
Normal file
@ -0,0 +1,914 @@
|
||||
---
|
||||
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!
|
||||
:::
|
||||
Reference in New Issue
Block a user