Bisher haben wir eine Funktion $h_w(x)$ gelernt, die entweder die Klasse $y$ oder $P(y | x)$ vorhersagt.
Discriminative Model
Jetzt drehen wir den Spieß um und versuchen $P(x | y)$ (und $P(y)$) zu lernen.
Generative Model
Motivation ist der Satz von Bayes: \[ P(y | x) = \frac{P(x | y) \cdot P(y)}{P(x)} \]
Wie Wahrscheinlich ist es, dass ich eine Krankheit habe, wenn ein Schnelltest positiv ausfällt?
\[ P(\text{Erkrankt} | \text{Test positiv}) =\\[3mm] \frac{P(\text{Test positiv} | \text{Erkrankt}) \cdot P(\text{Erkrankt})}{P(\text{Test positiv})} \]
Ermittle schwer zu messende Zahl durch einfacher messbare Werte
Wenn wir zwei Klassen haben gilt:
\[ P(x) = P(x | y=1) \cdot P(y=1) + P(x | y=0) \cdot P(y=0) \]
\[ \Rightarrow P(y | x)= \frac{P(x | y) \cdot P(y)}{P(x | y=1) \cdot P(y=1) + P(x | y=0) \cdot P(y=0)} \]
Wenn wir $P(x | y)$ und $P(y)$ kennen, können wir $P(y | x)$ berechnen.
Wir nehmen an, dass unsere Feature $x \in \mathbb{R}^n$ je Label Normalverteilt sind:: \[ P(x | y) \sim \mathcal{N}(\mu, \Sigma) \\[3mm] \mu \in \mathbb{R}^n, \Sigma \in \mathbb{R}^{n \times n} \]
Hier brauchen wir eine mehrdimensionale Normalverteilung (multivariate Gaussian)
\[ \mu = \left[ {\begin{array}{c} 0 \\ 0 \end{array}} \right] \quad \Sigma = \left[ {\begin{array}{cc} 1 & 0 \\ 0 & 1 \end{array}} \right] \]
\[ \mu = \left[ {\begin{array}{c} 0 \\ 0 \end{array}} \right] \quad \Sigma = \left[ {\begin{array}{cc} 0.5 & 0 \\ 0 & 0.5 \end{array}} \right] \]
\[ \mu = \left[ {\begin{array}{c} 0 \\ 0 \end{array}} \right] \quad \Sigma = \left[ {\begin{array}{cc} 2 & 0 \\ 0 & 2 \end{array}} \right] \]
\[ \mu = \left[ {\begin{array}{c} 0 \\ 0 \end{array}} \right] \quad \Sigma = \left[ {\begin{array}{cc} 1 & 0.5 \\ 0.5 & 1 \end{array}} \right] \]
\[ \mu = \left[ {\begin{array}{c} 0 \\ 0 \end{array}} \right] \quad \Sigma = \left[ {\begin{array}{cc} 1 & 0.8 \\ 0.8 & 1 \end{array}} \right] \]
\[ \mu = \left[ {\begin{array}{c} 0 \\ 0 \end{array}} \right] \quad \Sigma = \left[ {\begin{array}{cc} 1 & -0.8 \\ -0.8 & 1 \end{array}} \right] \]
\[ \mu = \left[ {\begin{array}{c} 1 \\ -1 \end{array}} \right] \quad \Sigma = \left[ {\begin{array}{cc} 1 & 0 \\ 0 & 1 \end{array}} \right] \]
\[ \mu = \left[ {\begin{array}{c} 0 \\ 0 \end{array}} \right] \quad \Sigma = \left[ {\begin{array}{cc} 1 & 0.8 \\ 0.8 & 1 \end{array}} \right] \]
\[ \mu = \left[ {\begin{array}{c} 0 \\ 0 \end{array}} \right] \quad \Sigma = \left[ {\begin{array}{cc} 1 & -0.8 \\ -0.8 & 1 \end{array}} \right] \]
\[ \mu = \left[ {\begin{array}{c} 1 \\ 0 \end{array}} \right] \quad \Sigma = \left[ {\begin{array}{cc} 2 & -0.8 \\ -0.8 & 1 \end{array}} \right] \]
Annahmen:
Wir lernen die Parameter $\mu_0, \mu_1, \Sigma, q$.
Gaussian Discriminant Analysis (GDA)
Wie lernen wir unsere Paramter?
Maximum Likelihood!
Maximiere $\mathcal{L}(q, \mu_0, \mu_1, \Sigma)$
Die optimalen Parameter kann man einfach berechnen:
\[ q = \frac{ \sum_{(x,y) \in \mathcal{D}_\text{train}} 1[y = 1]}{m} \]
Anteil an positiven Beispielen an allen Beispielen
\[ 1[X] = \begin{cases} 1 & \text{if } X \\ 0 & \text{else} \end{cases} \] ist die Indikator Funktion
\[ \mu_0 = \frac{\sum_{(x,y) \in \mathcal{D}_\text{train}} 1[y=0] \cdot x}{\sum_{(x,y) \in \mathcal{D}_\text{train}} 1[y=0]} \]
Durchschnitt aller negativen Beispiele
\[ \mu_1 = \frac{\sum_{(x,y) \in \mathcal{D}_\text{train}} 1[y=1] \cdot x}{\sum_{(x,y) \in \mathcal{D}_\text{train}} 1[y=1]} \]
Durchschnitt aller positiven Beispiele
\[ \Sigma = \frac{1}{m} \sum_{(x,y) \in \mathcal{D}_\text{train}} (x - \mu_y)(x - \mu_y)^T \]
Passe Kovarianz an die Daten an
Vorteile:
Wir machen wir Vorhersagen, indem wir die Wahrscheinlichste Klasse auswählen:
\[ \operatornamewithlimits{arg\,max}_y P(y | x) = \operatornamewithlimits{arg\,max}_y \frac{P(x | y) \cdot P(y)}{P(x)} \]
\[ = \operatornamewithlimits{arg\,max}_y P(x | y) \cdot P(y) \]
GDA impliziert eine lineare Decision Boundary.
Anmerkung: Hätten wir 2 unterschiedliche $\Sigma$, dann wäre die Decision Boundary nicht linear.
| Gaussian Discriminant Analysis | Logistische Regression |
| Generative | Discriminative |
| \[ P(x|y =0) \sim \mathcal{N}(\mu_0, \Sigma)\\ P(x|y =1) \sim \mathcal{N}(\mu_1, \Sigma)\\ P(y) \sim \text{Bernoulli}(q) \] | \[ P(y|x) \sim \text{Bernoulli}(h_w(x)) \] |
| Stärkere Annahme | Schwächere Annahme |
Annahmen von GDA $\Rightarrow$ Annahmen Logistische Regression
Wenn ich stärkere Annahmen machen (und diese ungefähr richtig sind), bekomme ich ein besseres Modell.
(komme mit weniger Daten aus oder macht bessere Vorhersagen)
Ein Machine Learning Algorithmus hat 2 Quellen an Informationen über die Welt:
Wenn uns Daten fehlen, dann müssen wir mehr in Sachen Modellierung liefern
Wenn meine Annahmen aber zu weit weg von der Realität sind, dann wird mein Modell sehr schlecht.
Schwächere Annahmen machen das Modell robuster
Logistische Regression funktioniert auch, wenn unsere $P(x | y)$ Poisson verteilt sind.
In sklearn:
LinearDiscriminantAnalysis