Machine Learning

Anomaly Detection

Anomalieerkennung:
Finde Abweichungen von der Norm

Beispiele

  • Log Files bei Hacker Angriffen
  • Fake Reviews
  • Chat und Social Media Bots
  • Fehler in Fertigungsanlagen

https://commons.wikimedia.org/wiki/File:ZmEu_Access_Log.png

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}$:

  • $\phi(x_1) = [2,4]$
  • $\phi(x_2) = [4,3]$
  • $\phi(x_3) = [5,4]$
$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

  • kernel: Analog zu Support Vector Maschinen
  • $\nu$: Fehlertoleranz zwischen 0 und 1

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