Machine Learning

Multinomial Logistic Regression

Was, wenn wir mehr als 2 Klassen haben?

Erster Schritt: Wie stellen wir die Klassen in $y$ dar?

One-hot encoding: \[ y = [0, 0, \ldots, 0, 1, 0, \ldots, 0] \]

Wenn es $k$ Klassen gibt (Menge aller Klassen ist $K$), dann ist $y \in \{0, 1\}^k$

\[ y_{\color{red} \bigcirc} = \left[ {\begin{array}{c} 1 \\ 0 \\ 0 \end{array}} \right] \quad y_{\color{green} \square} = \left[ {\begin{array}{c} 0 \\ 1 \\ 0 \end{array}} \right] \quad y_{\color{blue} \triangle} = \left[ {\begin{array}{c} 0 \\ 0 \\ 1 \end{array}} \right] \quad \\[3mm] K = \{ {\color{red} \bigcirc}, {\color{green} \square}, {\color{blue} \triangle} \} \]

Idee: Jede Klasse bekommt ihre eigenen Parameter \[ w_i \in \mathbb{R}^m \quad i \in K \quad \text{(je Klasse)} \]

Quasi ein eigener Classifier für jede Klasse

Wir können die Vektoren $w_i$ zu einer Matrix
$W \in \mathbb{R}^{k \times m}$ kombinieren: \[ W = \left[ {\begin{array}{c} w_1 \\ \vdots \\ w_k \end{array}} \right] \]

Im Beispiel könnte $W$ sein: \[ W = \left[ {\begin{array}{ccc} {\color{red} -29} & {\color{red} 1} & {\color{red} 3} \\ {\color{green} 9} & {\color{green} 3} & {\color{green} -7} \\ {\color{blue} 17} & {\color{blue} -5} & {\color{blue} 1} \\ \end{array}} \right] \]

Wie klassifizieren wir nun einen neuen Punkt $\color{magenta} x$?

Wir berechnen $W \phi(x)$:

\[ \left[ {\begin{array}{ccc} {\color{red} -29} & {\color{red} 1} & {\color{red} 3} \\ {\color{green} 9} & {\color{green} 3} & {\color{green} -7} \\ {\color{blue} 17} & {\color{blue} -5} & {\color{blue} 1} \\ \end{array}} \right] \cdot \left[ {\begin{array}{c} 1 \\ 14 \\ 6 \end{array}} \right] = \left[ {\begin{array}{c} {\color{red} 3} \\ {\color{green} 9} \\ {\color{blue} -47} \end{array}} \right] \]

$W \phi(x)$ gibt uns ein Logit für jede Klasse:

Als nächstes Suchen wir eine Operation, um aus den Logits eine Wahrscheinlichkeitsverteilung zu machen
(alle positiv und in der Summe 1)

$\Rightarrow$

Softmax Funktion

\[ g(\left[ {\begin{array}{c} z_1 \\ \vdots \\ z_i \\ \vdots \\ z_k \end{array}} \right] ) = \left[ {\begin{array}{c} \vdots \\ \frac{e^{z_i}}{\sum_{j=1}^k e^{z_j}} \\ \vdots \end{array}} \right] \]

Beispiel

\[ g(\left[ {\begin{array}{c} 1 \\ 2 \\ -1 \end{array}} \right] ) = \left[ {\begin{array}{c} \frac{2.718}{2.718 + 7.389 + 0.368} \\[2mm] \frac{7.389}{2.718 + 7.389 + 0.368} \\[2mm] \frac{0.368}{2.718 + 7.389 + 0.368} \end{array}} \right] = \left[ {\begin{array}{c} 0.259 \\[2mm] 0.705 \\[2mm] 0.035 \end{array}} \right] \]

Beispiel

\[ g(\left[ {\begin{array}{c} {\color{red} 3} \\ {\color{green} 9} \\ {\color{blue} -47} \end{array}} \right] ) = \left[ {\begin{array}{c} {\color{red} 0.0025} \\ {\color{green} 0.998} \\ {\color{blue} 4.77 \cdot 10^{-25}} \end{array}} \right] \]

Multinomial Logistic Regression

\[ h_w (x) = g(W \phi(x)) \]

Ist natürlich auch ein GLM

Anmerkung: Andere GLMs lassen sich auch auf mehr Output Dimensionen Erweitern

In sklearn:

sklearn.linear_model.LogisticRegression
Jupyter Demo