\chapter{\glsfmtfull{SVM}}%
\label{cha:SVM}
\glspl{SVM} sind eine Methode zur binären Klassifikation (\cref{sec:Binary Classification}).
Anders als bei anderen Algorithmen werden die Klassen hierbei nicht mit 0 und 1,
sondern mit $+1$ und $-1$ gelabelt ($y_i\in\{-1,1\}$).
\begin{equation} \label{eq:binary_classification_svm}
    f(\bm x_i) = \begin{cases}
        >0, &\text{ if } y_i=1\\
        <0, &\text{ if } y_i=-1
    \end{cases}
\end{equation}

Meist gibt es unendlich viele möglicher Diskriminanten,
die den gegebenen Datensatz erfolgreich klassifizieren.
Das Ziel ist es mithilfe von Support Vektoren die Diskriminante zu wählen,
sodass auch neue Datenpunkte zuverlässig klassifiziert werden.
\begin{figure}[H]
    \centering
    \begin{minipage}{.48\textwidth}
        \includegraphics[width=\linewidth]{possible_discriminants.pdf}
        \caption{Auszug möglicher Diskriminanten}
        \label{fig:possible_discriminants}
    \end{minipage}
    \hfill
    \begin{minipage}{.48\textwidth}
        \includegraphics[width=\linewidth]{SVM.pdf}
        \caption{Diskriminante mit Support Vektoren}
        \label{SVM}
    \end{minipage}
\end{figure}

\section{Maximum Margin}%
\label{sec:Maximum Margin}
\begin{wrapfigure}{r}{.5\textwidth}
    \vspace*{-20mm}
    \centering
    \includegraphics[width=.8\linewidth]{svm_point_line_distance.pdf}
    \caption{Abstand zwischen einem Punkt und einer Geraden}
    \label{fig:svm_point_line_distance}
    \vspace*{-5mm}
\end{wrapfigure}

Das Ziel bei der Erstellung von Support Vektoren nach dem Maximum Margin Prinzips ist es,
dass der Abstand (\nomf{margin}) zwischen Diskriminante und Datenpunkten maximiert wird.
Der Abstand eines beliebigen Punktes $\bm x_i$ zur untersuchten Gerade $\bm w^T \bm x + b = 0$ lässt sich hierbei durch $r=\frac{\bm w^T \bm x_i + b}{\|\bm w\|}$ bestimmen.

Da $\bm w^T\bm x + b = 0$ und $c(\bm w^T\bm x + b)=0$ für ein konstantes $c$ immer die gleiche Hyper-Ebene aufspannen,
ist es möglich,
$\bm w$ so zu wählen,
dass $\nomeq{margin}=\frac{2}{\|\bm w\|}$ ist.

\begin{wrapfigure}{r}{.5\textwidth}
    \centering
    \includegraphics[width=\linewidth]{svm_positive_negative_support.png}
    \caption{Support Vektoren einer \glsxtrshort{SVM}}
    \label{fig:svm_positive_negative_support}
    \vspace*{-10mm}
\end{wrapfigure}
Zudem lassen sich im gleichen Zug die positiven und negativen Support Vektoren definieren:
\begin{itemize}
    \item positiver Support Vektor: $\bm w^T \bm x_+ + b = +1$
    \item negativer Support Vektor: $\bm w^T \bm x_- + b = +1$
\end{itemize}

\subsection{\glsxtrshort{SVM} Optimization}%
\label{sub:SVM Optimization}
Das Problem ist für das Maximum Margin Verfahren gegeben durch:
\begin{equation} \label{eq:maximum_margin_optimization_problem}
    \argmax_{\bm{w}} \frac{2}{\|\bm w\|}
\end{equation}
Hierbei muss folgende Bedingung erfüllt sein:
\begin{equation} \label{eq:maximum_margin_condition}
    \bm w^T\bm x_i + b \begin{cases}
        \ge+1, &\text{ if }y_i=+1\\
        \le-1, &\text{ if }y_i=-1
    \end{cases} \forall i\in N
\end{equation}
Diese Formel lässt sich auch zu einem quadratischen Optimierungsproblem umstellen:
\begin{equation} \label{eq:maximum_margin_optimization_quadratic}
    \argmin_{\bm w} \|\bm w\|^2,\qquad y_i(\bm w^T\bm x_i + b)\ge 1 \forall i \in N
\end{equation}
Hieraus ergibt sich, dass die folgenden Support Vektoren gesucht sind:
\begin{align} \label{eq:support_vector_optimization}
    \min_{\bm x_+\in\bm X_+}(\bm w^T \bm x_+ + b) &= +1 \\
    \max_{\bm x_-\in\bm X_-}(\bm w^T \bm x_- + b) &= -1 
\end{align}

\section{Soft Max-Margin}%
\label{sec:Soft Max-Margin}
\begin{wrapfigure}{r}{.5\textwidth}
    \vspace*{-15mm}
    \centering
    \includegraphics[width=0.8\linewidth]{svm_soft_margin.png}
    \caption{Max-Margin vs. Soft Max-Margin}
    \label{fig:svm_soft_margin}
\end{wrapfigure}

Da das Max-Margin Verfahren sehr empfindlich auf Ausreißer (oder falsch klassifizierte) Datenpunkte reagiert,
ist es sinnvoll die Stützvektoren auf Basis von mehr als jeweils einem Punkt pro Klasse zu erstellen.
Man spricht hierbei von einem Soft Margin.
Um diesen Effekt zu erhalten wird für jeden Datenpunkt $\bm x_i$ eine \nomf{slack-variable} errechnet.
Hierbei gilt:
\begin{equation} \label{eq:slack variable}
    \nomeq{slack-variable}\ge 0\qquad y_i(\bm w^T\bm x_i + b)\ge 1-\nomeq{slack-variable}
\end{equation}
Die Interpretation der \noms{slack-variable} erfolgt dabei wie folgt:
\begin{itemize}
    \item $0\le\nomeq{slack-variable}\le1$ Der Datenpunkt liegt zwischen Stützvektor und Diskriminante,
        aber noch auf der richtigen Seite (\textbf{margin violation})
    \item $\nomeq{slack-variable}>1$ Der Datenpunkt liegt auf der falschen Seite der Diskriminanten (\textbf{misclassified})
\end{itemize}
\begin{figure}[H]
    \centering
    \includegraphics[width=0.5\textwidth]{svm_slack-variables.pdf}
    \caption{\noms{slack-variable}{n}}
    \label{fig:slack_variables}
\end{figure}

\subsection{Optimization}%
\label{sub:Optimization}
Das Optimierungsproblem für die Soft Max-Margin Methode ist gegeben durch:
\begin{equation} \label{eq:soft_max-margin_optimization}
    \argmin_{\bm w, \bm\xi} \|\bm w\|^2 + C\sum_i^N\nomeq{slack-variable}\qquad y_i(\bm w^T\bm x_i + b)\ge 1-\nomeq{slack-variable}, \nomeq{slack-variable}\ge 0
\end{equation}
Hierbei stellt $C$ einen inversen Regularisierungsfaktor dar.

\subsection{Hinge Loss}%
\label{sub:Hinge Loss}
Die Optimierung kann in ein uneingeschränktes (unconstrained) Problem umgeschrieben werden ({\color{red} Herleitung Vorlesung 06 Seite 21}):
\begin{equation} \label{eq:soft_max-margin_unconstrained}
    \argmin_{\bm w} \underbrace{\|\bm w\|^2}_{\text{regularization}} + \underbrace{C\sum_{i=1}^N \max(0, 1-y_i f(\bm x_i))}_{\text{loss function}}
\end{equation}
Diese Loss Funtion wird als Hinge Loss bezeichnet.
Sie ist zwar konvex,
kann aber nicht abgeleitet werden.
Daher muss das Verfahren des Sub-Gradient Descent verwendet werden.
Hierbei wird statt der Ableitung der Funktion ein beliebiger Sub-Gradient (\cref{cha:Sub-Gradients}) verwendet.
\begin{algorithm}
    \caption{Sub-Gradient Descent}\label{sub-gradient_descent_algorithm}
    \begin{algorithmic}[1]
        \State $\bm{x}_0$ $\gets$ init, $t=0$
        \While{termination condition does not hold}
            \State $\bm{x}_{t+1}=\bm{x}_t-\nomeq{learning_rate}\bm g$, $t=t+1$ ($\bm g$ ist ein beliebiger Sub-Gradient von $f$ an der Stelle $\bm x_t$)
        \EndWhile
    \end{algorithmic}
\end{algorithm}

Im Falle des Hinge Loss bedeutet das:
\begin{equation} \label{eq:hinge_loss_sub-gradient_descent}
    \bm w_{t+1} = \begin{cases}
        \bm w_t - \nomeq{learning_rate}(2\bm w_t - C y_i \bm x_i), &\text{ if } y_i f(\bm x_i)<1 \\
        \bm w_t - \nomeq{learning_rate}2\bm w_t, & \text{ else }
    \end{cases}
\end{equation}

\section{Anwendungsbeispiele}%
\label{sec:Anwendungsbeispiele}
{\color{red} siehe Vorlesung 06 Folien 34 ff.}
