\chapter{Kernel Basics}%
\label{cha:Kernel Basics}
\section{Was ist ein Kernel?}%
\label{sec:Was ist ein Kernel?}
Ein Kernel definiert eine Vergleichsfunktion $\nomeq{kernel_function}:\mathcal X \times \mathcal X \rightarrow \mathbb{R}$,
welche eine Aussage über die Ähnlichkeit von Datensätzen $x\in\mathcal{X}$ gibt.
Die Ausgabewerte lassen sich hierbei in einer Matrix \nomsym{kernel_matrix} - der sogenannten \noms{kernel_matrix} - darstellen.
Beispielsweise lässt sich ein Datensatz $\mathcal S = \{\bm x_1,\dots,\bm x_n\}$ durch eine $n\times n$ Matrix repräsentieren,
bei der $\nomeq{kernel_matrix}_{ij} = \nomeq{kernel_function}(\bm x_i, \bm x_j)$ gilt.

Die Matrix \nomsym{kernel_matrix} hat dabei folgende Eigenschaften:
\begin{itemize}
    \item \nomsym{kernel_matrix} ist immer eine $n\times n$-Matrix
    \item Die Wahl der Funktion \nomsym{kernel_function} ist unabhängig vom Algorithmus,
        der den Kernel verwendet
    \item schlechte Skalierung für größere Datensätze $O(n)$ für die Errechnung und Speicherung von \nomsym{kernel_matrix}
\end{itemize}

\section{Positive Definite Kernels}%
\label{sec:Positive Definite Kernels}
Eine positiv definite \nomf{kernel_function} ist eine Funktion, die 
\begin{enumerate}
    \item Symmetrisch ist:
        $$ \forall \bm x,\bm x': \nomeq{kernel_function}(\bm x, \bm x') = \nomeq{kernel_function}(\bm x', \bm x) $$
    \item deren \nomf{kernel_matrix} immer positiv definit (symmetrisch und nur positive Eigenwerte) ist:
        $$ \bm a^T\nomeq{kernel_matrix}\bm a = \sum_{i=1}^n \sum_{j=1}^n a_i a_j \nomeq{kernel_function}(\bm x_i, \bm x_j)\ge 0,\qquad \forall\bm a, \forall S=\{\bm x_1,\dots,\bm x_n\}$$
\end{enumerate}

\subsection{Example: Linear Kernel}%
\label{sub:Example: Linear Kernel}
Der lineare Kernel ist der einfachste Kernel für Vektoren.
Die \nomf{kernel_function} definiert einfach nur das skalare Produkt (siehe \cref{sec:Vektoren})
\begin{equation} \label{eq:linear_kernel_function}
    \nomeq{kernel_function}(\bm x,\bm x') = \langle \bm x,\bm x' \rangle
\end{equation}
Für diesen Kernel ist offensichtlich,
dass er immer positiv definit ist:
\begin{equation} \label{eq:linear_kernel_positive_definite}
    \sum_{i=1}^n \sum_{j=1}^n a_i a_j \langle \bm x_j, \bm x_j \rangle = \| \sum_i a_i \bm x_i \|^2 \ge 0
\end{equation}

\subsubsection{Kernel in Feature Space}%
\label{ssub:Kernel in Feature Space}
Für eine Feature Function $\phi:\mathcal X\rightarrow\mathbb{R}^d$ kann eine \nomf{kernel_function} erstellt werden,
indem das skalare Produkt der Feature Function gebildet wird:
\begin{equation} \label{eq:linear_kernel_feature_function}
    k(\bm x,\bm x') = \langle\phi(\bm x),\phi(\bm x')\rangle
\end{equation}
Auch hier kann gezeigt werden,
dass der Kernel positiv definit ist.
Mehr sogar.
Das Theorem von Aransjan aus dem Jahr 1950 besagt,
dass es für jeden positiv definiten Kernel einen Feature Space $\mathcal H$ gibt.

\subsection{Polynomial Kernel}%
\label{sub:Polynomial Kernel}
\begin{itemize}
    \item Polynomieller Kernel vom Grad 1: Linear Kernel (\cref{sub:Example: Linear Kernel})
    \item Polynomieller Kernel vom Grad 2: $\phi(\bm x) = [x_1^2, \sqrt{2}x_1 x_2, x_2^2]$ für $\bm x = [x_1,x_2]^T$
        \begin{align} \label{eq:polynomial_kernel_2}
            \nomeq{kernel_function}(\bm x,\bm x') &= x_1^2 {x'}_1^2 + 2x_1 x_2 x'_1 x'_2 + x_2^2 {x'}_2^2\\
                            &= (x_1 x'_1 + x_2 x'_2)^2 x_1 x_2\\
                            &= \langle\bm x,\bm x'\rangle^2
        \end{align}
    \item Polynomieller Kernel vom Grad $d$:
        \begin{equation} \label{eq:polynomial_kernel_d}
            \nomeq{kernel_function}(\bm x, \bm x') = \langle \bm x,\bm x'\rangle^d 
        \end{equation}
\end{itemize}

\subsection{Gaussian Kernel}%
\label{sub:Gaussian Kernel}
Der Gaussian Kernel wird auch als \gls{RBF} oder Squared Expoential Kernel bezeichnet
und ist die am häufigsten genutzte Kernel Methode
\begin{equation} \label{eq:gaussian_kernel}
    \nomeq{kernel_function}(\bm x,\bm y) = \exp\left(-\frac{\|\bm x - \bm y\|^2}{2\nomeq{variance}}\right)
\end{equation}
{\color{red}Beweis für die positive Definitheit in Vorlesung 04 Seite 14 f.}

\section{Kernel Trick}%
\label{sec:Kernel Trick}
Der eigentliche Grund für die Nutzung von Kernels wird als Kernel Trick bezeichnet.
Durch die Verwendung eines entsprechenden Kernels ist es möglich einen Datenpunkt $x$ auf einen unendlich großen Feature Space (z.B. einen Function Space) zu mappen,
ohne dabei den eigentlichen Feature Vector errechnen zu müssen.
Es muss lediglich möglich sein,
das skalare Produkt von zwei Feature Vektoren zu bestimmen.
Dies ermöglicht es viele Algorithmen (z.B. \nameref{cha:Linear Classification} oder \nameref{cha:Linear Regression}) effizienter durchzuführen.


\section{Kernel Identities}%
\label{sec:Kernel Identities}
\begin{itemize}
    \item $\bm\Phi_X = \begin{bmatrix} \bm\phi(\bm x_1)^T\\\vdots\\\bm\phi(\bm x_N)^T \end{bmatrix} \in \mathbb{R}^{N\times d}$
    \item $\nomeq{kernel_matrix} = \bm\Phi_X\bm\Phi_X^T$
    \item $\nomeq{kernel_vector}(\bm x^*) = \begin{bmatrix} \nomeq{kernel_function}(\bm x_1,\bm x^*) \\\vdots\\\nomeq{kernel_function}(\bm x_N,\bm x^*)  \end{bmatrix}
        = \begin{bmatrix} \bm\phi(\bm x_1)^T\bm\phi(x^*)\\\vdots\\\bm\phi(\bm x_N)^T \bm\phi(x^*) \end{bmatrix} = \bm\Phi_X\bm\phi(\bm x^*)$
\end{itemize}
