Zum Hauptinhalt springen

MachineLearningAnomalyDetection@1

Der Node MachineLearningAnomalyDetection@1 verwendet ML.NET-Algorithmen, um mithilfe von Machine-Learning-Modellen Spikes und Change Points in Zeitreihendaten zu erkennen.

Adapter-Voraussetzungen​

Node-Konfiguration​

Für die Felder path, targetPath, targetValueWriteMode und targetValueKind siehe Überblick.

transformations:
- type: MachineLearningAnomalyDetection@1
path: $.Items[*] # Path to array of items to analyze
targetPath: $.anomalies # Path where anomaly results will be stored
resetStatistics: false # Reset time series data on each run (true = stateless, false = stateful)
detectors:
- path: $.Attributes.Value # JSONPath to the numeric value in time series
groupByPath: $.Attributes.SensorId # Optional: Group time series by this path
contextPath: $.Attributes.Timestamp # Optional: Include context in anomaly results
detectSpikes: true # Enable spike detection
detectChangePoints: true # Enable change point detection
minDataPoints: 10 # Minimum data points required before detection starts
maxDataPoints: 1000 # Maximum data points to keep in memory (0 = unlimited)
spikeConfidence: 95 # Confidence level for spike detection (0-100, e.g. 95 = 95%)
changePointConfidence: 95 # Confidence level for change point detection (0-100, e.g.95 = 95%)
pValueHistoryLength: 100 # History length for spike p-value calculation
changeHistoryLength: 10 # History length for change point detection

Erkennungstypen​

Spike-Erkennung (IID Spike)​

Die Spike-Erkennung identifiziert plötzliche, temporäre Anomalien in Zeitreihendaten, die signifikant vom erwarteten Muster abweichen. Der Algorithmus verwendet die IID-Annahme (Independent and Identically Distributed) mit adaptiven Schwellenwerten, die auf den statistischen Eigenschaften der Daten basieren.

Funktionsweise:

  • Der Algorithmus führt ein gleitendes Fenster historischer p-Werte (Wahrscheinlichkeitswerte), die angeben, wie wahrscheinlich jeder Datenpunkt angesichts der historischen Verteilung ist
  • Trifft ein neuer Wert ein, berechnet er dessen p-Wert auf Basis der erlernten Verteilung
  • Fällt der p-Wert unter einen Schwellenwert (abgeleitet aus dem Konfidenzniveau), wird er als Spike markiert
  • Verwendet Martingale-Scores für eine verbesserte sequenzielle Anomalieerkennung (Exchangeability Martingales)

Parameter:

  • spikeConfidence (0-100): Statistisches Konfidenzniveau für die Erkennung als Dezimalwert. 95 bedeutet 95 % Konfidenz, dass der Punkt anomal ist (5 % Falsch-Positiv-Rate)
  • pValueHistoryLength: Größe des gleitenden Fensters für die p-Wert-Berechnung. Größere Werte bieten eine stabilere Erkennung, aber eine langsamere Anpassung an Musteränderungen

Ausgabewerte:

  • score: Der Anomalie-Score (höher = anomaler)
  • pValue: Die Wahrscheinlichkeit, diesen Wert zu beobachten (niedriger = unwahrscheinlicher/anomaler)

Wann verwenden:

  • Betrugserkennung bei Finanztransaktionen
  • Erkennung von Netzwerkeinbrüchen
  • Identifizierung von Sensorfehlern
  • Qualitätskontrolle in der Fertigung

Weiterführende Literatur:

Change-Point-Erkennung (IID Change Point)​

Die Change-Point-Erkennung identifiziert anhaltende Verschiebungen in den statistischen Eigenschaften von Zeitreihendaten und zeigt damit an, dass sich der zugrunde liegende Datengenerierungsprozess grundlegend geändert hat.

Funktionsweise:

  • Der Algorithmus überwacht die Verteilungsparameter (Mittelwert, Varianz) der Zeitreihe
  • Verwendet einen gleitenden Fensteransatz, um die jüngste Datenverteilung mit historischen Mustern zu vergleichen
  • Setzt martingale-basierte Methoden und CUSUM-Techniken (Cumulative Sum) ein, um Verteilungsänderungen zu erkennen
  • Überschreitet der Martingale-Wert einen Schwellenwert, signalisiert dies einen Change Point
  • Im Gegensatz zu Spikes zeigen Change Points dauerhafte Änderungen an, nicht bloß temporäre Abweichungen

Parameter:

  • changePointConfidence (0-100): Statistisches Konfidenzniveau als Dezimalwert. 95 bedeutet 95 % Konfidenz, dass eine signifikante Änderung eingetreten ist
  • changeHistoryLength: Anzahl der Punkte, die zur Ermittlung der Basisverteilung für den Vergleich verwendet werden

Ausgabewerte:

  • score: Das Ausmaß der erkannten Änderung
  • pValue: Statistische Signifikanz der Änderung (niedriger = signifikanter)
  • martingaleValue: Kumulierte Evidenz für eine Änderung (höher = stärkere Evidenz)

Wann verwenden:

  • Erkennung saisonaler Übergänge
  • Identifizierung von Systemkonfigurationsänderungen
  • Marktregimewechsel im Handel
  • Prozessdrift bei der industriellen Überwachung
  • Änderungen im Verhaltensmuster von Kunden

Mathematische Grundlage: Der Algorithmus verwendet die Power-Martingale-Methode und CUSUM (Cumulative Sum Control Chart) zur sequenziellen Änderungserkennung.

Weiterführende Literatur:

Ausgabeformat​

Der Node erzeugt am Zielpfad ein Array der erkannten Anomalien. Jedes Anomalie-Objekt enthält die folgenden Felder:

Gemeinsame Felder (alle Anomalietypen)​

FeldTypBeschreibung
typestringAnomalietyp: "spike" oder "changePoint"
confidencenumberDas für die Erkennung verwendete Konfidenzniveau (0-100). Aus der Detector-Konfiguration übernommen (z. B. 95 für 95 % Konfidenz)
levelnumberErkennungsindikator. Ein Wert > 0 zeigt an, dass eine Anomalie erkannt wurde. Für Spikes und Change Points ist dies bei Erkennung typischerweise 1.0, andernfalls 0.0
scorenumberSchweregrad-Score der Anomalie. Höhere Werte bedeuten stärkere Anomalien. Für Spikes: typischerweise 0-10+, für Change Points: typischerweise 0-5+
pValuenumberStatistischer p-Wert (0-1). Die Wahrscheinlichkeit, diesen Datenpunkt angesichts der historischen Verteilung zu beobachten. Niedrigere Werte bedeuten höhere Anomalie-Konfidenz. Siehe detaillierte Interpretationstabelle unten
timestampISO 8601UTC-Zeitstempel, zu dem die Anomalie erkannt wurde (nicht der Zeitstempel des Datenpunkts)
seriesKeystringGruppenbezeichner aus groupByPath. Leerer String, wenn keine Gruppierung verwendet wird. Ermöglicht die Nachverfolgung, zu welcher Serie die Anomalie gehört
currentValuenumberDer tatsächliche numerische Wert, der die Anomalieerkennung ausgelöst hat
contextanyZusätzliche Kontextdaten aus contextPath (falls konfiguriert). Kann je nach Quelldaten ein String, eine Zahl oder ein Objekt sein

Change-Point-spezifische Felder​

FeldTypBeschreibung
martingaleValuenumberKumulierter Evidenz-Score für die Change-Point-Erkennung. Höhere Werte (typischerweise > 10) deuten auf stärkere Evidenz für eine anhaltende Änderung hin. Dieser Wert akkumuliert über die Zeit, bis eine Änderung erkannt wird

Beispielausgabe​

[
{
"type": "spike",
"confidence": 95,
"level": 1.0,
"score": 3.2,
"pValue": 0.001,
"timestamp": "2024-01-15T10:30:00Z",
"seriesKey": "Sensor-A1",
"currentValue": 145.7,
"context": "2024-01-15T10:30:00"
},
{
"type": "changePoint",
"confidence": 95,
"level": 1.0,
"score": 2.8,
"pValue": 0.002,
"martingaleValue": 12.5,
"timestamp": "2024-01-15T11:00:00Z",
"seriesKey": "Sensor-A1",
"currentValue": 98.3,
"context": "2024-01-15T11:00:00"
}
]

Interpretation der Ausgabe​

  • Leeres Array: Im aktuellen Batch wurden keine Anomalien erkannt
  • Mehrere Einträge: Jeder Eintrag steht für eine eigenständige Anomalie. Ein einzelner Datenpunkt kann sowohl die Spike- als auch die Change-Point-Erkennung auslösen
  • seriesKey-Gruppierung: Bei Verwendung von groupByPath haben Anomalien aus unterschiedlichen Gruppen unterschiedliche seriesKey-Werte

p-Werte verstehen​

Der p-Wert repräsentiert die Wahrscheinlichkeit, diesen Datenpunkt unter normalen Bedingungen zu beobachten. Niedrigere p-Werte deuten auf stärkere Anomalien hin:

p-Wert-BereichWissenschaftliche NotationInterpretationAnomaliestärkeStandardabweichungenErforderliche Maßnahme
> 0.1> 1E-01Normale SchwankungKeine< 1.6σKeine Maßnahme
0.05 - 0.15E-02 to 1E-01GrenzwertigSchwach~1.6-2σBeobachten
0.01 - 0.051E-02 to 5E-02SignifikantMäßig~2-2.6σUntersuchen
0.001 - 0.011E-03 to 1E-02HochsignifikantStark~2.6-3.3σAlarm erforderlich
0.0001 - 0.0011E-04 to 1E-03Sehr hochsignifikantSehr stark~3.3-3.9σSofortige Aufmerksamkeit
0.00001 - 0.00011E-05 to 1E-04Extrem signifikantExtrem~3.9-4.4σKritisches Problem
< 0.00001< 1E-05Außergewöhnlich seltenAußergewöhnlich> 4.4σNotfallreaktion
< 1E-08< 1E-08Nahezu unmöglichMaximal> 5.5σSystemausfall wahrscheinlich

Praxisbeispiele für p-Werte:

  • p = 0.05: Normale tägliche Schwankung des Website-Traffics
  • p = 0.001: Ungewöhnlicher Spike bei der Server-Antwortzeit
  • p = 1E-05: Schwerwiegender Sensorfehler oder Datenkorruption
  • p = 1E-08: Kritischer Systemausfall, Hardwaredefekt oder extremes externes Ereignis

Beziehung zum Konfidenzniveau:

  • Bei spikeConfidence = 95 liegt der Schwellenwert bei p < 0.05
  • Bei spikeConfidence = 99 liegt der Schwellenwert bei p < 0.01
  • Ein p-Wert von 1E-08 ist 160.000-mal kleiner als ein 95-%-Konfidenzschwellenwert

Interpretation des Scores​

  • Spike-Scores:
    • 1-2: Geringe Abweichung
    • 2-3: Mäßige Anomalie
    • 3-5: Starke Anomalie
    • 5: Schwere Anomalie

  • Change-Point-Scores:
    • 1-2: Geringfügige Verschiebung
    • 2-3: Signifikante Änderung
    • 3: Wesentliche Trendänderung

  • Martingale-Werte (nur Change Points):
    • 5-10: Evidenz akkumuliert
    • 10-20: Starke Evidenz
    • 20: Eindeutige Änderung


## Beispiele

### Beispiel 1: Anomalieerkennung bei IoT-Sensoren

```yaml
transformations:
- type: MachineLearningAnomalyDetection@1
path: $.sensorReadings[*]
targetPath: $.detectedAnomalies
resetStatistics: false
detectors:
- path: $.temperature
groupByPath: $.sensorId
contextPath: $.timestamp
detectSpikes: true
detectChangePoints: true
minDataPoints: 20
maxDataPoints: 500
spikeConfidence: 95
changePointConfidence: 0.90
pValueHistoryLength: 100
changeHistoryLength: 20

Beispiel 2: Überwachung von Finanztransaktionen​

transformations:
- type: MachineLearningAnomalyDetection@1
path: $.transactions[*]
targetPath: $.suspiciousActivities
detectors:
- path: $.amount
groupByPath: $.accountId
contextPath: $.transactionId
detectSpikes: true
detectChangePoints: false # Only detect spikes for fraud detection
minDataPoints: 50
spikeConfidence: 0.99 # High confidence to reduce false positives
pValueHistoryLength: 200

Beispiel 3: Multi-Metrik-Überwachung​

transformations:
- type: MachineLearningAnomalyDetection@1
path: $.metrics[*]
targetPath: $.alerts
resetStatistics: false
detectors:
# CPU usage spike detection
- path: $.cpuUsage
groupByPath: $.serverId
detectSpikes: true
detectChangePoints: false
minDataPoints: 10
spikeConfidence: 0.90
pValueHistoryLength: 50
# Memory trend changes
- path: $.memoryUsage
groupByPath: $.serverId
detectSpikes: false
detectChangePoints: true
minDataPoints: 30
changePointConfidence: 95
changeHistoryLength: 15
# Network traffic anomalies (both types)
- path: $.networkThroughput
groupByPath: $.serverId
detectSpikes: true
detectChangePoints: true
minDataPoints: 20
maxDataPoints: 1000

Beispiel 4: Zustandslose Erkennung für die Batch-Verarbeitung​

transformations:
- type: MachineLearningAnomalyDetection@1
path: $.batchData[*]
targetPath: $.batchAnomalies
resetStatistics: true # Each batch starts fresh
detectors:
- path: $.value
detectSpikes: true
detectChangePoints: true
minDataPoints: 10
maxDataPoints: 100 # Limit memory for batch processing
spikeConfidence: 95
changePointConfidence: 95

Hinweise​

  • Machine-Learning-Modelle: Verwendet die auf SSA (Singular Spectrum Analysis) basierenden Algorithmen von ML.NET für eine robuste Anomalieerkennung
  • Mindestdatenanforderungen: Die Algorithmen benötigen mindestens minDataPoints Beobachtungen, bevor sie zuverlässige Ergebnisse liefern
  • Zustandsbehaftete Verarbeitung: Ist resetStatistics auf false gesetzt, hält der Node die Zeitreihenhistorie über Pipeline-Läufe hinweg vor und verbessert so die Erkennungsgenauigkeit im Laufe der Zeit
  • GroupBy-Funktionalität: Der Parameter groupByPath ermöglicht die unabhängige Zeitreihenverfolgung für verschiedene Entitäten (z. B. pro Sensor, pro Benutzer)
  • Speicherverwaltung: Verwenden Sie maxDataPoints, um ein gleitendes Fenster umzusetzen und den Speicherverbrauch in langlaufenden Pipelines zu begrenzen
  • Konfidenz vs. Empfindlichkeit: Höhere Konfidenzwerte reduzieren Falsch-Positive, können aber subtile Anomalien übersehen; passen Sie sie an Ihren Anwendungsfall an
  • Echtzeit vs. Batch: Der Node eignet sich sowohl für Echtzeit-Streaming (zustandsbehaftet) als auch für die Batch-Verarbeitung (zustandslos)
  • IID-Annahme: Beide Algorithmen gehen davon aus, dass Datenpunkte innerhalb ihrer jeweiligen Fenster unabhängig und identisch verteilt (Independent and Identically Distributed) sind. Das funktioniert für die meisten stationären Zeitreihen gut, kann aber bei stark saisonalen oder trendbehafteten Daten eine Parameteranpassung erfordern