\chapter{Model Selection}%
\label{cha:Model Selection}
Für jedes Problem existiert eine Vielzahl von Lösungsansätzen.
Für jedes Model muss entschieden werden,
wie komplex dieses aufgebaut werden soll.
Die einstellbaren Parameter hängen hierbei vom Algorithmus ab:
\begin{itemize}
    \item \textbf{Linear Regression:} number of features, regularization coefficient
    \item \textbf{Decision Trees:} maximum depth, number of leaves
    \item \textbf{Neural Networks:} number of layers, number of neurons
    \item \textbf{Support Vector Machine:} which features, regularization
    \item \textbf{Gaussian Processes:} kernel bandwith
\end{itemize}
Die Auswahl des passenden Algorithmus' mit zugehörigen Parametern wird als Model Selection Problem bezeichnet.
Es ist eines der fundamentalsten Probleme des Machine Learnings.

\section{True Risk vs. Empirical Risk}%
\label{sec:True Risk vs. Empirical Risk}
\includegraphics[width=.7\textwidth]{true_vs_empirical_risk.png}

\subsection{Bias"~Variance Decomposition}%
\label{sub:Bias"~Variance Decomposition}
Expected Loss = True Risk\\
\includegraphics[width=.9\textwidth]{bias-variance_decomposition.png}

\subsubsection{Understanding True Risk}%
\label{ssub:Understanding True Risk}
Um den Zusammenhang von Bias"~Variance Decomposition und True Risk zu verstehen,
wird die Zerteilung im folgenden am Beispiel der Regression gezeigt.
\begin{itemize}
    \item Die Eingangsdaten ergeben sich aus der realen Basisfunktion $f(\bm{x})$ und der zufälligen Störung $\epsilon$
        $$y=f(\bm{x}) + \epsilon,\qquad\epsilon\sim\nomeq{gaussian_distribution}(0,\nomeq{variance})$$
    \item Der Expected Loss $R(\hat{f}_{D_n})$ der auf den Daten $D_n$ trainierten Funktion $\hat{f}_{D_n}$ ist gegeben durch:
        \begin{align} \label{eq:bias-variance_decomposition}
            R(\hat{f}_{D_n})&=\mathbb{E}_{D_n}\left[\mathbb{E}_{x,y}\left[(\hat{f}_{D_n}(\bm{x})-y)^2\right]\right]\\
                            &=\underbrace{\mathbb{E}_{D_n}\left[\mathbb{E}_{x,y}\left[(\hat{f}_{D_n}(\bm{x})-\hat{f}_*(\bm x))^2\right]\right]}_{\text{Variance}} 
                            + \underbrace{\mathbb{E}_{\bm x}\left[(\hat{f}_{D_n}(\bm{x})-\hat{f}_*(\bm x))^2\right]}_{\text{Bias}^2} + \underbrace{\nomeq{variance}}_{\text{Noise}}
        \end{align}
        Hierbei ist $\hat{f}_*(\bm x) = \mathbb{E}_{D_n}[\hat{f}_{D_n}(\bm x)]$ der durchschnittliche Erwartungswert über alle möglichen Datensätze der Größe $n$.
        Dies entspricht der bestmöglichen Approximation,
        die mit der verwendeten Funktion $f$ möglich ist.
\end{itemize}

\section{Over"~ vs. Underfitting}%
\label{sec:Over- vs. Underfitting}
\includegraphics[width=.9\textwidth]{over_vs_underfitting.png}

\section{Bias"~Variance Trade"=off}%
\label{sec:Bias-Variance Trade-off}
\includegraphics[width=.9\textwidth]{bias-variance_trade-off.png}

\section{Evaluation Methods}%
\label{sec:Evaluation Methods}
Wie in \cref{sec:Over- vs. Underfitting} und \cref{sec:True Risk vs. Empirical Risk} gezeigt wurde,
ist die Empirical Risk kein guter Maßstab für die Bewertung von Modellen.
Daher werden andere Methoden benötigt um Modelle zu bewerten.

\subsection{Hold"=out Method}%
\label{sub:Hold-out Method}
Bei der Hold"=out Methode werden die gegebenen Datenpunkte in einen Trainings"~ und einen Validierungsdatensatz unterteilt.
Letzterer Wird dafür genutzt,
die trainierten Modelle zu bewerten.
\begin{mybox}
   \textbf{\large Hold"=out Procedure}\\
   gegeben: ein Datensatz $D=\{(\bm{x}_i,y_i)\}_{i=1}^n$ bestehend aus $n$ Datenpunkten
   \begin{enumerate}
       \item Datensatz in einen Trainingsdatensatz $D_T$ und einen Validierungsdatensatz $D_V$ aufsplitten:
           $$D_T = \{(\bm{x}_i,y_i)\}_{i=1}^m\qquad D_V=\{(\bm{x}_i,y_i)\}_{i=m+1}^n$$
       \item $\hat{f}_{D_T}$ für jede Modell-Klasse $M$ ermitteln
       \item $hat{f}_{D_T}$ auf dem Validierungsdatensatz evaluieren. z.B.:
           $$\nomeq{mean_squared_error}(D_V,\hat{f}_{D_T} = \frac{1}{n-m}\sum_{i=m+1}^n (\hat{f}_{D_T}(\bm{x}_i) - y_i)^2$$
       \item Modell mit dem besten Validation Loss wählen
   \end{enumerate}
\end{mybox}
Diese Methode hat allerdings zwei Nachteile:
\begin{enumerate}
    \item ein Teil der Daten wird nicht genutzt (nur zur Validierung)
    \item \say{unglückliche} Trainings"~Valiedierung Aufteilung der Daten kann das Ergebnis verfälschen (z.B. bei sortierten Datenpunkten)
\end{enumerate}

\subsection{Cross Validation}%
\label{sub:Cross Validation}
Um die Nachteile der \dref{sub:Hold-out Method} zu umgehen wird meist die Cross Validation verwendet
\begin{mybox}
    \begin{wrapfigure}{r}{.5\linewidth}
        \centering
        \includegraphics[width=.9\linewidth]{cross_validation.png}
        \caption{Cross Validation}
        \label{fig:cross_validation}
    \end{wrapfigure}

   \textbf{\large Cross Validation Procedure}\\
   gegeben: ein Datensatz $D=\{(\bm{x}_i,y_i)\}_{i=1}^n$ bestehend aus $n$ Datenpunkten
   \begin{enumerate}
       \item Datensatz in $k$ Partitionen unterteilen
           $$D_1 = \{(\bm{x}_i,y_i)\}_{i=1}^{\frac{n}{k}}, D_2=\{(\bm{x}_i,y_i)\}_{i=\frac{n}{k}+1}^{2 \frac{n}{k}}, \dots$$
       \item Wiederholtes Anwenden der \nameref{sub:Hold-out Method} auf den Datensatz,
           wobei immer eine andere Partition als Validierungsdatensatz dient
   \end{enumerate}
\end{mybox}

\subsubsection{Sonderformen der Cross Validation}%
\label{ssub:Sonderformen der Cross Validation}
    \paragraph{\texorpdfstring{\glsxtrfull{LLO} Cross Validation}{\glsfmtfull{LLO} Cross Validation}}%
    \label{par:LLO Cross Validation}
    Sonderform, bei der $k=n$,
    wodurch es genau so viele Durchläufe wie Datenpunkte gibt
    und immer ein Datenpunkt zur Validierung genutzt wird.

    \paragraph{Random sub-sampling}%
    \label{par:Random sub-sampling}
    Sonderform, bei der eine Zufällige Teilmenge $\alpha\cdot n$ ($0<\alpha<1$) aus den gegebenen Daten als Validierungsdatensatz verwendet wird.
    Oft wird dieses Verfahren mehrmals in folge durchgeführt.

\section{Regularization Techniques}%
\label{sec:Regularization Techniques}
Wie bereits in \cref{sec:Regularization of the Linear Regression} und \cref{ssub:Regularization of the Logistic Regression} gezeigt,
kann eine Regularisierung genutzt werden,
um Overfitting zu vermeiden.
Hierbei ist es das Ziel die Komplexität so gering wie möglich zu halten.
\begin{mybox}
   \textbf{\large Occam's Razor} \\
   \say{Numquam ponenda est pluralitas sine necessitate} - William of Occam (ca. 1300)\\
   Von mehreren möglichen hinreichenden Erklärungen für ein und denselben Sachverhalt ist die einfachste Theorie allen anderen vorzuziehen.
\end{mybox}
Um dies zu erreichen wird der Loss Function,
welche für das Lernen benutzt wird eine Penalty für hohe Komplexität hinzugefügt.
\begin{figure}[H]
    \vspace*{-10mm}
    \centering
    \includegraphics[width=0.9\textwidth]{regularization_penalty.pdf}
    \caption{Regularization Penalties}
    \label{fig:regularization_penalty}
\end{figure}

\subsection{Early Stopping}%
\label{sub:Early Stopping}
Das Early Stopping ist eine Regulaisierungstechnik,
bei der die Optimierung des Algorithmus unterbrochen wird,
sobald sich der Validation Loss über eine festgelegte Anzahl von Durchläufen des Algorithmus nicht verbessert hat.
Hierdurch wird vermieden,
dass Modell unnötig komplex zu machen.

\section{Robustness to Noise}%
\label{sec:Robustness to Noise}
Um das Traininierte Modell Robuster gegenüber Störeinflüssen (Noise) zu machen,
ist es sinnvoll die Daten,
auf denen das Modell trainiert wird künstlich zu stören.
Man spricht hierbei von Data Augmentation.
\begin{figure}[H]
    \begin{subfigure}[t]{.5\textwidth}
        \centering
        \includegraphics[width=\linewidth]{artificial_noise1.png}
        \caption{mögl. Diskriminanten ohne künstlichen Noise}
        \label{fig:regression_without_artifical_noise}
    \end{subfigure}
    \begin{subfigure}[t]{.5\textwidth}
        \centering
        \includegraphics[width=\linewidth]{artificial_noise2.png}
        \caption{mögl. Diskriminanten mit künstlichen Noise}
        \label{fig:regression_with_artifical_noise}
    \end{subfigure}
    \caption{Einfluss von künstlichen Noise}
    \label{fig:artificial_noise}
\end{figure}

