Files
ExplainableAI/slides/slides.html

2150 lines
82 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en"><head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js" integrity="sha512-bLT0Qm9VnAYZDflyKcBaQ2gg0hSYNQrJ8RilYldYQ1FxQYoCLtUjuuRuZo+fjqhx/qtq/1itJ0C2ejDxltZVFg==" crossorigin="anonymous"></script><script src="slides_files/libs/clipboard/clipboard.min.js"></script>
<script src="slides_files/libs/quarto-html/tabby.min.js"></script>
<script src="slides_files/libs/quarto-html/popper.min.js"></script>
<script src="slides_files/libs/quarto-html/tippy.umd.min.js"></script>
<link href="slides_files/libs/quarto-html/tippy.css" rel="stylesheet">
<link href="slides_files/libs/quarto-html/light-border.css" rel="stylesheet">
<link href="slides_files/libs/quarto-html/quarto-syntax-highlighting-549806ee2085284f45b00abea8c6df48.css" rel="stylesheet" id="quarto-text-highlighting-styles"><meta charset="utf-8">
<meta name="generator" content="quarto-1.6.40">
<title>Explainable AI</title>
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
<link rel="stylesheet" href="slides_files/libs/revealjs/dist/reset.css">
<link rel="stylesheet" href="slides_files/libs/revealjs/dist/reveal.css">
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
vertical-align: middle;
}
/* CSS for syntax highlighting */
pre > code.sourceCode { white-space: pre; position: relative; }
pre > code.sourceCode > span { line-height: 1.25; }
pre > code.sourceCode > span:empty { height: 1.2em; }
.sourceCode { overflow: visible; }
code.sourceCode > span { color: inherit; text-decoration: inherit; }
div.sourceCode { margin: 1em 0; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre > code.sourceCode { white-space: pre-wrap; }
pre > code.sourceCode > span { display: inline-block; text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
{ counter-reset: source-line 0; }
pre.numberSource code > span
{ position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span > a:first-child::before
{ content: counter(source-line);
position: relative; left: -1em; text-align: right; vertical-align: baseline;
border: none; display: inline-block;
-webkit-touch-callout: none; -webkit-user-select: none;
-khtml-user-select: none; -moz-user-select: none;
-ms-user-select: none; user-select: none;
padding: 0 4px; width: 4em;
color: #aaaaaa;
}
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
div.sourceCode
{ color: #003b4f; background-color: #f1f3f5; }
@media screen {
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
}
code span { color: #003b4f; } /* Normal */
code span.al { color: #ad0000; } /* Alert */
code span.an { color: #5e5e5e; } /* Annotation */
code span.at { color: #657422; } /* Attribute */
code span.bn { color: #ad0000; } /* BaseN */
code span.bu { } /* BuiltIn */
code span.cf { color: #003b4f; font-weight: bold; } /* ControlFlow */
code span.ch { color: #20794d; } /* Char */
code span.cn { color: #8f5902; } /* Constant */
code span.co { color: #5e5e5e; } /* Comment */
code span.cv { color: #5e5e5e; font-style: italic; } /* CommentVar */
code span.do { color: #5e5e5e; font-style: italic; } /* Documentation */
code span.dt { color: #ad0000; } /* DataType */
code span.dv { color: #ad0000; } /* DecVal */
code span.er { color: #ad0000; } /* Error */
code span.ex { } /* Extension */
code span.fl { color: #ad0000; } /* Float */
code span.fu { color: #4758ab; } /* Function */
code span.im { color: #00769e; } /* Import */
code span.in { color: #5e5e5e; } /* Information */
code span.kw { color: #003b4f; font-weight: bold; } /* Keyword */
code span.op { color: #5e5e5e; } /* Operator */
code span.ot { color: #003b4f; } /* Other */
code span.pp { color: #ad0000; } /* Preprocessor */
code span.sc { color: #5e5e5e; } /* SpecialChar */
code span.ss { color: #20794d; } /* SpecialString */
code span.st { color: #20794d; } /* String */
code span.va { color: #111111; } /* Variable */
code span.vs { color: #20794d; } /* VerbatimString */
code span.wa { color: #5e5e5e; font-style: italic; } /* Warning */
</style>
<link rel="stylesheet" href="slides_files/libs/revealjs/dist/theme/quarto-bbe7401fe57d4b791b917637bb662036.css">
<link rel="stylesheet" href="custom.css">
<link href="slides_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.css" rel="stylesheet">
<link href="slides_files/libs/revealjs/plugin/reveal-menu/menu.css" rel="stylesheet">
<link href="slides_files/libs/revealjs/plugin/reveal-menu/quarto-menu.css" rel="stylesheet">
<link href="slides_files/libs/revealjs/plugin/quarto-support/footer.css" rel="stylesheet">
<style type="text/css">
.reveal div.sourceCode {
margin: 0;
overflow: auto;
}
.reveal div.hanging-indent {
margin-left: 1em;
text-indent: -1em;
}
.reveal .slide:not(.center) {
height: 100%;
}
.reveal .slide.scrollable {
overflow-y: auto;
}
.reveal .footnotes {
height: 100%;
overflow-y: auto;
}
.reveal .slide .absolute {
position: absolute;
display: block;
}
.reveal .footnotes ol {
counter-reset: ol;
list-style-type: none;
margin-left: 0;
}
.reveal .footnotes ol li:before {
counter-increment: ol;
content: counter(ol) ". ";
}
.reveal .footnotes ol li > p:first-child {
display: inline-block;
}
.reveal .slide ul,
.reveal .slide ol {
margin-bottom: 0.5em;
}
.reveal .slide ul li,
.reveal .slide ol li {
margin-top: 0.4em;
margin-bottom: 0.2em;
}
.reveal .slide ul[role="tablist"] li {
margin-bottom: 0;
}
.reveal .slide ul li > *:first-child,
.reveal .slide ol li > *:first-child {
margin-block-start: 0;
}
.reveal .slide ul li > *:last-child,
.reveal .slide ol li > *:last-child {
margin-block-end: 0;
}
.reveal .slide .columns:nth-child(3) {
margin-block-start: 0.8em;
}
.reveal blockquote {
box-shadow: none;
}
.reveal .tippy-content>* {
margin-top: 0.2em;
margin-bottom: 0.7em;
}
.reveal .tippy-content>*:last-child {
margin-bottom: 0.2em;
}
.reveal .slide > img.stretch.quarto-figure-center,
.reveal .slide > img.r-stretch.quarto-figure-center {
display: block;
margin-left: auto;
margin-right: auto;
}
.reveal .slide > img.stretch.quarto-figure-left,
.reveal .slide > img.r-stretch.quarto-figure-left {
display: block;
margin-left: 0;
margin-right: auto;
}
.reveal .slide > img.stretch.quarto-figure-right,
.reveal .slide > img.r-stretch.quarto-figure-right {
display: block;
margin-left: auto;
margin-right: 0;
}
</style>
<script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" integrity="sha512-c3Nl8+7g4LMSTdrm621y7kf9v3SDPnhxLNhcjFJbKECVnmZHTdo+IRO05sNLTH/D3vA6u1X32ehoLC7WFVdheg==" crossorigin="anonymous"></script>
<script type="application/javascript">define('jquery', [],function() {return window.jQuery;})</script>
</head>
<body class="quarto-light">
<div class="reveal">
<div class="slides">
<section id="title-slide" class="quarto-title-block center">
<h1 class="title">Explainable AI</h1>
<p class="subtitle">LIME &amp; RBE auf Random Forest <br> mit Adult Census Datensatz</p>
<div class="quarto-title-authors">
</div>
<p class="date">11.4.2025</p>
</section>
<section>
<section id="datensatz" class="title-slide slide level1 center">
<h1>Datensatz</h1>
<p>Analyse der Daten</p>
</section>
<section id="adult-census-datensatz" class="slide level2">
<h2>Adult Census Datensatz</h2>
<ul>
<li class="fragment">Enthält demografische Informationen aus der US-Volkszählung</li>
<li class="fragment">Soll Einkommen einer Person vorhersagen (&lt;|&gt;50000$ pro Jahr)</li>
</ul>
</section>
<section id="datensatzauswahl" class="slide level2">
<h2>Datensatzauswahl</h2>
<ul>
<li class="fragment">Gut strukturiert und saubere Daten</li>
<li class="fragment">Weit verbreiteter Benchmark in der Forschung und im maschinellen Lernen &gt; wird in vielen Studien verwendet</li>
<li class="fragment">Vielfalt der Variablen Typen &gt; enthält sowohl kategorische als auch numerische Variablen</li>
<li class="fragment">Realistisches Datenset &gt; gut geeignet für praxisnahe Anwendungen</li>
</ul>
<aside class="notes">
<ol type="1">
<li>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.</li>
<li>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).</li>
<li>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.</li>
<li>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.</li>
<li>Gut dokumentiert &amp; weit verbreitet Häufig verwendet in Tutorials, Forschungsarbeiten und Kaggle-Wettbewerben. Viele Ressourcen und Beispielcodes verfügbar.</li>
<li>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.</li>
</ol>
<style type="text/css">
span.MJX_Assistive_MathML {
position:absolute!important;
clip: rect(1px, 1px, 1px, 1px);
padding: 1px 0 0 0!important;
border: 0!important;
height: 1px!important;
width: 1px!important;
overflow: hidden!important;
display:block!important;
}</style></aside>
</section>
<section id="enthaltene-daten-im-datensatz" class="slide level2 smaller">
<h2>Enthaltene Daten im Datensatz</h2>
<table class="caption-top">
<thead>
<tr class="header">
<th>Column Name</th>
<th>Data Type</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>age</td>
<td>int64</td>
</tr>
<tr class="even">
<td>workclass</td>
<td>object</td>
</tr>
<tr class="odd">
<td>fnlwgt</td>
<td>int64</td>
</tr>
<tr class="even">
<td>education</td>
<td>object</td>
</tr>
<tr class="odd">
<td>education.num</td>
<td>int64</td>
</tr>
<tr class="even">
<td>marital.status</td>
<td>object</td>
</tr>
<tr class="odd">
<td>occupation</td>
<td>object</td>
</tr>
<tr class="even">
<td>relationship</td>
<td>object</td>
</tr>
<tr class="odd">
<td>race</td>
<td>object</td>
</tr>
<tr class="even">
<td>sex</td>
<td>object</td>
</tr>
<tr class="odd">
<td>capital.gain</td>
<td>int64</td>
</tr>
<tr class="even">
<td>capital.loss</td>
<td>int64</td>
</tr>
<tr class="odd">
<td>hours.per.week</td>
<td>int64</td>
</tr>
<tr class="even">
<td>native.country</td>
<td>object</td>
</tr>
<tr class="odd">
<td>income</td>
<td>object</td>
</tr>
</tbody>
</table>
<aside class="notes">
<ol type="1">
<li>age (numerisch) Alter der Person (in Jahren).</li>
<li>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)</li>
<li>fnlwgt (numerisch) Final weight: Gewichtungsfaktor für Hochrechnungen in der Volkszählung -&gt; 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. &gt; für unseren Datensatz normalerweise nicht wichtig aber da wir eine Gewichtung machen</li>
<li>education (kategorisch) Bachelors (Bachelor-Abschluss) Masters (Master-Abschluss) Doctorate (Promotion)</li>
<li>education.num (numerisch) 9 (High School) 16 (Promotion)</li>
<li>marital.status (kategorisch) Familienstand der Person. Married (verheiratet) Divorced (geschieden) Never-married (nie verheiratet) Separated (getrennt lebend) Widowed (verwitwet)</li>
<li>occupation (kategorisch) Beruf der Person.</li>
<li>relationship (kategorisch) Beziehung zur Familie im Haushalt. Husband (Ehemann) Wife (Ehefrau) Own-child (eigenes Kind) Unmarried (unverheiratet)</li>
<li>race (kategorisch) Ethnische Zugehörigkeit der Person. White (weiß) Black (schwarz) Asian-Pac-Islander (asiatisch-pazifische Herkunft)</li>
<li>sex (kategorisch) Geschlecht der Person. Werte: Male (männlich), Female (weiblich)</li>
<li>capital.gain (numerisch) Kapitalgewinne (z. B. durch Investitionen).</li>
<li>capital.loss (numerisch) Kapitalverluste (z. B. aus Investitionen).</li>
<li>hours.per.week (numerisch) Durchschnittliche Arbeitsstunden pro Woche.</li>
<li>native.country (kategorisch) Herkunftsland der Person.</li>
<li>income (Zielvariable, kategorisch) Einkommensklasse der Person. &lt;=50K (Jahreseinkommen ≤50.000 USD) &gt;50K (Jahreseinkommen &gt;50.000 USD)</li>
</ol>
<style type="text/css">
span.MJX_Assistive_MathML {
position:absolute!important;
clip: rect(1px, 1px, 1px, 1px);
padding: 1px 0 0 0!important;
border: 0!important;
height: 1px!important;
width: 1px!important;
overflow: hidden!important;
display:block!important;
}</style></aside>
</section>
<section id="analyse-des-datensatzes" class="slide level2 smaller">
<h2>Analyse des Datensatzes</h2>
<ul>
<li class="fragment">Datensatzgröße</li>
<li class="fragment">Anzahl und Art der Datentypen</li>
<li class="fragment">Fehlende Werte in den einzelnen Spalten</li>
<li class="fragment">Statistische Zusammenfasung</li>
</ul>
<div class="fragment">
<div id="881a9903" class="cell" data-execution_count="1">
<div class="cell-output cell-output-display" data-execution_count="1">
<div>
<style scoped="">
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
<table class="dataframe caption-top" data-quarto-postprocess="true" data-border="1">
<thead>
<tr class="header" style="text-align: right;">
<th data-quarto-table-cell-role="th"></th>
<th data-quarto-table-cell-role="th">age</th>
<th data-quarto-table-cell-role="th">fnlwgt</th>
<th data-quarto-table-cell-role="th">education.num</th>
<th data-quarto-table-cell-role="th">capital.gain</th>
<th data-quarto-table-cell-role="th">capital.loss</th>
<th data-quarto-table-cell-role="th">hours.per.week</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td data-quarto-table-cell-role="th">count</td>
<td>32561.000000</td>
<td>3.256100e+04</td>
<td>32561.000000</td>
<td>32561.000000</td>
<td>32561.000000</td>
<td>32561.000000</td>
</tr>
<tr class="even">
<td data-quarto-table-cell-role="th">mean</td>
<td>38.581647</td>
<td>1.897784e+05</td>
<td>10.080679</td>
<td>1077.648844</td>
<td>87.303830</td>
<td>40.437456</td>
</tr>
<tr class="odd">
<td data-quarto-table-cell-role="th">std</td>
<td>13.640433</td>
<td>1.055500e+05</td>
<td>2.572720</td>
<td>7385.292085</td>
<td>402.960219</td>
<td>12.347429</td>
</tr>
<tr class="even">
<td data-quarto-table-cell-role="th">min</td>
<td>17.000000</td>
<td>1.228500e+04</td>
<td>1.000000</td>
<td>0.000000</td>
<td>0.000000</td>
<td>1.000000</td>
</tr>
<tr class="odd">
<td data-quarto-table-cell-role="th">25%</td>
<td>28.000000</td>
<td>1.178270e+05</td>
<td>9.000000</td>
<td>0.000000</td>
<td>0.000000</td>
<td>40.000000</td>
</tr>
<tr class="even">
<td data-quarto-table-cell-role="th">50%</td>
<td>37.000000</td>
<td>1.783560e+05</td>
<td>10.000000</td>
<td>0.000000</td>
<td>0.000000</td>
<td>40.000000</td>
</tr>
<tr class="odd">
<td data-quarto-table-cell-role="th">75%</td>
<td>48.000000</td>
<td>2.370510e+05</td>
<td>12.000000</td>
<td>0.000000</td>
<td>0.000000</td>
<td>45.000000</td>
</tr>
<tr class="even">
<td data-quarto-table-cell-role="th">max</td>
<td>90.000000</td>
<td>1.484705e+06</td>
<td>16.000000</td>
<td>99999.000000</td>
<td>4356.000000</td>
<td>99.000000</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</section>
<section id="prozentuale-verteilung-der-personen-im-datensatz" class="slide level2">
<h2>Prozentuale Verteilung der Personen im Datensatz</h2>
<div class="quarto-figure quarto-figure-center">
<figure>
<p><img data-src="img/Verteilung_Einkommensklassen.png" class="quarto-figure quarto-figure-center" height="500"></p>
</figure>
</div>
</section></section>
<section>
<section id="datenvorverarbeitung" class="title-slide slide level1 center">
<h1>Datenvorverarbeitung</h1>
<p>Auffüllen von fehlenden Werten, Umwandlung von Variablen</p>
</section>
<section id="überprüfung-auf-fehlende-oder-ungültige-werte" class="slide level2">
<h2>Überprüfung auf fehlende oder ungültige Werte</h2>
<div id="88bd21a7" class="cell" data-execution_count="2">
<div class="sourceCode cell-code" id="cb1"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb1-1"><a href=""></a><span class="co"># Überprüfen auf fehlende Werte oder '?'</span></span>
<span id="cb1-2"><a href=""></a><span class="cf">for</span> col <span class="kw">in</span> df.columns:</span>
<span id="cb1-3"><a href=""></a> missing_count <span class="op">=</span> df[df[col] <span class="op">==</span> <span class="st">'?'</span>].shape[<span class="dv">0</span>]</span>
<span id="cb1-4"><a href=""></a> <span class="cf">if</span> missing_count <span class="op">&gt;</span> <span class="dv">0</span>:</span>
<span id="cb1-5"><a href=""></a> <span class="bu">print</span>(<span class="ss">f"Spalte '</span><span class="sc">{</span>col<span class="sc">}</span><span class="ss">' hat </span><span class="sc">{</span>missing_count<span class="sc">}</span><span class="ss"> Einträge mit '?'"</span>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-stdout">
<pre><code>Spalte 'workclass' hat 1836 Einträge mit '?'
Spalte 'occupation' hat 1843 Einträge mit '?'
Spalte 'native.country' hat 583 Einträge mit '?'</code></pre>
</div>
</div>
</section>
<section id="ersetzung-von-fehlenden-ungültigen-werten-vorher" class="slide level2 smaller">
<h2>Ersetzung von fehlenden/ ungültigen Werten (vorher)</h2>
<div id="668ff690" class="cell" data-execution_count="3">
<div class="cell-output cell-output-display" data-execution_count="3">
<div>
<style scoped="">
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
<table class="dataframe caption-top" data-quarto-postprocess="true" data-border="1">
<thead>
<tr class="header" style="text-align: right;">
<th data-quarto-table-cell-role="th"></th>
<th data-quarto-table-cell-role="th">age</th>
<th data-quarto-table-cell-role="th">workclass</th>
<th data-quarto-table-cell-role="th">fnlwgt</th>
<th data-quarto-table-cell-role="th">education</th>
<th data-quarto-table-cell-role="th">education.num</th>
<th data-quarto-table-cell-role="th">marital.status</th>
<th data-quarto-table-cell-role="th">occupation</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td data-quarto-table-cell-role="th">0</td>
<td>90</td>
<td>?</td>
<td>77053</td>
<td>HS-grad</td>
<td>9</td>
<td>Widowed</td>
<td>?</td>
</tr>
<tr class="even">
<td data-quarto-table-cell-role="th">1</td>
<td>82</td>
<td>Private</td>
<td>132870</td>
<td>HS-grad</td>
<td>9</td>
<td>Widowed</td>
<td>Exec-managerial</td>
</tr>
<tr class="odd">
<td data-quarto-table-cell-role="th">2</td>
<td>66</td>
<td>?</td>
<td>186061</td>
<td>Some-college</td>
<td>10</td>
<td>Widowed</td>
<td>?</td>
</tr>
<tr class="even">
<td data-quarto-table-cell-role="th">3</td>
<td>54</td>
<td>Private</td>
<td>140359</td>
<td>7th-8th</td>
<td>4</td>
<td>Divorced</td>
<td>Machine-op-inspct</td>
</tr>
<tr class="odd">
<td data-quarto-table-cell-role="th">4</td>
<td>41</td>
<td>Private</td>
<td>264663</td>
<td>Some-college</td>
<td>10</td>
<td>Separated</td>
<td>Prof-specialty</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</section>
<section id="ersetzung-von-fehlenden-ungültigen-werten-nachher" class="slide level2 smaller">
<h2>Ersetzung von fehlenden/ ungültigen Werten (nachher)</h2>
<div id="10352235" class="cell" data-execution_count="4">
<div class="cell-output cell-output-display" data-execution_count="4">
<div>
<style scoped="">
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
<table class="dataframe caption-top" data-quarto-postprocess="true" data-border="1">
<thead>
<tr class="header" style="text-align: right;">
<th data-quarto-table-cell-role="th"></th>
<th data-quarto-table-cell-role="th">age</th>
<th data-quarto-table-cell-role="th">workclass</th>
<th data-quarto-table-cell-role="th">fnlwgt</th>
<th data-quarto-table-cell-role="th">education</th>
<th data-quarto-table-cell-role="th">education.num</th>
<th data-quarto-table-cell-role="th">marital.status</th>
<th data-quarto-table-cell-role="th">occupation</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td data-quarto-table-cell-role="th">0</td>
<td>90</td>
<td>Private</td>
<td>77053</td>
<td>HS-grad</td>
<td>9</td>
<td>Widowed</td>
<td>Prof-specialty</td>
</tr>
<tr class="even">
<td data-quarto-table-cell-role="th">1</td>
<td>82</td>
<td>Private</td>
<td>132870</td>
<td>HS-grad</td>
<td>9</td>
<td>Widowed</td>
<td>Exec-managerial</td>
</tr>
<tr class="odd">
<td data-quarto-table-cell-role="th">2</td>
<td>66</td>
<td>Private</td>
<td>186061</td>
<td>Some-college</td>
<td>10</td>
<td>Widowed</td>
<td>Prof-specialty</td>
</tr>
<tr class="even">
<td data-quarto-table-cell-role="th">3</td>
<td>54</td>
<td>Private</td>
<td>140359</td>
<td>7th-8th</td>
<td>4</td>
<td>Divorced</td>
<td>Machine-op-inspct</td>
</tr>
<tr class="odd">
<td data-quarto-table-cell-role="th">4</td>
<td>41</td>
<td>Private</td>
<td>264663</td>
<td>Some-college</td>
<td>10</td>
<td>Separated</td>
<td>Prof-specialty</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</section>
<section id="umwandlung-der-variablen" class="slide level2">
<h2>Umwandlung der Variablen</h2>
<ul>
<li class="fragment">Von Katergorischen Variablen zu Numerischen</li>
<li class="fragment">Beispiel Geschlecht:
<ul>
<li class="fragment">Mann -&gt; 1</li>
<li class="fragment">Frau -&gt; 0</li>
</ul></li>
<li class="fragment">Wird benötigt um mit dem Datensatz weiter zu arbeiten zu können -&gt; ML-Modelle benötigen numerische Werte um sinnvolle Berechnungen durchführen zu können</li>
</ul>
</section></section>
<section>
<section id="ml-modell" class="title-slide slide level1 center">
<h1>ML-Modell</h1>
<p>Auswahl, Beschreibung, Hyperparameter, Güte</p>
</section>
<section id="auswahl-eines-geeigneten-modells" class="slide level2">
<h2>Auswahl eines geeigneten Modells</h2>
<p><br></p>
<table class="caption-top">
<colgroup>
<col style="width: 33%">
<col style="width: 66%">
</colgroup>
<thead>
<tr class="header">
<th>Kriterium</th>
<th>Unsere Situation</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Art der Daten</td>
<td>Strukturiert</td>
</tr>
<tr class="even">
<td>Datenmenge</td>
<td>~32.500 Einträge</td>
</tr>
<tr class="odd">
<td>Komplexität</td>
<td>13-dimensionale Daten &gt; eher komplex</td>
</tr>
<tr class="even">
<td>Ziel und Art der Klassifizierung</td>
<td>Binäre Klassifizierung (&gt;/&lt; 50.000$ Einkommen)</td>
</tr>
</tbody>
</table>
<p><br></p>
<p>&gt; Gute Voraussetzungen für <strong>Random Forest</strong></p>
<aside class="notes">
<p>Außerdem:</p>
<ul>
<li>Rechenressourcen</li>
<li>Zeit für Training</li>
</ul>
<style type="text/css">
span.MJX_Assistive_MathML {
position:absolute!important;
clip: rect(1px, 1px, 1px, 1px);
padding: 1px 0 0 0!important;
border: 0!important;
height: 1px!important;
width: 1px!important;
overflow: hidden!important;
display:block!important;
}</style></aside>
</section>
<section id="random-forest" class="slide level2">
<h2>Random Forest</h2>
<ul>
<li class="fragment"><strong>Ensemble-Learning-Verfahren</strong>, bestehend aus vielen Entscheidungsbaummodellen (bei uns 100 Bäume)</li>
<li class="fragment"><strong>Training:</strong> Jeder Baum wird auf zufälliger Teilmenge der Daten und zufälliger Teilmenge der Features trainiert</li>
<li class="fragment"><strong>Vorhersagen:</strong> Ergebnisse aller Bäume werden aggregiert, um eine finale Vorhersage zu erhalten</li>
<li class="fragment">Keine Aktivierungsfunktionen oder Layer</li>
</ul>
<aside class="notes">
<ul>
<li><strong>Ensemble Learning</strong>: Mehrere verschiedene Lernalgorithmen, um bessere Ergebnisse zu erhalten als mit einem einzelnen Lernalgorithmus</li>
<li>Gute Leistung bei verschiedenen Arten von Daten</li>
<li>Robustheit gegenüber Overfitting</li>
<li>Fähigkeit, mit fehlenden Werten und kategorischen Variablen umzugehen</li>
<li><strong>Eingebaute Feature Importance</strong></li>
<li><strong>Aktivierungsfunktionen:</strong> Entscheidungsbäume, basieren auf Regeln und Splits, ohne mathematische Aktivierungsfunktionen.</li>
<li><strong>Layers:</strong> Es gibt keine Schichten (Layers) im klassischen Sinne, wie bei neuronalen Netzwerken. Jeder Baum ist ein eigenständiger Klassifikator.</li>
</ul>
<style type="text/css">
span.MJX_Assistive_MathML {
position:absolute!important;
clip: rect(1px, 1px, 1px, 1px);
padding: 1px 0 0 0!important;
border: 0!important;
height: 1px!important;
width: 1px!important;
overflow: hidden!important;
display:block!important;
}</style></aside>
</section>
<section id="random-forest-1" class="slide level2" data-background-image="img/Random_Forest_Tree_Example.png">
<h2>Random Forest</h2>
</section>
<section id="hyperparameter" class="slide level2">
<h2>Hyperparameter</h2>
<blockquote>
<p><em>Parameter, die vor dem Training festgelegt werden müssen</em></p>
</blockquote>
<table class="caption-top">
<colgroup>
<col style="width: 33%">
<col style="width: 66%">
</colgroup>
<thead>
<tr class="header">
<th>Hyperparameter</th>
<th>Bedeutung</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>n_estimators</td>
<td>Anzahl an Bäumen</td>
</tr>
<tr class="even">
<td>max_depth</td>
<td>Maximale Tiefe eines Baumes</td>
</tr>
<tr class="odd">
<td>min_samples_split</td>
<td>Mindestanzahl an Samples, um ein Split durchzuführen</td>
</tr>
<tr class="even">
<td>min_samples_leaf</td>
<td>Mindestanzahl an Samples in einem Blatt</td>
</tr>
</tbody>
</table>
</section>
<section id="hyperparameter-tuning" class="slide level2 smaller">
<h2>Hyperparameter-Tuning</h2>
<blockquote>
<p><em>Optimierung der Hyperparameter, um die Modellgüte zu verbessern</em></p>
</blockquote>
<div class="sourceCode" id="cb3" data-code-line-numbers="|2-7|10-11|15"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb3-1"><a href=""></a><span class="co"># Hyperparameter-Grid definieren</span></span>
<span id="cb3-2"><a href=""></a>param_grid <span class="op">=</span> {</span>
<span id="cb3-3"><a href=""></a> <span class="st">'n_estimators'</span>: [<span class="dv">50</span>, <span class="dv">100</span>],</span>
<span id="cb3-4"><a href=""></a> <span class="st">'max_depth'</span>: [<span class="va">None</span>, <span class="dv">10</span>, <span class="dv">20</span>],</span>
<span id="cb3-5"><a href=""></a> <span class="st">'min_samples_split'</span>: [<span class="dv">2</span>, <span class="dv">5</span>],</span>
<span id="cb3-6"><a href=""></a> <span class="st">'min_samples_leaf'</span>: [<span class="dv">1</span>, <span class="dv">2</span>]</span>
<span id="cb3-7"><a href=""></a>}</span>
<span id="cb3-8"><a href=""></a></span>
<span id="cb3-9"><a href=""></a><span class="co"># GridSearchCV</span></span>
<span id="cb3-10"><a href=""></a>grid_search <span class="op">=</span> GridSearchCV(RandomForestClassifier(random_state<span class="op">=</span><span class="dv">42</span>), param_grid, cv<span class="op">=</span><span class="dv">3</span>, scoring<span class="op">=</span><span class="st">'accuracy'</span>)</span>
<span id="cb3-11"><a href=""></a>grid_search.fit(X_train, y_train)</span>
<span id="cb3-12"><a href=""></a></span>
<span id="cb3-13"><a href=""></a><span class="co"># Beste Parameter</span></span>
<span id="cb3-14"><a href=""></a><span class="bu">print</span>(<span class="st">"Beste Parameter:"</span>)</span>
<span id="cb3-15"><a href=""></a><span class="bu">print</span>(grid_search.best_params_)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="fragment">
<div class="sourceCode" id="cb4"><pre class="sourceCode numberSource json number-lines code-with-copy"><code class="sourceCode json"><span id="cb4-1"><a href=""></a><span class="fu">{</span></span>
<span id="cb4-2"><a href=""></a> <span class="er">'max_depth'</span><span class="fu">:</span> <span class="er">None</span><span class="fu">,</span> </span>
<span id="cb4-3"><a href=""></a> <span class="er">'min_samples_leaf'</span><span class="fu">:</span> <span class="dv">2</span><span class="fu">,</span> </span>
<span id="cb4-4"><a href=""></a> <span class="er">'min_samples_split'</span><span class="fu">:</span> <span class="dv">2</span><span class="fu">,</span> </span>
<span id="cb4-5"><a href=""></a> <span class="er">'n_estimators'</span><span class="fu">:</span> <span class="dv">100</span></span>
<span id="cb4-6"><a href=""></a><span class="fu">}</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
</section>
<section id="hyperparameter-tuning-1" class="slide level2 smaller">
<h2>Hyperparameter-Tuning</h2>
<div class="sourceCode" id="cb5" data-code-line-numbers="2-7,10-11,15|18,21|24-27"><pre class="sourceCode numberSource python number-lines code-with-copy"><code class="sourceCode python"><span id="cb5-1"><a href=""></a><span class="co"># Hyperparameter-Grid definieren</span></span>
<span id="cb5-2"><a href=""></a>param_grid <span class="op">=</span> {</span>
<span id="cb5-3"><a href=""></a> <span class="st">'n_estimators'</span>: [<span class="dv">50</span>, <span class="dv">100</span>],</span>
<span id="cb5-4"><a href=""></a> <span class="st">'max_depth'</span>: [<span class="va">None</span>, <span class="dv">10</span>, <span class="dv">20</span>],</span>
<span id="cb5-5"><a href=""></a> <span class="st">'min_samples_split'</span>: [<span class="dv">2</span>, <span class="dv">5</span>],</span>
<span id="cb5-6"><a href=""></a> <span class="st">'min_samples_leaf'</span>: [<span class="dv">1</span>, <span class="dv">2</span>]</span>
<span id="cb5-7"><a href=""></a>}</span>
<span id="cb5-8"><a href=""></a></span>
<span id="cb5-9"><a href=""></a><span class="co"># GridSearchCV</span></span>
<span id="cb5-10"><a href=""></a>grid_search <span class="op">=</span> GridSearchCV(RandomForestClassifier(random_state<span class="op">=</span><span class="dv">42</span>), param_grid, cv<span class="op">=</span><span class="dv">3</span>, scoring<span class="op">=</span><span class="st">'accuracy'</span>)</span>
<span id="cb5-11"><a href=""></a>grid_search.fit(X_train, y_train)</span>
<span id="cb5-12"><a href=""></a></span>
<span id="cb5-13"><a href=""></a><span class="co"># Beste Parameter</span></span>
<span id="cb5-14"><a href=""></a><span class="bu">print</span>(<span class="st">"Beste Parameter:"</span>)</span>
<span id="cb5-15"><a href=""></a><span class="bu">print</span>(grid_search.best_params_)</span>
<span id="cb5-16"><a href=""></a></span>
<span id="cb5-17"><a href=""></a><span class="co"># Bestes Modell</span></span>
<span id="cb5-18"><a href=""></a>best_rf_model <span class="op">=</span> grid_search.best_estimator_</span>
<span id="cb5-19"><a href=""></a></span>
<span id="cb5-20"><a href=""></a><span class="co"># Vorhersagen mit dem besten Modell</span></span>
<span id="cb5-21"><a href=""></a>y_pred_best <span class="op">=</span> best_rf_model.predict(X_test)</span>
<span id="cb5-22"><a href=""></a></span>
<span id="cb5-23"><a href=""></a><span class="co"># Modellleistung evaluieren</span></span>
<span id="cb5-24"><a href=""></a>accuracy_best <span class="op">=</span> accuracy_score(y_test, y_pred_best)</span>
<span id="cb5-25"><a href=""></a>precision_best <span class="op">=</span> precision_score(y_test, y_pred_best)</span>
<span id="cb5-26"><a href=""></a>recall_best <span class="op">=</span> recall_score(y_test, y_pred_best)</span>
<span id="cb5-27"><a href=""></a>f1_best <span class="op">=</span> f1_score(y_test, y_pred_best)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</section>
<section id="modellgüte" class="slide level2 smaller" data-auto-animate="true">
<h2 data-id="quarto-animate-title">Modellgüte</h2>
<aside class="notes">
<ul>
<li><strong>Accuracy</strong>: Anteil der korrekt klassifizierten Instanzen</li>
<li><strong>Precision</strong>: Anteil der als positiv klassifizierten Instanzen, die tatsächlich positiv sind</li>
<li><strong>Recall</strong>: Anteil der tatsächlich positiven Instanzen, die als positiv klassifiziert wurden</li>
<li><strong>F1-Score</strong>: Harmonisches Mittel aus Precision und Recall</li>
</ul>
<style type="text/css">
span.MJX_Assistive_MathML {
position:absolute!important;
clip: rect(1px, 1px, 1px, 1px);
padding: 1px 0 0 0!important;
border: 0!important;
height: 1px!important;
width: 1px!important;
overflow: hidden!important;
display:block!important;
}</style></aside>
<div class="sourceCode" id="cb6" data-code-line-numbers="|2|3|4|5"><pre class="sourceCode numberSource json number-lines code-with-copy" data-id="quarto-animate-code"><code class="sourceCode json hljs"><span id="cb6-1" class="hljs-ln-code"><a href=""></a><span class="fu">{</span></span>
<span id="cb6-2" class="hljs-ln-code"><a href=""></a> <span class="er">'Accuracy'</span><span class="fu">:</span> <span class="dv">0</span><span class="er">.</span><span class="dv">8607</span><span class="fu">,</span></span>
<span id="cb6-3" class="hljs-ln-code"><a href=""></a> <span class="er">'Precision'</span><span class="fu">:</span> <span class="dv">0</span><span class="er">.</span><span class="dv">7613</span><span class="fu">,</span></span>
<span id="cb6-4" class="hljs-ln-code"><a href=""></a> <span class="er">'Recall'</span><span class="fu">:</span> <span class="dv">0</span><span class="er">.</span><span class="dv">6142</span><span class="fu">,</span></span>
<span id="cb6-5" class="hljs-ln-code"><a href=""></a> <span class="er">'F1</span> <span class="er">Score'</span><span class="fu">:</span> <span class="dv">0</span><span class="er">.</span><span class="dv">6798</span></span>
<span id="cb6-6" class="hljs-ln-code"><a href=""></a><span class="fu">}</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="fragment">
<p><strong>Konfusionsmatrix</strong></p>
</div>
<div class="fragment">
<p><img data-src="img/Confusions_Matrix.png" style="width:50.0%"></p>
</div>
</section>
<section id="konfusionsmatrix" class="slide level2" data-auto-animate="true">
<h2 data-id="quarto-animate-title">Konfusionsmatrix</h2>
<img data-src="img/Confusions_Matrix.png" class="r-stretch"><aside class="notes">
<ul>
<li>(oben links) Tatsächlich sind die meisten weniger als 50K und auch richtig vorhergesagt</li>
<li>(unten rechts) Zweitgrößte Gruppe: Mehr als 50k und auch so vorhergesagt</li>
<li>(unten links) Drittgrößte Gruppe: Eigentlich mehr als 50k aber als weniger vorhergesagt</li>
<li>(oben rechts) Kleinste Gruppe: Tatsächlich weniger als 50k aber als mehr vorhergesagt</li>
</ul>
<style type="text/css">
span.MJX_Assistive_MathML {
position:absolute!important;
clip: rect(1px, 1px, 1px, 1px);
padding: 1px 0 0 0!important;
border: 0!important;
height: 1px!important;
width: 1px!important;
overflow: hidden!important;
display:block!important;
}</style></aside>
</section>
<section id="feature-importances" class="slide level2">
<h2>Feature Importances</h2>
<blockquote>
<p><em>Metrik, wie viel ein Feature zur Vorhersage des Modells beiträgt</em></p>
</blockquote>
<img data-src="img/Feature_Importance.png" style="width:80.0%" class="r-stretch"></section></section>
<section>
<section id="lime" class="title-slide slide level1 center" data-visibility="uncounted">
<h1>LIME</h1>
<p>Local Interpretable Model-agnostic Explanations</p>
</section>
<section id="grundprinzip" class="slide level2">
<h2>1. Grundprinzip:</h2>
<ul>
<li class="fragment">LIME erklärt einzelne Vorhersagen eines beliebigen ML-Modells</li>
<li class="fragment">Es arbeitet modellunabhängig (model-agnostic)</li>
<li class="fragment">Erzeugt lokale, interpretierbare Erklärungen für einzelne Vorhersagen</li>
</ul>
</section>
<section id="funktionsweise-im-detail" class="slide level2">
<h2>2. Funktionsweise im Detail:</h2>
<h3 id="ausgangssituation">Ausgangssituation:</h3>
<ul>
<li class="fragment">Ein trainiertes ML-Modell liegt vor</li>
<li class="fragment">Eine spezifische Vorhersage soll erklärt werden</li>
<li class="fragment">Das Original-Modell wird als “Black Box” behandelt</li>
</ul>
</section>
<section id="funktionsweise-im-detail-1" class="slide level2">
<h2>2. Funktionsweise im Detail:</h2>
<h3 id="prozessschritte">Prozessschritte:</h3>
<ul>
<li class="fragment">Sampling um den Datenpunkt:
<ul>
<li class="fragment">Erzeugt synthetische Samples in der Nachbarschaft des zu erklärenden Datenpunkts</li>
<li class="fragment">Verwendet Perturbationen (kleine Änderungen) der Original-Features</li>
</ul></li>
<li class="fragment">Gewichtung der Samples:
<ul>
<li class="fragment">Näher liegende Samples erhalten höhere Gewichte</li>
</ul></li>
</ul>
</section>
<section id="funktionsweise-im-detail-2" class="slide level2">
<h2>2. Funktionsweise im Detail:</h2>
<h3 id="prozessschritte-1">Prozessschritte:</h3>
<ul>
<li class="fragment">Feature-Transformation:
<ul>
<li class="fragment">Konvertiert die Daten in ein interpretierbares Format</li>
<li class="fragment">Bei Texten z.B. Umwandlung in binäre Features (Wort vorhanden/nicht vorhanden)</li>
</ul></li>
<li class="fragment">Training eines einfachen Modells:
<ul>
<li class="fragment">typischer weise durch lineare Regression</li>
<li class="fragment">Verwendet die gewichteten Samples</li>
<li class="fragment">Optimiert auf lokale Genauigkeit</li>
<li class="fragment">damit man ein leicht Interpretierbares Modell bekommt</li>
</ul></li>
</ul>
</section>
<section id="funktionsweise-im-detail-3" class="slide level2">
<h2>2. Funktionsweise im Detail:</h2>
<p>Extraktion der Erklärung:</p>
<img data-src=".\img\LIME_Erklärung.png" class="quarto-figure quarto-figure-center r-stretch" style="width:80.0%"><aside class="notes">
<p>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</p>
<style type="text/css">
span.MJX_Assistive_MathML {
position:absolute!important;
clip: rect(1px, 1px, 1px, 1px);
padding: 1px 0 0 0!important;
border: 0!important;
height: 1px!important;
width: 1px!important;
overflow: hidden!important;
display:block!important;
}</style></aside>
</section>
<section id="wichtige-eigenschaften" class="slide level2 smaller">
<h2>3. Wichtige Eigenschaften:</h2>
<ul>
<li class="fragment">Lokalität:
<ul>
<li class="fragment">Fokussiert sich auf lokale Umgebung der zu erklärenden Instanz</li>
<li class="fragment">Erzeugt keine globalen Erklärungen für das gesamte Modell</li>
</ul></li>
<li class="fragment">Interpretierbarkeit:
<ul>
<li class="fragment">Nutzt einfache, verständliche Modelle für Erklärungen</li>
<li class="fragment">Meist lineare Modelle oder Entscheidungsbäume</li>
</ul></li>
<li class="fragment">Modell-Agnostik:
<ul>
<li class="fragment">Funktioniert mit jedem ML-Modell</li>
<li class="fragment">Benötigt nur Zugriff auf Vorhersagefunktion</li>
</ul></li>
</ul>
</section>
<section id="vorteile-und-grenzen" class="slide level2 smaller">
<h2>4. Vorteile und Grenzen:</h2>
<aside class="notes">
<p>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.</p>
<style type="text/css">
span.MJX_Assistive_MathML {
position:absolute!important;
clip: rect(1px, 1px, 1px, 1px);
padding: 1px 0 0 0!important;
border: 0!important;
height: 1px!important;
width: 1px!important;
overflow: hidden!important;
display:block!important;
}</style></aside>
<ul>
<li class="fragment">Vorteile:
<ul>
<li class="fragment">Flexibel einsetzbar</li>
<li class="fragment">Intuitiv verständliche Erklärungen</li>
<li class="fragment">Unterstützt verschiedene Datentypen</li>
</ul></li>
<li class="fragment">Grenzen:
<ul>
<li class="fragment">Nur lokale Erklärungen</li>
<li class="fragment">Sampling kann rechenintensiv sein</li>
<li class="fragment">LIME ist instabil</li>
</ul></li>
<li class="fragment">LIME ist besonders nützlich, wenn man:
<ul>
<li class="fragment">Einzelne Vorhersagen verstehen möchten</li>
<li class="fragment">Mit komplexen Modellen arbeitet</li>
<li class="fragment">Modelle debuggen oder verbessern will</li>
</ul></li>
</ul>
</section>
<section id="lime-anwendungsszenarien" class="slide level2">
<h2>LIME Anwendungsszenarien</h2>
<div>
<p><strong>Medizinische Diagnostik und Gesundheitswesen</strong></p>
<ul>
<li>Krebsdiagnose: Erklärung, welche Merkmale in medizinischen Bildern zu einer Krebsdiagnose beitragen</li>
</ul>
</div>
</section>
<section id="lime-anwendungsszenarien-1" class="slide level2">
<h2>LIME Anwendungsszenarien</h2>
<div>
<p><strong>Medizinische Diagnostik und Gesundheitswesen</strong></p>
<ul>
<li>Krebsdiagnose: Erklärung, welche Merkmale in medizinischen Bildern zu einer Krebsdiagnose beitragen</li>
</ul>
<p><strong>Finanzwesen und Kreditvergabe</strong></p>
<ul>
<li>Kreditwürdigkeitsprüfung: Transparente Begründung für Kreditablehnungen oder -genehmigungen</li>
<li>Betrugserkennung: Erklärung, warum bestimmte Transaktionen als verdächtig eingestuft werden</li>
</ul>
</div>
</section>
<section id="lime-anwendungsszenarien-2" class="slide level2">
<h2>LIME Anwendungsszenarien</h2>
<div>
<p><strong>Medizinische Diagnostik und Gesundheitswesen</strong></p>
<ul>
<li>Krebsdiagnose: Erklärung, welche Merkmale in medizinischen Bildern zu einer Krebsdiagnose beitragen</li>
</ul>
<p><strong>Finanzwesen und Kreditvergabe</strong></p>
<ul>
<li>Kreditwürdigkeitsprüfung: Transparente Begründung für Kreditablehnungen oder -genehmigungen</li>
<li>Betrugserkennung: Erklärung, warum bestimmte Transaktionen als verdächtig eingestuft werden</li>
</ul>
<p><strong>Personalabteilung und Recruiting</strong></p>
<ul>
<li>Bewerberselektion: Erklärung, welche Qualifikationen oder Fähigkeiten bei der Kandidatenauswahl entscheidend waren</li>
</ul>
</div>
</section>
<section id="lime-berechnungskosten" class="slide level2">
<h2>LIME Berechnungskosten</h2>
<p>LIME skaliert:</p>
<div>
<ul>
<li>Linear mit der Anzahl der Samples (N)</li>
<li>Quadratisch bis kubisch mit der Anzahl der Features (D)</li>
<li>Linear mit der Komplexität des zu erklärenden Modells M(D)</li>
</ul>
</div>
<p>Komplexität in BigO Notation:</p>
<div>
<ul>
<li><strong>O(N × M(D))</strong>, wenn das zu erklärende Modell komplex ist</li>
<li><strong>O(N × D²)</strong>, wenn das lineare Modell der rechenintensivste Teil ist</li>
</ul>
</div>
<aside class="notes">
<p><strong>Große Datensätze generell Machbar</strong> - Dürfen nur nicht zu viele Features haben, das erhöhe stark den Rechenaufwand</p>
<style type="text/css">
span.MJX_Assistive_MathML {
position:absolute!important;
clip: rect(1px, 1px, 1px, 1px);
padding: 1px 0 0 0!important;
border: 0!important;
height: 1px!important;
width: 1px!important;
overflow: hidden!important;
display:block!important;
}</style></aside>
</section>
<section id="rule-based-explenation" class="slide level2">
<h2>Rule Based Explenation</h2>
<div class="quarto-figure quarto-figure-center">
<figure>
<p><img data-src="img/Komplett.bmp" class="quarto-figure quarto-figure-center" height="400"></p>
</figure>
</div>
<aside class="notes">
<ul>
<li><p>Verfahren wird gefüttert mit</p></li>
<li><p>Daten und Labels</p></li>
<li><p>Erstellt draus Regeln</p></li>
</ul>
<style type="text/css">
span.MJX_Assistive_MathML {
position:absolute!important;
clip: rect(1px, 1px, 1px, 1px);
padding: 1px 0 0 0!important;
border: 0!important;
height: 1px!important;
width: 1px!important;
overflow: hidden!important;
display:block!important;
}</style></aside>
</section>
<section id="detaillierte-erklärung-und-funktionsweise" class="slide level2">
<h2>Detaillierte Erklärung und Funktionsweise</h2>
<div class="quarto-figure quarto-figure-center">
<figure>
<p><img data-src="img/Neue_Regel.bmp" class="quarto-figure quarto-figure-center" height="400"></p>
</figure>
</div>
<aside class="notes">
<ul>
<li><p>Menschen lernen schneller als Tiere</p></li>
<li><p>Menschen kommunizieren schneller / besser</p></li>
<li><p>Vor allem auf Grund von Regeln</p></li>
<li><p>Satzbau, Erklärungen, Logik</p></li>
<li><p>Hund Sitz beibringen</p></li>
<li><p>braucht viele iterationen (mit Belohnungen)</p></li>
<li><p>Mensch kann deutlicher erklären was das Ziel ist</p></li>
<li><p>Regel Basiertes Lernen kommt zum Einsatz</p></li>
<li><p>Anstatt (unverständlicher) neuronaler Netze</p></li>
<li><p>oder komplexen mathematischen Modellen</p></li>
<li><p>Verwendung von logischen Rgeln</p></li>
<li><p>extrahiert aus Daten oder durch Experten definiert</p></li>
</ul>
<style type="text/css">
span.MJX_Assistive_MathML {
position:absolute!important;
clip: rect(1px, 1px, 1px, 1px);
padding: 1px 0 0 0!important;
border: 0!important;
height: 1px!important;
width: 1px!important;
overflow: hidden!important;
display:block!important;
}</style></aside>
</section>
<section id="beispiel-regel" class="slide level2">
<h2>Beispiel Regel</h2>
<p><br></p>
<blockquote>
<p>WENN</p>
</blockquote>
<blockquote>
<p>Fieber über 38°C</p>
</blockquote>
<blockquote>
<p>UND Husten</p>
</blockquote>
<blockquote>
<p>DANN Grippe</p>
</blockquote>
</section>
<section id="beispiel-regel-1" class="slide level2 text-align-right">
<h2>Beispiel Regel</h2>
<p><br></p>
<blockquote>
<p>WENN</p>
</blockquote>
<blockquote>
<p>capital.gain ≤ 7073.50 UND</p>
</blockquote>
<blockquote>
<p>education.num ≤ 12.50 UND</p>
</blockquote>
<blockquote>
<p>capital.loss &gt; 2218.50 UND</p>
</blockquote>
<blockquote>
<p>DANN Einkommen &gt; 50K</p>
</blockquote>
</section>
<section id="vorteile" class="slide level2">
<h2>Vorteile</h2>
<ul>
<li class="fragment">Transparenz: Menschen können Entscheidungen leicht <br> nachvollziehen</li>
<li class="fragment">Überprüfbarkeit: Regeln können durch Experten überprüft <br> und Ausgewertet werden</li>
<li class="fragment">Anpassbarkeit: Vordefinierte Regeln von Experten können <br> mit maschinell erstellten Regeln ergänzt werden</li>
</ul>
<p><img data-src="img/Vorteile.jpg" class="absolute" style="top: 10px; right: 10px; height: 900px; "></p>
<aside class="notes">
<p>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)</p>
<style type="text/css">
span.MJX_Assistive_MathML {
position:absolute!important;
clip: rect(1px, 1px, 1px, 1px);
padding: 1px 0 0 0!important;
border: 0!important;
height: 1px!important;
width: 1px!important;
overflow: hidden!important;
display:block!important;
}</style></aside>
</section>
<section id="nachteileherausforderungen" class="slide level2">
<h2>Nachteile/Herausforderungen</h2>
<ul>
<li class="fragment">Skalierbarkeit: komplexen Anwendungsgebiete können eine hohe <br> Anzahl an Regeln schnell erreichen</li>
<li class="fragment">Gereralität: Regeln sind oft domänenspezifisch und benötigen <br> für unterschiedliche Kontexte entsprechend anpassungen</li>
<li class="fragment">Widersprüche: Regeln können zu Widersprüchen untereinander <br> führen und müssen daher angepasst werden</li>
</ul>
<p><img data-src="img/Nachteile_gespiegelt.jpg" class="absolute" style="top: 10px; right: 10px; height: 900px; "></p>
<aside class="notes">
<ul>
<li>Skalierbarkeit: In komplexen Anwendungsgebieten können die Anzahl an Regeln schnell sehr hoch werden.</li>
<li>Gereralität: Regeln sind oft domänenspezifisch und müssen für unterschiedliche Kontexte entsprechend angepasst werden</li>
<li>Widersprüche: Regeln können zu Widersprüchen untereinander führen und müssen daher angepasst werden</li>
</ul>
<style type="text/css">
span.MJX_Assistive_MathML {
position:absolute!important;
clip: rect(1px, 1px, 1px, 1px);
padding: 1px 0 0 0!important;
border: 0!important;
height: 1px!important;
width: 1px!important;
overflow: hidden!important;
display:block!important;
}</style></aside>
</section>
<section id="rbe-anwendungsszenarien" class="slide level2">
<h2>RBE Anwendungsszenarien</h2>
<div>
<p><strong>Medizinische Diagnostik und Gesundheitswesen</strong></p>
<ul>
<li>Diagnostische Systeme: Ärzte benötigen klare Regeln, um Diagnosevorschläge zu verstehen und zu validieren</li>
</ul>
</div>
<aside class="notes">
<p>Medizin / Gesundheitswesen</p>
<ul>
<li><strong>Regeln, warum welche Diagnose vorgeschlagen wurde</strong></li>
</ul>
<p>Finanzwesen</p>
<ul>
<li><strong>Regeln, warum Transaktion verdächtig ist</strong></li>
<li><strong>Regeln, warum Kredit genehmigt / abgelehnt wurde</strong></li>
</ul>
<p>Versicherungswesen</p>
<ul>
<li><strong>Regeln, warum Prämien zu stande kommen</strong></li>
<li><strong>Regeln, warum Schadensansprüche geltend gemacht werden können</strong></li>
</ul>
<style type="text/css">
span.MJX_Assistive_MathML {
position:absolute!important;
clip: rect(1px, 1px, 1px, 1px);
padding: 1px 0 0 0!important;
border: 0!important;
height: 1px!important;
width: 1px!important;
overflow: hidden!important;
display:block!important;
}</style></aside>
</section>
<section id="rbe-anwendungsszenarien-1" class="slide level2">
<h2>RBE Anwendungsszenarien</h2>
<div>
<p><strong>Medizinische Diagnostik und Gesundheitswesen</strong></p>
<ul>
<li>Diagnostische Systeme: Ärzte benötigen klare Regeln, um Diagnosevorschläge zu verstehen und zu validieren</li>
</ul>
<p><strong>Versicherungswesen</strong></p>
<ul>
<li>Risikobewertung: Transparente Regeln zur Prämienberechnung</li>
<li>Schadenregulierung: Nachvollziehbare Entscheidungskriterien für Schadensansprüche</li>
</ul>
</div>
<aside class="notes">
<p>Medizin / Gesundheitswesen</p>
<ul>
<li><strong>Regeln, warum welche Diagnose vorgeschlagen wurde</strong></li>
</ul>
<p>Finanzwesen</p>
<ul>
<li><strong>Regeln, warum Transaktion verdächtig ist</strong></li>
<li><strong>Regeln, warum Kredit genehmigt / abgelehnt wurde</strong></li>
</ul>
<p>Versicherungswesen</p>
<ul>
<li><strong>Regeln, warum Prämien zu stande kommen</strong></li>
<li><strong>Regeln, warum Schadensansprüche geltend gemacht werden können</strong></li>
</ul>
<style type="text/css">
span.MJX_Assistive_MathML {
position:absolute!important;
clip: rect(1px, 1px, 1px, 1px);
padding: 1px 0 0 0!important;
border: 0!important;
height: 1px!important;
width: 1px!important;
overflow: hidden!important;
display:block!important;
}</style></aside>
</section>
<section id="rbe-anwendungsszenarien-2" class="slide level2">
<h2>RBE Anwendungsszenarien</h2>
<div>
<p><strong>Medizinische Diagnostik und Gesundheitswesen</strong></p>
<ul>
<li>Diagnostische Systeme: Ärzte benötigen klare Regeln, um Diagnosevorschläge zu verstehen und zu validieren</li>
</ul>
<p><strong>Versicherungswesen</strong></p>
<ul>
<li>Risikobewertung: Transparente Regeln zur Prämienberechnung</li>
<li>Schadenregulierung: Nachvollziehbare Entscheidungskriterien für Schadensansprüche</li>
</ul>
<p><strong>Finanzwesen und Kreditvergabe</strong></p>
<ul>
<li>Betrugserkennung: Einfach verständliche Regeln zur Identifikation verdächtiger Transaktionen</li>
<li>Kreditentscheidungen: Banken müssen Ablehnungen oder Genehmigungen rechtlich begründen können</li>
</ul>
</div>
<aside class="notes">
<p>Medizin / Gesundheitswesen</p>
<ul>
<li><strong>Regeln, warum welche Diagnose vorgeschlagen wurde</strong></li>
</ul>
<p>Finanzwesen</p>
<ul>
<li><strong>Regeln, warum Transaktion verdächtig ist</strong></li>
<li><strong>Regeln, warum Kredit genehmigt / abgelehnt wurde</strong></li>
</ul>
<p>Versicherungswesen</p>
<ul>
<li><strong>Regeln, warum Prämien zu stande kommen</strong></li>
<li><strong>Regeln, warum Schadensansprüche geltend gemacht werden können</strong></li>
</ul>
<style type="text/css">
span.MJX_Assistive_MathML {
position:absolute!important;
clip: rect(1px, 1px, 1px, 1px);
padding: 1px 0 0 0!important;
border: 0!important;
height: 1px!important;
width: 1px!important;
overflow: hidden!important;
display:block!important;
}</style></aside>
</section>
<section id="rbe-output" class="slide level2">
<h2>RBE Output</h2>
<pre><code>|--- marital.status_Married-civ-spouse &lt;= 0.50
| |--- capital.gain &lt;= 7073.50
| | |--- education.num &lt;= 12.50
| | | |--- capital.loss &lt;= 2218.50
| | | | |--- hours.per.week &lt;= 40.50
| | | | | |--- Einkommen ≤ 50K
| | | | |--- hours.per.week &gt; 40.50
| | | | | |--- Einkommen ≤ 50K
| | | |--- capital.loss &gt; 2218.50
| | | | |--- fnlwgt &lt;= 125450.50
| | | | | |--- Einkommen &gt; 50K
| | | | |--- fnlwgt &gt; 125450.50
| | | | | |--- Einkommen ≤ 50K</code></pre>
<aside class="notes">
<ul>
<li>Ich zeige euch keinen code aber zumindes den Output solltet ihr mal gesehen haben</li>
<li>Als erstes den Decission Tree</li>
<li>Und dann gescheit formatiert als Satz</li>
<li>Richtigen Code wird später im Notebook vorgestellt</li>
</ul>
<style type="text/css">
span.MJX_Assistive_MathML {
position:absolute!important;
clip: rect(1px, 1px, 1px, 1px);
padding: 1px 0 0 0!important;
border: 0!important;
height: 1px!important;
width: 1px!important;
overflow: hidden!important;
display:block!important;
}</style></aside>
</section>
<section id="rbe-berechnungskosten" class="slide level2">
<h2>RBE Berechnungskosten</h2>
<p>RBE skaliert:</p>
<div>
<ul>
<li>N = Anzahl der Trainingsbeispiele</li>
<li>D = Anzahl der Merkmale (Features)</li>
</ul>
</div>
<p>Komplexität in BigO Notation: <strong>O(N × D × log N)</strong></p>
<aside class="notes">
<p>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</p>
<p><strong>Große Datensätze generell Machbar</strong> - Dürfen nur nicht zu viele Features haben, das erhöhe stark den Rechenaufwand</p>
<style type="text/css">
span.MJX_Assistive_MathML {
position:absolute!important;
clip: rect(1px, 1px, 1px, 1px);
padding: 1px 0 0 0!important;
border: 0!important;
height: 1px!important;
width: 1px!important;
overflow: hidden!important;
display:block!important;
}</style></aside>
</section>
<section id="jetzt-wird-es-praktisch" class="slide level2 center">
<h2>Jetzt wird es Praktisch</h2>
</section>
<aside class="notes">
<p>Jetzt das Notebook zeigen und konkret durchgehen</p>
<style type="text/css">
span.MJX_Assistive_MathML {
position:absolute!important;
clip: rect(1px, 1px, 1px, 1px);
padding: 1px 0 0 0!important;
border: 0!important;
height: 1px!important;
width: 1px!important;
overflow: hidden!important;
display:block!important;
}</style></aside>
<section id="vergleich-der-xai-verfahren" class="slide level2">
<h2>Vergleich der XAI-Verfahren</h2>
<ul>
<li class="fragment">Interpretierbarkeit</li>
<li class="fragment">Modellunabhängigkeit</li>
<li class="fragment">Genauigkeit / Konsistenz</li>
<li class="fragment">Anwendungsszenarien</li>
</ul>
</section>
<section id="lime-interpretierbarkeit" class="slide level2">
<h2>LIME Interpretierbarkeit</h2>
<div>
<ul>
<li>Leicht verständlich, welche Features relevant waren</li>
<li>Auch verständlich Laien</li>
</ul>
</div>
<div class="quarto-figure quarto-figure-center">
<figure>
<p><img data-src="img/LIME_Erklärung.png" class="quarto-figure quarto-figure-center" height="400"></p>
</figure>
</div>
<aside class="notes">
<p><strong>Rote Balken</strong> - Features die die Wahrscheinlichkeit von &gt;=50k verringern</p>
<p><strong>Grüne Balken</strong> - Features die die Wahrscheinlichkeit von &gt;=50k erhöhen</p>
<style type="text/css">
span.MJX_Assistive_MathML {
position:absolute!important;
clip: rect(1px, 1px, 1px, 1px);
padding: 1px 0 0 0!important;
border: 0!important;
height: 1px!important;
width: 1px!important;
overflow: hidden!important;
display:block!important;
}</style></aside>
</section>
<section id="lime-modellabhängigkeit" class="slide level2">
<h2>LIME Modellabhängigkeit</h2>
<div>
<ul>
<li>Ist Model-Agnostic</li>
<li>Behandelt jedes Modell als Blackbox</li>
</ul>
</div>
<aside class="notes">
<p>Wie in LIME schon beschrieben</p>
<p>L: local I: Interpretable M: Model Agnostic</p>
<style type="text/css">
span.MJX_Assistive_MathML {
position:absolute!important;
clip: rect(1px, 1px, 1px, 1px);
padding: 1px 0 0 0!important;
border: 0!important;
height: 1px!important;
width: 1px!important;
overflow: hidden!important;
display:block!important;
}</style></aside>
</section>
<section id="lime-konsistenz" class="slide level2">
<h2>LIME Konsistenz</h2>
<div>
<ul>
<li>Die Ergebnisse sind instabil</li>
<li>Können aber stark variieren da es auf zufälligen Abänderungen der Daten basiert</li>
</ul>
</div>
<div class="quarto-figure quarto-figure-center">
<figure>
<p><img data-src="img/Lime_Varianz_Features.png" class="quarto-figure quarto-figure-center" height="400"></p>
</figure>
</div>
<aside class="notes">
<p><strong>Wir haben 10 Erklärungen laufen lassen</strong></p>
<ul>
<li>Dann immer die Feature Wichtigkeit verglichen</li>
<li>Geringe Varianz: Ähnliche Ergebnisse</li>
<li>Hohe Varianz: Unterschiedliche Ergebnisse</li>
</ul>
<p>=&gt; Wir haben hier die Top 5 mit der größten Varianz =&gt; Immernoch gering</p>
<style type="text/css">
span.MJX_Assistive_MathML {
position:absolute!important;
clip: rect(1px, 1px, 1px, 1px);
padding: 1px 0 0 0!important;
border: 0!important;
height: 1px!important;
width: 1px!important;
overflow: hidden!important;
display:block!important;
}</style></aside>
</section>
<section id="lime-anwendungsszenarien-3" class="slide level2">
<h2>LIME Anwendungsszenarien</h2>
<div>
<ul>
<li>Medizinische Diagnostik und Gesundheitswesen</li>
<li>Finanzwesen und Kreditvergabe</li>
<li>Personalabteilung und Recruiting</li>
</ul>
</div>
<aside class="notes">
<p><strong>Verständnis einer einzelnen Vorhersage</strong></p>
<style type="text/css">
span.MJX_Assistive_MathML {
position:absolute!important;
clip: rect(1px, 1px, 1px, 1px);
padding: 1px 0 0 0!important;
border: 0!important;
height: 1px!important;
width: 1px!important;
overflow: hidden!important;
display:block!important;
}</style></aside>
</section>
<section id="rbe-interpretierbarkeit" class="slide level2">
<h2>RBE Interpretierbarkeit</h2>
<div>
<ul>
<li>Regeln Leicht Nachvollziehbar: Wenn-Dann-Struktur von Regeln</li>
<li>Potenziell komplex bei vielen Regeln</li>
<li>Auch für Laien Verständlich</li>
</ul>
</div>
<aside class="notes">
<ol type="1">
<li><strong>Wenn-Dann-Struktur ist leicht zu verstehen, wie man auf Ergebnis kommt</strong></li>
<li><strong>Komplex / unübersichtlich wenn man viele Regeln hat</strong></li>
<li><strong>Regeln verstehen auch Lian</strong></li>
</ol>
<style type="text/css">
span.MJX_Assistive_MathML {
position:absolute!important;
clip: rect(1px, 1px, 1px, 1px);
padding: 1px 0 0 0!important;
border: 0!important;
height: 1px!important;
width: 1px!important;
overflow: hidden!important;
display:block!important;
}</style></aside>
</section>
<section id="rbe-interpretierbarkeit-1" class="slide level2">
<h2>RBE Interpretierbarkeit</h2>
<p>Beispiel einer Regel: Vorhersagt &gt; 50K</p>
<div>
<ul>
<li><em>WENN</em></li>
<li><em>capital.gain ≤ 7073.50 UND</em></li>
<li><em>education.num ≤ 12.50 UND</em></li>
<li><em>capital.loss &gt; 2218.50 UND</em></li>
<li><em>DANN Einkommen &gt; 50K</em></li>
</ul>
</div>
<aside class="notes">
<p><strong>Beispielregel für &gt; 50K Einkommen</strong></p>
<style type="text/css">
span.MJX_Assistive_MathML {
position:absolute!important;
clip: rect(1px, 1px, 1px, 1px);
padding: 1px 0 0 0!important;
border: 0!important;
height: 1px!important;
width: 1px!important;
overflow: hidden!important;
display:block!important;
}</style></aside>
</section>
<section id="rbe-modellabhängigkeit" class="slide level2">
<h2>RBE Modellabhängigkeit</h2>
<div>
<ul>
<li><strong>Inhärent regelbasierte Modelle</strong> (modellabhängig)</li>
<li><strong>Post-hoc regelbasierte Erklärungen</strong> (modellunabhängig)</li>
</ul>
</div>
<p>Wir verwenden einen: <strong>Surrogate-Entscheidungsbaum</strong></p>
<div>
<ul>
<li>Dieser ist modellunabhängig</li>
</ul>
</div>
<aside class="notes">
<p><strong>Inhärent regelbasierte Modelle</strong> - Diese Modelle sind ihre eigenen Erklärungen - die Regeln sind das Modell.</p>
<p><strong>Post-hoc regelbasierte Erklärungen</strong> - Diese Ansätze können prinzipiell auf jedes Modell angewendet werden und sind daher modellunabhängig.</p>
<p><strong>Surrogate-Entscheidungsbaum</strong></p>
<ul>
<li><strong>Post-hoc (Modellunabhängig)</strong></li>
<li><strong>Bekommt Trainingsdaten und Random Forest Vorhersagen</strong></li>
</ul>
<p>Die extrahierten Regeln bieten eine <strong>globale Erklärung des Random Forest-Verhaltens</strong>.</p>
<style type="text/css">
span.MJX_Assistive_MathML {
position:absolute!important;
clip: rect(1px, 1px, 1px, 1px);
padding: 1px 0 0 0!important;
border: 0!important;
height: 1px!important;
width: 1px!important;
overflow: hidden!important;
display:block!important;
}</style></aside>
</section>
<section id="rbe-genauigkeit-konsistenz" class="slide level2">
<h2>RBE Genauigkeit &amp; Konsistenz</h2>
<div>
<ul>
<li>Genauigkeit: Wie nahe an Ergebnis von RF</li>
<li>Konsistenz: Schwankungen der Genauigkeit</li>
</ul>
</div>
<div class="quarto-figure quarto-figure-center">
<figure>
<p><img data-src="img/surrogate_accuracy.png" class="quarto-figure quarto-figure-center" height="400"></p>
</figure>
</div>
<aside class="notes">
<p>Vorgehen:</p>
<ul>
<li><strong>Surrogate-Modell trainiert, sodass es RF-Vorhersagen nachahmt</strong></li>
<li><strong>Vorhersage von Surrogate-Modell mit RF vergleichen</strong></li>
<li>Berechnen die oft Vorhersagen gleich ist in %</li>
</ul>
<p>Das ganze mit mehreren Baumtiefen</p>
<ul>
<li>So finden wir die <strong>optimale Baumtiefe</strong></li>
</ul>
<p>=&gt; Man sieht <strong>sehr hohe Genauigkeit</strong></p>
<style type="text/css">
span.MJX_Assistive_MathML {
position:absolute!important;
clip: rect(1px, 1px, 1px, 1px);
padding: 1px 0 0 0!important;
border: 0!important;
height: 1px!important;
width: 1px!important;
overflow: hidden!important;
display:block!important;
}</style></aside>
</section>
<section id="rbe-anwendungsszenarien-3" class="slide level2">
<h2>RBE Anwendungsszenarien</h2>
<div>
<ul>
<li>Medizinische Diagnostik und Gesundheitswesen</li>
<li>Finanzwesen und Kreditvergabe</li>
<li>Versicherungswesen</li>
</ul>
</div>
<aside class="notes">
<p><strong>Globlaler Überblick von Entscheidungslogik</strong></p>
<p><strong>Wieso Entscheidet das Modell Allgemein</strong></p>
<p>Medizin / Gesundheitswesen</p>
<ul>
<li><p><strong>Beispiel Schlaganfall</strong></p></li>
<li><p>=&gt; Wir wollen wissen, warum er allgemein zur Diagnose kommt</p></li>
</ul>
<style type="text/css">
span.MJX_Assistive_MathML {
position:absolute!important;
clip: rect(1px, 1px, 1px, 1px);
padding: 1px 0 0 0!important;
border: 0!important;
height: 1px!important;
width: 1px!important;
overflow: hidden!important;
display:block!important;
}</style></aside>
</section>
<section id="vielen-dank-für-eure-aufmerksamkeit" class="slide level2 center">
<h2>Vielen Dank für Eure Aufmerksamkeit!</h2>
</section>
</section>
</div>
<div class="quarto-auto-generated-content" style="display: none;">
<div class="footer footer-default">
<p>Mario, Jan, Nick, Andi, Sebastian, Paul | TINF22B3 | Explainable AI</p>
</div>
</div></div>
<script>window.backupDefine = window.define; window.define = undefined;</script>
<script src="slides_files/libs/revealjs/dist/reveal.js"></script>
<!-- reveal.js plugins -->
<script src="slides_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.js"></script>
<script src="slides_files/libs/revealjs/plugin/pdf-export/pdfexport.js"></script>
<script src="slides_files/libs/revealjs/plugin/reveal-menu/menu.js"></script>
<script src="slides_files/libs/revealjs/plugin/reveal-menu/quarto-menu.js"></script>
<script src="slides_files/libs/revealjs/plugin/quarto-support/support.js"></script>
<script src="slides_files/libs/revealjs/plugin/notes/notes.js"></script>
<script src="slides_files/libs/revealjs/plugin/search/search.js"></script>
<script src="slides_files/libs/revealjs/plugin/zoom/zoom.js"></script>
<script src="slides_files/libs/revealjs/plugin/math/math.js"></script>
<script>window.define = window.backupDefine; window.backupDefine = undefined;</script>
<script>
// Full list of configuration options available at:
// https://revealjs.com/config/
Reveal.initialize({
'controlsAuto': true,
'previewLinksAuto': false,
'pdfSeparateFragments': false,
'autoAnimateEasing': "ease",
'autoAnimateDuration': 1,
'autoAnimateUnmatched': true,
'jumpToSlide': true,
'menu': {"side":"left","useTextContentForMissingTitles":true,"markers":false,"loadIcons":false,"custom":[{"title":"Tools","icon":"<i class=\"fas fa-gear\"></i>","content":"<ul class=\"slide-menu-items\">\n<li class=\"slide-tool-item active\" data-item=\"0\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.fullscreen(event)\"><kbd>f</kbd> Fullscreen</a></li>\n<li class=\"slide-tool-item\" data-item=\"1\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.speakerMode(event)\"><kbd>s</kbd> Speaker View</a></li>\n<li class=\"slide-tool-item\" data-item=\"2\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.overview(event)\"><kbd>o</kbd> Slide Overview</a></li>\n<li class=\"slide-tool-item\" data-item=\"3\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.togglePdfExport(event)\"><kbd>e</kbd> PDF Export Mode</a></li>\n<li class=\"slide-tool-item\" data-item=\"4\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.toggleScrollView(event)\"><kbd>r</kbd> Scroll View Mode</a></li>\n<li class=\"slide-tool-item\" data-item=\"5\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.keyboardHelp(event)\"><kbd>?</kbd> Keyboard Help</a></li>\n</ul>"}],"openButton":true},
'smaller': false,
// Display controls in the bottom right corner
controls: false,
// Help the user learn the controls by providing hints, for example by
// bouncing the down arrow when they first encounter a vertical slide
controlsTutorial: false,
// Determines where controls appear, "edges" or "bottom-right"
controlsLayout: 'edges',
// Visibility rule for backwards navigation arrows; "faded", "hidden"
// or "visible"
controlsBackArrows: 'faded',
// Display a presentation progress bar
progress: true,
// Display the page number of the current slide
slideNumber: 'c',
// 'all', 'print', or 'speaker'
showSlideNumber: 'all',
// Add the current slide number to the URL hash so that reloading the
// page/copying the URL will return you to the same slide
hash: true,
// Start with 1 for the hash rather than 0
hashOneBasedIndex: false,
// Flags if we should monitor the hash and change slides accordingly
respondToHashChanges: true,
// Push each slide change to the browser history
history: true,
// Enable keyboard shortcuts for navigation
keyboard: true,
// Enable the slide overview mode
overview: true,
// Disables the default reveal.js slide layout (scaling and centering)
// so that you can use custom CSS layout
disableLayout: false,
// Vertical centering of slides
center: false,
// Enables touch navigation on devices with touch input
touch: true,
// Loop the presentation
loop: false,
// Change the presentation direction to be RTL
rtl: false,
// see https://revealjs.com/vertical-slides/#navigation-mode
navigationMode: 'linear',
// Randomizes the order of slides each time the presentation loads
shuffle: false,
// Turns fragments on and off globally
fragments: true,
// Flags whether to include the current fragment in the URL,
// so that reloading brings you to the same fragment position
fragmentInURL: false,
// Flags if the presentation is running in an embedded mode,
// i.e. contained within a limited portion of the screen
embedded: false,
// Flags if we should show a help overlay when the questionmark
// key is pressed
help: true,
// Flags if it should be possible to pause the presentation (blackout)
pause: true,
// Flags if speaker notes should be visible to all viewers
showNotes: false,
// Global override for autoplaying embedded media (null/true/false)
autoPlayMedia: null,
// Global override for preloading lazy-loaded iframes (null/true/false)
preloadIframes: null,
// Number of milliseconds between automatically proceeding to the
// next slide, disabled when set to 0, this value can be overwritten
// by using a data-autoslide attribute on your slides
autoSlide: 0,
// Stop auto-sliding after user input
autoSlideStoppable: true,
// Use this method for navigation when auto-sliding
autoSlideMethod: null,
// Specify the average time in seconds that you think you will spend
// presenting each slide. This is used to show a pacing timer in the
// speaker view
defaultTiming: null,
// Enable slide navigation via mouse wheel
mouseWheel: false,
// The display mode that will be used to show slides
display: 'block',
// Hide cursor if inactive
hideInactiveCursor: true,
// Time before the cursor is hidden (in ms)
hideCursorTime: 5000,
// Opens links in an iframe preview overlay
previewLinks: false,
// Transition style (none/fade/slide/convex/concave/zoom)
transition: 'none',
// Transition speed (default/fast/slow)
transitionSpeed: 'default',
// Transition style for full page slide backgrounds
// (none/fade/slide/convex/concave/zoom)
backgroundTransition: 'none',
// Number of slides away from the current that are visible
viewDistance: 3,
// Number of slides away from the current that are visible on mobile
// devices. It is advisable to set this to a lower number than
// viewDistance in order to save resources.
mobileViewDistance: 2,
// The "normal" size of the presentation, aspect ratio will be preserved
// when the presentation is scaled to fit different resolutions. Can be
// specified using percentage units.
width: 1050,
height: 700,
// Factor of the display size that should remain empty around the content
margin: 0.1,
math: {
mathjax: 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.9/MathJax.js',
config: 'TeX-AMS_HTML-full',
tex2jax: {
inlineMath: [['\\(','\\)']],
displayMath: [['\\[','\\]']],
balanceBraces: true,
processEscapes: false,
processRefs: true,
processEnvironments: true,
preview: 'TeX',
skipTags: ['script','noscript','style','textarea','pre','code'],
ignoreClass: 'tex2jax_ignore',
processClass: 'tex2jax_process'
},
},
// reveal.js plugins
plugins: [QuartoLineHighlight, PdfExport, RevealMenu, QuartoSupport,
RevealMath,
RevealNotes,
RevealSearch,
RevealZoom
]
});
</script>
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const toggleBodyColorMode = (bsSheetEl) => {
const mode = bsSheetEl.getAttribute("data-mode");
const bodyEl = window.document.querySelector("body");
if (mode === "dark") {
bodyEl.classList.add("quarto-dark");
bodyEl.classList.remove("quarto-light");
} else {
bodyEl.classList.add("quarto-light");
bodyEl.classList.remove("quarto-dark");
}
}
const toggleBodyColorPrimary = () => {
const bsSheetEl = window.document.querySelector("link#quarto-bootstrap");
if (bsSheetEl) {
toggleBodyColorMode(bsSheetEl);
}
}
toggleBodyColorPrimary();
const tabsets = window.document.querySelectorAll(".panel-tabset-tabby")
tabsets.forEach(function(tabset) {
const tabby = new Tabby('#' + tabset.id);
});
const isCodeAnnotation = (el) => {
for (const clz of el.classList) {
if (clz.startsWith('code-annotation-')) {
return true;
}
}
return false;
}
const onCopySuccess = function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copied!");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copied!");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
}
const getTextToCopy = function(trigger) {
const codeEl = trigger.previousElementSibling.cloneNode(true);
for (const childEl of codeEl.children) {
if (isCodeAnnotation(childEl)) {
childEl.remove();
}
}
return codeEl.innerText;
}
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
text: getTextToCopy
});
clipboard.on('success', onCopySuccess);
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
text: getTextToCopy,
container: window.document.getElementById('quarto-embedded-source-code-modal')
});
clipboardModal.on('success', onCopySuccess);
}
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
var mailtoRegex = new RegExp(/^mailto:/);
var filterRegex = new RegExp('/' + window.location.host + '/');
var isInternal = (href) => {
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
}
// Inspect non-navigation links and adorn them if external
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
for (var i=0; i<links.length; i++) {
const link = links[i];
if (!isInternal(link.href)) {
// undo the damage that might have been done by quarto-nav.js in the case of
// links that we want to consider external
if (link.dataset.originalHref !== undefined) {
link.href = link.dataset.originalHref;
}
}
}
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
const config = {
allowHTML: true,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.closest('section.slide') || el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'light-border',
placement: 'bottom-start',
};
if (contentFn) {
config.content = contentFn;
}
if (onTriggerFn) {
config.onTrigger = onTriggerFn;
}
if (onUntriggerFn) {
config.onUntrigger = onUntriggerFn;
}
config['offset'] = [0,0];
config['maxWidth'] = 700;
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
if (note) {
return note.innerHTML;
} else {
return "";
}
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</body></html>