====== 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)