This repository has been archived on 2021-05-17. You can view files and clone it, but cannot push or open issues or pull requests.
scientificComputing/regression/lecture/regression-slides.tex

454 lines
14 KiB
TeX

\documentclass{beamer}
\usepackage{xcolor}
\usepackage{listings}
\usepackage{pgf}
%\usepackage{pgf,pgfarrows,pgfnodes,pgfautomata,pgfheaps,pgfshade}
%\usepackage{multimedia}
\usepackage[english]{babel}
\usepackage{movie15}
\usepackage[latin1]{inputenc}
\usepackage{times}
\usepackage{amsmath}
\usepackage{bm}
\usepackage[T1]{fontenc}
\usepackage[scaled=.90]{helvet}
\usepackage{scalefnt}
\usepackage{tikz}
\usepackage{ textcomp }
\usepackage{soul}
\usepackage{hyperref}
\definecolor{lightblue}{rgb}{.7,.7,1.}
\definecolor{mygreen}{rgb}{0,1.,0}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\mode<presentation>
{
\usetheme{Singapore}
\setbeamercovered{opaque}
\usecolortheme{tuebingen}
\setbeamertemplate{navigation symbols}{}
\usefonttheme{default}
\useoutertheme{infolines}
% \useoutertheme{miniframes}
}
\AtBeginSection[]
{
\begin{frame}<beamer>
\begin{center}
\Huge \insertsectionhead
\end{center}
% \frametitle{\insertsectionhead}
% \tableofcontents[currentsection,hideothersubsections]
\end{frame}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
\setbeamertemplate{blocks}[rounded][shadow=true]
\title[]{Scientific Computing -- Statistik}
\author[]{Jan Grewe, Fabian Sinz\\Abteilung f\"ur Neuroethologie\\
Universit\"at T\"ubingen}
\institute[Wissenschaftliche Datenverarbeitung]{}
\date{12.10.2015 - 06.11.2015}
%\logo{\pgfuseimage{../../resources/UT_BM_Rot_RGB.pdf}}
\subject{Einf\"uhrung in die wissenschaftliche Datenverarbeitung}
\vspace{1em}
\titlegraphic{
\includegraphics[width=0.5\linewidth]{../../resources/UT_WBMW_Rot_RGB}
}
%%%%%%%%%% configuration for code
\lstset{
basicstyle=\ttfamily,
numbers=left,
showstringspaces=false,
language=Matlab,
commentstyle=\itshape\color{darkgray},
keywordstyle=\color{blue},
stringstyle=\color{green},
backgroundcolor=\color{blue!10},
breaklines=true,
breakautoindent=true,
columns=flexible,
frame=single,
captionpos=b,
xleftmargin=1em,
xrightmargin=1em,
aboveskip=10pt
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\mycite}[1]{
\begin{flushright}
\tiny \color{black!80} #1
\end{flushright}
}
\newcommand{\code}[1]{\texttt{#1}}
\input{../../latex/environments.tex}
\makeatother
\begin{document}
\begin{frame}[plain]
\frametitle{}
\vspace{-1cm}
\titlepage % erzeugt Titelseite
\end{frame}
\begin{frame}[plain]
\huge{Curve Fitting/Optimierung mit dem Gradientenabstiegsverfahren}
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{\"Ubersicht}
\begin{enumerate}
\item Das Problem: Wir haben beobachtete Daten und ein Modell, das die Daten erkl\"aren soll.
\item Wie finden wir die Parameter (des Modells), die die Daten am Besten erkl\"aren?
\item L\"osung: Anpassen der Parameter an die Daten (Fitting).
\item Wie macht man das?
\end{enumerate}
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{Ein 1-D Beispiel}
\begin{columns}
\begin{column}{6.25cm}
\begin{figure}
\includegraphics[width=1.\columnwidth]{figures/one_d_problem_a.pdf}
\end{figure}
\end{column}
\begin{column}{6.5cm}
\begin{itemize}
\item z.B. eine Reihe Me{\ss}werte bei einer Bedingung.
\item Ich suche den y-Wert, der die Daten am besten
repr\"asentiert.
\item F\"ur jeden m\"oglichen y-Wert wird die mittlere
quadratische Abweichung zu allen Daten berechnet:\\
\[ error = \frac{1}{N}\sum_{i=1}^{N}(y_i - y_{test})^2 \]
\end{itemize}
\end{column}
\end{columns}\pause
Wie finde ich den besten Wert heraus?
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{Ein 1-D Beispiel}
\only<1> {
\begin{columns}
\begin{column}{4.5cm}
\begin{figure}
\includegraphics[width=1.\columnwidth]{figures/one_d_problem_b.pdf}
\end{figure}
\end{column}
\begin{column}{8cm}
\begin{itemize}
\item Man folgt dem Gradienten!
\item Der Gradient kann numerisch berechnet werden indem man ein
(sehr kleines) ``Steigungsdreieck'' an den Positionen anlegt.\\ \vspace{0.25cm}
$\frac{\Delta error}{\Delta y} = \frac{error(y+h) - error(y)}{h}$
\end{itemize}
\end{column}
\end{columns}
}
\only<2>{
\begin{columns}
\begin{column}{4.5cm}
\begin{figure}
\includegraphics[width=1.\columnwidth]{figures/one_d_problem_c.pdf}
\end{figure}
\end{column}
\begin{column}{8cm}
\begin{itemize}
\item Man folgt dem Gradienten!
\item Der Gradient kann numerisch berechnet werden indem man ein
(sehr kleines) ``Steigungsdreieck'' an den Positionen anlegt.\\ \vspace{0.25cm}
$\frac{\Delta error}{\Delta y} = \frac{error(y+h) - error(y)}{h}$
\item Da, wo der Gradient seine Nullstelle hat, liegt der beste y-Wert.
\end{itemize}
\end{column}
\end{columns}
}
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{Lineare Regression}
\only<1-2> {
\begin{figure}
\includegraphics[width=0.45\columnwidth]{figures/lin_regress.pdf}
\end{figure}
}
\only<2>{
Nehmen wir mal einen linearen Zusammenhang zwischen \textit{Input}
und \textit{Output} an. ($y = m\cdot x + n$)
}
\only<3> {
Ver\"anderung der Steigung:
\begin{figure}
\includegraphics[width=0.45\columnwidth]{figures/lin_regress_slope.pdf}
\end{figure}
}
\only<4> {
Ver\"anderung des y-Achsenabschnitts:
\begin{figure}
\includegraphics[width=0.45\columnwidth]{figures/lin_regress_abscissa.pdf}
\end{figure}
}
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{Lineare Regresssion}
\huge{Welche Kombination ist die richtige?}
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{Lineare Regression - Methode der kleinsten quadratischen Abweichung}
\begin{columns}
\begin{column}{4.5cm}
\begin{figure}
\includegraphics[width=\columnwidth]{figures/linear_least_squares.pdf}
\end{figure}
\footnotesize{\url{http://en.wikipedia.org/wiki/Linear_least_squares_(mathematics)}}
\end{column}
\begin{column}{7cm}
\begin{enumerate}
\item Die am h\"aufigsten angewandte Methode ist die der
kleinsten quadratischen Abweichungen.
\item Es wird versucht die Summe der quadratischen Abweichung zu
minimieren.
\end{enumerate}
\[g(m,n) = \frac{1}{N}\sum^{N}_{1=1} \left( y_i - f_{m, n}(x_i)\right )^2\]
\end{column}
\end{columns}
\end{frame}
\begin{frame}[fragile]
\frametitle{Fitting und Optimierung}
\framesubtitle{Lineare Regression - Methode der kleinsten quadratischen Abweichun}
\begin{itemize}
\item Was heisst das: Minimieren der Summe der kleinsten
quadratischen Abweichungen?
\item Kann man einen Algortihmus zur L\"osung des Problems
erstellen?
\item Kann man das visualisieren?
\end{itemize}\pause
\begin{columns}
\begin{column}{5.5cm}
\tiny
\begin{lstlisting}
x_range = linspace(-1, 1, 20);
y_range = linspace(-5, 5, 20);
[X, Y] = meshgrid(x_range, y_range);
Z = X.^2 + Y.^2;
surf(X, Y, Z);
colormap('autumn')
xlabel('x')
ylabel('y')
zlabel('z')
\end{lstlisting}
\end{column}
\begin{column}{5.5cm}
\begin{figure}
\includegraphics[width=0.9\columnwidth]{figures/surface.pdf}
\end{figure}
\end{column}
\end{columns}
\end{frame}
\begin{frame}[fragile]
\frametitle{Fitting und Optimierung}
\framesubtitle{Lineare Regression - Methode der kleinsten quadratischen Abweichung}
\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}
\end{frame}
\begin{frame}[fragile]
\frametitle{Fitting und Optimierung}
\framesubtitle{Lineare Regression - Methode der kleinsten quadratischen Abweichung}
\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}
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{Lineare Regression - Gradientenabstieg}
\large{Der Gradient:}
\begin{center}
$\bigtriangledown g(m,n) = \left( \frac{\partial g(m,n)}{\partial m}, \frac{\partial g(m,n)}{\partial n}\right)$
\end{center}
Ist der Vektor mit den partiellen Ableitungen nach \code{m} und
\code{n}.
\pause Numerisch kann die Ableitung durch einen sehr kleinen Schritt
angen\"ahert werden.
\begin{center}
$\frac{\partial g(m,n)}{\partial m} = \lim\limits_{h \rightarrow
0} \frac{g(m + h, n) - g(m,n)}{h} \approx \frac{g(m + h, n) -
g(m,n)}{h}$
\end{center}
f\"ur sehr kleine Schritte \code{h}.
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{Lineare Regression - Gradientenabstieg}
Plotten des Gradientenfeldes:
\begin{itemize}
\item Ladet die Daten in \code{lin\_regession.mat}.
\item Schreibt eine Funktion \code{lsq\_gradient.m} in dem gleichen
Muster wie \code{lsq\_error.m}. Die Funktion berechnet
den Gradienten an einer Position (Kombination von Parametern),
wenn ein kleiner Schritt gemacht wird (\code{h=1e-6;}).
\item Variiert \code{m} im Bereich von -2 bis +5 und \code{n} im
Bereich -10 bis 10.
\item Plottet die Fehlerfl\"ache als \code{surface} und
\code{contour} plot in die gleiche Abbildung.
\item F\"ugt die Gradienten als \code{quiver} plot hinzu.
\item Was sagen die Pfeile? Wie passen Pfeile und Fl\"ache zusammen?
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{Lineare Regression - Gradientenabstieg}
\begin{itemize}
\item Der Gradient zeigt in die Richtung des gr\"o{\ss}ten \textbf{Anstiegs}. \pause
\item Wie kann der Gradient nun dazu genutzt werden zum Minimum zu kommen?\pause
\item \textbf{Man nehme: $-\bigtriangledown g(m,n)$!}\pause
\vspace{0.25cm}
\item Wir haben jetzt alle Zutaten um den Gradientenabstieg zu formulieren.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{Gradientenabstieg - Algorithums}
\begin{enumerate}
\item Starte mit einer beliebigen Parameterkombination $p_0 = (m_0,
n_0)$.
\item Wiederhole solange wie die der Gradient \"uber einer
bestimmten Schwelle ist:
\begin{itemize}
\item Berechne den Gradienten an der akutellen Position $p_t$.
\item Gehe einen kleinen Schritt in die entgegensetzte Richtung des
Gradienten:\\
\begin{center}
$p_{t+1} = p_t - \epsilon \cdot \bigtriangledown g(m_t, n_t)$
\end{center}
wobei $\epsilon$ eine kleine Zahl (0.01) ist.
\end{itemize}
\end{enumerate}
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{Gradientenabstieg - \"Ubung}
\begin{enumerate}
\item Implementiert den Grandientenabstieg f\"ur das Fitten der
linearen Geradengleichung an die Daten.
\item Plottet f\"ur jeden Schritt den surface plot und die aktuelle
Position als roten Punkt (nutzt \code{plot3}).
\item Plottet f\"ur jeden Schritt den Fit in einen separaten plot.
\item Nutzt \code{pause(0.1)} nach jedem Schritt um die Entwicklung
des Fits zu beobachten.
\end{enumerate}
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{Gradientenabstieg - \"Ubung II}
\begin{columns}
\begin{column}{6cm}
\begin{figure}
\includegraphics[width=1\columnwidth]{figures/charging_curve.pdf}
\end{figure}
\end{column}
\begin{column}{7cm}
\begin{itemize}
\item Ladet die Daten aus der \code{membraneVoltage.mat}.
\item Plottet die Rohdaten.
\item Fittet folgende Funktion an die Daten:\\
\begin{center}
$f_{A,\tau}(t) = A \cdot \left(1 - e^{-\frac{t}{\tau}}\right )$
\end{center}
\item An welcher Stelle muss der Code von oben ver\"andert
werden?
\item Plottet die Daten zusammen mit dem Fit.
\end{itemize}
\end{column}
\end{columns}
\end{frame}
\begin{frame}[fragile]
\frametitle{Fitting und Optimierung}
\framesubtitle{Fitting mit Matlab}
\begin{itemize}
\item Es gibt mehrere Funktionen in Matlab, die eine Optimierung
automatisch durchf\"uhren.
\item z.B. \code{fminunc, lsqcurvefit, fminsearch, lsqnonlin, ...}
\item Einige der Funktionen stecken allerdings in der
\textit{Optimization Toolbox}, die nicht zum Standard Matlab
geh\"ort.
\end{itemize}
\begin{lstlisting}
function param = estimated_regression(x, y, start_parameter)
objective_function = @(p)(lsq_error(p, x, y));
param = fminunc(objective_function, start_parameter)
\end{lstlisting}
\end{frame}
\end{document}