forked from TH_General/Template_Summary
Einfache SVMs abgeschlossen
This commit is contained in:
parent
92ff396b36
commit
81998194b8
@ -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
|
||||
|
@ -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}
|
||||
|
@ -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.}
|
||||
|
7
chapters/Mathematische_Grundlagen/Sub-Gradients.tex
Normal file
7
chapters/Mathematische_Grundlagen/Sub-Gradients.tex
Normal file
@ -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)$).
|
BIN
images/SVM.pdf
Normal file
BIN
images/SVM.pdf
Normal file
Binary file not shown.
BIN
images/possible_discriminants.pdf
Normal file
BIN
images/possible_discriminants.pdf
Normal file
Binary file not shown.
BIN
images/svm_point_line_distance.pdf
Normal file
BIN
images/svm_point_line_distance.pdf
Normal file
Binary file not shown.
BIN
images/svm_positive_negative_support.png
Normal file
BIN
images/svm_positive_negative_support.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 41 KiB |
BIN
images/svm_slack-variables.pdf
Normal file
BIN
images/svm_slack-variables.pdf
Normal file
Binary file not shown.
BIN
images/svm_soft_margin.png
Normal file
BIN
images/svm_soft_margin.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
Loading…
x
Reference in New Issue
Block a user