\chapter{\acl{SVM}}\label{svm} \acs{SVM}s können als lineare (\ref{linear machines}) oder nicht-lineare Maschinen aufgebaut werden.\\ \begin{tabular}{|p{.475\textwidth}|p{.475\textwidth}|} \hline \textbf{Vorteile} & \textbf{Nachteile}\\ \hline \begin{itemize} \item bei linear separierbaren Datensätzen ist das empirische Risiko (\ref{empirical risk}) $R_{emp}(\bm{w})=0$ \item die Riskoschranke (\ref{risk bound}) ist ungefähr minimal (\say{eingebaute} generalization) \end{itemize} & \begin{itemize} \item funktioniert nur auf kleinen Datensätzen \item ein Wechsel des Datensatzes erfordert ein Neu-Lernen \item die nicht-lineare Variante ist kompliziert im Umgang \end{itemize}\\ \hline \end{tabular} \section{lineare \acl{SVM}} \begin{wrapfigure}{h}{.6\textwidth} \vspace{-10mm} \includegraphics[width=.6\textwidth]{svm_base.png} \end{wrapfigure} Für das dargestellte Bild ergibt sich: \begin{flalign*} & g(\bm{m}_1)=0,g(\bm{m}_2)=0 &\\ & \rightarrow \bm{w}^T\bm{m}_1+w_0=\bm{w}^T\bm{m}_2+w_0 &\\ & \Leftrightarrow \bm{w}^T(\bm{m}_1-\bm{m}_2)=0 &\\ & \rightarrow \bm{w}\bot g(\bm{m}) \end{flalign*} hieraus ergibt sich durch umstellen: $$r_p=\frac{g(\bm{m}_p)}{|\bm{w}|}\ge 0$$ und $$r_0=-\frac{w_0}{|\bm{w}|}$$ \subsection{Support Vektoren} Um die Diskriminante in dem Bereich der möglichen Diskriminaten zu wählen, die am besten generalisiert werden unterstützende Vektoren (support vectors) verwendet. Diese verlaufen parallel zu der Diskriminante mit einem Abstand $\gamma$. $\gamma$ wird als \say{Margin} bezeichnet.\\ \includegraphics[width = .8\textwidth]{support_vectors.png}\\ Für 2 Cluster werden dann ähnlich wie beim Perzeptron (\ref{perceptron}) die folgenden Gleichungen aufgestellt: \begin{align*} \bm{w}^T\bm{m}_i+w_0\ge 1 &\text{ für } g_i = +1 \\ \bm{w}^T\bm{m}_i+w_0\le 1 &\text{ für } g_i = -1 \\ \end{align*} Nun wird so reskaliert, dass für mindestens ein Objekt gilt: $$ \forall i:(\bm{w}^T\bm{m}_i + w_0)\cdot g_i = 1 \text{ bzw. }-1 $$ Für den Margin $\gamma$ ergibt sich also: $$\gamma = \frac{g(\bm{m}_S)}{|\bm{w}|} = \frac{1}{|\bm{w}|} = \frac{1}{||\bm{w}||}$$ Der Abstand der zwei Klassen (Two-classes distance) ist dann: $$2\gamma = \frac{2}{||\bm{w}||}$$ \subsubsection{Maximierung des Margin} Da $\frac{1}{||\bm{w}||} \equiv \frac{1}{2}||\bm{w}||^2$ ist, kann die Maximierung des Margin als ein quadratisches Minimierungsproblem behandelt werden. Mithilfe des Lagrange-Ansatzes erhält man: \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*} Die Funktion ist beschränkt durch: \begin{align*} \frac{\delta L_\alpha}{\delta w_0} &= 0 \Rightarrow \sum^N_{i=1}\alpha_i \cdot g_i = 0\\ \frac{\delta L_\alpha}{\delta \bm{w}} &= 0 \Rightarrow \bm{w} - \sum^N_{i=1}\alpha_i \cdot \bm{m}_i \cdot g_i = 0 \rightarrow \bm{w} = \sum^N_{i=1}\alpha_i \cdot g_i \cdot \bm{m}_i \end{align*} Hieraus ergeben sich die \acl{KKT} Bedingungen \begin{align*} (\bm{w}^T\bm{m}_i + w_0)\cdot g_i - 1 &\ge 0 \\ \alpha_i &\ge 0 \\ \alpha_i\left[\left(\bm{w}^T\bm{m}_i+w_0\right)\cdot g_i -1\right] &=0 \end{align*} 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. \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}