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)
| Feld | Typ | Beschreibung |
|---|---|---|
type | string | Anomalietyp: "spike" oder "changePoint" |
confidence | number | Das für die Erkennung verwendete Konfidenzniveau (0-100). Aus der Detector-Konfiguration übernommen (z. B. 95 für 95 % Konfidenz) |
level | number | Erkennungsindikator. 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 |
score | number | Schweregrad-Score der Anomalie. Höhere Werte bedeuten stärkere Anomalien. Für Spikes: typischerweise 0-10+, für Change Points: typischerweise 0-5+ |
pValue | number | Statistischer 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 |
timestamp | ISO 8601 | UTC-Zeitstempel, zu dem die Anomalie erkannt wurde (nicht der Zeitstempel des Datenpunkts) |
seriesKey | string | Gruppenbezeichner aus groupByPath. Leerer String, wenn keine Gruppierung verwendet wird. Ermöglicht die Nachverfolgung, zu welcher Serie die Anomalie gehört |
currentValue | number | Der tatsächliche numerische Wert, der die Anomalieerkennung ausgelöst hat |
context | any | Zusätzliche Kontextdaten aus contextPath (falls konfiguriert). Kann je nach Quelldaten ein String, eine Zahl oder ein Objekt sein |
Change-Point-spezifische Felder
| Feld | Typ | Beschreibung |
|---|---|---|
martingaleValue | number | Kumulierter 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
groupByPathhaben Anomalien aus unterschiedlichen Gruppen unterschiedlicheseriesKey-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-Bereich | Wissenschaftliche Notation | Interpretation | Anomaliestärke | Standardabweichungen | Erforderliche Maßnahme |
|---|---|---|---|---|---|
| > 0.1 | > 1E-01 | Normale Schwankung | Keine | < 1.6σ | Keine Maßnahme |
| 0.05 - 0.1 | 5E-02 to 1E-01 | Grenzwertig | Schwach | ~1.6-2σ | Beobachten |
| 0.01 - 0.05 | 1E-02 to 5E-02 | Signifikant | Mäßig | ~2-2.6σ | Untersuchen |
| 0.001 - 0.01 | 1E-03 to 1E-02 | Hochsignifikant | Stark | ~2.6-3.3σ | Alarm erforderlich |
| 0.0001 - 0.001 | 1E-04 to 1E-03 | Sehr hochsignifikant | Sehr stark | ~3.3-3.9σ | Sofortige Aufmerksamkeit |
| 0.00001 - 0.0001 | 1E-05 to 1E-04 | Extrem signifikant | Extrem | ~3.9-4.4σ | Kritisches Problem |
| < 0.00001 | < 1E-05 | Außergewöhnlich selten | Außergewöhnlich | > 4.4σ | Notfallreaktion |
| < 1E-08 | < 1E-08 | Nahezu unmöglich | Maximal | > 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 = 95liegt der Schwellenwert bei p < 0.05 - Bei
spikeConfidence = 99liegt 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
minDataPointsBeobachtungen, bevor sie zuverlässige Ergebnisse liefern - Zustandsbehaftete Verarbeitung: Ist
resetStatisticsauffalsegesetzt, 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
groupByPathermö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