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
Schätzung von $\mu, \sigma$ (Normalverteilung)
$\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$
Evaluierung durch Kennzahl
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
- Model $p(x)$ auf Trainingsset fitten
- Auf CV/Testset $x, y$ vorhersagen
- Metriken:
- TP, FP, FN, TN
- Precision/Recall
- $F_1$-score
- $\epsilon$ auf CV-Set wählen
Anomaly detection vs. supervised learning
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).
Feature selection
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.
Multivariate Normal Distribution
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
- Fitten des Models durch Schätzung von $\mu,\Sigma$
- 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)