Anomalieerkennung:
Finde Abweichungen von der Norm
Beispiele
Explosion im Williams Olefins Plant (Louisiana) 2013
https://www.csb.gov/williams-olefins-plant-explosion-and-fire-/
Eine Anomalie ist relativ zu unserer Definition von normal.
Beispiel: Sonnenfinsternis
https://commons.wikimedia.org/wiki/File:2019-12-26_Annular-Solar-Eclipse-in-Singapore.jpg
Wie definieren wir normal?
https://en.wikipedia.org/wiki/File:Standard_deviation_diagram.svg
Praktisch suchen wir eine Region in der die normalen Beispiele liegen, aber nicht die Anomalien
Können wir einfach einen Classifier trainieren?
Nein, wir kennen ja die Anomalien vorher nicht (oder nur wenige)!
Idee: Finde kleinste Region mit allen normalen Beispielen
Mit einem cleveren Feature Extraktor $\phi$ reicht uns auch eine lineare Trennungsebene:
One-Class SVM
\[ \begin{align*} \min_{w, \rho}\quad & \frac{1}{2}||w||^2 - \rho \\ \text{s.t.}\quad & w \cdot \phi(x) \geq \rho \quad & \forall x \in \mathcal{D} \end{align*} \]
Keine Labels → Unsupervised Learning
Beispiel
Daten $\mathcal{D}$:
| $x_1 = [2,4]$ | $w_1 = [1,2]$ |
| $x_2 = [4,3]$ | $w_2 = [2,4]$ |
| $x_3 = [5,4]$ | $w_3 = [3,1]$ |
| $||w||^2$ | $w \cdot \phi(x_1)$ | $w \cdot \phi(x_2)$ | $w \cdot \phi(x_3)$ | $\rho$ | $\frac{1}{2}||w||^2 - \rho$ | |
|---|---|---|---|---|---|---|
| $w_1$ | $5$ | $10$ | $10$ | $13$ | $10$ | $-7.5$ |
| $w_2$ | $20$ | $20$ | $20$ | $26$ | $20$ | $-10$ |
| $w_3$ | $10$ | $10$ | $15$ | $19$ | $10$ | $-5$ |
Mit trainiertem $w$ und $\rho$ können wir nun neue Beispiele $x$ bewerten
$w \cdot \phi(x) < \rho$ : Anomalie
(und je kleiner $w \cdot \phi(x)$, umso anormaler)
Was machen wir mit Outliern?
Erlaube einzelnen Beispielen, jenseits der Begrenzung zu liegen
\[ \begin{align*} \min_{w, \rho}\quad & \frac{1}{2}||w||^2 - \rho \;{\color{red} + \frac{1}{\nu m} \sum_{x \in \mathcal{D}} \xi_x}\\ \text{s.t.}\quad & w \cdot \phi(x) \geq \rho \;{\color{red} - \xi_x} \quad & \forall x \in \mathcal{D} \\ & \xi \geq 0 \end{align*} \]
\[ {\color{red} \frac{1}{\nu m} \sum_{x \in \mathcal{D}} \xi_x} \]
Hyperparamter $\color{red} \nu > 0$ muss getuned werden.
Großer Parameter → Wir schlagen öfter falsch auf Anomalien an.
Kleiner Parameter → Wir übersehen mehr Anomalien
In sklearn: OneClassSVM
Erweiterung: Deep One Class Classification
Idee: Verwende ein (tiefes) neuronales Netz anstelle von $\phi(x)$.
Gute Performance um Anomalien auf Bildern zu finden.
(weiterführende) Referenzen