\chapter{Einführung}
\label{ml: einfuehrung}
    Allgemein geht es beim maschinellen Lernen darum eine Abbildung $h$ zu erlernen, die auf Basis von Eingabedaten Vorhersagen trifft.
    Zum erstellen (bzw. erlernen) von $h$ gibt es zwei Möglichkeiten:
    \begin{enumerate}
        \item \textbf{Offline Learning:}\\
            $h$ wird auf der Basis von Trainingsdaten angelernt.
            Sobald $h$ ausreichend gute Vorhersagen trifft wird es unverändert eingesetzt.
        \item \textbf{Online Learning:}\\
            Die durch Offline Learning erstellte Abbildung $h$ entwickelt sich auf den Produktivdaten weiter.
    \end{enumerate}

    \section{Was ist Lernen?}
    \label{was ist lernen}
        Um zu verstehen, was ein lernender Agent (\ref{learning agent}) tut muss zunächst einmal definiert werden, was Lernen überhaupt bedeutet.
        Meyers großes Handlexikon definiert \say{Lernen} als:\\
        \includegraphics[width = \textwidth]{definition_lernen.png}

        \subsection{Arten des Lernen}
        \label{arten des lernen}
            \includegraphics[width = \textwidth]{lernarten.png}
        
        \subsection{Formen des Lernen}
        \label{formen des lernen}
            \begin{itemize}
                \item \textbf{Informationsbasiertes Lernen:}
                    \begin{itemize}
                        \item Welche Merkmale sind am informativsten?
                        \item Standardalgorithmen: Entscheidungsbäume
                    \end{itemize}
                \item \textbf{Ähnlichkeitsbasiertes Lernen:}
                    \begin{itemize}
                        \item Welche bekannten Instanzen sind der Unbekannten am ähnlichsten?
                        \item Standardalgorithmus: K-Nächste-Nachbarn
                    \end{itemize}
                \item \textbf{Wahrscheinlichkeitsbasiertes Lernen:}
                    \begin{itemize}
                        \item Was ist die wahrscheinlichste Vorhersage, die wir treffen sollten?
                        \item Standardalgorithmus: Naiver Bayes
                    \end{itemize}
                \item \textbf{Fehlerbasiertes Lernen:}
                    \begin{itemize}
                        \item Welche Parameter müssen angepasst werden, um den Fehler zu verringern?
                        \item Standardalgorithmus: Multiple lineare Regression
                    \end{itemize}
            \end{itemize}

    \section{Übersicht über die Welt der \ac{KI}}
    \label{ml: uebersicht}
        \begin{center}
            \includegraphics[width = .7\textwidth]{übersicht_ki.png}
        \end{center}
        
        \subsection{Einordnung}
        \label{ml: uebersicht: einordnung}
            \includegraphics[width = \textwidth]{übersicht_ki_einordnung.png}

    \section{Aufgaben des \acl{ML}}
    \label{ml: aufgaben}
        Mögliche Aufgaben für die \ac{ML} eingesetzt wird, sind:
        \begin{itemize}
            \item \textbf{Klassifikation}:\\
                \includegraphics[width = .4\textwidth]{Klassifikation.png}
            \item \textbf{Regression:}\\
                \includegraphics[width = .4\textwidth]{regression.png}
            \item \textbf{Transkription:}\\
                Daten werden in einen Text umgeschrieben (z.B. Spracherkennung, Texterkennung)
            \item \textbf{Maschinelle Übersetzung:}\\
                z.B. Deepl
            \item \textbf{Anomalieerkennung}
        \end{itemize}

    \section{Leistungsbewertung}
    \label{ml: leistungsbewertung}
        siehe Zusammenfassung ML

    \section{Generalisierung}
    \label{ml: generalisierung}
        Bei ML-Problemen handelt es sich um \say{ill-posed problems} - also Probleme, die eigentlich gar nicht wirklich gelöst werden sollen -.
        So soll ein Klassifizierer beispielsweise nicht die perfekte Lösung für die Trainingsdaten liefern, sondern lediglich eine \textbf{generalisierte} Lösung erstellen,
        die auch unbekannte Daten gut klassifiziert.\\
        \includegraphics[width = \textwidth]{generalisierung.png}
\pagebreak

    \section{Hypothesenraum}
    \label{ml: hypothesenraum}
        Der Hypothesenraum ist die Menge an Funktionen, die ein \ac{ML}-Algorithmus als mögliche Lösung wählen kann.
        Der Hypothesenraum wird durch die Modellklasse (z.B. linearer Klassifikator) begrenzt.
        Durch die Größe des Hypothesenraums wird die \textbf{Modellkapazität kontrolliert}.

    \section{Fluch der Dimensionalität}
    \label{ml: dimensionalitaet}
        \includegraphics[width = \textwidth]{fluch_der_dimensionalität.png}

    \section{Trainings- und Testdaten}
    \label{ml: trainings- und testdaten}
        Um der Gefahr von Overfitting vorzubeugen ist es sinnvoll den vorhandenen \say{gelabelten} Datensatz aufzuteilen.
        Eine übliche Aufteilung ist 80\% Trainingsdaten und 20\% Testdaten.
        Von den Trainingsdaten werden bei vielen Modellerstellungen noch einmal 20\% für die Validierung während des Trainings abgespalten.
        Bei dem Splitten der Daten muss darauf geachtet werden, dass das Datenverhältnis in den Splits dem Gesamtdatensatz entspricht.
        D.h. z.B. das sortierte Daten vor dem splitten gemischt werden müssen\\
        \begin{center}
            \includegraphics[width = .8\textwidth]{train_test_split.png}
        \end{center}
\pagebreak

        \subsection{N-fold Cross-Validation}
        \label{ml: n-fold cross-validation}
            Um sicherzustellen, dass die Daten in den Trainings- und Validierungs-Splits repräsentativ für den Gesamttrainingsdatensatz sind,
            wird der Gesamttrainingsdatensatz in mehrere \say{Folds} unterteilt.
            Anschließend wird der Algorithmus mehrmals ausgeführt, wobei jeweils andere Folds die Trainings bzw. Validierungsdaten darstellen.
            Die Anzahl der Folds wird über einen Parameter $N$ bestimmt, weshalb dieses Verfahren \say{$N$-Fold Cross-Validation} heißt.\\
            \includegraphics[width = .8\textwidth]{n-fold_cross-validation.png}

    \section{Hyperparameter}
    \label{ml: hyperparameter}
        \say{Hyperparameter} sind Parameter, die das Verhalten des Algorithmus bestimmen.
        Diese Parameter müssen vor Ausführung des Algorithmus festgelegt werden.
        Ein typisches Beispiel für einen Hyperparameter ist die Anzahl der zu erreichenden Cluster.
        Dieser Hyperparameter muss vielen Clustering-Algorithmen übergeben werden.

    \section{Auswahl des \ac{ML}-Algorithmus}
    \label{ml: algorithmus-auswahl}
        \includegraphics[width = \textwidth]{machine-learning-cheet-sheet.png}