diff --git a/Acronyms.tex b/Acronyms.tex index 46a62f7..dedec40 100644 --- a/Acronyms.tex +++ b/Acronyms.tex @@ -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} \ No newline at end of file diff --git a/ML_Zusammenfassung.tex b/ML_Zusammenfassung.tex index e414210..f7ce60c 100644 --- a/ML_Zusammenfassung.tex +++ b/ML_Zusammenfassung.tex @@ -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} diff --git a/chapters/Basics/Information and Pattern Recognition.tex b/chapters/Basics/Information and Pattern Recognition.tex index d28282b..ab954a5 100644 --- a/chapters/Basics/Information and Pattern Recognition.tex +++ b/chapters/Basics/Information and Pattern Recognition.tex @@ -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. diff --git a/chapters/Supervised Learning/Occam's Razor.tex b/chapters/Supervised Learning/Occam's Razor.tex index cbb202c..a0de4ef 100644 --- a/chapters/Supervised Learning/Occam's Razor.tex +++ b/chapters/Supervised Learning/Occam's Razor.tex @@ -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. diff --git a/chapters/Supervised Learning/SVM.tex b/chapters/Supervised Learning/SVM.tex index 7e90b3b..3668740 100644 --- a/chapters/Supervised Learning/SVM.tex +++ b/chapters/Supervised Learning/SVM.tex @@ -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. \ No newline at end of file + \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} + + + \ No newline at end of file diff --git a/images/kernel_trick_example.png b/images/kernel_trick_example.png new file mode 100644 index 0000000..0deb0ba Binary files /dev/null and b/images/kernel_trick_example.png differ diff --git a/images/kernel_trick_formalism.png b/images/kernel_trick_formalism.png new file mode 100644 index 0000000..d82fdf1 Binary files /dev/null and b/images/kernel_trick_formalism.png differ diff --git a/images/kernel_trick_polynomial_kernel.png b/images/kernel_trick_polynomial_kernel.png new file mode 100644 index 0000000..6c481c0 Binary files /dev/null and b/images/kernel_trick_polynomial_kernel.png differ diff --git a/images/kernel_trick_trick.png b/images/kernel_trick_trick.png new file mode 100644 index 0000000..5a56bc5 Binary files /dev/null and b/images/kernel_trick_trick.png differ diff --git a/images/soft_margin.png b/images/soft_margin.png new file mode 100644 index 0000000..4336171 Binary files /dev/null and b/images/soft_margin.png differ diff --git a/images/transformation.png b/images/transformation.png new file mode 100644 index 0000000..25eaca9 Binary files /dev/null and b/images/transformation.png differ