Abzugeben sind die Komma-getrennten Vorhersagen der letzten Woche sowie die Vorhersage des besten Modells dieser Woche auf der Forecasts-Seite
Wie letztes Mal erwähnt, halten wir uns an folgenden Abmachungen:
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_{1}^2 & \cdots & x_{1}^j & \cdots & x_{1}^p\\ 1& x_{2}^1 & x_{2}^2 & \cdots & x_{2}^j & \cdots & x_{2}^p\\ \vdots & \vdots & \ddots & \vdots & \ddots & \vdots\\ 1&x_{i1} & x_{i}^2 & \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
#relevante spalten auswählen x = np.asarray([data[:,6],data[:,8]]).transpose() y = data[:,7] reg = LinearRegression(fit_intercept=True).fit(x, y)
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)
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:
Die Schlaufe kann fortgesetzt werden, bis sich der Wert von $f$ an der aktuellen Stelle nicht mehr zu stark ändert.
Nimm für die folgenden Aufgaben die Funktion $f(x,y)=2\cdot(x-3)^2+(y+2)^2$. Du kannst auch diese Geogebra-Datei als Hilfestellung verwenden.
Folge(f(x, y) = m, m, 1, 20, 2)
) erstellt werden.