nicht-lineare SVMs hinzugefügt

This commit is contained in:
paul-loedige 2021-01-27 15:45:05 +01:00
parent 51a4e336cd
commit af1ed928ea
11 changed files with 65 additions and 4 deletions

View File

@ -4,6 +4,7 @@
\begin{acronym}
\acro{vc-dimension} [VC-Dimension] {Vapnik-Chervonenkis-Dimension}
\acro{srm} [SRM] {Structural Risk Minimisation}
\acro{svm} [SVM] {Support Vector Machines}
\acro{svm} [SVM] {Support Vector Machine}
\acro{kkt} [KKT] {Karush-Kuhn-Tucker}
\acro{rbf} [RBF] {Radial Basis Function}
\end{acronym}

View File

@ -5,6 +5,8 @@
top=35mm,right=20mm,bottom=30mm,left=20mm,
headheight=25mm
]{geometry}
\setcounter{secnumdepth}{3}
\setcounter{tocdepth}{3}
\input{Packages.tex}
\input{Style.tex}

View File

@ -14,7 +14,7 @@
\paragraph{Features}
Ein \say{Feature} bezeichnet die \say{Signatur} eines Pattern.
Das Feature errechnet sich aus den Eigenschaften des jeweiligen Pattern.
\paragraph{Feature space}
\paragraph{Feature space}\label{feature space}
Der \say{Feature space} ist ein mehrdimensionaler mathematisch definierter Raum.
Die Dimension dieses Raums wird durch die Anzahl der Features definiert.
Mithilfe des Raumes lassen sich die einzelnen Pattern zueinander in Relation setzen.

View File

@ -1,4 +1,4 @@
\chapter{Occam's Razor}
\chapter{Occam's Razor}\label{occam's razor}
Ein sehr komplexes Modell kann zwar das optimale Ergebnis für einen Trainingsdatensatz bilden,
stellt aber zumeist keine gute Lösung für das allgemeine Problem dar.
Meist ist es sinnvoll ein möglichst einfaches Modell zu entwickeln, welches die Trainingsdaten \say{gut} klassifiziert.

View File

@ -72,4 +72,62 @@
Jeder Datenpunkt, für den $\alpha_i>0$ gilt, ist ein \say{support vector}.
\subsubsection{Sparsity}
\acs{svm}s sind \say{sparse learning machines}, da Sie meist nur von wenigen Support Vektoren abhängen.
\acs{svm}s sind \say{sparse learning machines}, da Sie meist nur von wenigen Support Vektoren abhängen.
\section{nicht-lineare \acl{svm}}\label{non linear svm}
\acs{svm}s können auch dafür benutzt werden, nicht-linear-trennbare Cluster zu teilen.
Hierfür müssen einige mathematischen Tricks angewandt werden.
\subsection{Dual Representation **}
Die bekannte Schreibweise für den Lagrange-Ansatz
\begin{align*}
L_\alpha(\bm{w},w_0,\alpha_i) &= \frac{1}{2}||\bm{w}||^2 - \sum^N_{i=1}\alpha_i\cdot\left[\left(\bm{w}^T\bm{m}_i+w_0\right)\cdot g_i - 1 \right]\\
&= \frac{1}{2}||\bm{w}||^2 - \sum^N_{i=1}\alpha_i \cdot \bm{w}^T\bm{m}_i \cdot g_i + \sum^N_{i=1}\alpha_i \cdot w_0 \cdot g_i - \sum^N_{i=1}\alpha_i
\end{align*}
{\color{red} Seiten 102-105}
$$
L_\alpha = \sum^N_{i=0}\alpha_i - \frac{1}{2}\sum^N_{i=1}\sum^N_{j=1}\alpha_i \cdot \alpha_j \cdot g_i \cdot g_j (\bm{m}^T_j \cdot \bm{m}_i)
$$
Allgemein sieht das Verfahren der \say{Dual Representation} wie folgt aus:
$$ \arg \max_{\alpha_i} L_\alpha \rightarrow \text{quadratic programming}\rightarrow\bm{w}=\sum^S_{i=1}\alpha_i g_i \bm{m}_i $$
Sowohl die normale (primal) als auch die duale Darstellung lassen sich als quadratische Minimierungsprobleme formulieren.
\subsection{Transformation $\phi$}\label{svm transformation}
Um nichtlineare Klassifizierungsprobleme linear zu lösen wird eine nichtlineare Transformation $\phi(\bm{m})$ auf den Feature Space (\ref{feature space}) angewandt.
$$ \bm{m}\in\mathbb{R}^d ~ \phi:\mathbb{R}^d\rightarrow H$$
$H$ ist hierbei eine Hyperebene, in welcher es möglich ist die Datenpunkte linear zu klassifizieren.
\subsubsection{Beispiel}\label{non linear svm example}
\includegraphics[width=.8\textwidth]{transformation.png}\\
Es ergibt sich die lineare Funktion $g(\bm{m}) = \bm{w}^T \phi(\bm{m}) + w_0$.
Hierbei entfällt $\bm{w}$ aufgrund von $\bm{w} = \sum^N_{i=1}\alpha_i \cdot g_i \cdot \bm{m}_i \rightarrow \bm{w} = \sum^N_{i=1}\alpha_i \cdot g_i \cdot \phi(\bm{m}_i)$.
Die nichtlineare Diskiminante lässt sich nun schreiben als:
$$ g(\bm{m}) = \sum^S_{i=1}\alpha_i \cdot g_i \cdot \phi^T(\bm{m}_i) \cdot \phi(\bm{m}) + w_0 $$
\section{Der Kernel Trick}\label{kernel trick}
Mithilfe des Kernel Tricks kann die Transformation $\phi$ (\ref{svm transformation}) umgangen werden.
Hierbei wird jedes Skalarprodukt durch eine \textbf{äquivalente} Kernelfunktion ersetzt:
$$K(\bm{m}_i,\bm{m}_j) = \phi^T(\bm{m}_i) \cdot \phi(\bm{m}_j)$$
\subsection{Formalismus}
\includegraphics[width=.8\textwidth]{kernel_trick_formalism.png}
\subsection{Der Trick}
\includegraphics[width=.8\textwidth]{kernel_trick_trick.png}
\subsection{Polynomialer Kernel}
\includegraphics[width=.8\textwidth]{kernel_trick_polynomial_kernel.png}
\subsubsection{Beispiel: Gausian \acl{rbf} Kernel}
$$K(\bm{m}_i,\bm{m}_j) = \exp\left(-\frac{||\bm{m}_1-\bm{m}_2||^2}{2\sigma^2}\right)$$
\includegraphics[width=\textwidth]{kernel_trick_example.png}
\section{Soft Margin}
Falls Daten vorliegen, die nicht \say{einfach} (\ref{occam's razor}) separierbar sind ist es zwar möglich den Feature Space so zu transformieren, dass er linear separierbar wird,
allerdings ist dies wenig sinnvoll.
Hierbei ist die \acs{vc-dimension} sehr hoch, weshalb auch die Gefahr für Overfitting sehr hoch ist.
Dieses Problem kann umgangen werden, indem mittels \say{soft margins} zugelassen wird, dass eine geringe Anzahl an Datenpunkten auf der falschen Seite der Diskriminanten liegt.\\
\includegraphics[width=.6\textwidth]{soft_margin.png}

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
images/soft_margin.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

BIN
images/transformation.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB