Anomaly Detection

Wenn $p(x) < \epsilon$, dann liegt Anomalie vor.

$p(x) = p(x_1;\mu_1;\sigma^2_1)p(x_2;\mu_2;\sigma^2_2)\dots p(x_n;\mu_n;\sigma^2_n) = \prod_{j=i}^n p(x_j;\mu_j;\sigma^2_j)$

Unabhängigkeitsannahme

$\mu_j = \frac{1}{m} \sum_{i=1}^m x_j^{(i)}$

Vektorisierbar als $\mu = 1/m \sum_{i=1}^m x^{(i)}$

$\sigma^2_j = \frac{1}{m} \sum^m_{i=1} (x_j^{(i)}-\mu_j)^2$

Einige gelabelte Daten vorhanden.

y=0: normal (10000) y=1: anormal (20)

Split:

  • Training set: 6000 (y=0)
  • CV: 2000 good (y=0); 10 anom (y=1)
  • Test: 2000 good (y=0); 10 anom (y=1)

Evaluation

  1. Model $p(x)$ auf Trainingsset fitten
  2. Auf CV/Testset $x, y$ vorhersagen
  3. Metriken:
    • TP, FP, FN, TN
    • Precision/Recall
    • $F_1$-score
  4. $\epsilon$ auf CV-Set wählen

Anomaly detection:

  • Kleine Zahl positiver Beispiele
  • Viele verschiedene Typen von Anomalien, für Algorithmen schwer vorhersehbar, wie die Anomalien aussehen (zukünftige Anomalien können in der Zukunft völlig anders aussehen).

Histogramm der Daten plotten, wenn es wie eine Normalverteilung aussieht, kann Feature verwendet werden. Logarithmische Transformation möglich $log(x+c)$ oder $x^{(1/2)}$

Häufigstes Problem: $p(x)$ ist ähnlich für normale und anormale Beispiele

Anomaly betrachten und Features entwickeln, bei denen die Anomaly außerhalb liegt.

Nicht $p(x_n)$ modellieren, sonden ein Model $p(x)$ als Ganzes

Parameter: $\mu$ Crosscorrelation Matrix: $\Sigma \in \mathbb{R}^{n \times n}$

Vorteilhaft, wenn Features positiv/negativ korreliert.

Schätzung

  1. Fitten des Models durch Schätzung von $\mu,\Sigma$
  2. p(x) berechnen
    • Anomaly flaggen wenn $p(x) < \epsilon$

Unterschied zu vorherigem Modell: $\Sigma$ kann hier von 0 verschiedene Werte für nicht-diagonal Elemente besitzen.

Ursprüngliches Modell:

  • Wenn manuell Features erzeugt werden, die ungewöhnliche Kombinationen beinhalten $x_3=x_1/x_2$
  • Weniger Rechenintensiv (n = 10000 bis 100000)
  • Geeignet auch wenn m klein (Multivar. muss m > n haben)