diff --git a/regression/code/lsq_error.m b/regression/code/lsq_error.m index 8fcaa30..a648e48 100644 --- a/regression/code/lsq_error.m +++ b/regression/code/lsq_error.m @@ -1,6 +1,11 @@ function error = lsq_error(parameter, x, y) -% parameter(1) is the slope -% parameter(2) is the intercept +% Objective function for fitting a linear equation to data. +% +% Arguments: parameter, vector containing slope and intercept (1st and 2nd element) +% x, the input values +% y, the measured system output +% +% Retruns: the estimation error in terms of the mean sqaure error -f_x = x .* parameter(1) + parameter(2); -error = mean((f_x - y).^2); \ No newline at end of file +y_est = x .* parameter(1) + parameter(2); +error = meanSquareError(y, y_est); diff --git a/regression/code/mean_square_error.m b/regression/code/mean_square_error.m new file mode 100644 index 0000000..ebb4bc0 --- /dev/null +++ b/regression/code/mean_square_error.m @@ -0,0 +1,9 @@ +function error = meanSquareError(y, y_est) +% Function calculates the mean sqauare error between observed and predicted values. +% +% Agruments: y, the observed values +% y_est, the predicted values. +% +% Returns: the error in the mean-square-deviation sense. + +error = mean((y - y_est).^2); diff --git a/regression/lecture/regression-slides.tex b/regression/lecture/regression-slides.tex index 2448f16..8637e2e 100644 --- a/regression/lecture/regression-slides.tex +++ b/regression/lecture/regression-slides.tex @@ -222,7 +222,7 @@ \end{column} \begin{column}{7cm} \begin{enumerate} - \item Die am h\"aufigstern Angewandte Methode ist die der + \item Die am h\"aufigsten angewandte Methode ist die der kleinsten quadratischen Abweichungen. \item Es wird versucht die Summe der quadratischen Abweichung zu minimieren. diff --git a/regression/lecture/regression.tex b/regression/lecture/regression.tex index a0beed2..0d5d473 100644 --- a/regression/lecture/regression.tex +++ b/regression/lecture/regression.tex @@ -1,3 +1,165 @@ \chapter{\tr{Optimization and Gradient Descent}{Optimierung und Gradientenabstiegsverfahren}} +Ein sehr \"ubliches Problem ist, dass die Abh\"angigkeit von +Messwerten von einem Input Parameter durch ein Modell erkl\"art werden +soll. Die Frage ist, wie man die beste Parametrisierung des Modells +findet. Den Prozess der Prarmeteranpassung nennt man auch Optimierung +oder English Fitting. Betrachtet man zum Beispiel die Punktewolke in +Abbildung \ref{linregressiondatafig} liegt es nahe einen +(verrauschten) linearen Zusammenhang zwischen Einganggr\"{\ss}e +(Input) und Systemantwort (output) zu postulieren. + +\begin{figure} + \includegraphics[width=0.45\columnwidth]{lin_regress.pdf} + \caption{\textbf{Blick auf die Rohdaten.} F\"ur eine Reihe von + Eingangswerten, z.B. Stimulusintensit\"aten wurden die Antworten + eines Systems gemessen.}\label{linregressiondatafig} +\end{figure} + +Wir nehmen an, dass die lineare Geradengleichung ein guten Modell +f\"ur das zugrundeliegende System ist. +\[f_{m,n}(x) = m\cdot x + n \] + +wobei $x$ die Eingangswerte, $f_{m,n}(x)$ die Systemantwort, $m$ die Steigung +und $n$ der y-Achsenabschnitt darstellen (Abbildung +\ref{linregressionslopeintersectfig}). In dieser Gleichung gibt es nur zwei Parameter +und es wird die Kombination von Steigung ($m$) und y-Achsenabschnitt +($n$) gesucht, die die Systemantwort am besten vorhersagen. + +\begin{figure} + \begin{minipage}[t]{0.45\columnwidth} + \includegraphics[width=\textwidth]{figures/lin_regress_slope.pdf} + \end{minipage} + \begin{minipage}[t]{0.45\columnwidth} + \includegraphics[width=\textwidth]{figures/lin_regress_abscissa.pdf} + \end{minipage} + \caption{\textbf{Ver\"anderungen der Parameter und ihre Folgen.} Die + linke Abbildung zeigt den Effekt einer Ver\"anderung der Steigung + w\"ahrend die reche Abbildung die Ver\"anderung des + y-Achsenabschnittes + illustriert. }\label{linregressionslopeintersectfig} +\end{figure} + +Wie wird nun die optimale Kombination aus Steigung und y-Achsenabschnitt gefunden? + +\section{Methode der kleinsten Quadratischen Abweichung} + +Um die optimale Parameterkombination zu finden muss zun\"achst ein +Ma{\ss} f\"ur den Unterschied zwischen den tats\"achlich gemessenen +und den unter Verwendung eines Parametersatzes vorhergesagten Werten +definiert werden. Eine der am h\"aufigsten verwendeten +Fehlersch\"atzungen ist der \emph{mittlere qaudratische Abstand} (im +Englischen auch mean square error genannt, Abbildung \ref{leastsquareerrorfig}). + +\[ e = \frac{1}{N}\sum^{N}_{1=1} \left( y_i - y^{est}_i)\right )^2\] + +wobei $e$ der Fehler, $N$ die Anzahl gemessener Datenpunkte $y_i$ die +Messwerte und $y^{est}_i$ die Vorhersagewerte an den enstprechenden +Stellen sind. + +\begin{figure} + \includegraphics[width=0.5\columnwidth]{figures/linear_least_squares.pdf} + \caption{\textbf{Ermittlung des Mittleren quadratischen Abstands.} + Der Abstand zwischen der Vorhersage und dem Modell wird f\"ur + jeden gemessenen Datenpunkt ermittelt. Die Differenz zwischen + Messwert und Vorhersage wird quadriert, was zum einen das + Vorzeichen einer Abweichung entfernt und zum anderen gro{\ss}e + Abweichungen \"uberproportional st\"arker bestraft als + kleine. Quelle: + \url{http://en.wikipedia.org/wiki/Linear_least_squares_(mathematics)}} \label{leastsquareerrorfig} +\end{figure} + +\begin{exercise}{mean_square_error.m}{} + Schreibt eine Funktion, die die mittlere quardatische Abweichung + zwischen den beobachteten Werten $y$ und der Vorhersage $y_{est}$ + berechnet. +\end{exercise} + +\section{Zielfunktion --- Objective function} + +Schliesst man in die Fehlerfunktion von oben die Vorhersage des Modells +mit ein spricht man von der Zielfunktion oder Englisch ``objective +function'': + +\[e(m,n) = \frac{1}{N}\sum^{N}_{1=1} \left( y_i - f_{m, + n}(x_i)\right )^2\] + +Das Ziel der Parameteranpassung ist es, den Fehler zu minimieren, die +Passung zu Optimieren. + +\begin{exercise}{lsq_error.m}{} + Implementiere die Zielfunktion (\code{lsq\_error}) f\"ur die + Optimierung mit der linearen Geradengleichung. + \begin{itemize} + \item Die Funktion \"ubernimmt drei Argumente: das erste ist ein + 2-elementiger Vektor, der die Parameter \code{m} und \code{n} + enth\"alt. Der zweite sind die x-Werte, an denen gemessen wurde + und der dritte die zugeh\"origen y-Werte. + \item Die Funktion gibt den Fehler zur\"uck. + \end{itemize} +\end{exercise} + + +\section{Fehlerfl\"ache} + +Die beiden Parameter $m$ und $n$ spanngen eine 2-dimensionale F\"ache +auf. F\"ur jede Kombination aus $m$ und $n$ erhalten wir +Vorhersagewerte, die von den gemessenen Werten abweichen. Es gibt also +f\ur jeden Punkt in der sogenannten \emph{Fehlerfl\"ache} einen +Fehler. In diesem Beispiel kann man die Fehlerfl\"ache graphisch durch +einen 3-d ``surface-plot'' darstellen. Wobei auf der x- und y-Achse +die beiden Parameter und auf der z-Achse der Fehlerwert aufgetragen +wird (Abbildung \ref{errorsurfacefig}). + +\begin{figure} + \includegraphics[width=0.5\columnwidth]{figures/surface.pdf} + \caption{\textbf{Fehlerfl\"ache.} }\label{errorsurfacefig} +\end{figure} + + + + \textbf{Aufgabe} + \begin{enumerate} + \item Ladet den Datensatz \textit{lin\_regression.mat} in den + Workspace. Wie sehen die Daten aus? + \item Schreibt eine Funktion \code{lsq\_error}, die den Fehler + brechnet: + \begin{itemize} + \item \"Ubernimmt einen 2-elementigen Vektor, der die Parameter + \code{m} und \code{n} enth\"alt, die x-Werte und y-Werte. + \item Die Funktion gibt den Fehler zur\"uck. + \end{itemize} + \item Schreibt ein Skript dass den Fehler in Abh\"angigkeit von + \code{m} und \code{n} als surface plot darstellt (\code{surf} + Funktion). + \item Wie k\"onnen wir diesen Plot benutzen um die beste Kombination + zu finden? + \item Wo lieft die beste Kombination? + \end{enumerate} + + +\section{Gradient} + + \begin{itemize} + \item Wie findet man die Extrempunkte in einer Kurve?\pause + \item Ableitung der Funktion auf Null setzen und nach x aufl\"osen. + \item Definition der Ableitung:\\ \vspace{0.25cm} + \begin{center} + $ f'(x) = \lim\limits_{h \rightarrow 0} \frac{f(x + h) - f(x)}{h} $ + \vspace{0.25cm}\pause + \end{center} + \item Bei zwei Parametern $g(m,n)$ k\"onnen wie die partielle + Ableitung bez\"uglich eines Parameters benutzen um die + Ver\"anderung des Fehlers bei Ver\"anderung eines Parameters + auszuwerten. + \item Partielle Ableitung nach \code{m}?\\\pause + \vspace{0.25cm} + \begin{center} + $\frac{\partial g(m,n)}{\partial m} = \lim\limits_{h \rightarrow 0} \frac{g(m + h, n) - g(m,n)}{h}$ + \vspace{0.25cm} + \end{center} + \end{itemize} + + +\section{Der Gradientenabstieg} diff --git a/scientificcomputing-script.tex b/scientificcomputing-script.tex index 6c2350a..43e9f38 100644 --- a/scientificcomputing-script.tex +++ b/scientificcomputing-script.tex @@ -15,22 +15,15 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \part{Grundlagen des Programmierens} -\graphicspath{{programming/lectures/}{programming/lectures/images/}} +\graphicspath{{programming/lectures/}{programming/lecture/images/}} \lstset{inputpath=programming/code} -\include{programming/lectures/programming} +\include{programming/lecture/programming} \graphicspath{{plotting/lecture/}{plotting/lecture/images/}} \lstset{inputpath=plotting/code/} \include{plotting/lecture/plotting} -\graphicspath{{designpattern/lecture/}{designpattern/lecture/figures/}} -\lstset{inputpath=designpattern/code} -\include{designpattern/lecture/designpattern} - -\chapter{Cheat-Sheet} - - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \part{Grundlagen der Datenanalyse} @@ -55,4 +48,13 @@ \renewcommand{\texinputpath}{pointprocesses/lecture/} \include{pointprocesses/lecture/pointprocesses} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\part{Appendix: } + +\graphicspath{{designpattern/lecture/}{designpattern/lecture/figures/}} +\lstset{inputpath=designpattern/code} +\include{designpattern/lecture/designpattern} + +\chapter{Cheat-Sheet} + \end{document}