\chapter{Trees and Forests}%
\label{cha:Trees and Forests}
\section{\glsxtrfull{CART}}%
\label{sec:CART}

\begin{wrapfigure}[8]{r}{.5\textwidth}
    \vspace*{-10mm}
    \includegraphics[width = .9\linewidth]{tree_over_underfitting.png}
\end{wrapfigure}

Ein Binärbaum,
der mithilfe eines gegebenen Datensatzes erstellt wurde,
kann sowohl in Regressions"~ als auch in Klassifikationsproblemen zur Approximation genutzt werden.
Hierbei ist es wichtig,
die Richtige Anzahl an Datenpunkten für die jeweilige Verästelung zu finden,
da Bäume,
die zu weit verästeln die Testdaten overfitten
und Bäume,
die nicht weit genug verästeln underfitten.
\vspace{15mm}

\noindent
\begin{tabularx}{\textwidth}{|X|X|}
    \hline
    \textbf{Advantages} & \textbf{Disadvantages}\\
    \hline
    \vspace{1mm}
    \begin{minipage}{.48 \linewidth}
        \begin{itemize}[leftmargin=*]
            \item Applicable to both regression and classification problems
            \item Handle categorical predictors naturally
            \item Computationally simple and quick to fit, even for large problems
            \item No formal distributional assumptions
            \item Can handle highly non-linear interactions and classification boundaries
            \item Automatic variable selection
            \item Very easy to interpret if the tree is small
        \end{itemize} 
    \end{minipage} \vspace{1mm}&
    \vspace{1mm}
    \begin{minipage}{.48 \linewidth}
        \begin{itemize}[leftmargin=*]
            \item Accuracy - current methods, such as NNs, support vector machines and ensemble classifiers often have much lower error rates than CART
            \item nstability – if we change the data a little, the tree picture can change a lot. So the interpretation is not as straightforward as it appears
        \end{itemize} 
    \end{minipage} \vspace{1mm}\\
    \hline
\end{tabularx}

\subsection{Splitting Criterion}%
\label{sub:Splitting Criterion}
Die Wahl des Wertes,
an dem der Baum geteilt wird erfolgt abhängig von den Ziel des Baumes
\subsubsection{Regression}%
\label{ssub:Regression}
Um bei der Regression eine Spaltungsgrenze zu finden wird die Spaltung mit dem minimalen \gls{RSS} gesucht
\begin{equation} \label{eq:RSS}
    \nomeq{residual_sum_squares} = \sum_{\text{left}}(y_i - \overline{y}_L)^2 + \sum_{\text{right}}(y_i - \overline{y}_R)^2
\end{equation}
Hierbei sind $\overline{y}_L$ und $\overline{y}_R$ jeweils der Durchschnittswert der Elemente im linken bzw. rechten Subtree.
Alternativ kann man die Formel auch mit der Anzahl $N_L$ bzw. $N_R$ und den Varianzen $\nomeq{variance}_L$ bzw. $\nomeq{variance}_R$ der beiden Subtrees aufstellen
\begin{equation} \label{eq:RSS_with_variance}
    \nomeq{residual_sum_squares} = N_L\nomeq{variance}_L + N_R\nomeq{variance}_R
\end{equation}

\subsubsection{Classification}%
\label{ssub:Classification}
Das Ziel bei der Wahl der Spaltungsgrenzen für die Klassifikation ist die Minimierung der Entropie $H$ in den einzelnen Subtrees.
\begin{equation} \label{eq:classification_splitting_score}
    \text{score} = N_L H(p_L) + N_R H(p_R)
\end{equation}
Hierbei ist die Entropie $H$ ein Maß dafür,
wie einheitlich ein Split die Klassen trennt.
\begin{equation} \label{eq:entropy}
    H(p_L) = -\sum_k p_L(k)\log p_L(k)
\end{equation}
In dieser Formel gibt $p_L(k)$ an,
welchen Anteil die Klasse $k$ auf der linken Seite des Splits hat.

\subsection{Beispiele}%
\label{sub:Beispiele}
\subsubsection{Classification Tree}%
\label{ssub:Classification Tree}
\includegraphics[width=.6\textwidth]{classification_tree.png}
{\color{red} Herleitung Vorlesung 04 Seite 24-31}

\subsubsection{Regression Tree}%
\label{ssub:Regression Tree}
{
\begin{wrapfigure}{r}{.7\textwidth}
    \includegraphics[width=\linewidth]{regression_tree.png}
\end{wrapfigure}
Predict (log) prostate specific antigen from
\begin{itemize}
    \item Log cancer volum
    \item Log prostate weight
\end{itemize}
}
\vspace*{30mm}
{\color{red} Herleitung Vorlesung 04 Seite 32-36}

\section{Random Forests}%
\label{sec:Random Forests}
Aufgrund der Nachteile von \glspl{CART} wird bei modernen Tree-Based-Algorithmen meist ein Forest verwendet.
Hierbei werden mehrere Bäume auf zufällig gewählten Teilmengen des Trainingsdatensatzes trainiert.
Die Methode der Teilmengenbildung wird als Bagging (Bootstrap Aggregation) bezeichnet.
Um einen neuen Datenpunkt zu bewerten wird der Durchschnitt der Ausgaben der Trees innerhalb des Forest genommen.
Hierbei behält der Algorithmus fast alle Vorteile eines einzelnen \gls{CART} (alle in \cref{sec:CART} gelisteten, außer: Very easy to interpret if the tree is small)
und hat keines der Nachteile.
In Bezug auf die Accuracy können Random Forests mit allen bekannten Machine Learning Algorithmen (vor \glsxtrshort{DNN}) mithalten
und sind zudem nicht leicht durch kleine Veränderungen in den Eingabedaten zu beeinflussen.

Diese Art Algorithmus wird unter anderem in der Microsoft Kinect verwendet
\begin{figure}[H]
    \centering
    \includegraphics[width=0.6\textwidth]{kinect.png}
    \caption{Microsoft Kinect Bildverarbeitung}
    \label{fig:kinect}
\end{figure}

