Support Vector Machine
Manchmal sauberer Ansatz um nicht-lineare Zusammenhänge zu lernen.
Betrachtung von Kostenfkt. bei y=1 und y=0. Stückweise Approximierung (2 Teile).
$\text{cost}_0(z), \text{cost}_1(z)$
$$\min_\theta \frac{1}{m} \sum_{i=1}^m y^{(i)} \text{cost}_1(z) + (1-y^{(i)}) \text{cost}_0(z) + \frac{\lambda}{2m} \sum_{j=1}^n \theta_j^2\\ z=\theta^Tx^{(i)}$$
Vereinfacht (ohne $\frac{1}{m}$), und mit Umformung $A + \lambda B$ ⇒ $C A + B$ mit $C = 1 / \lambda$: $$\min_\theta C \sum_{i=1}^m y^{(i)} \text{cost}_1(z) + (1-y^{(i)}) \text{cost}_0(z) + \frac{\lambda}{2} \sum_{j=1}^n \theta_j^2$$
Lineare Separierbarkeit
Large margin classifier
Bei großem C: Anfällig für Ausreißer.
Mathematische Sicht
Vector Inner Product
$u^T v$
$||u|| = \sqrt{u_1^2 + u_2^2}$
p = Länger der Projektion von v auf u.
$u^Tv = p * ||u|| = u_1 v_1 + u_2 v_2$
$\theta^T x^{(i)} = p^{(i)} ||\theta||$ mit $p^{(i)}$ als Projektion von $x^{(i)}$ auf Vektor $\theta$.
$p \in R$ positive oder negativ (abhängig von Winkel)
$\min_\theta 1/2 \sum_{j=1}^n \theta_j^2 = 1/2 ||\theta||^2$
Bei größeren $p^{(i)}$ können kleinere $||\theta||$ gewählt werden. $p^{(i)}$ Abstände Large Margin Classifier.
Kernel
Nicht-lineare Decision Boundary
Gegeben x, berechne neue Features abhängig von der Nähe zu Landmarks $l^{(1)}, l^{(2)}, l^{(3)}$.
Gegeben x: $$f_1 = \text{similarity}(x,l^{(1)}) = \exp(-\frac{||x-l^{(1)}||^2}{2 \sigma^2}) \\ f_2 = \text{similarity}(x,l^{(2)}) = \exp(-\frac{||x-l^{(2)}||^2}{2 \sigma^2}) \\ $$
Ähnlichkeitsfunktionen = Kernel $k(x,l^{(i)})$
Hier Gaussian Kernel.
Wenn $x \approx l^{(1)}$: $f_1 \approx 1$
Wenn $x$ weit entfernt von $l^{(1)}$: $f_1 \approx 0$
Anpassen von $\sigma$
Landmarks
Sage $y=1$ vorher wenn $\theta_0 + \theta_1 f_1 + \theta_2 f_2 + \theta_3 f_3 \geq 0$
Wie $l^{(1)}, l^{(2)}, l^{(3)}, ...$ wählen?
$l^{(1)} = x^{(1)}$ usw.
Feature Vector f
$f_1 = \text{similarity}(x,l^{(1)})$ usw.
Für $x^{(i)}$ muss entsprechend berechnet werden:
$$ f_1^{(i)} = \text{sim}(x^{(i)}, l^{(1)}) \\ f_2^{(i)} = \text{sim}(x^{(i)}, l^{(2)}) \\ \dots \\ f_m^{(i)} = \text{sim}(x^{(i)}, l^{(m)}) $$
Sage y=1 vorher, wenn $\theta^T f \geq 0$
Wie bekommt man $\theta$?
Durch Minimierung der Kostenfunktion, jetzt mit $\theta^T f^{(i)}$ anstelle von $\theta^T f^{(i)}$.
Parameterwahl
$C = \frac{1}{\lambda}$
- Großes C: Niedriger Bias, hohe Varianz ⇒ Overfitting
- Niedriges C: Hoher Bias, niedrige Varianz ⇒ Underfitting
$\sigma^2$
- Groß: Features variieren sanfter ⇒ Hoher Bias, niedrige Varianz
- Niedrig: Features varrieren abrupter ⇒ Niedriger Bias, hohe Varianz
Kernelwahl
- Kein Kernel (linear Kernel): n groß, m klein
- Gaussian Kernel: n klein, m groß
- Implementierung der Ähnlichkeitsfunktion (bzw. Features $f_i$)
- Feature Scaling vor Verwendung des Gaussian Kernel $||v||^2 = v_1^2 + v_2^2 + \dots + v_n^2$
- Polynomial Kernels: Eher selten benutzt
- Weitere
Manche Ähnlichkeitsfunktionen erzeugen keine gültigen Kernel. Diese müssen Mercer's Theorem erfüllen (aufgrund Optimierungen und Konvergenz).
Algowahl
- Wenn n groß gegenüber m: Log Reg oder SVM ohne Kernel
- Wenn n klein (1-1000) und m mittelgroß (10-10000): SVM mit Gaussian Kernel
- Wenn n klein (1-1000) und m groß (50000+): Mehr Features + Log Reg oder SVM ohne Kernel