diff --git a/Glossary.tex b/Glossary.tex index 0ad6c1a..c001d0d 100644 --- a/Glossary.tex +++ b/Glossary.tex @@ -68,6 +68,7 @@ \newacronym{CNN}{CNN}{Convolutional Neural Network} \newacronym{RNN}{RNN}{Recurrent Neural Network} \newacronym{SSE}{SSE}{Summed Squared Error} +\newacronym{SSD}{SSD}{Sum of Squared Distances} \newacronym{MSE}{MSE}{Mean Squared Error} \newacronym{FRM}{FRM}{\gls{full_rank_matrix}} \newacronym{MLE}{MLE}{Maximum Likelihood Estimation} @@ -120,6 +121,7 @@ % }}} Nomencalture Commands % \newnom{summed_squared_error}{\gls{SSE}}{\text{\glsxtrshort{SSE}}}{\glsxtrfull{SSE}} +\newnom{sum_of_squared_distances}{\gls{SSD}}{\text{\glsxtrshort{SSD}}}{\glsxtrfull{SSD}} \newnom{mean_squared_error}{\gls{MSE}}{\text{\glsxtrshort{MSE}}}{\glsxtrfull{MSE}} \newnom{residual_sum_squares}{\gls{RSS}}{\text{\glsxtrshort{RSS}}}{\glsxtrfull{RSS}} \newnom{gaussian_noise}{Gausches Rauschen}{\epsilon}{zufällige (normalverteilte) Abweichung} diff --git a/chapters/Classical_Unsupervised_Learning/Clustering.tex b/chapters/Classical_Unsupervised_Learning/Clustering.tex index 96ed888..7069e43 100644 --- a/chapters/Classical_Unsupervised_Learning/Clustering.tex +++ b/chapters/Classical_Unsupervised_Learning/Clustering.tex @@ -1,3 +1,107 @@ \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 Lagorithm}% +\label{sec:K-Means Lagorithm} +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:} +\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} diff --git a/images/k-means++.png b/images/k-means++.png new file mode 100644 index 0000000..c920525 Binary files /dev/null and b/images/k-means++.png differ diff --git a/images/k-means_1.png b/images/k-means_1.png new file mode 100644 index 0000000..a455286 Binary files /dev/null and b/images/k-means_1.png differ diff --git a/images/k-means_2.png b/images/k-means_2.png new file mode 100644 index 0000000..43612ae Binary files /dev/null and b/images/k-means_2.png differ diff --git a/images/k-means_3.png b/images/k-means_3.png new file mode 100644 index 0000000..dc40b3e Binary files /dev/null and b/images/k-means_3.png differ diff --git a/images/k-means_4.png b/images/k-means_4.png new file mode 100644 index 0000000..308dbf1 Binary files /dev/null and b/images/k-means_4.png differ diff --git a/images/k-means_5.png b/images/k-means_5.png new file mode 100644 index 0000000..267f9f3 Binary files /dev/null and b/images/k-means_5.png differ diff --git a/images/k-means_6.png b/images/k-means_6.png new file mode 100644 index 0000000..9c8c3e2 Binary files /dev/null and b/images/k-means_6.png differ diff --git a/images/knee-finding_method.png b/images/knee-finding_method.png new file mode 100644 index 0000000..4966e5c Binary files /dev/null and b/images/knee-finding_method.png differ