kurse:efcomputergrafik:kw10

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
kurse:efcomputergrafik:kw10 [2020/03/03 12:40]
Simon Knaus
kurse:efcomputergrafik:kw10 [2020/04/02 08:24] (current)
Simon Knaus [Aufgaben]
Line 2: Line 2:
  
   * Jede/r kann eine multivariate Regression mit und ohne SciKit durchführen   * Jede/r kann eine multivariate Regression mit und ohne SciKit durchführen
-  * Jede/r kennt eine Strategie, wie das beste Modell ausgewählt werden kann und kennt die  Begriff Trainings, Validierungs- und Testdatensatz. +  * <del>Jede/r kennt eine Strategie, wie das beste Modell ausgewählt werden kann und kennt die  Begriff Trainings, Validierungs- und Testdatensatz.</del> 
-  * Jede/r kennt die Idee des <<gradient descent>> Algorithmus und kann für die Funktion $f(x,y)=(x-3)^2+(y+2)^2$ das Minimum bestimmen.+  * Jede/r kennt die Idee des <<gradient descent>> Algorithmus und kann für eine Funktion mit dem <<gradient descent>> das Minimum bestimmen.
  
 Abzugeben sind die Komma-getrennten Vorhersagen der letzten Woche sowie die Vorhersage des besten Modells dieser Woche auf der  [[kurse:efcomputergrafik:forecastcompetition|Forecasts-Seite]] Abzugeben sind die Komma-getrennten Vorhersagen der letzten Woche sowie die Vorhersage des besten Modells dieser Woche auf der  [[kurse:efcomputergrafik:forecastcompetition|Forecasts-Seite]]
Line 10: Line 10:
 Wie letztes Mal erwähnt, halten wir uns an folgenden Abmachungen: Wie letztes Mal erwähnt, halten wir uns an folgenden Abmachungen:
   * Grossbuchstaben $X$, $Y$ sind Zufallsvariablen   * Grossbuchstaben $X$, $Y$ sind Zufallsvariablen
-  * Kleinbuchstaben mit Index sind Datenpunkte $x_i$. $x_i$ kann dabei eine Zahl oder ein Vektor sein. $y_i$ ist immer die Abhängige Grösse+  * Kleinbuchstaben mit Index sind Datenpunkte $x_i$. $x_i$ kann dabei eine Zahl oder ein Vektor sein. $y_i$ ist immer die abhängige Grösse
   * Fehler im Model werden mit $\varepsilon_i$ bezeichnet, es ist $y_i=\alpha+\beta \cdot x_i+\varepsilon_i$   * Fehler im Model werden mit $\varepsilon_i$ bezeichnet, es ist $y_i=\alpha+\beta \cdot x_i+\varepsilon_i$
   * Modellvorhersagen werden mit einem Dach $\hat{}$ versehen. Kennt man $\alpha$ und $\beta$ ist $\hat y_i=\alpha+\beta\cdot x_i$ also $y_i-\hat y_i = \varepsilon_i$ (( $\beta$ kann dabei entweder eine Zahl oder ein Vektor sein. Die Multiplikation ist dann entweder die normale Multiplikation oder das Skalarprodukt.))   * Modellvorhersagen werden mit einem Dach $\hat{}$ versehen. Kennt man $\alpha$ und $\beta$ ist $\hat y_i=\alpha+\beta\cdot x_i$ also $y_i-\hat y_i = \varepsilon_i$ (( $\beta$ kann dabei entweder eine Zahl oder ein Vektor sein. Die Multiplikation ist dann entweder die normale Multiplikation oder das Skalarprodukt.))
Line 35: Line 35:
 Für unsere Zwecke genügen die Resultate dieser Herleitung: Es ist Für unsere Zwecke genügen die Resultate dieser Herleitung: Es ist
 \[ \[
-\mathbf{\beta} = \begin{pmatrix}+\mathbf{\beta} = \begin{bmatrix}
 \alpha \\ \alpha \\
 \beta_1 \\ \beta_1 \\
Line 41: Line 41:
 \vdots\\ \vdots\\
 \beta_p \beta_p
-  \end{pmatrix} = (\mathbf{X}'\mathbf{X} )^{-1}\mathbf {X}' \mathbf y+  \end{bmatrix} = (\mathbf{X}'\mathbf{X} )^{-1}\mathbf {X}' \mathbf y
 \] \]
 wobei wobei
 \[ \[
-X= \begin{pmatrix+X= \begin{bmatrix
-1& x_{1}^1 & x_{12} & \cdots & x_{1}^j & \cdots & x_{1}^p\\ +1& x_{1}^1 & x_{1}^2 & \cdots & x_{1}^j & \cdots & x_{1}^p\\ 
-1& x_{2}^1 & x_{22} & \cdots & x_{2}^j & \cdots & x_{2}^p\\+1& x_{2}^1 & x_{2}^2 & \cdots & x_{2}^j & \cdots & x_{2}^p\\
 \vdots & \vdots & \ddots & \vdots & \ddots & \vdots\\ \vdots & \vdots & \ddots & \vdots & \ddots & \vdots\\
-1&x_{i1} & x_{i2} & \cdots & x_{i}^j & \cdots & x_{i}^p\\+1&x_{i1} & x_{i}^2 & \cdots & x_{i}^j & \cdots & x_{i}^p\\
 \vdots & \vdots & \ddots & \vdots & \ddots & \vdots\\ \vdots & \vdots & \ddots & \vdots & \ddots & \vdots\\
 1& x_{n}^1 & x_{n}^2 & \cdots & x_{n}^j & \cdots & x_{n}^p 1& x_{n}^1 & x_{n}^2 & \cdots & x_{n}^j & \cdots & x_{n}^p
-\end{pmatrix+\end{bmatrix
 \text{ und } y = \text{ und } y =
-  \begin{pmatrix}+  \begin{bmatrix}
     y_1 \\     y_1 \\
     y_2 \\     y_2 \\
Line 61: Line 61:
     \vdots \\     \vdots \\
     y_n     y_n
-  \end{pmatrix}+  \end{bmatrix}
 \] \]
 mit $X$ einer $(n \times (p+1))$ Matrix, $y$ ein $n\times 1$ Vektor (Matrix). mit $X$ einer $(n \times (p+1))$ Matrix, $y$ ein $n\times 1$ Vektor (Matrix).
Line 86: Line 86:
 Der Gradient einer Funktion, ist die der Vektor, welche die Ableitung in jede Richtung als Komponenten enthält. Ist $f:\mathbb{R}^p\rightarrow \mathbb{R}$, dann ist Der Gradient einer Funktion, ist die der Vektor, welche die Ableitung in jede Richtung als Komponenten enthält. Ist $f:\mathbb{R}^p\rightarrow \mathbb{R}$, dann ist
 \[ \[
-\nabla f= [\frac{\partial f}{\partial x_1}\;\frac{\partial f}{\partial x_2}\cdots \frac{\partial f}{\partial x_p}]'.+\nabla f= [\frac{\partial f}{\partial x_1},\;\frac{\partial f}{\partial x_2},\cdots\frac{\partial f}{\partial x_p}]'.
 \] \]
-Der Gradient von $f$ hat die wichtige Eigenschaft, dass er immer die Richtung des grössten Zuwachses angibt. Diese Eigenschaft wird ausgenutzt, um dann eben die Richtung der Stärksten Abnahme, $-\nabla f$ zu bestimmen und in diese Richtung ein Minimum zu suchen.((Die Erklärung dafür findet sich eigentlich an der Uni im ca. 2 Semester. Einen Überblick kann sich auch auf der [[https://www.khanacademy.org/math/multivariable-calculus/multivariable-derivatives/gradient-and-directional-derivatives/v/why-the-gradient-is-the-direction-of-steepest-ascent|Khan-Academy]] verschafft werden. Wir verwenden einfach die Eigenschaft, dass der Gradient die Richtung des stärksten Zuwaches angibt))+Der Gradient von $f$ hat die wichtige Eigenschaft, dass er immer die Richtung des grössten Zuwachses angibt. Diese Eigenschaft wird ausgenutzt, um dann eben die Richtung der Stärksten Abnahme, $-\nabla f$ zu bestimmen und in diese Richtung ein Minimum zu suchen.((Die Erklärung dafür findet sich eigentlich an der Uni im ca. 2 Semester. Einen Überblick kann sich auch auf der [[https://www.khanacademy.org/math/multivariable-calculus/multivariable-derivatives/gradient-and-directional-derivatives/v/why-the-gradient-is-the-direction-of-steepest-ascent|Khan-Academy]] verschafft werden. Wir verwenden einfach die Eigenschaft, dass der Gradient die Richtung des stärksten Zuwachses angibt))
  
  
Line 99: Line 99:
   - $v_{t+1}=v_t-\gamma \cdot \nabla f$, z.B. mit $\gamma=\frac 14$ und $v_1=v_0-\frac{1}{4}\cdot [2,-4]=[1.5,-3]$   - $v_{t+1}=v_t-\gamma \cdot \nabla f$, z.B. mit $\gamma=\frac 14$ und $v_1=v_0-\frac{1}{4}\cdot [2,-4]=[1.5,-3]$
  
-Die Schlaufe kann forgesetzt werden, bis sich der Wert von $f$ an der aktuellen Stelle nicht mehr zu stark ändert.+Die Schlaufe kann fortgesetzt werden, bis sich der Wert von $f$ an der aktuellen Stelle nicht mehr zu stark ändert.
  
 ==== Aufgaben ==== ==== Aufgaben ====
-  - Implementiere den Gradient Descent Algorithmus für die Funktion $f(x,y)=(x-2)^2+(y+1)^2$. +Nimm für die folgenden Aufgaben die Funktion $f(x,y)=2\cdot(x-3)^2+(y+2)^2$. Du kannst auch diese {{kurse:efcomputergrafik:efcg_contourplot.ggb|Geogebra-Datei als Hilfestellung}} verwenden. 
-  - Wähle ein Funktion mit mehr als einem Minimum und lassen den <<gradient descent>> Algorithmus das Minimum findent. Was passiert?+  - Zeichne einen <<contour plot>> für $f$. Wähle mindestens drei verschiedene Niveaus für die Niveaulininien 
 +    - Contourplot können mit Geogebra (''Folge(f(x, y) = m, m, 1, 20, 2)'') erstellt werden. 
 +    - Berechne einen Gradienten in einem Punkt, welcher auf einer gezeichneten Niveaulinie liegt. Zeichne den Gradienten als Vektor angehängt in diesem Punkt ein. Wähle einen anderen Punkt und mache dasselbe? Was fällt auf? 
 +  - Berechne zwei Schritte des <<gradient descent>>-Verfahren von Hand und trage diese im <<contour plot>> oben ein. 
 +  - Implementiere den Gradient <<gradient descent>> für die Funktion $f(x,y)=(x-2)^2+(y+1)^2$ in Python
 +  - Wähle ein Funktion mit mehr als einem Minimum und lasse den <<gradient descent>> Algorithmus das Minimum findet. Was passiert? 
 +  - Bestimme $\alpha$ und $\beta$ mit dem <<gradient descent>> Algorithmus. Wähle dabei ein Beispiel mit einer Variable $Y=\beta\cdot X+\alpha+\varepsilon$.  
 +    - Standardisiere((Standardisieren heisst, dass jede Beobachtung $x_i$ durch $\frac{x_i-\mu}{\sigma}$ ersetzt wird. Es ist dabei $\mu=\frac{1}{n}\sum_{i=1}^n x_i$ und $\sigma=\sqrt{\sum_{i=1}^n (x_i-\mu)^2}$.)) die Beobachtungen zuerst, sonst kommt es zu numerischen Problemen.  
 +    - Verwende für das Beispiel zuerst nur z.B. 50 Datensätze und vergleiche die Lösung mit der scikit Lösung. 
 +    - Führe die Rechnung mit allen Datensätzen durch und vergleiche wiederum die Lösung mit der scikit Lösung. 
 +  - Wie könnten ein bestes Model ausgewählt werden? Überlege dir Strategie, welche du verwenden könntest, um ein bestes Modell zu indentifizieren. Nota bene: Das Modell soll am besten auf neuen, ungesehen, Daten sein.
  
  
  • kurse/efcomputergrafik/kw10.1583235654.txt.gz
  • Last modified: 2020/03/03 12:40
  • by Simon Knaus