diff --git a/Glossary.tex b/Glossary.tex index 9122fa8..1b4270e 100644 --- a/Glossary.tex +++ b/Glossary.tex @@ -78,6 +78,7 @@ \newacronym{CART}{CART}{Classification an Regression Trees} \newacronym{DNN}{DNN}{Dynamic Neural Network} \newacronym{RBF}{RBF}{Radial Basis Function Kernel} +\newacronym{SVM}{SVM}{Support Vector Machine} %-------------------- %nomenclature @@ -126,6 +127,8 @@ \newnom{kernel_matrix}{Kernel Matrix}{\bm{K}}{} \newnom{kernel_function}{Kernel Function}{k}{} \newnom{kernel_vector}{Kernel Vector}{\bm{k}}{} +\newnom{margin}{Margin}{\rho}{} +\newnom{slack-variable}{Slack-Variable}{\xi_i}{} \shorthandoff{"} \makeglossaries diff --git a/ML_Zusammenfassung.tex b/ML_Zusammenfassung.tex index 0235af4..3cba9c4 100644 --- a/ML_Zusammenfassung.tex +++ b/ML_Zusammenfassung.tex @@ -36,6 +36,7 @@ \input{chapters/Mathematische_Grundlagen/Lineare_Algebra.tex} \input{chapters/Mathematische_Grundlagen/Probability_Theory.tex} \input{chapters/Mathematische_Grundlagen/Kernel_Basics.tex} + \input{chapters/Mathematische_Grundlagen/Sub-Gradients.tex} \part{Classical Supervised Learning} \label{part:Classical Supervised Learning} diff --git a/chapters/Kernel_Methods/Support_Vector_Machines.tex b/chapters/Kernel_Methods/Support_Vector_Machines.tex index 55d0bd6..008c1c9 100644 --- a/chapters/Kernel_Methods/Support_Vector_Machines.tex +++ b/chapters/Kernel_Methods/Support_Vector_Machines.tex @@ -1,3 +1,158 @@ -\chapter{Support Vector Machines}% -\label{cha:Support Vector Machines} +\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.} diff --git a/chapters/Mathematische_Grundlagen/Sub-Gradients.tex b/chapters/Mathematische_Grundlagen/Sub-Gradients.tex new file mode 100644 index 0000000..175ace8 --- /dev/null +++ b/chapters/Mathematische_Grundlagen/Sub-Gradients.tex @@ -0,0 +1,7 @@ +\chapter{Sub-Gradients}% +\label{cha:Sub-Gradients} +Ein Sub-Gradient wird zur Approximation einer nicht differenzierbaren konvexen Funktion verwendet. +Für jede konvexe Funktion $f$ an einer Stelle $\bm x$ kann ein Gradient $\bm g$ gefunden werden, +für den $f(\bm z)\ge f(\bm x) + \bm g^T(\bm z - \bm x)$ gilt +(in anderen Worten: Man kann eine lineare Funktion bilden, die immer unterhalb der konvexen Funktion liegt). +Für Differenzierbare Funktionen ist der Gradient das gleiche wie die Ableitung ($\bm g = \nabla f(\bm x)$). diff --git a/images/SVM.pdf b/images/SVM.pdf new file mode 100644 index 0000000..ce7247f Binary files /dev/null and b/images/SVM.pdf differ diff --git a/images/possible_discriminants.pdf b/images/possible_discriminants.pdf new file mode 100644 index 0000000..49ca90a Binary files /dev/null and b/images/possible_discriminants.pdf differ diff --git a/images/svm_point_line_distance.pdf b/images/svm_point_line_distance.pdf new file mode 100644 index 0000000..5b40808 Binary files /dev/null and b/images/svm_point_line_distance.pdf differ diff --git a/images/svm_positive_negative_support.png b/images/svm_positive_negative_support.png new file mode 100644 index 0000000..c820762 Binary files /dev/null and b/images/svm_positive_negative_support.png differ diff --git a/images/svm_slack-variables.pdf b/images/svm_slack-variables.pdf new file mode 100644 index 0000000..1b115f4 Binary files /dev/null and b/images/svm_slack-variables.pdf differ diff --git a/images/svm_soft_margin.png b/images/svm_soft_margin.png new file mode 100644 index 0000000..261bb47 Binary files /dev/null and b/images/svm_soft_margin.png differ