kurse:efcomputergrafik:kw10

This is an old revision of the document!


  • 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.
  • 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.

Abzugeben sind die Komma-getrennten Vorhersagen der letzten Woche sowie die Vorhersage des besten Modells dieser Woche auf der Forecasts-Seite

Notation

Wie letztes Mal erwähnt, halten wir uns an folgenden Abmachungen:

  • 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
  • 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$ 1)

Theorie multivariate lineare Regression

Wie bereits in der ersten Woche erläutert, ist das Modell $y_i=\alpha+\beta x_i+\epsilon_i$ häufig zu einfach. Man möchte mehrere Variablen verwenden, um Vorhersagen über den möglichen Wert $\hat y_i$ zu machen: Das Modell wird dann zu \[ Y=\alpha+\beta_1X_1+\beta_2X_2+\cdots +\beta_pX_p. \] Um die Parameter (resp. das Modell) zu bestimmen, betrachtet man wiederum die Summe der quadrierten Abstände und sucht $\alpha,\beta_1,\ldots,\beta_p$, so dass eben die Summe der quadrierten Abstände minimal ist.

Von der Überlegung her, suchen wir also wieder $\alpha,\beta_1,\ldots,\beta_p$ so, dass \[ \sum_{i=1}^n (y_i-\alpha-\beta_1 x_i^1-\cdots-\beta_px_i^p)^2 \] minimal ist. Dies kann – theoretisch – wieder via Ableiten und Nullsetzen passieren. 2)

Praktisch wird es aber häufig über Matrizenmultiplikation gelöst (orthogonale Projektion).

Für unsere Zwecke genügen die Resultate dieser Herleitung: Es ist \[ \mathbf{\beta} = \begin{bmatrix} \alpha \\ \beta_1 \\ \beta_2 \\ \vdots\\ \beta_p \end{bmatrix} = (\mathbf{X}'\mathbf{X} )^{-1}\mathbf {X}' \mathbf y \] wobei \[ X= \begin{bmatrix} 1& x_{1}^1 & x_{12} & \cdots & x_{1}^j & \cdots & x_{1}^p\\ 1& x_{2}^1 & x_{22} & \cdots & x_{2}^j & \cdots & x_{2}^p\\ \vdots & \vdots & \ddots & \vdots & \ddots & \vdots\\ 1&x_{i1} & x_{i2} & \cdots & x_{i}^j & \cdots & x_{i}^p\\ \vdots & \vdots & \ddots & \vdots & \ddots & \vdots\\ 1& x_{n}^1 & x_{n}^2 & \cdots & x_{n}^j & \cdots & x_{n}^p \end{bmatrix} \text{ und } y = \begin{bmatrix} y_1 \\ y_2 \\ \vdots \\ y_i \\ \vdots \\ y_n \end{bmatrix} \] mit $X$ einer $(n \times (p+1))$ Matrix, $y$ ein $n\times 1$ Vektor (Matrix). Mit SciKit können mehrere Features (z.B. Alter und Kilometer) ebenfalls verwendet werden

| scikit_regression.py
#relevante spalten auswählen
x = np.asarray([data[:,6],data[:,8]]).transpose()
y = data[:,7]
reg = LinearRegression(fit_intercept=True).fit(x, y)
  1. Führe mindestens zwei Regressionen (mit SciKit oder von Hand) aus, bei der du mindestens zwei Variablen verwendest, um den Preis vorherzusagen.
  2. Finde eine Möglichkeit, zu entscheiden, welches das bessere Model ist.
  3. Wähle dein besseres Modell und verwende dieses um wiederum auf dem Testdatensatz Vorhersagen zu machen, welches wohl der Preis des Fahrzeugs ist.
  4. Können alle Variablen gleich mit ins Modell einbezogen werden? Was ist mit mit «Diesel» oder «Modell»?
  5. Wie könnten die Koeffizienten interpretiert werden?

Im Fall der linearen Regression lassen sich die Koeffizienten explizit berechnen. Dies ist allerdings nicht immer der Fall: Gelingt es nicht, das Maximum oder Minimum einer Funktion analytisch zu bestimmen, kann man immer versuchen, dieses numerisch zu bestimmen. Dazu verwendet man den sogenannten Gradienten.

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}]'. \] 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.3)

Beispiel

Ist $f(x,y)=(x-2)^2+(y+1)^2$ so ist $\nabla f =[2x-4,\;2y+2]'$. Damit ist z.B. die Richtung der stärksten Zunahme an der Stelle $[3,-3]'$ $[2\cdot 3-4,\;2\cdot(-3)+2]'=[2,-4]'$.

Möchte man jetzt das Minimum numerisch finden, kann man vom Startpunkt $[3,-3]'$ aus ein Vielfaches $\gamma$ des negativen Gradienten dazuzählen, um dem Minimum näher zu kommen:

  1. Wähle einen Startpunkt $v_0$, z.B. $v_0=[3,-3]'$
  2. $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.

  1. Implementiere den Gradient Descent Algorithmus für die Funktion $f(x,y)=(x-2)^2+(y+1)^2$.
  2. Wähle ein Funktion mit mehr als einem Minimum und lassen den «gradient descent» Algorithmus das Minimum findent. Was passiert?

1)
$\beta$ kann dabei entweder eine Zahl oder ein Vektor sein. Die Multiplikation ist dann entweder die normale Multiplikation oder das Skalarprodukt.
2)
Die Summe oben kann als Funktion von $\alpha,\beta_1,\ldots,\beta_p$ aufgefasst werden, deren Minimum wir suchen, i.e. \[ g(\alpha,\beta_1,\ldots,\beta_p)=\sum_{i=1}^n (y_i-\alpha-\beta_1 x_i^1-\cdots-\beta_px_i^p)^2. \]
3)
Die Erklärung dafür findet sich eigentlich an der Uni im ca. 2 Semester. Einen Überblick kann sich auch auf der Khan-Academy verschafft werden. Wir verwenden einfach die Eigenschaft, dass der Gradient die Richtung des stärksten Zuwaches angibt
  • kurse/efcomputergrafik/kw10.1583236027.txt.gz
  • Last modified: 2020/03/03 12:47
  • by Simon Knaus