\chapter{Clustering}%
\label{cha:Clustering}
Beim Clustering geht es darum Datenpunkte auf Basis der Ähnlichkeit ihrer Eigenschaften zu gruppieren.
Ein Problem des Clusterings besteht allerdings darin,
dass die Auswahl der Ähnlichkeit sehr subjektiv sein kann.
Das Ziel ist es ein Ähnlichkeitsmaß zu finden,
dass die Datenpunkte in die vom Anwender gewünschten Gruppen clustert.

\section{K-Means Algorithm}%
\label{sec:K-Means Algorithm}
Das Ziel des K-Means Algorithmus ist es eine vorgegebene Anzahl an Clustern zu finden.
Das Ziel ist es die \gls{SSD} zu reduzieren.
\begin{equation} \label{eq:SSD}
    \nomeq{sum_of_squared_distances}(C,\mathcal D) = \sum_{i=1}^n d(\bm x_i,c(\bm x_i))^2
\end{equation}
\begin{itemize}
    \item $\mathcal D = \{\bm x_1,\dots,\bm x_n\}$: die gegebenen Datenpunkte
    \item $C = \{\bm c_1,\dots,\bm c_k\}$: die aktuellen Mittelpunkte der Cluster
    \item $c(\bm x)$: gibt den Cluster"~Mittelpunkt $\bm c\in C$ zurück, welcher $\bm x$ am nächsten liegt
    \item $d(\bm x,\bm c)$: Abstand zwischen $\bm c$ und $\bm x$
\end{itemize}
\begin{mybox}
   \textbf{\Large K-Means Algorithmus} \\
   \begin{enumerate}
       \item beliebige Cluster"~Mittelpunkte $K$ wählen
       \item jeden Datenpunkt zu dem nächstgelegenen Cluster"~Mittelpunkt zuweisen\\
           $z_n = \argmin_k\|\bm c_k - \bm x_n\|^2$
       \item jeder Cluster"~Mittelpunkt wird an den Mittelpunkt der ihm zugeteilten Datenpunkte verschoben\\
           $\bm c_k = \frac{1}{|X_k|}\sum_{\bm x_i\in X_k}\bm x_i,\quad X_k = \{\bm x_n|z_n=k\}$
       \item Durchlauf ab Schritt 2 wiederholen, bis sich nichts mehr ändert
   \end{enumerate}
\end{mybox}
\begin{figure}[H]
    \centering
    \begin{subfigure}[t]{.3\textwidth}
        \centering
        \includegraphics[width=\linewidth]{k-means_1.png}
        \caption{Schritt 1: Initialisierung}
        \label{fig:k-means_1}
    \end{subfigure}\hfill
    \begin{subfigure}[t]{.3\textwidth}
        \centering
        \includegraphics[width=\linewidth]{k-means_2.png}
        \caption{Schritt 2: Zuordnung der Datenpunkte}
        \label{fig:k-means_2}
    \end{subfigure}\hfill
    \begin{subfigure}[t]{.3\textwidth}
        \centering
        \includegraphics[width=\linewidth]{k-means_3.png}
        \caption{Schritt 3: Verschiebung der Cluster"~Mittelpunkte}
        \label{fig:k-means_3}
    \end{subfigure}
    \begin{subfigure}[t]{.3\textwidth}
        \centering
        \includegraphics[width=\linewidth]{k-means_4.png}
        \caption{Schritt 2: Zuordnung der Datenpunkte}
        \label{fig:k-means_4}
    \end{subfigure}\hfill
    \begin{subfigure}[t]{.3\textwidth}
        \centering
        \includegraphics[width=\linewidth]{k-means_5.png}
        \caption{Schritt 3: Verschiebung der Cluster"~Mittelpunkte}
        \label{fig:k-means_5}
    \end{subfigure}\hfill
    \begin{subfigure}[t]{.3\textwidth}
        \centering
        \includegraphics[width=\linewidth]{k-means_6.png}
        \caption{Schritt 2: Zuordnung der Datenpunkte\\ Schritt 3: keine Änderung nötig $\Rightarrow$ Beendigung des Algorithmus'}
        \label{fig:k-means_6}
    \end{subfigure}
    
    \caption{K-Means Algorithmus in Aktion}
    \label{fig:k-means_algorithm_in_action}
\end{figure}

\subsection{Konvergenz}%
\label{sub:K-Means:Konvergenz}
Es kann gezeigt werden,
dass K-Means konvergiert ({\color{red} Gesamtfoliensatz Folie 683}).
Allerdings wird nur ein lokales Optimum gefunden.
Ob dieses dem globalen Optimum entspricht ist vor allem von der Initialisierung der Cluster"~ Mittelpunkte abhängig.
Die Suche nach dem globalen Optimum stellt allerdings ein NP-hartes Problem dar.

\subsection{K-Means++}%
\label{sub:K-Means++}
Besondere Form des K-Means Algorithmus',
bei dem der erste Cluster"~Mittelpunkt zufällig gewählt wird
und alle darauffolgenden Cluster"~Mittelpunkte auf die Datenpunkte gelegt werden,
die am weitesten von allen bisher festgelegten Cluster"~Mittelpunkten entfernt liegt.
\begin{equation} \label{eq:k-means++_centroid_selection}
    \text{let} n = \argmax_{i\in\{1,\dots,n\}}\left( \min_{k'\in\{1,\dots,k-1\}} \| \bm x_i-\bm c'_k \|^2 \right),\qquad \bm c_k = \bm x_i
\end{equation}

\subsection{Number of Clusters}%
\label{sub:Number of Clusters}
Die Wahl der richtigen Clusterzahl ist das Kernproblem des K-Means Clustering.
Eine Methode zur Auswahl der Clusterzahl ist die \say{Knee-finding} Methode.
Hierbei wird der K-Means Algorithmus für verschiedene Clusterzahlen durchgeführt
und analysiert,
ab welcher Anzahl sich die Gesamtsumme der \glspl{SSD} nicht mehr signifikant ändert.
\begin{figure}[H]
    \centering
    \includegraphics[width=0.6\textwidth]{knee-finding_method.png}
    \caption{Knee-finding Methode}
    \label{fig:knee-finding_method}
\end{figure}

