From 3025564597c352112a880a7236bccf4c3cba79c2 Mon Sep 17 00:00:00 2001 From: paul-loedige Date: Wed, 9 Feb 2022 00:17:07 +0100 Subject: [PATCH] =?UTF-8?q?d-dimensionale=20lineare=20Regression=20hinzuge?= =?UTF-8?q?f=C3=BCgt.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Glossary.tex | 3 +- .../Linear_Regression.tex | 71 +++++++++++++++++- images/linear_regression.png | Bin 0 -> 26556 bytes 3 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 images/linear_regression.png diff --git a/Glossary.tex b/Glossary.tex index 644ff85..0896ff9 100644 --- a/Glossary.tex +++ b/Glossary.tex @@ -50,7 +50,8 @@ %use nomenclature entry (use in equation) \newcommand{\nomeq}[1]{\glslink{#1}{\glsentrysymbol{#1}}} -\newnom{exampl}{Example}{e_xa_mp_le}{Example for a nomenclature entry}{\si{m}} +\newnom{summed_squared_error}{Summed Squared Error}{\text{SSE}}{}{} +\newnom{gaussian_noise}{Gausches Rauschen}{\epsilon}{zufällige (normalverteilte) Abweichung}{} \shorthandoff{"} diff --git a/chapters/Classical_Supervised_Learning/Linear_Regression.tex b/chapters/Classical_Supervised_Learning/Linear_Regression.tex index e441e27..9b5b27c 100644 --- a/chapters/Classical_Supervised_Learning/Linear_Regression.tex +++ b/chapters/Classical_Supervised_Learning/Linear_Regression.tex @@ -93,4 +93,73 @@ die eine Menge von Eingabedatenpunkten am besten approximiert. \end{tabular} \end{itemize} -Auf Seite 80 weitermachen +\section{Regression}% +\label{sec:Regression} +Das Ziel einer Regression ist es eine kontinuierliche Funktion $y=f(x)+\nomeq{gaussian_noise}$ zu lernen. +Im Falle der linearen Regression bedeutet das, +dass versucht wird eine Gerade zu finden, +welche die gegebenen Datenpunkte am besten approximiert: +\begin{equation}\label{eq:linear_regression} + y = f(x)+\nomeq{gaussian_noise} = w_0 + w_1 x + \nomeq{gaussian_noise} +\end{equation} +\begin{figure}[H] + \centering + \includegraphics[width=0.4\linewidth]{./images/linear_regression.png} + \caption{Beispiel einer linearen Regression}% + \label{fig:linear_regression} +\end{figure} +Die Regression verfolgt hierbei zumeist das Ziel die Summe oder den Durchschnitt des quadrierten Fehlers (engl. summed\slash\,mean squared error) zu reduzieren: +\begin{equation} \label{eq:SSE} + \nomeq{summed_squared_error} = \sum_{i=1}^{N}(y_i-f(x_i))^2 +\end{equation} + +\subsection{Regression für d-dimensionale Eingabevektoren}% +\label{sub:Regression für d-dimensionale Eingabevektoren} +Wenn die Eingangswerte durch einen d-dimensionalen Vektor $\bm{x}$ dargestellt werden, +ergibt sich die folgende Funktion: +\begin{equation} \label{eq:SSE_d-dimensional} + \nomeq{summed_squared_error} = \sum_{i=1}^{N}(y_i-f(\bm{x}_i))^2 +\end{equation} +Der \nomsym{summed_squared_error} wird verwendet, +da er vollständig differenzierbar und einfach zu optimieren ist, +da \nomsym{summed_squared_error} für lineare Funktionen konvex ist (es gibt nur genau einen Tiefpunkt). + +$f(\bm{x}_i)$ definiert sich hierbei durch: +\begin{equation} \label{eq:d-dimensional_linear_function} + f(\bm{x}_i) = w_0 + \sum_{j}W_j x_{i,j} +\end{equation} +Wodurch sich \nomsym{summed_squared_error} ebenfalls verändert: +\begin{equation} \label{eq:sse_d-dimensional_linear_function} + \nomeq{summed_squared_error} = \sum_{i=1}^N\left(y_i-\left(w_0 + \sum_j w_j x_{i,j}\right)\right)^2 +\end{equation} +Diese Formel lässt sich durch den Einsatz von Matrizen vereinfachen: +\begin{equation} \label{eq:sse_matrix_form} + \nomeq{summed_squared_error} = \sum_{i}(y_i - \hat{y}_i)^2 = \sum_i e_i^2 = \bm{e}^T\bm{e} = (\bm{y}-\bm{Xw})^T(\bm{y}-\bm{Xw}) +\end{equation} +hierbei ist $\hat{y}_i$ die Vorhersage von $y_i$ anhand von $\bm{x_i}$ und den zu lernenden Gewichten $w$: +\begin{align} + \hat{y}_i &= w_0 + \sum_{j=1}^D w_j x_{i,j} = \tilde{\bm{x}}_i^T\bm{w},\qquad\text{mit }\tilde{\bm{x}}_i = \begin{bmatrix} 1\\\bm{x}_i \end{bmatrix}\text{ und } \bm{w} = \begin{bmatrix} w_1 \\ \vdots\\ w_D \end{bmatrix}\\ + \hat{\bm{y}} &= \begin{bmatrix} \hat{y}_1 \\\vdots\\ \hat{y}_n \end{bmatrix} = \begin{bmatrix} \tilde{\bm{x}}_1^T\bm{w} \\\vdots\\ \tilde{\bm{x}}_n^T\bm{w} \end{bmatrix} = \bm{Xw} +\end{align} +zudem ist $\bm{e}$ der Fehlervektor +\begin{equation} \label{eq:error_vecor_sse} + \bm{e} = \begin{bmatrix} y_1 \\\vdots\\ y_n \end{bmatrix} - \begin{bmatrix} \hat{y}_1 \\\vdots\\ \hat{y}_n \end{bmatrix} = \bm{y} - \hat{\bm{y}} = \bm{y} - \bm{Xw} +\end{equation} + +Stellt man die Formel für den \noms{summed_squared_error} nun in Relation zu den Gewichtsvektor $\bm{w}$ auf, erhält man: +\begin{align} + \nomeq{summed_squared_error}(\bm{w}) &= (\bm{y}-\bm{Xw})^T(\bm{y} - \bm{Xw})\\ + &= \bm{w}^T\bm{X}^T\bm{Xw} - \bm{y}^T\bm{Xw} - \bm{w}^T\bm{X}^T\bm{y} + \bm{y}^T\bm{y}\\ + &= \bm{w}^T\bm{X}^T\bm{Xw} - 2\bm{y}^T\bm{Xw} + \bm{y}^T\bm{y} +\end{align} + +Leitet man diese Formel nun ab, um die Gewichte $\bm{w}^*$ mit den minimalen \noms{summed_squared_error} zu erhalten ergibt sich: +\begin{equation} + \nabla_{\bm{w}}\nomeq{summed_squared_error}(\bm{w}) = \dfrac{\partial}{\partial\bm{w}}\left\{\bm{w}^T\bm{X}^T\bm{Xw} - 2\bm{y}^T\bm{Xw} + \bm{y}^T\bm{y}\right\} +\end{equation} +Durch das Gleichsetzen dieser Funktion mit 0 (Die Ableitung einer quadratischen Funktion am Scheitelpunkt) erhält man: +\begin{equation} + \bm{w}^* = (\bm{X}^T\bm{X})^{-1}\bm{X}^T\bm{y} +\end{equation} + +Weiter auf Seite 92 diff --git a/images/linear_regression.png b/images/linear_regression.png new file mode 100644 index 0000000000000000000000000000000000000000..15bd13b0db6ddecb872d84fb4bb7b49107fa7439 GIT binary patch literal 26556 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 I<1X?41C$y;aR2}S literal 0 HcmV?d00001