ADTK προχωρημένα

2.9.2

ADTK προχωρημένα

Ενημέρωση 2020-02-12 Ανάγνωση 2 λεπτά
Σύνοψη
  • Το ADTK μέρος 2 επεκτείνει την ανίχνευση με ανιχνευτές βασισμένους σε παράθυρα και εποχικούς ανιχνευτές για ανωμαλίες με επίγνωση πλαισίου.
  • Ο συνδυασμός ανιχνευτών βελτιώνει την ανάκληση για πολύπλοκα μοτίβα που απλά κατώφλια αποτυγχάνουν να εντοπίσουν.
  • Η σύγκριση εξόδων ανιχνευτών σε χρονοδιαγράμματα βοηθά στην ευθυγράμμιση της συμπεριφοράς του μοντέλου με τις λειτουργικές απαιτήσεις.

Εισαγωγή #

Η βασική αναβάθμιση στο ADTK μέρος 2 είναι η ανίχνευση με βάση το πλαίσιο: η ίδια τιμή μπορεί να είναι κανονική ή ανώμαλη ανάλογα με τη συμπεριφορά του τοπικού παραθύρου και την εποχικότητα.

Αναλυτική Επεξήγηση #

Ας δοκιμάσουμε ανίχνευση ανωμαλιών χρησιμοποιώντας το Anomaly Detection Toolkit (ADTK). Θα εφαρμόσουμε ανίχνευση ανωμαλιών σε πολυδιάστατα συνθετικά δεδομένα. Αυτή τη φορά, θα εργαστούμε με δεδομένα πολλαπλών διαστάσεων.

1
2
3
4
5
6
7
8
import numpy as np
import pandas as pd
from adtk.data import validate_series

s_train = pd.read_csv("./training.csv", index_col="timestamp", parse_dates=True)
s_train = validate_series(s_train)
s_train["value2"] = s_train["value"].apply(lambda v: np.sin(v) + np.cos(v))
s_train

valuevalue2
timestamp
2014-04-01 00:00:0018.0904860.037230
2014-04-01 00:05:0020.3598431.058643
2014-04-01 00:10:0021.1054700.141581
2014-04-01 00:15:0021.1515850.076564
2014-04-01 00:20:0018.1371410.103122
.........
2014-04-14 23:35:0018.2692900.288071
2014-04-14 23:40:0019.0873511.207420
2014-04-14 23:45:0019.5946891.413067
2014-04-14 23:50:0019.7678171.401750
2014-04-14 23:55:0020.4791560.939501

4032 rows × 2 columns

1
2
3
from adtk.visualization import plot

plot(s_train)

Anomaly Detection Toolkit (ADTK) Μέρος 2 | Ανιχνευτές Παραθύρου και Εποχ… figure

Σύγκριση Μεθόδων Ανίχνευσης Ανωμαλιών #

Θα εκτελέσουμε ανίχνευση ανωμαλιών χρησιμοποιώντας SeasonalAD. Για άλλες μεθόδους, ανατρέξτε στο Detector.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import matplotlib.pyplot as plt
from adtk.detector import OutlierDetector, PcaAD, RegressionAD
from sklearn.linear_model import LinearRegression
from sklearn.neighbors import LocalOutlierFactor

model_dict = {
    "OutlierDetector": OutlierDetector(LocalOutlierFactor(contamination=0.05)),
    "RegressionAD": RegressionAD(regressor=LinearRegression(), target="value2", c=3.0),
    "PcaAD": PcaAD(k=2),
}

for model_name, model in model_dict.items():
    anomalies = model.fit_detect(s_train)

    plot(
        s_train,
        anomaly=anomalies,
        ts_linewidth=1,
        ts_markersize=3,
        anomaly_color="red",
        anomaly_alpha=0.3,
        curve_group="all",
    )
    plt.title(model_name)
    plt.show()

Για άλλες μεθόδους, ανατρέξτε στο Detector figure

Για άλλες μεθόδους, ανατρέξτε στο Detector figure

Για άλλες μεθόδους, ανατρέξτε στο Detector figure