diff --git a/README.rst b/README.rst index e7a6c18..4b7838d 100644 --- a/README.rst +++ b/README.rst @@ -21,7 +21,7 @@ Installation .. code-block:: console - $ git clone git@github.com:cusyio/neural-network-tutorial.git + $ git clone git@github.com:AInvone/Intro-in-KI-Schulung.git #. Installieren von Python-Paketen: diff --git a/docs/conf.py b/docs/conf.py index afebda0..cca9fb2 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -29,9 +29,9 @@ # The master toctree document. master_doc = "index" -project = "Neural Network Tutorial" +project = "KI Schulung" author = "Min Ye, Veit Schiele" -copyright = f"2024, {author}" +copyright = f"2025, {author}" # The full version, including alpha/beta/rc tags release = re.sub("^v", "", os.popen("git describe --abbrev=0").read().strip()) @@ -53,6 +53,7 @@ "sphinxext.opengraph", "sphinx_copybutton", "sphinx_inline_tabs", + "sphinx.ext.mathjax", # to allow mathematical formular ] # Add any paths that contain templates here, relative to this directory. @@ -145,6 +146,8 @@ intersphinx_mapping = { "python": ("https://docs.python.org/3", None), + "Python4DataScience": ("https://www.python4data.science/de/latest", None), + "PyViz": ("https://pyviz-tutorial.readthedocs.io/de/latest", None), } diff --git a/docs/day2.rst b/docs/day2.rst new file mode 100644 index 0000000..6d9f763 --- /dev/null +++ b/docs/day2.rst @@ -0,0 +1,230 @@ +Tag 2: Vertiefung: Neuronale Netze, Deep Learning, Use Case Fallgruben +============================== + +**Recap Tag 1** + +- Zusammenfassung der Konzepte aus Tag 1: Überwachtes, unüberwachtes und bestärkendes Lernen. + +- Wichtige Begriffe: **Modell, Trainingsdaten, Testdaten, Overfitting, Regularisierung, Optimierung.** + +- Diskussion der zentralen Herausforderungen im ML: **Bias, Datenqualität, Modellinterpretierbarkeit.** + +- Quiz oder interaktive Übung zur Wiederholung. + + +.. list-table:: Schulungsstruktur für Tag 2 + :header-rows: 1 + + * - Kapitel + - Inhalte + * - Recap der wichtigsten Themen + - Wiederholung der ML-Konzepte, Diskussion, Quiz + * - Theorie: Neuronale Netze und Deep Learning + - Aufbau, Backpropagation, Aktivierungsfunktionen + * - Praxis: Bildklassifikation mit CNNs + - Implementierung mit TensorFlow/Keras + * - Diskussion: Use Case Fallgruben + - Churn Prediction, Herausforderungen, Modellwahl + + +**Kapitel 9: Neuronale Netze und Deep Learning – Theorie** +---------------------------------------------------------- +**Grundlagen:** + +Was sind künstliche neuronale Netze? Wie unterscheiden sie sich von klassischen ML-Modellen? + +- Künstliche neuronale Netze bestehen aus **Schichten von Neuronen**, die durch gewichtete Verbindungen miteinander verbunden sind. + +- Aufbau eines neuronalen Netzes: **Eingabeschicht, versteckte Schichten, Aktivierungsfunktionen, Ausgangsschicht.** + +- Jedes Neuron führt eine Berechnung basierend auf einer **Aktivierungsfunktion** durch und gibt das Ergebnis an die nächste Schicht weiter. + +**Forwardpropagation (Vorwärtsdurchlauf):** + +1. Die Eingabedaten werden in das Netzwerk eingespeist. + +2. In jeder Schicht wird die gewichtete Summe der Eingänge berechnet: + + .. math:: + z = w_1 x_1 + w_2 x_2 + ... + w_n x_n + b + +3. Diese gewichtete Summe wird durch eine **Aktivierungsfunktion** transformiert (z. B. ReLU, Sigmoid, Softmax), um **nicht-lineare Abhängigkeiten** abzubilden. + +4. Die Ausgabe der einen Schicht wird als Eingabe an die nächste Schicht weitergegeben, bis die letzte Schicht erreicht ist. + +5. Am Ende der Forward Propagation wird die Loss Function berechnet. + + +**Loss Functions (Verlustfunktionen) und ihre Rolle:** + +- Eine **Loss Function** misst die Differenz zwischen der Vorhersage des Modells und dem tatsächlichen Wert. + +- Sie gibt an, wie gut oder schlecht das Modell arbeitet. + +- Wird während der Backpropagation genutzt, um die Gewichte des Netzwerks zu aktualisieren. + +**Typische Loss Functions:** + +1. **Mean Squared Error (MSE)** – Wird für **Regressionsprobleme** verwendet: + + .. math:: + MSE = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 + + - Bestraft größere Fehler überproportional. + + - Gut für kontinuierliche Werte wie Preisprognosen. + +2. **Cross-Entropy Loss** – Wird für **Klassifikationsprobleme** verwendet: + + .. math:: + L = -\sum y_i \log(\hat{y}_i) + + - Erhöht die Strafe, wenn das Modell sehr sicher, aber falsch ist. + + - Wird z. B. bei **Softmax-Klassifikationen** genutzt. + +**Zusammenhang zwischen Loss Function und Gradient Descent:** + +- Gradient Descent ist der Algorithmus, der die Gewichte des Modells so anpasst, dass die Loss Function minimiert wird. + +- Die Ableitung der Loss Function bestimmt die Richtung, in die die Gewichte aktualisiert werden. + +- **Formel für das Gewicht-Update:** + + .. math:: + w := w - \alpha \frac{\partial L}{\partial w} + + wobei \( \alpha \) die Lernrate ist. + +- Dies passiert während der **Backwardpropagation (Rückwärtsdurchlauf):** + +**Backwardpropagation (Rückwärtsdurchlauf):** + +1. Der Fehler des Netzwerks wird berechnet, indem die Differenz zwischen der vorhergesagten und der tatsächlichen Ausgabe bestimmt wird, d.h. indem die Loss Function evaluiert wird. + +2. Die Fehler werden von der letzten Schicht zurück durch das Netzwerk propagiert, um **die Gewichte der Neuronen zu aktualisieren**. + +3. Die Berechnung erfolgt mit Hilfe der **Kettenregel der Ableitungen**, um die Gradienten für jedes Gewicht zu bestimmen: + +.. .. math:: +.. rac{\partial L}{\partial w} = rac{\partial L}{\partial y} \cdot rac{\partial y}{\partial z} \cdot rac{\partial z}{\partial w} + +4. Durch die Anwendung des **Gradientenabstiegsverfahrens (Gradient Descent)** werden die Gewichte so angepasst, dass der Gesamtfehler des Netzwerks iterativ minimiert und somit das Modell optimiert wird. + +**Optimierungstechniken:** + +- **Stochastischer Gradientenabstieg (SGD):** Berechnet Gradienten basierend auf einer zufälligen Stichprobe aus den Trainingsdaten. + +- **Adam-Optimizer:** Eine erweiterte Form des SGD, die adaptives Lernen ermöglicht und schneller konvergiert. + +- **Momentum-Methoden:** Nutzen vergangene Gradienteninformationen, um stabilere Updates durchzuführen. + +**Wichtige Aktivierungsfunktionen:** + +- **ReLU (Rectified Linear Unit):** Häufig in CNNs verwendet, eliminiert negative Werte. + +- **Sigmoid:** Wandelt Werte in einen Bereich zwischen 0 und 1 um, nützlich für Wahrscheinlichkeitsprognosen. + +- **Softmax:** Wird in Klassifikationsproblemen für mehr als zwei Klassen genutzt. + + +**Fortgeschrittene Deep-Learning-Techniken:** + +- Convolutional Neural Networks (CNNs) für **Bildverarbeitung**. + +- Recurrent Neural Networks (RNNs) für **Sequenz- und Textverarbeitung**. + +- Transformer-Modelle für **NLP (z. B. BERT, GPT).** + + +**Kapitel 10: Praxisbeispiel – Bildklassifikation mit CNNs** +------------------------------------------------------------ + +**Ziel:** Einführung in Convolutional Neural Networks mit TensorFlow/Keras anhand eines Bildklassifikationsproblems. + +.. note: + Code Beispiel auch mit pytorch! als "Gegenbeispiel" zu tensorflows + + +**Code-Beispiel: Klassifikation des MNIST-Datensatzes (Handgeschriebene Ziffern)** + +.. code-block:: python + + import tensorflow as tf + from tensorflow.keras import layers, models + from tensorflow.keras.datasets import mnist + import matplotlib.pyplot as plt + + # Daten laden + (x_train, y_train), (x_test, y_test) = mnist.load_data() + x_train, x_test = x_train / 255.0, x_test / 255.0 # Normalisierung + x_train = x_train[..., tf.newaxis] # Dimension erweitern + x_test = x_test[..., tf.newaxis] + + # Modell definieren + model = models.Sequential([ + layers.Conv2D(32, (3,3), activation='relu', input_shape=(28,28,1)), + layers.MaxPooling2D((2,2)), + layers.Conv2D(64, (3,3), activation='relu'), + layers.MaxPooling2D((2,2)), + layers.Conv2D(64, (3,3), activation='relu'), + layers.Flatten(), + layers.Dense(64, activation='relu'), + layers.Dense(10, activation='softmax') + ]) + + # Modell kompilieren + model.compile(optimizer='adam', + loss='sparse_categorical_crossentropy', + metrics=['accuracy']) + + # Training + model.fit(x_train, y_train, epochs=5, validation_data=(x_test, y_test)) + + # Evaluation + test_loss, test_acc = model.evaluate(x_test, y_test) + print(f'Testgenauigkeit: {test_acc}') + + # Beispielhafte Vorhersage + predictions = model.predict(x_test) + plt.imshow(x_test[0].reshape(28, 28), cmap='gray') + plt.title(f'Vorhergesagte Klasse: {predictions[0].argmax()}') + plt.show() + +**Kapitel 11: Use Case Fallgruben – Diskussion zur Kundenabwanderung (Customer Churn Prediction)** +----------------------------------------------------------------------------------------- + +**Ziel:** + +- Erarbeite eigenständig, wie du ein ML-Problem formulieren und lösen würdest. + +- Fokus liegt auf den Herausforderungen in realen Projekten. + +**Problemstellung:** + +Ein Telekommunikationsunternehmen möchte vorhersagen, ob ein Kunde abwandern wird oder nicht. Die Lernenden sollen erarbeiten: + +1. **Wie definiert man Kundenabwanderung?** + +- z.B. Vertragskunde: kündigt in den nächsten drei Monaten seinen Vertrag +- z.B. Prepaidkunde: wird innerhalb der nächsten drei Monate dessen SIM-Karte nutzen und innerhalb der nächsten 6 Monate aufladen + +2. **Welche Daten sind relevant?** + +2. **Wie sollten Features gestaltet werden?** (z. B. Anrufhäufigkeit, Vertragslaufzeit, Reklamationen?) + +3. **Welche ML-Methoden eignen sich?** (Klassifikation, Feature Engineering) + +4. **Wie validiert man das Modell?** + +5. **Welche Herausforderungen können auftreten?** + +**Diskussionsfragen:** + +- Welche Probleme könnten bei der Modellinterpretation auftreten? + +- Wie könnte man ethische Fragestellungen (z. B. Diskriminierung) berücksichtigen? + +- Welche Maßnahmen könnte ein Unternehmen basierend auf den Vorhersagen ergreifen? + + diff --git a/docs/day3.rst b/docs/day3.rst new file mode 100644 index 0000000..3098546 --- /dev/null +++ b/docs/day3.rst @@ -0,0 +1,132 @@ +Tag 3: Reinforcement Learning (RL) +======================= + +**Recap der wichtigsten Themen des zweiten Tages** + +- Wiederholung der zentralen Konzepte von **Neuronalen Netzen und Deep Learning** + +- Verständnis der **Forwardpropagation und Backwardpropagation** + +- **Loss Functions und ihre Rolle in Gradient Descent** + +- Bedeutung von **Optimierungsverfahren** wie Adam und SGD + +- Diskussion über Anwendungen von **CNNs für Bildklassifikation** + +- Offene Fragen und Klarstellungen + + +.. list-table:: Schulungsstruktur für KI-Grundlagen: Tag 3 + :header-rows: 1 + + * - Kapitel + - Inhalte + * - Recap der wichtigsten Themen + - Wiederholung von Deep Learning und CNNs + * - Einführung in Reinforcement Learning + - Konzepte, Agent, Umgebung, Belohnungen + * - Markov-Entscheidungsprozesse + - Definition, Zustände, Aktionen, Wertfunktionen + * - Wertbasierte Methoden – Q-Learning + - Theorie, Q-Tabelle, Deep Q-Networks (DQN) + * - Praxis: Q-Learning in OpenAI Gym + - Implementierung mit Python + + +**Definition:** + +- Reinforcement Learning (RL) ist eine Form des **selbstlernenden maschinellen Lernens**, bei dem ein Agent durch **Belohnung und Bestrafung** lernt. + +- Ziel ist es, eine **Strategie (Policy)** zu erlernen, die langfristig die **höchste kumulierte Belohnung** maximiert. + +- Anders als beim überwachten Lernen gibt es **keine direkten Labels**, sondern nur **Rückmeldungen** basierend auf den getroffenen Entscheidungen. + +**Grundprinzipien:** + +1. **Agent:** Der lernende KI-Teilnehmer. + +2. **Umgebung (Environment):** Die Welt, in der der Agent agiert. + +3. **Zustand (State):** Der aktuelle Status der Umgebung. + +4. **Aktion (Action):** Die Entscheidung, die der Agent in einem Zustand trifft. + +5. **Belohnung (Reward):** Signal, das die Qualität einer Aktion beschreibt. + +6. **Policy (Strategie):** Funktion, die bestimmt, welche Aktion in welchem Zustand gewählt wird. + +7. **Wertfunktion (Value Function):** Erwartete zukünftige Belohnung eines Zustands. + +--- + +**Kapitel 14: Markov-Entscheidungsprozesse (MDP)** +- RL basiert auf **Markov-Entscheidungsprozessen (MDP)**, die aus folgendem bestehen: + + 1. **S** – Menge aller möglichen Zustände. + + 2. **A** – Menge aller möglichen Aktionen. + + 3. **P(s' | s, a)** – Übergangswahrscheinlichkeit von Zustand \(s\) zu \(s'\) nach Aktion \(a\). + + 4. **R(s, a)** – Belohnung für das Ausführen von Aktion \(a\) in Zustand \(s\). + + 5. **\(\gamma\) (Discount Factor)** – Faktor für zukünftige Belohnungen (zwischen 0 und 1). + +- Das Ziel ist, eine **optimale Policy** zu finden, die die **kumulierte langfristige Belohnung maximiert**. + +--- + +**Kapitel 15: Wertbasierte Methoden – Q-Learning** + +**Q-Learning Algorithmus:** + +- Speichert eine **Q-Tabelle**, die Werte für jede **(Zustand, Aktion)-Kombination** enthält. + +- Aktualisiert sich mit der **Bellman-Gleichung:** + + .. math:: + Q(s,a) = Q(s,a) + \alpha (R + \gamma \max Q(s',a') - Q(s,a)) + +- Verwendet **Exploration vs. Exploitation:** + + - **Exploration:** Zufällige Aktionen testen, um neue Strategien zu entdecken. + + - **Exploitation:** Beste bekannte Aktion nutzen, um Belohnung zu maximieren. + +**Deep Q-Networks (DQN):** + +- Ersetzt die **Q-Tabelle durch ein neuronales Netz**, das **Q-Werte approximiert**. + +- Verwendet Replay Buffers zur Speicherung vergangener Erfahrungen. + +- Führt **Experience Replay** aus, um stabileres Lernen zu ermöglichen. + +**Code-Beispiel: Einfaches Q-Learning für eine OpenAI Gym-Umgebung** + +.. code-block:: python + + import numpy as np + import gym + + # OpenAI Gym Umgebung + env = gym.make("FrozenLake-v1", is_slippery=False) + Q = np.zeros([env.observation_space.n, env.action_space.n]) + alpha = 0.1 # Lernrate + gamma = 0.99 # Discount-Faktor + epsilon = 0.1 # Zufällige Exploration + + for episode in range(1000): + state = env.reset()[0] + done = False + while not done: + if np.random.rand() < epsilon: + action = env.action_space.sample() + else: + action = np.argmax(Q[state]) + + next_state, reward, done, _, _ = env.step(action) + Q[state, action] += alpha * (reward + gamma * np.max(Q[next_state]) - Q[state, action]) + state = next_state + + print("Q-Tabelle:") + print(Q) diff --git a/docs/day4.rst b/docs/day4.rst new file mode 100644 index 0000000..7377c33 --- /dev/null +++ b/docs/day4.rst @@ -0,0 +1,36 @@ +Tag 4: Generative KI +======================= + +Das Neural Network Tutorial möchte euch einen praxisnahen Einstieg in neuronale +Netze mit Python ermöglichen. + +Das Neural Network Tutorial ist Teil einer Reihe von Tutorials zur Datenanalyse +und -visualisierung: + +* `Python Basics `_ +* `Jupyter-Tutorial `_ +* `Python für Data Science `_ +* `PyViz-Tutorial `_ +* `cusy Design-System: Datenvisualisierung + `_ + +Alle Tutorials dienen als Seminarunterlagen für unsere aufeinander abgestimmten +Trainings: + +Abschluss +========= + +**Ethische Fragestellungen in der KI** + +Mit der rasanten Entwicklung der KI gehen auch bedeutende ethische Fragen einher: + +- **Bias und Diskriminierung:** KI-Modelle können bestehende Vorurteile aus Trainingsdaten übernehmen. + +- **Arbeitsplatzverdrängung:** Automatisierung kann menschliche Arbeitsplätze gefährden. + +- **Transparenz und Erklärbarkeit:** Viele KI-Modelle, insbesondere Deep Learning, sind schwer zu interpretieren. + +- **Verantwortung und Haftung:** Wer ist verantwortlich, wenn eine KI fehlerhafte oder schädliche Entscheidungen trifft? + +- **Datenschutz:** KI-Anwendungen erfordern oft große Datenmengen, was Datenschutzprobleme aufwirft. + diff --git a/docs/index.rst b/docs/index.rst index 852d1ff..537dfe9 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -1,60 +1,25 @@ ======================= -Neural Network Tutorial +Einführung in KI ======================= -Das Neural Network Tutorial möchte euch einen praxisnahen Einstieg in neuronale -Netze mit Python ermöglichen. +Die Schulung "Einführung in KI" ermöglicht euch einen praxisnahen Einstieg in KI mit Python. -Das Neural Network Tutorial ist Teil einer Reihe von Tutorials zur Datenanalyse -und -visualisierung: - -* `Python Basics `_ -* `Jupyter-Tutorial `_ -* `Python für Data Science `_ -* `PyViz-Tutorial `_ -* `cusy Design-System: Datenvisualisierung - `_ +Die Schulung ist aufgebaut in 4 Blöcken und hat folgende Hauptbestandteile: Alle Tutorials dienen als Seminarunterlagen für unsere aufeinander abgestimmten Trainings: -+---------------+--------------------------------------------------------------+ -| Dauer | Titel | -+===============+==============================================================+ -| 3 Tage | `Einführung in Python`_ | -+---------------+--------------------------------------------------------------+ -| 2 Tage | `Fortgeschrittenes Python`_ | -+---------------+--------------------------------------------------------------+ -| 2 Tage | `Entwurfsmuster in Python`_ | -+---------------+--------------------------------------------------------------+ -| 2 Tage | `Effizient Testen mit Python`_ | -+---------------+--------------------------------------------------------------+ -| 1 Tag | `Software-Dokumentation mit Sphinx`_ | -+---------------+--------------------------------------------------------------+ -| 2 Tage | `Technisches Schreiben`_ | -+---------------+--------------------------------------------------------------+ -| 3 Tage | `Jupyter-Notebooks für effiziente Data-Science-Workflows`_ | -+---------------+--------------------------------------------------------------+ -| 2 Tage | `Numerische Berechnungen mit NumPy`_ | -+---------------+--------------------------------------------------------------+ -| 2 Tage | `Daten analysieren mit pandas`_ | -+---------------+--------------------------------------------------------------+ -| 3 Tage | `Daten lesen, schreiben und bereitstellen mit Python`_ | -+---------------+--------------------------------------------------------------+ -| 2 Tage | `Daten bereinigen und validieren mit Python`_ | -+---------------+--------------------------------------------------------------+ -| 5 Tage | `Daten visualisieren mit Python`_ | -+---------------+--------------------------------------------------------------+ -| 1 Tag | `Datenvisualisierungen gestalten`_ | -+---------------+--------------------------------------------------------------+ -| 2 Tage | `Dashboards erstellen`_ | -+---------------+--------------------------------------------------------------+ -| 3 Tage | `Code und Daten versioniert und reproduzierbar speichern`_ | -+---------------+--------------------------------------------------------------+ -| Abonnement | `Neues aus Python für Data-Science`_ | -| à 2 h im | | -| Quartal | | -+---------------+--------------------------------------------------------------+ ++---------------+---------------------------------------------------------------+ +| Dauer | Titel | ++===============+===============================================================+ +| Tag 1 | `Einführung, Überwachtes Lernen, Regression` | ++---------------+---------------------------------------------------------------+ +| Tag 2 | `Unüberwachtes Lernen, Klassifilation, Use Case Fallgruben` | ++---------------+---------------------------------------------------------------+ +| Tag 3 | `Reinforcement Learning` | ++---------------+---------------------------------------------------------------+ +| Tag 4 | `Generative KI - Einführung` | ++---------------+---------------------------------------------------------------+ .. _`Einführung in Python`: https://cusy.io/de/unsere-schulungsangebote/einfuehrung-in-python @@ -89,11 +54,22 @@ Trainings: .. _`Neues aus Python für Data-Science`: https://cusy.io/de/unsere-schulungsangebote/neues-aus-python-fuer-data-science +Zusatzmaterialien: +* `Python Basics `_ +* `Jupyter-Tutorial `_ +* `Python für Data Science `_ +* `PyViz-Tutorial `_ +* `cusy Design-System: Datenvisualisierung `_ + .. toctree:: :hidden: :titlesonly: :maxdepth: 0 + intro/index + day2 + day3 + day4 changelog .. Indices and tables diff --git a/docs/intro/case-study.rst b/docs/intro/case-study.rst new file mode 100644 index 0000000..843e4bc --- /dev/null +++ b/docs/intro/case-study.rst @@ -0,0 +1,107 @@ +Fallstudie: Vorhersage von Immobilienpreisen +============================================ + +Ziel dieser Fallstudie +---------------------- + +- Anwendung der erlernten Methoden zur Vorhersage von Immobilienpreisen. + +- Verwendung eines realen Datensatzes zur Modellierung. + +- Umsetzung in Python mit `scikit-learn`. + +Schritte zur Umsetzung +---------------------- + +1. **Daten laden und verstehen** + + * Nutzung eines offenen Datensatzes (:abbr:`z.B. (zum Beispiel)` `Boston + Housing Dataset` oder `Kaggle Immobilienpreise`). + * Untersuchung der Datenverteilung, Korrelationen und möglicher Ausreißer. + +2. **Datenvorbereitung** + + * Umwandlung kategorischer Merkmale (One-Hot-Encoding). + * Normalisierung und Skalierung numerischer Merkmale. + * Aufteilung in Trainings- und Testdaten. + +3. **Modelltraining mit Lineare Regression** + + * Trainieren eines **Linearen Regressionsmodells** mit ``scikit-learn``. + * Verwendung von Metriken zur Bewertung der Modellgüte (:abbr:`z.B. (zum + Beispiel)` MSE, R²). + +4. **Modellbewertung und Interpretation** + + * Bewertung der Modellperformance auf dem Testdatensatz. + * Interpretation der wichtigsten Einflussgrößen. + +Code-Beispiel +------------- + +.. code-block:: python + :linenos: + + import pandas as pd + import numpy as np + import matplotlib.pyplot as plt + from sklearn.model_selection import train_test_split + from sklearn.preprocessing import StandardScaler, OneHotEncoder + from sklearn.linear_model import LinearRegression + from sklearn.metrics import mean_squared_error, r2_score + + # Beispieldatensatz laden (Boston Housing Dataset) + from sklearn.datasets import load_boston + + boston = load_boston() + df = pd.DataFrame(boston.data, columns=boston.feature_names) + df["PRICE"] = boston.target + + # Aufteilung in Merkmale (X) und Zielvariable (y) + X = df.drop("PRICE", axis=1) + y = df["PRICE"] + + # Aufteilung in Trainings- und Testsets + X_train, X_test, y_train, y_test = train_test_split( + X, y, test_size=0.2, random_state=42 + ) + + # Feature Scaling + scaler = StandardScaler() + X_train_scaled = scaler.fit_transform(X_train) + X_test_scaled = scaler.transform(X_test) + + # Lineare Regression trainieren + model = LinearRegression() + model.fit(X_train_scaled, y_train) + + # Vorhersagen treffen + y_pred = model.predict(X_test_scaled) + + # Modellbewertung + mse = mean_squared_error(y_test, y_pred) + r2 = r2_score(y_test, y_pred) + print(f"Mittlerer quadratischer Fehler (MSE): {mse}") + print(f"Bestimmtheitsmaß (R²): {r2}") + + # Visualisierung der Vorhersagen + plt.scatter(y_test, y_pred, alpha=0.7) + plt.xlabel("Tatsächliche Preise") + plt.ylabel("Vorhergesagte Preise") + plt.title("Tatsächliche vs. Vorhergesagte Immobilienpreise") + plt.show() + +Zeilen 12–14 + **Datensatz laden:** Wir verwenden das `Boston Housing Dataset`, das + verschiedene Merkmale von Häusern enthält. +Zeilen 26–28 + **Datenvorverarbeitung:** Skalierung der numerischen Variablen zur besseren + Modellleistung. +Zeilen 31–32 + **Modelltraining:** Wir verwenden eine einfache lineare Regression. +Zeilen 38–41 + **Modellbewertung:** Berechnung des mittleren quadratischen Fehlers (MSE) + und des Bestimmtheitsmaßes (R²). +Zeilen 44–48 + **Visualisierung:** Darstellung der tatsächlichen vs. vorhergesagten Werte + zur Überprüfung der Modellgüte. diff --git a/docs/intro/categories.rst b/docs/intro/categories.rst new file mode 100644 index 0000000..e6bd7f4 --- /dev/null +++ b/docs/intro/categories.rst @@ -0,0 +1,249 @@ +Kategorien von Aufgaben +======================= + +Maschinelles Lernen kann für verschiedene **Aufgabentypen** eingesetzt werden, +abhängig davon, ob das Ziel eine **Vorhersage, Gruppierung oder +Entscheidungsoptimierung** ist. In diesem Kapitel werden die vier Hauptarten von +ML-Aufgaben vorgestellt: :ref:`regression`, :ref:`classification`, +:ref:`clustering` und :ref:`autonomous`. + +.. _regression: + +Regression +---------- + +* Sie ist eine Technik zur **Vorhersage von kontinuierlichen Werten** auf Basis + von Eingabedaten. +* Sie wird genutzt, wenn das Ziel eine numerische Größe ist, :abbr:`z.B. + (zum Beispiel)` Preis, Temperatur oder Umsatzprognose. + +Beispiele +~~~~~~~~~ + +Immobilienpreise vorhersagen + Basierend auf Faktoren wie Größe, Lage und Baujahr. +Wettervorhersagen + Prognose der Temperatur für den nächsten Tag. +Finanzmarktanalysen + Vorhersage von Aktienkursen oder Umsatzentwicklungen. + +Typische Algorithmen +~~~~~~~~~~~~~~~~~~~~ + +* Lineare Regression +* Multiple Regression +* Polynomial Regression +* Neuronale Netze für kontinuierliche Vorhersagen + +.. _classification: + +Klassifikation +-------------- + +Definition +~~~~~~~~~~ + +* Klassifikation ist eine Methode zur **Zuordnung von Datenpunkten zu diskreten + Kategorien**. +* Das Ziel ist, eine Entscheidung über eine vordefinierte Anzahl von Klassen zu + treffen. + +Beispiele +~~~~~~~~~ + +E-Mail-Spam-Erkennung + Klassifizierung von E-Mails als "Spam" oder "Nicht-Spam". +Diagnosen in der Medizin + Erkennung von Krankheiten anhand von Symptomen. +Bilderkennung + Identifizierung von Objekten auf Fotos (Hund vs. Katze). + +Typische Algorithmen +~~~~~~~~~~~~~~~~~~~~ + +* Entscheidungsbäume +* Random Forest +* Support Vector Machines (SVM) +* Neuronale Netze für Bilderkennung (CNNs) + +.. _clustering: + +Clustering +---------- + +Definition +~~~~~~~~~~ + +* Clustering ist eine Technik des **unüberwachten Lernens**, bei der Daten ohne + vorherige Labels in Gruppen eingeteilt werden. +* Das Ziel ist es, Muster oder Strukturen in den Daten zu erkennen. + +Beispiele +~~~~~~~~~ + +Kundensegmentierung + Kunden anhand ihres Kaufverhaltens in Gruppen einteilen. +Genanalyse + Identifikation von ähnlichen genetischen Mustern. +Betrugserkennung + Auffinden verdächtiger Transaktionsmuster. + +Typische Algorithmen +~~~~~~~~~~~~~~~~~~~~ + +* K-Means-Clustering +* DBSCAN (Density-Based Spatial Clustering) +* Hierarchisches Clustering + +.. _autonomous: + +Autonome Aufgaben +----------------- + +Definition +~~~~~~~~~~ + +* Autonome Aufgaben erfordern eine Kombination aus **überwachtem, unüberwachtem + und bestärkendem Lernen**, um **eigenständig Entscheidungen** zu treffen und + sich an neue Situationen anzupassen. +* Diese Aufgaben sind besonders anspruchsvoll, da sie oft + **Echtzeit-Entscheidungen** erfordern. + +Beispiele +~~~~~~~~~ + +Selbstfahrende Autos + Kombination aus Bilderkennung, Reinforcement Learning und Sensorfusion zur + sicheren Navigation. +Industrielle Robotik + Roboter, die sich an neue Umgebungen anpassen und Produktionslinien + optimieren. +Dynamische Preisgestaltung + Systeme, die in Echtzeit Preisentscheidungen treffen, basierend auf Angebot + und Nachfrage. + +Technologien +~~~~~~~~~~~~ + +Reinforcement Learning (RL): + Algorithmen lernen durch Belohnungssysteme. +Neuronale Netze + Deep Learning wird genutzt, um Sensordaten zu verarbeiten. +Edge Computing + Echtzeit-Datenverarbeitung für schnelle Reaktionen. + +.. _generative: + +Generative Aufgaben +------------------- + +Definition +~~~~~~~~~~ + +* Generative KI zielt darauf ab, neue Daten zu erzeugen, die den Muster der + Trainingsdaten folgen, aber nicht identisch mit ihnen sind. +* Diese Technologie basiert auf Modellen, die durch unüberwachtes oder + selbstüberwachtes Lernen trainiert werden und dann neue Inhalte generieren. + +Beispiele +~~~~~~~~~ + +* Bildgenerierung: + + * Erstellung neuer Bilder auf Basis bestehender Stile (:abbr:`z.B. (zum + Beispiel)` DeepDream, DALL·E). + * Erstellung realistischer Gesichter mit GANs (:abbr:`z.B. (zum Beispiel)` + „ThisPersonDoesNotExist.com“). + +* Textgenerierung: + + * Chatbots wie ChatGPT, die menschenähnliche Texte generieren. + * Automatische Textzusammenfassungen oder Artikelgenerierung. + +* Musik und Audio: + + * KI-gestützte Musikkomposition (:abbr:`z.B. (zum Beispiel)` OpenAIs Jukebox). + * Stimmenklonen und Deepfake-Audio. + +* Code-Generierung: + + * KI-Systeme wie GitHub Copilot oder AlphaCode, die Programmiercode + generieren. + +* 3D- und Videogenerierung: + + * Synthese neuer 3D-Modelle für Videospiele oder Animationen. + * KI-generierte Deepfake-Videos. + +Typische Algorithmen +~~~~~~~~~~~~~~~~~~~~ + +* Generative Adversarial Networks (GANs) + + * Lernen zwei konkurrierende Netzwerke: ein „Generator“ und ein + „Diskriminator“. + + * Beispiel: Stiltransfer von Gemälden auf Fotos. + +* Variational Autoencoders (VAEs) + + * Lernen eine kompakte Darstellung der Daten und können daraus neue Instanzen generieren. + +* Transformer-Modelle (:abbr:`z.B. (zum Beispiel)` GPT, BERT, T5) + + * Werden für Text- und Codegenerierung eingesetzt. + +* Diffusionsmodelle (DALL·E, Stable Diffusion) + + * Besonders leistungsfähig für hochwertige Bilderzeugung. + +Zusammenfassung +~~~~~~~~~~~~~~~ + +* Generative KI ist eine eigene Aufgabenkategorie, da sie keine Vorhersage- oder + Gruppierungsaufgabe erfüllt, sondern neue Inhalte erstellt. +* Sie nutzt tiefe neuronale Netze, insbesondere GANs, Transformer-Modelle und + Diffusionsmodelle. +* Generative KI wird zunehmend wichtiger in Bereichen wie Kunst, Design, Code, + Audio und Sprache. + +Vergleich der ML-Aufgabentypen +------------------------------ + +.. list-table:: Vergleich von Regression, Klassifikation, Clustering und autonomen Aufgaben + :header-rows: 1 + + * - Merkmal + - :ref:`regression` + - :ref:`classification` + - :ref:`clustering` + - :ref:`autonomous` + - :ref:`generative` + * - Art der Vorhersage + - Kontinuierlicher Wert + - Diskrete Klassen + - Gruppenbildung ohne Labels + - Eigenständige Entscheidungsfindung + - Erzeugung neuer Daten + * - Beispiele + - Preisprognosen, Finanzanalysen + - Bilderkennung, Spam-Filter + - Kundensegmentierung, Anomalieerkennung + - Selbstfahrende Autos, Industrieroboter + - KI-generierte Bilder, Texte, Musik + * - Typische Algorithmen + - Lineare Regression, neuronale Netze + - Entscheidungsbäume, SVM + - K-Means, DBSCAN + - Reinforcement Learning, Deep Learning + - GANs, VAEs, Transformer + +Fazit +----- + +* Regression, Klassifikation und Clustering gehören zu den klassischen Aufgaben + des maschinellen Lernens. +* Autonome Systeme sind eine anspruchsvolle Anwendung, die verschiedene + ML-Techniken kombiniert. +* Je nach Daten und Zielsetzung kann eine Kombination dieser Methoden sinnvoll + sein. diff --git a/docs/intro/def.rst b/docs/intro/def.rst new file mode 100644 index 0000000..ca00bb0 --- /dev/null +++ b/docs/intro/def.rst @@ -0,0 +1,174 @@ +Definition von Künstlicher Intelligenz +====================================== + +Künstliche Intelligenz (KI) bezeichnet die Fähigkeit eines Computers oder einer +Maschine, menschenähnliche kognitive Funktionen auszuführen. Dazu gehören +Aufgaben wie Lernen, Problemlösung, Mustererkennung und Entscheidungsfindung. +Der Begriff KI wurde erstmals 1956 auf der Dartmouth Conference von John +McCarthy geprägt. Heute umfasst KI eine Vielzahl von Techniken, darunter +maschinelles Lernen, Deep Learning und Expertensysteme. + +Historische Entwicklung der KI +------------------------------ + +Die Entwicklung der KI lässt sich in mehrere Phasen einteilen: + +1950er–1970er: Die Pionierzeit + * Erste Algorithmen zur symbolischen Verarbeitung und regelbasierten Systeme + wurden entwickelt. + * Alan Turings berühmter `Turing-Test + `_ stellte eine frühe Methode + zur Bewertung der Intelligenz einer Maschine vor. + * In den 1960er Jahren entstanden erste Expertensysteme, die regelbasierte + Entscheidungsfindung ermöglichten. + +1980er–1990er: Erste Fortschritte und Rückschläge** + * KI erlebte durch das Aufkommen von neuronalen Netzen und maschinellem + Lernen einen Aufschwung. + * Aufgrund hoher Rechenkosten und begrenzter Datenverfügbarkeit flachte das + Interesse an KI in den späten 1980er Jahren ab. + +2000er–heute: Der Durchbruch dank Big Data und Deep Learning + * Fortschritte in Rechenleistung, Cloud Computing und die Verfügbarkeit + großer Datenmengen haben KI auf ein neues Niveau gehoben. + * Tiefe neuronale Netze ermöglichen Fortschritte in Spracherkennung, + Bildverarbeitung und autonomem Fahren. + +Unterschiedliche Formen der Künstlichen Intelligenz +--------------------------------------------------- + +KI kann auf verschiedene Art und Weisen in verschiedene Kategorien unterteilt +werden. Eine Möglichkeit ist die Kategorisierung nach ihrem Funktionsumfang und +ihren Anwendungsmöglichkeiten, wie von Prof. Arend Hintze definiert, Forscher +und Professor der Integrative Biology an der Michigan State University: + +#. Reaktive KI (Reactive AI) + + Die erste Stufe der KI kann als *Reaktive KI* bezeichent und als ein Ur-Typ + der KI angesehen werden. Sie hat weder *Gedächtnis* noch *Lernfähigkeit* und + kann nur auf Eingaben reagieren für genau die eine Aufgabe, wofür sie + programmiert wurde. Es ist nicht in der Lage, zukünftige Ergebnisse + vorherzusagen, wenn es nicht mit den entsprechenden Informationen gefüttert + wurde. + + **Beispiel:** Schachcomputer wie IBM Deep Blue, der auf Basis aktueller Züge + die bestmöglichen Entscheidungen trifft. + +#. Begrenzte Gedächtnis-KI (Limited Memory AI) + + Die zweite Stufe der KI kann Informationen aus vergangenen Interaktionen + nutzen, um zukünftige Entscheidungen zu verbessern. + + **Beispiel:** Selbstfahrende Autos, die Sensordaten aus der Umgebung + speichern und auf Basis vorheriger Erfahrungen optimieren. + +Die erste und zweite Stufen der KI sind bereits teilweise im Einsatz, mit +unterschiedlichen technischen Reifegrad in diversen Domänen. + +3. Theorie des Geistes-KI (Theory of Mind AI) – noch in der Forschung + + Im Gegensatz zu den ersten beiden Formen der KI hätten die 3. und die 4. Form + der KI ein eigenes Bewusstsein und Verständnis für sich selbst. Intelligente + Systeme der Stufe 3 könnten menschliche Emotionen wahrnehmen und verstehen, + sowie auch deren eigenes Verhalten entsprechend anpassen. + + **Ziel:** KI mit Verständnis für Emotionen und sozialen Kontext. + + Potenzielles Beispiel: Fortgeschrittene humanoide Roboter mit sozialem + Bewusstsein. + +#. Selbstbewusste KI (Self-Aware AI) – hypothetisch + + Diese Stufe der KI hätte ein eigenes Bewusstsein und ein Verständnis für sich + selbst und käme somit dem menschlichen Bewusstsein (der menschlichen + Intelligenz) am nächsten. + + Ob und wann die Entwicklung der KI jemals diese Stufe erreichen wird, ist + noch viel umstritten – bisher wurde es nur in Science-Fiction Werken + dargestellt. + +.. seealso: + * `Understanding the four types of AI, from reactive robots to self-aware + beings + `_ + * `Der Turing-Test + `_ + +Prädiktive vs. Generative KI +---------------------------- + +Die aktuell in der Industrie gängigen Formen der KI lassen sind insbesondere in +**prädiktive KI** und **generative KI** unterscheiden: + +#. Prädiktive KI + + * Diese KI nutzt historische Daten, um **zukünftige Ereignisse + vorherzusagen**. + * Verwendete Algorithmen: Regression, Entscheidungsbäume, neuronale Netze. + + Beispiele: + + * Vorhersage von Aktienkursen oder Wetterverhältnissen. + * Diagnose von Krankheiten basierend auf medizinischen Daten. + * Betrugserkennung im Finanzsektor. + +2. Generative KI + + * Diese KI erzeugt **neue Inhalte**, die zuvor nicht explizit in den + Trainingsdaten enthalten waren. + * Verwendete Modelle: Generative Adversarial Networks (GANs), + Transformer-Modelle (:abbr:`z.B. (zum Beispiel)` GPT, DALL·E). + * Beispiele: + + * Erstellung von Bildern, Musik oder Texten (:abbr:`z.B. (zum Beispiel)` + KI-generierte Kunst, Chatbots). + * Übersetzung und Zusammenfassung von Texten. + * Deepfake-Technologien. + +Bedeutung dieser Unterscheidung +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* Prädiktive KI wird hauptsächlich in **Analytik und Entscheidungsfindung** + eingesetzt, während generative KI für **Kreativität und Content-Erzeugung** + genutzt wird. +* In der Praxis werden oft **beide Ansätze kombiniert**, :abbr:`z.B. (zum + Beispiel)` wenn eine prädiktive KI Markttrends analysiert und eine generative + KI dazu passende Werbeinhalte erstellt. + +Anwendungsfälle von KI +---------------------- + +KI findet heute in zahlreichen Bereichen Anwendung, darunter: + +Gesundheitswesen + Diagnosestellung durch KI-gestützte Bildverarbeitung, + Medikamentenentwicklung. +Finanzwesen + Automatische Betrugserkennung, algorithmischer Handel. +Industrie + Automatisierung von Prozessen, Qualitätskontrolle in der Fertigung. +Autonome Systeme + Selbstfahrende Autos, Drohnen, Robotersteuerung. +Sprachverarbeitung + Sprachassistenten wie Siri, Alexa oder Google Assistant. +Kreative Anwendungen + Generierung von Texten, Musik und Kunst durch KI. + +Ethische Fragestellungen in der KI +---------------------------------- + +Mit der rasanten Entwicklung der KI gehen auch bedeutende ethische Fragen +einher: + +Bias und Diskriminierung + KI-Modelle können bestehende Vorurteile aus Trainingsdaten übernehmen. +Arbeitsplatzverdrängung + Automatisierung kann menschliche Arbeitsplätze gefährden. +Transparenz und Erklärbarkeit + Viele KI-Modelle, insbesondere Deep Learning, sind schwer zu interpretieren. +Verantwortung und Haftung + Wer ist verantwortlich, wenn eine KI fehlerhafte oder schädliche + Entscheidungen trifft? +Datenschutz + KI-Anwendungen erfordern oft große Datenmengen, was Datenschutzprobleme + aufwirft. diff --git a/docs/intro/evaluation.rst b/docs/intro/evaluation.rst new file mode 100644 index 0000000..fed9770 --- /dev/null +++ b/docs/intro/evaluation.rst @@ -0,0 +1,120 @@ +Evaluation von ML-Modellen +========================== + +Warum ist die Modellbewertung wichtig? +-------------------------------------- + +* Die Evaluation von ML-Modellen stellt sicher, dass das Modell zuverlässig und + generalisierbar ist. +* Ein gut evaluiertes Modell verhindert Overfitting und hilft, die besten + Algorithmen und Parameter auszuwählen. + +Wichtige Metriken für Klassifikationsprobleme +--------------------------------------------- + +Accuracy (Genauigkeit) +~~~~~~~~~~~~~~~~~~~~~~ + +Prozentsatz der korrekten Vorhersagen: + +.. math:: + \text{Accuracy} = \frac{\text{Anzahl der korrekten Vorhersagen}}{\text{Gesamtanzahl der Vorhersagen}} + +.. warning: + Accuracy hat eine Einschränkung bei (stark) unausgewogenen Datensätzen, da + sie hier irreführend sein kann. + +Precision (Präzision) +~~~~~~~~~~~~~~~~~~~~~ + +Precision ist der Anteil der tatsächlich positiven Vorhersagen unter allen als +positiv klassifizierten Instanzen: + +.. math:: + \text{Precision} = \frac{TP}{TP + FP} + +Precision wird vor allem bevorzugt, wenn falsch-positive Fehler besonders +kritisch sind (:abbr:`z.B. (zum Beispiel)` Spam-Erkennung). + +Recall (Sensitivität) +~~~~~~~~~~~~~~~~~~~~~ + +Recall ist der Anteil der korrekten positiven Vorhersagen unter allen +tatsächlichen positiven Fällen: + +.. math:: + \text{Recall} = \frac{TP}{TP + FN} + +Recall ist eine wichtige Metrik, wenn es entscheidend ist, möglichst alle +positiven Fälle zu erfassen (:abbr:`z.B. (zum Beispiel)` Krebsdiagnosen). + +F1-Score +~~~~~~~~ + +Der F1-Score ist das harmonisches Mittel von Präzision und Recall, um ein +ausgewogenes Maß zu erhalten: + +.. math:: + \text{F1-Score} = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}} + +Der F1-Score ist besonders nützlich bei unausgewogenen Datensätzen (engl.: +*unbiased data sets*). + +Wichtige Metriken für Regressionsprobleme +----------------------------------------- + +Mean Squared Error, MSE (Mittlerer quadratischer Fehler) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Der MSE berechnet den Durchschnitt der quadrierten Fehler zwischen +vorhergesagten und tatsächlichen Werten: + +.. math:: + \text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 + +Somit bestraft der MSE große Fehler stärker als kleine Fehler. + +Mean Absolute Error, MAE (Mittlerer absoluter Fehler) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Der MAE berechnet den Durchschnitt der absoluten Differenzen zwischen +vorhergesagten und tatsächlichen Werten: + +.. math:: + \text{MAE} = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i| + +R²-Koeffizient (Bestimmtheitsmaß) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* Zeigt, wie gut das Modell die Varianz der Zielvariable erklärt. +* Wertebereich: 0 (keine Erklärung) bis 1 (perfekte Erklärung). + +Praktische Anwendung: Evaluierung eines Modells in Python +--------------------------------------------------------- + +Ein Beispiel zur Berechnung dieser Metriken mit `scikit-learn`: + +.. code-block:: python + :linenos: + + from sklearn.metrics import ( + accuracy_score, + precision_score, + recall_score, + f1_score, + ) + + # Beispiel: Tatsächliche Labels und Vorhersagen + true_labels = [1, 0, 1, 1, 0, 1, 0, 0, 1, 0] + predicted_labels = [1, 0, 1, 0, 0, 1, 0, 1, 1, 0] + + # Berechnung der Metriken + accuracy = accuracy_score(true_labels, predicted_labels) + precision = precision_score(true_labels, predicted_labels) + recall = recall_score(true_labels, predicted_labels) + f1 = f1_score(true_labels, predicted_labels) + + print( + f"Accuracy: {accuracy}, Precision: {precision}, Recall: {recall}, F1-Score: {f1}" + ) + return (accuracy, precision, recall, f1) diff --git a/docs/intro/extra.rst b/docs/intro/extra.rst new file mode 100644 index 0000000..da94dab --- /dev/null +++ b/docs/intro/extra.rst @@ -0,0 +1,9 @@ +Zusätzliche Materialien +======================= + +- Einführung in `Scikit-Learn `_ +- :doc:`Python4DataScience:workspace/numpy/index`- und + :doc:`Python4DataScience:workspace/pandas/index`-Dokumentation für + Datenverarbeitung +- :doc:`PyViz:matplotlib/index` für Visualisierung +- TensorFlow/Keras für Deep Learning (für spätere Module) diff --git a/docs/intro/index.rst b/docs/intro/index.rst new file mode 100644 index 0000000..548db31 --- /dev/null +++ b/docs/intro/index.rst @@ -0,0 +1,49 @@ +Einführung, Überwachtes Lernen und Regression +============================================= + +Die Schulung wird mit den grundlegenden Konzepten der :abbr:`KI (Künstliche +Intelligenz)` und :abbr:`ML (Maschinelles Lernen)` eingeleitet und anhand +praktischer Implementierungen veranschaulicht. + +Gliederung +---------- + +.. list-table:: Schulungsstruktur für KI-Grundlagen: Tag 1 + :header-rows: 1 + + * - Kapitel + - Inhalte + * - Einführung in Künstliche Intelligenz + - Definition und Historie der KI, Unterschiedliche Formen der KI, + Anwendungsfälle, ethische Fragestellungen + * - Maschinelles Lernen: Konzepte und Typen + - Begriffe: ML, Deep Learning, Reinforcement Learning; Beispiele für reale + Anwendungen + * - Überwachtes vs. Unüberwachtes Lernen + - Klassifikation vs. Regression, Clustering-Methoden + * - Trainingsdaten und Modellierung + - Datenqualität, Feature Engineering, Modelltraining + * - Evaluation von ML-Modellen + - Metriken: Accuracy (Genauigkeit), Precision (Präzision), Recall, + F1-Score, MSE + * - Praktische Einführung: Lineare Regression + - Implementierung eines ML-Modells mit scikit-learn + * - Fallstudie: Vorhersage von Immobilienpreisen + - Hands-on Beispiel mit einem realen Datensatz + * - Diskussion und Fragen + - Diskussion über Anwendungen von KI in verschiedenen Bereichen + +.. toctree:: + :hidden: + :titlesonly: + :maxdepth: 0 + + def + ml-concepts + categories + training-modelling + evaluation + linear-regression + case-study + reflection + extra diff --git a/docs/intro/linear-regression.rst b/docs/intro/linear-regression.rst new file mode 100644 index 0000000..0caef4f --- /dev/null +++ b/docs/intro/linear-regression.rst @@ -0,0 +1,100 @@ +Praktische Einführung: Lineare Regression +========================================= + +Was ist Lineare Regression? +--------------------------- + +- Die **Lineare Regression** ist eines der grundlegendsten Modelle des maschinellen Lernens. + +- Sie wird verwendet, um eine abhängige Variable (Zielvariable) anhand einer oder mehrerer unabhängiger Variablen vorherzusagen. + +- Die Gleichung einer einfachen linearen Regression lautet: + + .. math:: + y = wX + b + + wobei: + + - `y` die Zielvariable ist, + + - `X` die unabhängige Variable, + + - `w` die Steigung der Geraden (Gewicht) und + + - `b` der Achsenabschnitt (Bias). + +Beispiel mit scikit-learn +------------------------- + +Schritte zur Implementierung eines ML-Modells +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +1. **Daten laden und vorbereiten** + + - Import von Bibliotheken und Laden eines Datensatzes. + + - Aufteilung der Daten in Trainings- und Testsets. + +2. **Modell erstellen und trainieren** + + - Ein Lineares Regressionsmodell aus `scikit-learn` erstellen und trainieren. + +3. **Modell evaluieren** + + - Vorhersagen treffen und mit Metriken wie dem mittleren quadratischen Fehler (MSE) bewerten. + +Code +~~~~ + +.. code-block:: python + :linenos: + + import numpy as np + import matplotlib.pyplot as plt + from sklearn.model_selection import train_test_split + from sklearn.linear_model import LinearRegression + from sklearn.metrics import mean_squared_error + + # Beispiel-Datensatz erstellen + np.random.seed(42) + X = 2 * np.random.rand(100, 1) + y = 4 + 3 * X + np.random.randn(100, 1) + + # Aufteilung in Trainings- und Testdaten + X_train, X_test, y_train, y_test = train_test_split( + X, y, test_size=0.2, random_state=42 + ) + + # Modell erstellen und trainieren + model = LinearRegression() + model.fit(X_train, y_train) + + # Vorhersagen treffen + y_pred = model.predict(X_test) + + # Modellbewertung + mse = mean_squared_error(y_test, y_pred) + print(f"Mittlerer quadratischer Fehler (MSE): {mse}") + + # Visualisierung + plt.scatter(X_test, y_test, color="blue", label="Tatsächliche Werte") + plt.plot(X_test, y_pred, color="red", linewidth=2, label="Vorhersagen") + plt.legend() + plt.xlabel("X") + plt.ylabel("y") + plt.title("Lineare Regression mit scikit-learn") + plt.show() + +Zeilen 8–10 + Wir generieren synthetische Daten mit einer linearen Beziehung und fügen + zufällige Schwankungen hinzu. +Zeilen 13–15 + Wir teilen die Daten in **Trainings- und Testsets**, um eine objektive + Modellbewertung zu ermöglichen. +Zeilen 18–19 + Mit `LinearRegression().fit()` trainieren wir unser Modell. +Zeilen 25–26 + Wir verwenden `mean_squared_error()`, um die Modellgenauigkeit zu messen. +Zeilen 29–35 + Schließlich visualisieren wir die tatsächlichen und vorhergesagten Werte, um + die Modellleistung zu interpretieren. diff --git a/docs/intro/ml-concepts.rst b/docs/intro/ml-concepts.rst new file mode 100644 index 0000000..8b52735 --- /dev/null +++ b/docs/intro/ml-concepts.rst @@ -0,0 +1,291 @@ +Maschinelles Lernen (ML): Konzepte und Typen +============================================ + +.. note:: + **TODO: MIT CODE BEISPIEL!** + https://www.python4data.science/de/latest/productive/dvc/dag.html + +Definition und Konzepte des Maschinellen Lernens (ML) +----------------------------------------------------- + +Maschinelles Lernen (Machine Learning, ML) ist ein Teilgebiet der Künstlichen +Intelligenz, das Computern ermöglicht, aus Daten zu lernen, anstatt explizit +programmiert zu werden. Es gibt drei Hauptarten des ML: + +Überwachtes Lernen (Supervised Learning) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Beim **überwachten Lernen** werden Modelle mit **gelabelten Daten** trainiert. + +Das bedeutet, dass für jeden Eingabedatensatz ein bekanntes **Ziel** existiert. + +Das Ziel des Modells ist es, eine Funktion zu lernen, die den Zusammenhang +zwischen Eingaben und Ausgaben erfasst. + +Überwachtes Lernen kann sowohl für Regression als auch für Klassifikation +genutzt werden. + +Beispiele hierfür sind: + +Klassifikation + Vorhersage diskreter Kategorien (:abbr:`z.B. (zum Beispiel)` Spam-Filter, + Bilderkennung von Hunden und Katzen). +Regression + Vorhersage kontinuierlicher Werte (:abbr:`z.B. (zum Beispiel)` + Hauspreisvorhersage anhand der Wohnfläche). + +Theoretische Konzepte des überwachten Lernens +::::::::::::::::::::::::::::::::::::::::::::: + +Trainingsprozess +................ + +* Das Modell wird mit einem Trainingsdatensatz trainiert, in dem **Eingaben + (Features)** und die zugehörigen **Zielwerte (Labels)** bekannt sind. +* Die Lernfunktion (oft als **Hypothesenfunktion** bezeichnet) wird durch das + Training optimiert. + +Modellbewertung +............... + +* Das trainierte Modell wird anhand neuer Daten getestet, um sicherzustellen, + dass es generalisiert und nicht nur die Trainingsdaten auswendig gelernt hat. +* Typische Metriken: Genauigkeit, Präzision, Recall und F1-Score, Mean Squared + Error (MSE). + +Unüberwachtes Lernen (Unsupervised Learning) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Beim **unüberwachten Lernen** gibt es **keine gelabelten Daten**. + +Das Modell versucht, Muster oder Strukturen in den Daten zu entdecken. + +Dies eignet sich besonders für **Explorative Datenanalyse**, bei der keine +festen Kategorien bekannt sind. + +Unüberwachtes Lernen kann direkt für Klassifikationsprobleme genutzt werden; +aber nur indirekt für Regressionsprobleme, :abbr:`z.B. (zum Beispiel)` als +Vorverarbeitungsschritt oder zur Merkmalextraktion, um Regression effektiver zu +machen. + +Typische Anwendungen sind: + +Clustering + Ziel: Datenpunkte in Gruppen einteilen, basierend auf Ähnlichkeit. + + Beispiele: + + * Kundensegmentierung für personalisierte Werbung. + * Erkennung von ähnlichen Produkten in Online-Shops. + * Gruppierung von genetischen Mustern in der Biologie. + * Betrugserkennung durch Anomalie-Analyse in Banktransaktionen. + +Dimensionsreduktion + Ziel: Komplexe Daten in eine einfachere Form umwandeln. + + Beispiele: + + * Hauptkomponentenanalyse (PCA) zur Reduzierung hochdimensionaler Daten. + * Visualisierung von großen Datenmengen. + * Feature-Auswahl für effizientere Modellberechnungen. + +Theoretische Konzepte des Unüberwachten Lernens +::::::::::::::::::::::::::::::::::::::::::::::: + + +Clustering-Algorithmen +...................... + +K-Means + teilt Daten in eine vordefinierte Anzahl von Clustern ein. +Hierarchisches Clustering + erstellt eine baumartige Struktur zur Clusterbildung. +DBSCAN + erkennt Cluster basierend auf der Dichte der Datenpunkte. + +Dimensionsreduktionstechniken +............................. + +PCA (Principal Component Analysis) + extrahiert die wichtigsten Variablen aus großen Datensätzen. + +t-SNE (t-Distributed Stochastic Neighbor Embedding) + visualisiert komplexe Datensätze in 2D oder 3D. + +Vergleich: Überwachtes vs. Unüberwachtes Lernen +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. list-table:: Vergleich von Überwachtem und Unüberwachtem Lernen + :header-rows: 1 + + * - Merkmal + - Überwachtes Lernen + - Unüberwachtes Lernen + * - Datenverfügbarkeit + - Gelabelte Daten notwendig + - Keine Labels erforderlich + * - Ziel + - Vorhersage einer bekannten Zielvariable + - Identifikation von Mustern oder Strukturen + * - Typische Algorithmen + - Lineare Regression, Entscheidungsbäume, Neuronale Netze + - K-Means, DBSCAN, PCA + * - Anwendungsbereiche + - Klassifikation, Regression + - Clustering, Dimensionsreduktion + +Reinforcement Learning (Bestärkendes Lernen, RL) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. seealso:: + * :doc:`../day3` + +Definition +:::::::::: + +Beim **Reinforcement Learning** (Bestärkenden Lernen, RL) lernt ein Agent durch +**Interaktion mit einer Umgebung**, wobei er **Belohnungen oder Bestrafungen** +erhält. + +Das Ziel des RL ist es, eine **Optimierungsstrategie** zu entwickeln, die +langfristig die höchste Gesamtbelohnung erzielt. + +Es handelt sich um eine Form des **Lernens durch Versuch und Irrtum**, ähnlich +wie ein Mensch, der durch Erfahrung lernt. + +Grundprinzipien von Reinforcement Learning +:::::::::::::::::::::::::::::::::::::::::: + +Agent + Das KI-System, das lernt (:abbr:`z.B. (zum Beispiel)` ein Roboter, ein + autonomes Auto, ein Schachprogramm). +Umgebung (Environment) + Alles außerhalb des Agents, mit dem er interagiert. +Zustand (State) + Eine Momentaufnahme der Umgebung, die den Agenten beeinflusst. +Aktion (Action) + Eine Entscheidung, die der Agent in einem bestimmten Zustand trifft. +Belohnung (Reward) + Eine numerische Bewertung der Aktion, die dem Agenten signalisiert, ob er + sich der optimalen Lösung nähert oder nicht. +Richtlinien (Policy) + Eine Strategie, die den besten nächsten Schritt für den Agenten bestimmt. +Qualitäts-Wert (Q-Value) + Eine Bewertung, wie gut eine bestimmte Aktion in einem Zustand langfristig + ist. + +Beispiele für RL-Anwendungen +:::::::::::::::::::::::::::: + +Spielstrategien + AlphaGo von DeepMind besiegte menschliche Meister im Go-Spiel durch RL. +Autonome Fahrzeuge + Lernen, sicher zu fahren, indem sie Belohnungen für sichere Entscheidungen + erhalten. +Robotik + Industrieroboter optimieren ihre Bewegungen, um Aufgaben effizienter zu + erledigen. +Algorithmischer Handel + KI-Agenten lernen, wann sie Aktien kaufen oder verkaufen sollen. + +Wichtige RL-Algorithmen +::::::::::::::::::::::: + +Q-Learning + Eine tabellenbasierte Methode zur Speicherung der besten Aktionen. +Deep Q-Networks (DQN) + Eine Erweiterung von Q-Learning unter Verwendung von neuronalen Netzen. +Policy-Gradient-Verfahren + Statt Werte zu lernen, lernt das Modell direkt eine optimale Strategie. +Proximal Policy Optimization (PPO) + Häufig in modernen RL-Anwendungen eingesetzt (z. B. bei OpenAI Gym). + +Herausforderungen im RL +::::::::::::::::::::::: + +Exploration vs. Exploitation + Ein Agent muss entscheiden, ob er eine **neue Strategie** testet oder eine + **bereits bekannte, aber möglicherweise nicht optimale** Strategie nutzt. +Belohnungsdesign + Ein schlecht definierter Belohnungsmechanismus kann dazu führen, dass das + Modell unerwartete oder unerwünschte Strategien lernt. +Rechenaufwand + RL benötigt oft viele Trainingsdurchläufe und Rechenleistung. + +Deep Learning (DL) als spezialisierte Form des ML +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Definition +:::::::::: + +Deep Learning (DL) ist ein Teilgebiet des maschinellen Lernens, das auf +**künstlichen neuronalen Netzen (KNNs)** basiert. + +Es verwendet **mehrere Schichten von Neuronen** (daher der Begriff „Deep“), um +hochkomplexe Muster in Daten zu lernen. + +Deep Learning ist besonders leistungsfähig bei **Bildverarbeitung, +Spracherkennung und natürlicher Sprachverarbeitung (NLP).** + +Aufbau eines neuronalen Netzes +:::::::::::::::::::::::::::::: + +Input Layer + Nimmt Daten auf (:abbr:`z.B. (zum Beispiel)` Pixelwerte eines Bildes). +Verborgene Schichten (Hidden Layers) + Extrahieren Merkmale und erkennen Muster. +Ausgangsschicht (Output Layer) + Gibt das Ergebnis der Berechnung aus (:abbr:`z.B. (zum Beispiel)` + Klassifizierung in „Hund“ oder „Katze“). + +Arten von neuronalen Netzwerken +::::::::::::::::::::::::::::::: + +Feedforward Neural Networks (FNN) + Einfachste Form, bei der Informationen nur in eine Richtung fließen. +Convolutional Neural Networks (CNN) + Besonders geeignet für **Bildverarbeitung** (:abbr:`z.B. (zum Beispiel)` + Gesichtserkennung, medizinische Bilddiagnostik). +Recurrent Neural Networks (RNN) + Nutzen vergangene Informationen zur Verarbeitung von **sequenziellen Daten** + (:abbr:`z.B. (zum Beispiel)` Sprachverarbeitung, Zeitreihenanalyse). +Transformer-Modelle + Revolutionierten die **Natürliche Sprachverarbeitung (NLP)** (:abbr:`z.B. + (zum Beispiel)` GPT-Modelle, BERT, T5). + +Beispiele für Anwendungen von Deep Learning +::::::::::::::::::::::::::::::::::::::::::: + +Bilderkennung:** Automatische Erkennung von Objekten in Bildern. + +Sprachverarbeitung (NLP) + Chatbots, automatische Übersetzungen (Google Translate, ChatGPT). +Autonome Systeme + Steuerung von selbstfahrenden Autos und Robotern. +Medizinische Diagnosen + Krebsfrüherkennung in MRT-Scans mit neuronalen Netzen. + +Herausforderungen im Deep Learning +:::::::::::::::::::::::::::::::::: + +Erklärbarkeit + DL-Modelle sind oft **Black Boxes**, deren Entscheidungen schwer + nachvollziehbar sind. + +Datenbedarf + Sehr große Mengen an **Trainingsdaten** sind notwendig. +Rechenleistung + DL benötigt leistungsfähige GPUs oder TPUs. + +Zukunft von Deep Learning +::::::::::::::::::::::::: + +Edge AI + Deep Learning wird zunehmend auf Edge-Geräten (Smartphones, IoT-Geräte) + ausgeführt. +Hybride Systeme + Kombination von Deep Learning mit Reinforcement Learning für **komplexe + Entscheidungsprozesse**. +Quanten-KI + Erste Ansätze zur Beschleunigung von Deep-Learning-Modellen mit + Quantencomputing. diff --git a/docs/intro/reflection.rst b/docs/intro/reflection.rst new file mode 100644 index 0000000..204e211 --- /dev/null +++ b/docs/intro/reflection.rst @@ -0,0 +1,64 @@ +Diskussion und Fragen +===================== + +Ziel der Diskussion +------------------- + +* Reflexion der erlernten Inhalte und Beantwortung offener Fragen. +* Gemeinsamer Austausch über die praktische Anwendbarkeit von KI in + verschiedenen Branchen. + +Diskussion über Anwendungen von KI in verschiedenen Bereichen +------------------------------------------------------------- + +Gesundheitswesen +~~~~~~~~~~~~~~~~ + +* Einsatz von KI für medizinische Diagnosen (:abbr:`z.B. (zum Beispiel)` + Krebsfrüherkennung mittels Bildverarbeitung). +* Personalisierte Medizin basierend auf Patientendaten. +* Automatisierte Medikamentenentwicklung und klinische Studienoptimierung. + +Finanzwesen +~~~~~~~~~~~ + +* Algorithmischer Handel und automatisierte Investitionsstrategien. +* Betrugserkennung in Echtzeit durch Anomalieerkennung. +* Risikoanalysen für Kreditbewilligungen. + +Industrie und Fertigung +~~~~~~~~~~~~~~~~~~~~~~~ + +* Predictive Maintenance (vorausschauende Wartung von Maschinen). +* Automatisierung in der Fertigung mit KI-gesteuerten Robotern. +* Optimierung von Lieferketten durch intelligente Planungssysteme. + +Mobilität und Transport +~~~~~~~~~~~~~~~~~~~~~~~ + +* Autonome Fahrzeuge und intelligente Verkehrssteuerung. +* KI-gestützte Routenoptimierung für Logistikunternehmen. +* Fahrgastprognosen im öffentlichen Verkehr. + +E-Commerce und Marketing +~~~~~~~~~~~~~~~~~~~~~~~~ + +* Personalisierte Produktempfehlungen (:abbr:`z.B. (zum Beispiel)` Amazon, + Netflix). +* Chatbots für Kundenservice und automatisierte Bestellprozesse. +* Dynamische Preisgestaltung durch KI-Analyse von Markttrends. + +Recht und Verwaltung +~~~~~~~~~~~~~~~~~~~~ + +* Automatisierte Vertragsanalyse und Dokumentenprüfung. +* KI zur Unterstützung juristischer Entscheidungen. +* Öffentliche Verwaltung und KI-gestützte Bürgerdienste. + +Offene Diskussion und Fragen +---------------------------- + +* Welche KI-Technologien haben das größte Potenzial für die Zukunft? +* Welche Herausforderungen und ethischen Bedenken gibt es in den jeweiligen + Bereichen? +* Wie kann KI für nachhaltige Entwicklungen genutzt werden? diff --git a/docs/intro/training-modelling.rst b/docs/intro/training-modelling.rst new file mode 100644 index 0000000..e743be3 --- /dev/null +++ b/docs/intro/training-modelling.rst @@ -0,0 +1,68 @@ +Trainingsdaten und Modellierung +=============================== + +Datenqualität und ihre Bedeutung +-------------------------------- + +* Gute Trainingsdaten sind essenziell für die Leistungsfähigkeit eines Modells. +* Aspekte der Datenqualität: + + Vollständigkeit + Fehlende Werte können Modelle ungenau machen. + Konsistenz + Daten sollten einheitlich und korrekt sein. + Ausreißererkennung + Extreme Werte können Modelle verzerren. + Datenverteilung + Unausgewogene Datensätze (:abbr:`z.B. (zum Beispiel)` ungleich verteilte + Klassen) beeinflussen Modellentscheidungen. + +Feature Engineering +------------------- + +Definition +~~~~~~~~~~ + +Feature Engineering ist die Kunst, relevante Eingangsvariablen für ein Modell zu +erstellen. + +Beispiel +~~~~~~~~ + +`Kohorte `_ + +Typische Techniken +~~~~~~~~~~~~~~~~~~ + +Feature Skalierung + Normalisierung und Standardisierung von Daten (:abbr:`z.B. (zum Beispiel)` + Min-Max-Scaling, Z-Score-Normalisierung). +Feature Selektion + Auswahl der wichtigsten Merkmale zur Reduktion von Overfitting. +Feature Transformation + Anwendung von Logarithmus- oder Polynom-Transformationen zur Verbesserung + der Modellleistung. +One-Hot-Encoding + Umwandlung kategorialer Variablen in numerische Werte. + +Modelltraining und Optimierung +------------------------------ + +- Schritte des Modelltrainings: + + 1. **Datenaufteilung:** Aufteilung in Trainings-, Validierungs- und Testdatensätze. + + 2. **Modellauswahl:** Auswahl eines geeigneten Algorithmus (z. B. Entscheidungsbaum, Random Forest, neuronale Netze). + + 3. **Hyperparameter-Tuning:** Feinabstimmung der Modellparameter zur Optimierung der Leistung (z. B. Grid Search, Random Search). + + 4. **Modellbewertung:** Verwendung von Metriken wie Genauigkeit, F1-Score oder Mean Squared Error zur Bewertung der Vorhersagequalität. + + 5. **Modellbereitstellung:** Einsatz des trainierten Modells in einer produktiven Umgebung. + +Praxisbeispiel: Modelltraining in Python +---------------------------------------- + +- Implementierung eines einfachen ML-Modells mit scikit-learn zur Vorhersage von Hauspreisen. + +- Demonstration von Datenvorbereitung, Feature Engineering und Modelltraining.