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 }