From 9c462f6070c206c867953b86e36f72447507aa87 Mon Sep 17 00:00:00 2001 From: Jan Benda Date: Tue, 12 Dec 2017 11:29:38 +0100 Subject: [PATCH 1/6] added bootstrap of correlation coefficient --- bootstrap/exercises/correlationbootstrap.m | 37 ++++++++++++++ bootstrap/exercises/correlationbootstrap.pdf | Bin 0 -> 4688 bytes .../exercises/correlationsignificance.pdf | Bin 59661 -> 59541 bytes bootstrap/exercises/exercises01.tex | 48 +++++++++++++----- 4 files changed, 73 insertions(+), 12 deletions(-) create mode 100644 bootstrap/exercises/correlationbootstrap.m create mode 100644 bootstrap/exercises/correlationbootstrap.pdf diff --git a/bootstrap/exercises/correlationbootstrap.m b/bootstrap/exercises/correlationbootstrap.m new file mode 100644 index 0000000..5abb951 --- /dev/null +++ b/bootstrap/exercises/correlationbootstrap.m @@ -0,0 +1,37 @@ +%% (a) bootstrap: +nperm = 1000; +rb = zeros(nperm,1); +for i=1:nperm + % indices for resampling the data: + inx = randi(length(x), length(x), 1); + % resampled data pairs: + xb=x(inx); + yb=y(inx); + rb(i) = corr(xb, yb); +end + +%% (b) pdf of the correlation coefficients: +[hb,bb] = hist(rb, 20 ); +hb = hb/sum(hb)/(bb(2)-bb(1)); % normalization + +%% (c) significance: +rbq = quantile(rb, 0.05); +fprintf('correlation coefficient at 5%% significance = %.2f\n', rbq ); +if rbq > 0.0 + fprintf('--> correlation r=%.2f is significant\n', rd); +else + fprintf('--> r=%.2f is not a significant correlation\n', rd); +end + +%% plot: +hold on; +bar(b, h, 'facecolor', [0.5 0.5 0.5]); +bar(bb, hb, 'facecolor', 'b'); +bar(bb(bb<=rbq), hb(bb<=rbq), 'facecolor', 'r'); +plot( [rd rd], [0 4], 'r', 'linewidth', 2 ); +xlim([-0.25 0.75]) +xlabel('Correlation coefficient'); +ylabel('Probability density'); +hold off; + +savefigpdf( gcf, 'correlationbootstrap.pdf', 12, 6 ); diff --git a/bootstrap/exercises/correlationbootstrap.pdf b/bootstrap/exercises/correlationbootstrap.pdf new file mode 100644 index 0000000000000000000000000000000000000000..68f35d17dce8341ee0128deb4375b41f14d61a78 GIT binary patch literal 4688 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 literal 0 HcmV?d00001 diff --git a/bootstrap/exercises/correlationsignificance.pdf b/bootstrap/exercises/correlationsignificance.pdf index 9240e4f6cfb5a25b28b0a79be3061947eb26c9ef..1094f940fe69c4888e4c0e3f1d2032a001d72a5e 100644 GIT binary patch literal 59541 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 literal 59661 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 Date: Mon, 8 Jan 2018 11:33:02 +0100 Subject: [PATCH 2/6] Small fixes in regression and likelihood --- header.tex | 3 ++ likelihood/lecture/likelihood.tex | 20 +++++------ regression/exercises/Makefile | 34 +++++++++++++++++++ .../{gradient_descent.tex => exercises01.tex} | 24 ++++++------- regression/exercises/instructions.tex | 6 ++++ regression/lecture/regression.tex | 8 ++--- scientificcomputing-script.tex | 2 ++ 7 files changed, 71 insertions(+), 26 deletions(-) create mode 100644 regression/exercises/Makefile rename regression/exercises/{gradient_descent.tex => exercises01.tex} (81%) create mode 100644 regression/exercises/instructions.tex diff --git a/header.tex b/header.tex index f233f22..e100d4b 100644 --- a/header.tex +++ b/header.tex @@ -279,6 +279,9 @@ % content of someoutput.out % % Within the exercise environment enumerate is redefined to generate (a), (b), (c), ... +% +% The boolean showexercisesolutions controls whether solutions for the exercises +% are actually included. \usepackage{mdframed} \usepackage{xstring} \newlistof{exercisef}{loe}{\tr{Exercises}{\"Ubungen}} diff --git a/likelihood/lecture/likelihood.tex b/likelihood/lecture/likelihood.tex index f4c12c4..91ba87f 100644 --- a/likelihood/lecture/likelihood.tex +++ b/likelihood/lecture/likelihood.tex @@ -28,7 +28,7 @@ den Parametern $\theta$. Wenn nun den $n$ unabh\"angigen Beobachtungen $x_1, x_2, \ldots x_n$ die gleiche Wahrscheinlichkeitsverteilung $p(x|\theta)$ zugrundeliegt -(\enterm{i.i.d.} idependent and identically distributed), dann ist die +(\enterm{i.i.d.} independent and identically distributed), dann ist die Verbundwahrscheinlichkeit $p(x_1,x_2, \ldots x_n|\theta)$ des Auftretens der Werte $x_1, x_2, \ldots x_n$, gegeben ein bestimmtes $\theta$, @@ -71,14 +71,14 @@ Gr\"unden wird meistens das Maximum der logarithmierten Likelihood Wenn die Me{\ss}daten $x_1, x_2, \ldots x_n$ der Normalverteilung \eqnref{normpdfmean} entstammen, und wir den Mittelwert $\mu=\theta$ als einzigen Parameter der Verteilung betrachten, welcher Wert von -$\theta$ maximiert dessen Likelhood? +$\theta$ maximiert dessen Likelihood? \begin{figure}[t] \includegraphics[width=1\textwidth]{mlemean} \titlecaption{\label{mlemeanfig} Maximum Likelihood Sch\"atzung des Mittelwerts.}{Oben: Die Daten zusammen mit drei m\"oglichen Normalverteilungen mit unterschiedlichen Mittelwerten (Pfeile) aus - denen die Daten stammen k\"onnten. Unteln links: Die Likelihood + denen die Daten stammen k\"onnten. Unten links: Die Likelihood in Abh\"angigkeit des Mittelwerts als Parameter der Normalverteilungen. Unten rechts: die entsprechende Log-Likelihood. An der Position des Maximums bei $\theta=2$ @@ -91,15 +91,15 @@ Die Log-Likelihood \eqnref{loglikelihood} ist & = & \sum_{i=1}^n \log \frac{1}{\sqrt{2\pi \sigma^2}}e^{-\frac{(x_i-\theta)^2}{2\sigma^2}} \\ & = & \sum_{i=1}^n - \log \sqrt{2\pi \sigma^2} -\frac{(x_i-\theta)^2}{2\sigma^2} \; . \end{eqnarray*} -Der Logarithmus hat die sch\"one Eigenschaft die Exponentialfunktion +Der Logarithmus hat die sch\"one Eigenschaft, die Exponentialfunktion der Normalverteilung auszul\"oschen, da der Logarithmus die Umkehrfunktion der Exponentialfunktion ist ($\log(e^x)=x$). Zur Bestimmung des Maximums der Log-Likelihood berechnen wir deren Ableitung nach dem Parameter $\theta$ und setzen diese gleich Null: \begin{eqnarray*} - \frac{\text{d}}{\text{d}\theta} \log {\cal L}(\theta|x_1,x_2, \ldots x_n) & = & \sum_{i=1}^n \frac{2(x_i-\theta)}{2\sigma^2} \;\; = \;\; 0 \\ - \Leftrightarrow \quad \sum_{i=1}^n x_i - \sum_{i=1}^n x_i \theta & = & 0 \\ + \frac{\text{d}}{\text{d}\theta} \log {\cal L}(\theta|x_1,x_2, \ldots x_n) & = & \sum_{i=1}^n - \frac{2(x_i-\theta)}{2\sigma^2} \;\; = \;\; 0 \\ + \Leftrightarrow \quad \sum_{i=1}^n x_i - \sum_{i=1}^n \theta & = & 0 \\ \Leftrightarrow \quad n \theta & = & \sum_{i=1}^n x_i \\ \Leftrightarrow \quad \theta & = & \frac{1}{n} \sum_{i=1}^n x_i \;\; = \;\; \bar x \end{eqnarray*} @@ -188,12 +188,12 @@ und setzen diese gleich Null: \Leftrightarrow \quad \theta & = & \frac{\sum_{i=1}^n \frac{x_iy_i}{\sigma_i^2}}{ \sum_{i=1}^n \frac{x_i^2}{\sigma_i^2}} \label{mleslope} \end{eqnarray} Damit haben wir nun einen anlytischen Ausdruck f\"ur die Bestimmung -der Steigung $\theta$ des Regressionsgeraden gewonnen +der Steigung $\theta$ der Regressionsgeraden gewonnen (\figref{mleproplinefig}). Ein Gradientenabstieg ist f\"ur das Fitten der Geradensteigung also gar nicht n\"otig. Das gilt allgemein f\"ur das Fitten von -Koeffizienten von linear kombinierten Basisfunktionen. Wie z.B. die +Koeffizienten von linear kombinierten Basisfunktionen. Wie z.B. die Steigung $m$ und der y-Achsenabschnitt $b$ einer Geradengleichung \[ y = m \cdot x +b \] oder allgemeiner die Koeffizienten $a_k$ eines Polynoms @@ -279,8 +279,8 @@ als Funktion des Orientierungswinkels). bevorzugte Orientierung des Stimulus (farbige Linien). Ein Stimulus einer bestimmten Orientierung aktiviert die Neurone in spezifischer Weise (Punkte). Unten: Die Log-Likelihood dieser - Aktivit\"aten wir maximal in der N\"ahe der wahren Orientierung - des Stimulus.} + Aktivit\"aten wird in der N\"ahe der wahren Orientierung + des Stimulus maximiert.} \end{figure} Das Gehirn ist aber mit dem umgekehrten Problem konfrontiert: gegeben diff --git a/regression/exercises/Makefile b/regression/exercises/Makefile new file mode 100644 index 0000000..27691d9 --- /dev/null +++ b/regression/exercises/Makefile @@ -0,0 +1,34 @@ +TEXFILES=$(wildcard exercises??.tex) +EXERCISES=$(TEXFILES:.tex=.pdf) +SOLUTIONS=$(EXERCISES:exercises%=solutions%) + +.PHONY: pdf exercises solutions watch watchexercises watchsolutions clean + +pdf : $(SOLUTIONS) $(EXERCISES) + +exercises : $(EXERCISES) + +solutions : $(SOLUTIONS) + +$(SOLUTIONS) : solutions%.pdf : exercises%.tex instructions.tex + { echo "\\documentclass[answers,12pt,a4paper,pdftex]{exam}"; sed -e '1d' $<; } > $(patsubst %.pdf,%.tex,$@) + pdflatex -interaction=scrollmode $(patsubst %.pdf,%.tex,$@) | tee /dev/stderr | fgrep -q "Rerun to get cross-references right" && pdflatex -interaction=scrollmode $(patsubst %.pdf,%.tex,$@) || true + rm $(patsubst %.pdf,%,$@).[!p]* + +$(EXERCISES) : %.pdf : %.tex instructions.tex + pdflatex -interaction=scrollmode $< | tee /dev/stderr | fgrep -q "Rerun to get cross-references right" && pdflatex -interaction=scrollmode $< || true + +watch : + while true; do ! make -q pdf && make pdf; sleep 0.5; done + +watchexercises : + while true; do ! make -q exercises && make exercises; sleep 0.5; done + +watchsolutions : + while true; do ! make -q solutions && make solutions; sleep 0.5; done + +clean : + rm -f *~ *.aux *.log *.out + +cleanup : clean + rm -f $(SOLUTIONS) $(EXERCISES) diff --git a/regression/exercises/gradient_descent.tex b/regression/exercises/exercises01.tex similarity index 81% rename from regression/exercises/gradient_descent.tex rename to regression/exercises/exercises01.tex index bd103ec..5b6024d 100644 --- a/regression/exercises/gradient_descent.tex +++ b/regression/exercises/exercises01.tex @@ -13,10 +13,16 @@ %%%%% text size %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry} -\pagestyle{headandfoot} \header{{\bfseries\large \"Ubung -}}{{\bfseries\large Gradientenabstiegsverfahren}}{{\bfseries\large 10. Januar, 2017}} +\pagestyle{headandfoot} +\ifprintanswers +\newcommand{\stitle}{: Solutions} +\else +\newcommand{\stitle}{} +\fi +\header{{\bfseries\large Exercise 11\stitle}}{{\bfseries\large Gradient descend}}{{\bfseries\large January 9th, 2018}} \firstpagefooter{Dr. Jan Grewe}{Phone: 29 74588}{Email: - jan.grewe@uni-tuebingen.de} \runningfooter{}{\thepage}{} + jan.grewe@uni-tuebingen.de} +\runningfooter{}{\thepage}{} \setlength{\baselineskip}{15pt} \setlength{\parindent}{0.0cm} @@ -24,21 +30,15 @@ \renewcommand{\baselinestretch}{1.15} \newcommand{\code}[1]{\texttt{#1}} -\renewcommand{\solutiontitle}{\noindent\textbf{L\"osung:}\par\noindent} +\renewcommand{\solutiontitle}{\noindent\textbf{Solution:}\par\noindent} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{document} -\vspace*{-6.5ex} -\begin{center} - \textbf{\Large Einf\"uhrung in die wissenschaftliche - Datenverarbeitung}\\[1ex] {\large Jan Grewe, Jan Benda}\\[-3ex] - Abteilung Neuroethologie \hfill --- \hfill Institut f\"ur - Neurobiologie \hfill --- \hfill - \includegraphics[width=0.28\textwidth]{UT_WBMW_Black_RGB} \\ -\end{center} +\input{instructions} \begin{questions} + \question Implementiere den Gradientenabstieg f\"ur das Problem der Parameteranpassung der linearen Geradengleichung an die Messdaten in der Datei \emph{lin\_regression.mat}. diff --git a/regression/exercises/instructions.tex b/regression/exercises/instructions.tex new file mode 100644 index 0000000..3041d3e --- /dev/null +++ b/regression/exercises/instructions.tex @@ -0,0 +1,6 @@ +\vspace*{-7.8ex} +\begin{center} +\textbf{\Large Introduction to Scientific Computing}\\[2.3ex] +{\large Jan Grewe, Jan Benda}\\[-3ex] +Neuroethology Lab \hfill --- \hfill Institute for Neurobiology \hfill --- \hfill \includegraphics[width=0.28\textwidth]{UT_WBMW_Black_RGB} \\ +\end{center} diff --git a/regression/lecture/regression.tex b/regression/lecture/regression.tex index f7e3b47..dd6c990 100644 --- a/regression/lecture/regression.tex +++ b/regression/lecture/regression.tex @@ -264,7 +264,7 @@ Kostenfunktion mit m\"oglichst wenigen Berechnungen findet. und zeigt in Richtung des st\"arksten Anstiegs der Funktion $f(x,y)$. \end{minipage} - \vspace{1ex} Die Abbildung zeigt die Kontourlinien einer bivariaten + \vspace{1ex} Die Abbildung zeigt die Konturlinien einer bivariaten Gau{\ss}glocke $f(x,y) = \exp(-(x^2+y^2)/2)$ und den Gradienten mit seinen partiellen Ableitungen an drei verschiedenen Stellen. \end{ibox} @@ -283,7 +283,7 @@ Gef\"alles rollt, ben\"otigen wir Information \"uber die Richtung des Gef\"alles an der jeweils aktuellen Position. Der \determ{Gradient} (Box~\ref{partialderivativebox}) der Kostenfunktion -\[ \nabla f_{cost}(m,b) = \left( \frac{\partial e(m,b)}{\partial m}, +\[ \nabla f_{cost}(m,b) = \left( \frac{\partial f(m,b)}{\partial m}, \frac{\partial f(m,b)}{\partial b} \right) \] bzgl. der beiden Parameter $m$ und $b$ der Geradengleichung ist ein Vektor, der in Richtung des steilsten Anstiegs der Kostenfunktion $f_{cost}(m,b)$ zeigt. @@ -306,10 +306,10 @@ partielle Ableitung nach $m$ durch \titlecaption{Gradient der Fehlerfl\"ache.} {Jeder Pfeil zeigt die Richtung und die Steigung f\"ur verschiedene Parameterkombination aus Steigung und - $y$-Achsenabschnitt an. Die Kontourlinien im Hintergrund + $y$-Achsenabschnitt an. Die Konturlinien im Hintergrund illustrieren die Fehlerfl\"ache. Warme Farben stehen f\"ur gro{\ss}e Fehlerwerte, kalte Farben f\"ur kleine. Jede - Kontourlinie steht f\"ur eine Linie gleichen + Konturlinie steht f\"ur eine Linie gleichen Fehlers.}\label{gradientquiverfig} \end{figure} diff --git a/scientificcomputing-script.tex b/scientificcomputing-script.tex index 1e5fb9d..e4ab182 100644 --- a/scientificcomputing-script.tex +++ b/scientificcomputing-script.tex @@ -63,10 +63,12 @@ \lstset{inputpath=bootstrap/code} \include{bootstrap/lecture/bootstrap} +\setboolean{showexercisesolutions}{false} \graphicspath{{regression/lecture/}{regression/lecture/figures/}} \lstset{inputpath=regression/code} \include{regression/lecture/regression} +\setboolean{showexercisesolutions}{true} \graphicspath{{likelihood/lecture/}{likelihood/lecture/figures/}} \lstset{inputpath=likelihood/code} \include{likelihood/lecture/likelihood} From 9c0559ab0329623a01c1c6563e5858424512a306 Mon Sep 17 00:00:00 2001 From: Jan Benda Date: Mon, 8 Jan 2018 17:52:48 +0100 Subject: [PATCH 3/6] solution for regression exercises --- regression/code/checkdescent.m | 25 ++++++ regression/code/descent.m | 15 ++++ regression/code/descentfit.m | 22 +++++ regression/code/errorSurface.m | 2 +- regression/code/linefit.m | 18 ++++ regression/exercises/exercises01-de.tex | 82 +++++++++++++++++++ regression/exercises/exercises01.tex | 104 +++++++++++++++++------- regression/lecture/regression.tex | 2 + scientificcomputing-script.tex | 1 - statistics/lecture/statistics.tex | 8 +- 10 files changed, 243 insertions(+), 36 deletions(-) create mode 100644 regression/code/checkdescent.m create mode 100644 regression/code/descent.m create mode 100644 regression/code/descentfit.m create mode 100644 regression/code/linefit.m create mode 100644 regression/exercises/exercises01-de.tex diff --git a/regression/code/checkdescent.m b/regression/code/checkdescent.m new file mode 100644 index 0000000..cc56466 --- /dev/null +++ b/regression/code/checkdescent.m @@ -0,0 +1,25 @@ +% data: +load('lin_regression.mat') + +% compute mean squared error for a range of slopes and intercepts: +slopes = -5:0.25:5; +intercepts = -30:1:30; +errors = zeros(length(slopes), length(intercepts)); +for i = 1:length(slopes) + for j = 1:length(intercepts) + errors(i,j) = lsqError([slopes(i), intercepts(j)], x, y); + end +end + +% minimum of error surface: +[me, mi] = min(errors(:)); +[ia, ib] = ind2sub(size(errors), mi); +eparams = [errors(ia), errors(ib)]; + +% gradient descent: +pstart = [-2. 10.]; +[params, errors] = descent(x, y, pstart); + +% comparison: +fprintf('descent: %6.3f %6.3f\n', params(1), params(2)); +fprintf('errors: %6.3f %6.3f\n', eparams(1), eparams(2)); diff --git a/regression/code/descent.m b/regression/code/descent.m new file mode 100644 index 0000000..1888414 --- /dev/null +++ b/regression/code/descent.m @@ -0,0 +1,15 @@ +function [params, errors] = descent(xdata, ydata, pstart) + mingradient = 0.1; + eps = 0.01; + + errors = []; + params = pstart; + count = 1; + gradient = [100.0, 100.0]; + while norm(gradient) > mingradient + gradient = lsqGradient(params, xdata, ydata); + errors(count) = lsqError(params, xdata, ydata); + params = params - eps .* gradient; + count = count + 1; + end +end diff --git a/regression/code/descentfit.m b/regression/code/descentfit.m new file mode 100644 index 0000000..ecabb68 --- /dev/null +++ b/regression/code/descentfit.m @@ -0,0 +1,22 @@ +clear +close all +load('lin_regression.mat') + +pstart = [-2. 10.]; +[params, errors] = descent(x, y, pstart); + +figure() +subplot(2,1,1) +hold on +scatter(x, y, 'displayname', 'data') +xx = min(x):0.01:max(x); +fx = params(1)*xx + params(2); +plot(xx, fx, 'displayname', 'fit') +xlabel('Input') +ylabel('Output') +grid on +legend show +subplot(2,1,2) +plot(errors) +xlabel('optimization steps') +ylabel('error') \ No newline at end of file diff --git a/regression/code/errorSurface.m b/regression/code/errorSurface.m index 4bd3fd2..0e88c1e 100644 --- a/regression/code/errorSurface.m +++ b/regression/code/errorSurface.m @@ -1,6 +1,6 @@ load('lin_regression.mat'); -% compute mean squared error for a range of sloopes and intercepts: +% compute mean squared error for a range of slopes and intercepts: slopes = -5:0.25:5; intercepts = -30:1:30; error_surf = zeros(length(slopes), length(intercepts)); diff --git a/regression/code/linefit.m b/regression/code/linefit.m new file mode 100644 index 0000000..df600e2 --- /dev/null +++ b/regression/code/linefit.m @@ -0,0 +1,18 @@ +% data: +load('lin_regression.mat') + +% gradient descent: +pstart = [-2. 10.]; +[params, errors] = descent(x, y, pstart); + +% lsqcurvefit: +line = @(p, x) x.* p(1) + p(2); +cparams = lsqcurvefit(line, pstart, x, y); + +% polyfit: +pparams = polyfit(x, y, 1); + +% comparison: +fprintf('descent: %6.3f %6.3f\n', params(1), params(2)); +fprintf('lsqcurvefit: %6.3f %6.3f\n', cparams(1), cparams(2)); +fprintf('polyfit: %6.3f %6.3f\n', pparams(1), pparams(2)); diff --git a/regression/exercises/exercises01-de.tex b/regression/exercises/exercises01-de.tex new file mode 100644 index 0000000..b7a835f --- /dev/null +++ b/regression/exercises/exercises01-de.tex @@ -0,0 +1,82 @@ +\documentclass[12pt,a4paper,pdftex]{exam} + +\usepackage[german]{babel} +\usepackage{natbib} +\usepackage{graphicx} +\usepackage[small]{caption} +\usepackage{sidecap} +\usepackage{pslatex} +\usepackage{amsmath} +\usepackage{amssymb} +\setlength{\marginparwidth}{2cm} +\usepackage[breaklinks=true,bookmarks=true,bookmarksopen=true,pdfpagemode=UseNone,pdfstartview=FitH,colorlinks=true,citecolor=blue]{hyperref} + +%%%%% text size %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry} +\pagestyle{headandfoot} +\ifprintanswers +\newcommand{\stitle}{: Solutions} +\else +\newcommand{\stitle}{} +\fi +\header{{\bfseries\large Exercise 11\stitle}}{{\bfseries\large Gradient descent}}{{\bfseries\large January 9th, 2018}} +\firstpagefooter{Dr. Jan Grewe}{Phone: 29 74588}{Email: + jan.grewe@uni-tuebingen.de} +\runningfooter{}{\thepage}{} + +\setlength{\baselineskip}{15pt} +\setlength{\parindent}{0.0cm} +\setlength{\parskip}{0.3cm} +\renewcommand{\baselinestretch}{1.15} + +\newcommand{\code}[1]{\texttt{#1}} +\renewcommand{\solutiontitle}{\noindent\textbf{Solution:}\par\noindent} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{document} + +\input{instructions} + +\begin{questions} + + \question Implementiere den Gradientenabstieg f\"ur das Problem der + Parameteranpassung der linearen Geradengleichung an die Messdaten in + der Datei \emph{lin\_regression.mat}. + + Die daf\"ur ben\"otigten Zutaten haben wir aus den vorangegangenen + \"Ubungen bereits vorbereitet. Wir brauchen: 1. Die Fehlerfunktion + (\code{meanSquareError()}), 2. die Zielfunktion (\code{lsqError()}) + und 3. den Gradienten (\code{lsqGradient()}). Der Algorithmus f\"ur + den Abstieg lautet: + + \begin{enumerate} + \item Starte mit einer beliebigen Parameterkombination $p_0 = (m_0, + b_0)$. + \item \label{computegradient} Berechne den Gradienten an der + akutellen Position $p_i$. + \item Wenn die L\"ange des Gradienten einen bestimmten Wert + unterschreitet, haben wir das Minum gefunden und k\"onnen die + Suche abbrechen. Wir suchen ja das Minimum, bei dem der Gradient + gleich Null ist. Da aus numerischen Gr\"unden der Gradient nie + exakt Null werden wird, k\"onnen wir nur fordern, dass er + hinreichend klein wird (z.B. \code{norm(gradient) < 0.1}). + \item \label{gradientstep} Gehe einen kleinen Schritt ($\epsilon = + 0.01$) in die entgegensetzte Richtung des Gradienten: + \[p_{i+1} = p_i - \epsilon \cdot \nabla f_{cost}(m_i, b_i)\] + \item Wiederhole die Schritte \ref{computegradient} -- + \ref{gradientstep}. + \end{enumerate} + + + \begin{parts} + \part Implementiere den Gradientenabstieg und merke Dir f\"ur jeden Schritt + die Parameterkombination und den zugehörigen Fehler. + \part Erstelle einen Plot der die Originaldaten sowie die Vorhersage mit der + besten Parameterkombination darstellt. + \part Stelle in einem weiteren Plot die Entwicklung des Fehlers als Funktion der + Optimierungsschritte dar. + \end{parts} + +\end{questions} + +\end{document} diff --git a/regression/exercises/exercises01.tex b/regression/exercises/exercises01.tex index 5b6024d..40241cb 100644 --- a/regression/exercises/exercises01.tex +++ b/regression/exercises/exercises01.tex @@ -19,7 +19,7 @@ \else \newcommand{\stitle}{} \fi -\header{{\bfseries\large Exercise 11\stitle}}{{\bfseries\large Gradient descend}}{{\bfseries\large January 9th, 2018}} +\header{{\bfseries\large Exercise 11\stitle}}{{\bfseries\large Gradient descent}}{{\bfseries\large January 9th, 2018}} \firstpagefooter{Dr. Jan Grewe}{Phone: 29 74588}{Email: jan.grewe@uni-tuebingen.de} \runningfooter{}{\thepage}{} @@ -31,6 +31,24 @@ \newcommand{\code}[1]{\texttt{#1}} \renewcommand{\solutiontitle}{\noindent\textbf{Solution:}\par\noindent} +%%%%% listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage{listings} +\lstset{ + language=Matlab, + basicstyle=\ttfamily\footnotesize, + numbers=left, + numberstyle=\tiny, + title=\lstname, + showstringspaces=false, + commentstyle=\itshape\color{darkgray}, + breaklines=true, + breakautoindent=true, + columns=flexible, + frame=single, + xleftmargin=1em, + xrightmargin=1em, + aboveskip=10pt +} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{document} @@ -39,42 +57,68 @@ \begin{questions} - \question Implementiere den Gradientenabstieg f\"ur das Problem der - Parameteranpassung der linearen Geradengleichung an die Messdaten in - der Datei \emph{lin\_regression.mat}. + \question Implement the gradient descent for finding the parameters + of a straigth line that we want to fit to the data in the file + \emph{lin\_regression.mat}. - Die daf\"ur ben\"otigten Zutaten haben wir aus den vorangegangenen - \"Ubungen bereits vorbereitet. Wir brauchen: 1. Die Fehlerfunktion - (\code{meanSquareError()}), 2. die Zielfunktion (\code{lsqError()}) - und 3. den Gradienten (\code{lsqGradient()}). Der Algorithmus f\"ur - den Abstieg lautet: + In the lecture we already prepared the necessary functions: 1. the + error function (\code{meanSquareError()}), 2. the cost function + (\code{lsqError()}), and 3. the gradient (\code{lsqGradient()}). + + The algorithm for the descent towards the minimum of the cost + function is as follows: \begin{enumerate} - \item Starte mit einer beliebigen Parameterkombination $p_0 = (m_0, - b_0)$. - \item \label{computegradient} Berechne den Gradienten an der - akutellen Position $p_i$. - \item Wenn die L\"ange des Gradienten einen bestimmten Wert - unterschreitet, haben wir das Minum gefunden und k\"onnen die - Suche abbrechen. Wir suchen ja das Minimum, bei dem der Gradient - gleich Null ist. Da aus numerischen Gr\"unden der Gradient nie - exakt Null werden wird, k\"onnen wir nur fordern, dass er - hinreichend klein wird (z.B. \code{norm(gradient) < 0.1}). - \item \label{gradientstep} Gehe einen kleinen Schritt ($\epsilon = - 0.01$) in die entgegensetzte Richtung des Gradienten: + \item Start with some arbitrary parameter values $p_0 = (m_0, b_0)$ + for the slope and the intercept of the straight line. + \item \label{computegradient} Compute the gradient of the cost function + at the current values of the parameters $p_i$. + \item If the magnitude (length) of the gradient is smaller than some + small number, the algorithm converged close to the minimum of the + cost function and we abort the descent. Right at the minimum the + magnitude of the gradient is zero. However, since we determine + the gradient numerically, it will never be exactly zero. This is + why we require the gradient to be sufficiently small + (e.g. \code{norm(gradient) < 0.1}). + \item \label{gradientstep} Move against the gradient by a small step + ($\epsilon = 0.01$): \[p_{i+1} = p_i - \epsilon \cdot \nabla f_{cost}(m_i, b_i)\] - \item Wiederhole die Schritte \ref{computegradient} -- - \ref{gradientstep}. + \item Repeat steps \ref{computegradient} -- \ref{gradientstep}. \end{enumerate} - \begin{parts} - \part Implementiere den Gradientenabstieg und merke Dir f\"ur jeden Schritt - die Parameterkombination und den zugehörigen Fehler. - \part Erstelle einen Plot der die Originaldaten sowie die Vorhersage mit der - besten Parameterkombination darstellt. - \part Stelle in einem weiteren Plot die Entwicklung des Fehlers als Funktion der - Optimierungsschritte dar. + \part Implement the gradient descent in a function that returns + the parameter values at the minimum of the cost function and a vector + with the value of the cost function at each step of the algorithm. + \begin{solution} + \lstinputlisting{../code/descent.m} + \end{solution} + + \part Plot the data and the straight line with the parameter + values that you found with the gradient descent method. + + \part Plot the development of the costs as a function of the + iteration step. + \begin{solution} + \lstinputlisting{../code/descentfit.m} + \end{solution} + + \part Find the position of the minimum of the cost function by + means of the \code{min()} function. Compare with the result of the + gradient descent method. Vary the value of $\epsilon$ and the + minimum gradient. What are good values such that the gradient + descent gets closest to the true minimum of the cost function? + \begin{solution} + \lstinputlisting{../code/checkdescent.m} + \end{solution} + + \part Use the functions \code{polyfit()} and \code{lsqcurvefit()} + provided by matlab to find the slope and intercept of a straight + line that fits the data. + \begin{solution} + \lstinputlisting{../code/linefit.m} + \end{solution} + \end{parts} \end{questions} diff --git a/regression/lecture/regression.tex b/regression/lecture/regression.tex index dd6c990..f72a406 100644 --- a/regression/lecture/regression.tex +++ b/regression/lecture/regression.tex @@ -368,6 +368,7 @@ Punkte in Abbildung \ref{gradientdescentfig} gro{\ss}. Optimierungsschritt an.} \label{gradientdescentfig} \end{figure} +\setboolean{showexercisesolutions}{false} \begin{exercise}{gradientDescent.m}{} Implementiere den Gradientenabstieg f\"ur das Problem der Parameteranpassung der linearen Geradengleichung an die Messdaten in @@ -409,6 +410,7 @@ Kostenfunktionen gemacht \matlabfun{fminsearch()}, w\"ahrend spezielle Funktionen z.B. f\"ur die Minimierung des quadratischen Abstands bei einem Kurvenfit angeboten werden \matlabfun{lsqcurvefit()}. +\newpage \begin{important}[Achtung Nebenminima!] Das Finden des globalen Minimums ist leider nur selten so leicht wie bei einem Geradenfit. Oft hat die Kostenfunktion viele Nebenminima, diff --git a/scientificcomputing-script.tex b/scientificcomputing-script.tex index e4ab182..22bbed8 100644 --- a/scientificcomputing-script.tex +++ b/scientificcomputing-script.tex @@ -63,7 +63,6 @@ \lstset{inputpath=bootstrap/code} \include{bootstrap/lecture/bootstrap} -\setboolean{showexercisesolutions}{false} \graphicspath{{regression/lecture/}{regression/lecture/figures/}} \lstset{inputpath=regression/code} \include{regression/lecture/regression} diff --git a/statistics/lecture/statistics.tex b/statistics/lecture/statistics.tex index 1cdfeff..c6c217f 100644 --- a/statistics/lecture/statistics.tex +++ b/statistics/lecture/statistics.tex @@ -348,14 +348,14 @@ probability density functions like the one of the normal distribution \subsection{Kernel densities} A problem of using histograms for estimating probability densities is -that the have hard bin edges. Depending on where the bin edges are placed +that they have hard bin edges. Depending on where the bin edges are placed a data value falls in one or the other bin. \begin{figure}[t] \includegraphics[width=1\textwidth]{kerneldensity} \titlecaption{\label{kerneldensityfig} Kernel densities.}{Left: The histogram-based estimation of the probability density is dependent - also on the position of the bins. In the bottom plot the bins have + on the position of the bins. In the bottom plot the bins have bin shifted by half a bin width (here $\Delta x=0.4$) and as a result details of the probability density look different. Look, for example at the height of the largest bin. Right: In contrast, @@ -366,7 +366,7 @@ a data value falls in one or the other bin. To avoid this problem one can use so called \enterm {kernel densities} for estimating probability densities from data. Here every data point is replaced by a kernel (a function with integral one, like for -example the Gaussian function) that is moved exactly to the position +example the Gaussian) that is moved exactly to the position indicated by the data value. Then all the kernels of all the data values are summed up, the sum is divided by the number of data values, and we get an estimate of the probability density. @@ -417,7 +417,7 @@ and percentiles can be determined from the inverse cumulative function. 100 data values drawn from a normal distribution (red) in comparison to the true cumulative distribution function computed by numerically integrating the normal distribution function - (blue). From the cumulative distribution function one can read of + (blue). From the cumulative distribution function one can read off the probabilities of getting values smaller than a given value (here: $P(x \ge -1) \approx 0.15$). From the inverse cumulative distribution the position of percentiles can be computed (here: From 207bcbdcb9b98a3b70e05755bb7ea0e8fb71b5bc Mon Sep 17 00:00:00 2001 From: Jan Benda Date: Tue, 9 Jan 2018 12:49:54 +0100 Subject: [PATCH 4/6] updated regression exercise. --- regression/exercises/exercises01.tex | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/regression/exercises/exercises01.tex b/regression/exercises/exercises01.tex index 40241cb..c6eadc1 100644 --- a/regression/exercises/exercises01.tex +++ b/regression/exercises/exercises01.tex @@ -2,6 +2,7 @@ \usepackage[german]{babel} \usepackage{natbib} +\usepackage{xcolor} \usepackage{graphicx} \usepackage[small]{caption} \usepackage{sidecap} @@ -61,28 +62,30 @@ of a straigth line that we want to fit to the data in the file \emph{lin\_regression.mat}. - In the lecture we already prepared the necessary functions: 1. the - error function (\code{meanSquareError()}), 2. the cost function - (\code{lsqError()}), and 3. the gradient (\code{lsqGradient()}). + In the lecture we already prepared most of the necessary functions: + 1. the error function (\code{meanSquareError()}), 2. the cost + function (\code{lsqError()}), and 3. the gradient + (\code{lsqGradient()}). Read chapter 8 ``Optimization and gradient + descent'' in the script, in particular section 8.4 and exercise 8.4! The algorithm for the descent towards the minimum of the cost function is as follows: \begin{enumerate} - \item Start with some arbitrary parameter values $p_0 = (m_0, b_0)$ + \item Start with some arbitrary parameter values $\vec p_0 = (m_0, b_0)$ for the slope and the intercept of the straight line. \item \label{computegradient} Compute the gradient of the cost function - at the current values of the parameters $p_i$. + at the current values of the parameters $\vec p_i$. \item If the magnitude (length) of the gradient is smaller than some small number, the algorithm converged close to the minimum of the cost function and we abort the descent. Right at the minimum the magnitude of the gradient is zero. However, since we determine the gradient numerically, it will never be exactly zero. This is - why we require the gradient to be sufficiently small + why we just require the gradient to be sufficiently small (e.g. \code{norm(gradient) < 0.1}). \item \label{gradientstep} Move against the gradient by a small step ($\epsilon = 0.01$): - \[p_{i+1} = p_i - \epsilon \cdot \nabla f_{cost}(m_i, b_i)\] + \[\vec p_{i+1} = \vec p_i - \epsilon \cdot \nabla f_{cost}(m_i, b_i)\] \item Repeat steps \ref{computegradient} -- \ref{gradientstep}. \end{enumerate} From cced15b0222764e2750a2da59ebaa83658ac2352 Mon Sep 17 00:00:00 2001 From: Jan Benda Date: Mon, 15 Jan 2018 11:36:29 +0100 Subject: [PATCH 5/6] ideas for the regressionchapter --- regression/lecture/regression-chapter.tex | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/regression/lecture/regression-chapter.tex b/regression/lecture/regression-chapter.tex index 0c37634..fcb8f16 100644 --- a/regression/lecture/regression-chapter.tex +++ b/regression/lecture/regression-chapter.tex @@ -16,4 +16,8 @@ \input{regression} +Example for fit with matlab functions lsqcurvefit, polyfit + +Example for overfitting with polyfit of a high order (=number of data points) + \end{document} From 76c83365d44cf380f09e2f8532b87c2b59fef3a3 Mon Sep 17 00:00:00 2001 From: Jan Benda Date: Wed, 17 Jan 2018 12:11:47 +0100 Subject: [PATCH 6/6] updated common project files --- projects/header.tex | 2 +- projects/instructions.tex | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/projects/header.tex b/projects/header.tex index 6b19320..4d4fe9b 100644 --- a/projects/header.tex +++ b/projects/header.tex @@ -7,7 +7,7 @@ %%%%% layout %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry} \pagestyle{headandfoot} -\header{{\bfseries\large Scientific Computing}}{{\bfseries\large Project: \ptitle}}{{\bfseries\large Januar 24th, 2017}} +\header{{\bfseries\large Scientific Computing}}{{\bfseries\large Project: \ptitle}}{{\bfseries\large Januar 18th, 2018}} \runningfooter{}{\thepage}{} \setlength{\baselineskip}{15pt} diff --git a/projects/instructions.tex b/projects/instructions.tex index 4e0b1cf..63ddbec 100644 --- a/projects/instructions.tex +++ b/projects/instructions.tex @@ -10,10 +10,10 @@ {\bf Dates:} The {\bf code} and the {\bf presentation} should be uploaded to - ILIAS at latest on Thursday, February 9th, 12:59h. We will + ILIAS at latest on Sunday, February 4th, 23:59h. We will store all presentations on one computer to allow fast - transitions between talks. The presentations start on Thursday, - February 9th at 1:00h c.t.. + transitions between talks. The presentations start on Monday, + February 5th at 9:15h. \vspace{1ex} {\bf Files:}