\chapter{Linear Regression}% \label{cha:Linear 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} \section{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} \label{eq:linear_regression_solution} \bm{w}^* = (\bm{X}^T\bm{X})^{-1}\bm{X}^T\bm{y} \end{equation} \section{Generalisierung der linearen Regression}% \label{sec:Generalisierung der linearen Regression} Die bisher dargestellte Form der linearen Regression ist lediglich dazu in der Lage eine lineare Hyper-Ebene in einem D-dimensionalen Eingaberaum zu errechnen. Um die lineare Regression auch in anderen Anwendungen verwenden zu können ist es nötig eine \nomf{vector_valued_function} zu definieren, welche dafür sorgen, dass auch nicht-lineare Eingabevektoren $\bm{x}$ mithilfe der linearen Regression analysiert werden können. Die Ergebnisformel für die lineare Regression bleibt hierbei nahezu gleiche, wobei $\bm{X} = \begin{bmatrix} \tilde{\bm{x}}^T_1 \\\vdots\\\tilde{\bm{x}}^T_n \end{bmatrix}$ (siehe \cref{eq:linear_regression_solution}) durch $\bm{\Phi} = \begin{bmatrix} \phi_1^T\\\vdots\\\phi_n^T \end{bmatrix}$ ersetzt wird: \begin{equation} \label{eq:generalized_linear_regression} \bm{w}^* = (\bm{\Phi}^T\bm{\Phi})^{-1}\bm{\Phi}^T\bm{y} \end{equation} Dies ermöglicht es mittels der linearen Regression auch jede nicht-lineare Funktion zu lernen, indem eine passende \nomf{vector_valued_function} gefunden wird. \subsection{Beispiele}% \label{sub:Beispiele} \subsubsection{Polynomial Curve Fitting}% \label{ssub:Polynomial Curve Fitting} \begin{wrapfigure}{r}{.4\textwidth} \vspace*{-20mm} \centering \includegraphics[width=0.7\linewidth]{images/polynomial_curve_fitting.png} \caption{polynomiale Kurvenanpassung}% \label{fig:polynomial_curve_fitting} \vspace*{-30mm} \end{wrapfigure} Durch die Generalisierung der linearen Regression ist die Kurvenanpassung an eine polynomiale Funktion möglich. So lässt sich die lineare Regression für eine Funktion 3. Grades mithilfe von $\nomeq{vector_valued_function} = \begin{bmatrix} 1\\x\\x^2\\x^3 \end{bmatrix}$ und $\bm{w} = \begin{bmatrix} w_0\\w_1\\w_2\\w_3 \end{bmatrix}$errechnen. \subsubsection{Multiple Linear Regression and Fitting a Quadratic Form}% \label{ssub:Multiple Linear Regression} Da eine Hyper-Ebene nicht immer eine gute Approximation der Daten darstellt (siehe \cref{fig:plane-linear-regression}), ist es oft sinnvoll die Eingabedaten mittels \nomsym{vector_valued_function} umzuwandeln (siehe \cref{fig:quadratic-form-linear-regression}). \begin{figure}[H] \begin{subfigure}[t]{.5\textwidth} \includegraphics[width=\textwidth]{images/multiple_linear_regression1.png} \caption{$\bm{w}=\begin{bmatrix} w_0\\w_1\\w_2 \end{bmatrix}, \nomeq{vector_valued_function} = \begin{bmatrix} 1\\x_1\\x_2 \end{bmatrix}$} \label{fig:plane-linear-regression} \end{subfigure}% \begin{subfigure}[t]{.5\textwidth} \includegraphics[width=\textwidth]{images/multiple_linear_regression2.png} \caption{$\bm{w}=\begin{bmatrix} w_0\\w_1\\w_2\\w_3\\w_4 \end{bmatrix}, \nomeq{vector_valued_function} = \begin{bmatrix} 1\\x_1\\x_2\\x_1^2\\x_2^2 \end{bmatrix}$} \label{fig:quadratic-form-linear-regression} \end{subfigure} \caption{Lineare Regression mit 2-dimensionalen Eingangsdaten}% \label{fig:2-d-linear-regression} \end{figure} \section{Regularization of the Linear Regression}% \label{sec:Regularization of the Linear Regression} Bei der Auswertung einer polynomialen Funktion (\cref{ssub:Polynomial Curve Fitting}) muss der Polynomialgrad der \nomf{vector_valued_function} hoch genug gewählt werden, damit die lineare Regression kein kleineres Polynom als die echte Grundfunktion verwendet (\gls{underfitting}). Allerdings darf der Grad des Polynoms auch nicht so hoch gewählt werden, dass die durch lineare Regression erlernte Funktion jeden Trainingsdatenpunkt perfekt abbildet (\gls{overfitting}). \begin{figure}[H] \centering \includegraphics[width=0.6\linewidth]{images/polynomial_linear_regression_overfitting.png} \caption{Beispielhaftes Verhältnis für ein Verhältnis vom Grad des Polynoms und \nomsym{summed_squared_error}}% \label{fig:poynomial_linear_regression_overfitting} \end{figure} Um dies zu verhindern kommt die Regularisierung zum Einsatz. Diese verfolgt das Ziel, die Gewichte $\bm{w}$ möglichst klein zu halten um ein \gls{overfitting} zu verhindern. Hierbei wird die datenabhängige Fehlerfunktion der Gewichte $E_D(\bm{w})$ um einen Regularisierungsterm $\nomeq{regularization_factor} E_W(\bm{w})$ erweitert. Hierbei ist \nomsym{regularization_factor} der \noms{regularization_factor}, welcher meist manuell ausgewählt werden muss. \subsection{Ridge Regression}% \label{sub:Ridge Regression} Die Regularisierung des \nomf{summed_squared_error} mithilfe eines quadratischen Regularisierungsterms ergibt folgende Verlustfunktion (Loss-Function): \begin{equation} \label{eq:ridge_regression_loss} L_{\text{ridge}} = (\bm{y}-\bm{\Phi w})^T(\bm{y}-\bm{\Phi w}) + \nomeq{regularization_factor}\bm{w}^T\bm{w} \end{equation} Diese spezielle Regularisierung wird auch als Ridge Regression bezeichnet. Die Regressionsgleichung ist hierbei gegeben durch: \begin{equation} \label{eq:ridge_regression_solution} \bm{w}^*_{\text{ridge}} = (\bm{\Phi}^T\bm{\Phi} + \nomeq{regularization_factor}\nomeq{identity_matrix})^{-1}\bm{\Phi}^T\bm{y} \end{equation} Da die Matrix $(\bm{\Phi}^T\bm{\Phi} + \nomeq{regularization_factor}\nomeq{identity_matrix})$ eine \gls{FRM} ist, kann sie leicht invertiert werden.