====== Large Dataset ====== Wie kann man feststellen, ob ein Algo mit mehr Daten besser funktioniert? Plotten einer Learning Curve für verschiedene m. Wenn Algorithmus hohe Varianz bei kleinem m hat, ist dies der Fall. Learning Curve: * x: Größe Trainingsset * y: Fehler Plotten von * J_CV(theta) * J_train(theta) * Wenn Lücke => High Variance (Mehr Daten) * Wenn nah beieinander => High Bias (Mehr Hidden units, mehr Features zur Verbesserung) ===== Algorithmen ===== ==== Batch gradient descent ==== "Batch" - Alle Trainingsbeispiele berücksichtigen (also m). ==== Stochastic gradient descent ==== 1. Randomly shuffle dataset 2. Repeat { for i=1, ..., m for j=0, ..., n theta_j = theta_j - alpha (h_theta(x^{(i)}-y^{(i)})x_j^(i) } } } Wandert in die Nähe des globalen Minimums. Mehrfache Ausführung von 2. === Konvergenz === Plotten der Kostenfunktion als Funktion der Zahl von Iterationen. $\text{cost}(\theta,(x^{(i)},y^{(i)})) = 1/2 (h_\theta(x^{(i)})-y^{(i)})^2$ Berechnen dieser Kosten vor updaten von \theta. Jede 1000 Iterationen plotte Kostenfkt. im Mittel über letzte 1000 Beispiele. 1000 Kurve mit Noise. 5000, glatter aber nur alle 5000 ein Punkt. Wenn Kurve ansteigt => Divergenz => kleineres Alpha wählen. === Alpha === Langsam \alpha senken, um zu konvergieren. ==== Mini-Batch Gradient Descent ==== Verwende b = mini-batch size (typisch: 2-100) Beispiele in jeder Iteration. ===== Online Learning ===== Wenn kontinuierlicher Datenzufluss. Lernen von $p(y=1|x;\theta)$ um Preis zu optimieren. Repeat forever { Get (x,y) corresponding to user. Update \theta using (x,y) \theta_j = \theta_j - \alpha (h_\theta(x)-y) x_j }