Heim  >  Artikel  >  Technologie-Peripheriegeräte  >  Anomalieerkennungsproblem basierend auf Zeitreihen

Anomalieerkennungsproblem basierend auf Zeitreihen

WBOY
WBOYOriginal
2023-10-09 16:33:14713Durchsuche

Anomalieerkennungsproblem basierend auf Zeitreihen

Zeitreihenbasierte Anomalieerkennungsprobleme erfordern spezifische Codebeispiele

Zeitreihendaten sind Daten, die in einer bestimmten Reihenfolge über die Zeit aufgezeichnet werden, z. B. Aktienkurse, Temperaturänderungen, Verkehrsfluss usw. In praktischen Anwendungen ist die Anomalieerkennung von Zeitreihendaten von großer Bedeutung. Ein Ausreißer kann ein Extremwert sein, der nicht mit normalen Daten übereinstimmt, Rauschen, fehlerhafte Daten oder ein unerwartetes Ereignis in einer bestimmten Situation. Die Anomalieerkennung kann uns helfen, diese Anomalien zu entdecken und geeignete Maßnahmen zu ergreifen.

Es gibt viele häufig verwendete Methoden für Anomalieerkennungsprobleme in Zeitreihen, darunter statistische Methoden, Methoden des maschinellen Lernens und Methoden des tiefen Lernens. In diesem Artikel werden zwei Algorithmen zur Erkennung von Zeitreihenanomalien vorgestellt, die auf statistischen Methoden und Methoden des maschinellen Lernens basieren, und entsprechende Codebeispiele bereitgestellt.

1. Algorithmus zur Anomalieerkennung basierend auf statistischen Methoden

1.1 Mittelwert-Varianz-Methode

Die Mittelwert-Varianz-Methode ist eine der einfachsten Methoden zur Anomalieerkennung. Die Grundidee besteht darin, anhand des Mittelwerts und der Varianz von Zeitreihendaten zu bestimmen, ob Anomalien vorliegen. Wenn die Abweichung eines Datenpunkts vom Mittelwert einen bestimmten Schwellenwert überschreitet (z. B. das Dreifache der Standardabweichung), wird dies als Anomalie beurteilt.

Das Folgende ist ein Codebeispiel, das Python verwendet, um die Mittelwert-Varianz-Methode zur Erkennung von Zeitreihenanomalien zu implementieren:

import numpy as np

def detect_outliers_mean_std(data, threshold=3):
    mean = np.mean(data)
    std = np.std(data)
    outliers = []
    
    for i in range(len(data)):
        if abs(data[i] - mean) > threshold * std:
            outliers.append(i)
    
    return outliers

# 示例数据
data = [1, 2, 3, 4, 5, 20, 6, 7, 8, 9]

# 检测异常值
outliers = detect_outliers_mean_std(data)
print("异常数据索引:", outliers)

Laufende Ergebnisse:

Abnormaler Datenindex: [5]

1.2 Box-Plot-Methode

Der Box-Plot Die Methode ist eine weitere häufig verwendete Methode zur Anomalieerkennung. Es ermittelt Ausreißer anhand der Quartile der Daten (oberes und unteres Quartil, Median). Basierend auf dem Median (Q2) und den oberen und unteren Quartilen (Q1, Q3) können die oberen und unteren Grenzen berechnet werden. Wenn der Datenpunkt diese Grenze überschreitet, wird er als Anomalie beurteilt.

Das Folgende ist ein Codebeispiel für die Verwendung von Python zur Implementierung der Boxplot-Methode zur Erkennung von Zeitreihenanomalien:

import numpy as np
import seaborn as sns

def detect_outliers_boxplot(data):
    q1 = np.percentile(data, 25)
    q3 = np.percentile(data, 75)
    iqr = q3 - q1
    outliers = []
    
    for i in range(len(data)):
        if data[i] < q1 - 1.5 * iqr or data[i] > q3 + 1.5 * iqr:
            outliers.append(i)
    
    return outliers

# 示例数据
data = [1, 2, 3, 4, 5, 20, 6, 7, 8, 9]

# 绘制箱型图
sns.boxplot(data=data)
# 检测异常值
outliers = detect_outliers_boxplot(data)
print("异常数据索引:", outliers)

Laufende Ergebnisse:

Abnormaler Datenindex: [5]

2. Anomalieerkennungsalgorithmus basierend auf Methoden des maschinellen Lernens

2.1 Isolation Forest-Algorithmus

Der Isolation Forest-Algorithmus ist eine Methode zur Anomalieerkennung, die auf unbeaufsichtigtem Lernen basiert. Es verwendet die Segmentierungsmethode von Entscheidungsbäumen, um die Anomalie von Datenpunkten zu bestimmen. Der Isolationswaldalgorithmus geht davon aus, dass Ausreißer eine geringere Dichte im Merkmalsraum aufweisen, sodass beim Erstellen eines Entscheidungsbaums die Pfadlänge der Ausreißer kürzer ist.

Das Folgende ist ein Codebeispiel, bei dem Python verwendet wird, um den Isolationswaldalgorithmus zur Erkennung von Zeitreihenanomalien zu implementieren:

from sklearn.ensemble import IsolationForest

def detect_outliers_isolation_forest(data):
    model = IsolationForest(contamination=0.1, random_state=0)
    model.fit(data.reshape(-1, 1))
    outliers = model.predict(data.reshape(-1, 1))
    
    return np.where(outliers == -1)[0]

# 示例数据
data = [1, 2, 3, 4, 5, 20, 6, 7, 8, 9]

# 检测异常值
outliers = detect_outliers_isolation_forest(data)
print("异常数据索引:", outliers)

Laufende Ergebnisse:

Abnormaler Datenindex: [5]

2.2 Zeitreihenzerlegungsmethode

Zeitreihenzerlegungsmethode ist eine Methode zur Erkennung von Anomalien, die auf herkömmlichen statistischen Methoden basiert. Sie zerlegt Zeitreihendaten in drei Teile: Trend, Saisonalität und Residuen und bestimmt abnormale Punkte durch Analyse der Residuen.

Das Folgende ist ein Codebeispiel, bei dem Python verwendet wird, um eine Zeitreihenzerlegungsmethode zur Erkennung von Zeitreihenanomalien zu implementieren:

import statsmodels.api as sm

def detect_outliers_time_series(data):
    decomposition = sm.tsa.seasonal_decompose(data, model='additive')
    residuals = decomposition.resid
    outliers = []
    
    for i in range(len(residuals)):
        if abs(residuals[i]) > 2 * np.std(residuals):
            outliers.append(i)
    
    return outliers

# 示例数据
data = [1, 7, 3, 4, 5, 20, 6, 7, 8, 9]

# 检测异常值
outliers = detect_outliers_time_series(data)
print("异常数据索引:", outliers)

Laufende Ergebnisse:

Abnormaler Datenindex: [1, 5]

Schlussfolgerung

Das Problem der Anomalieerkennung basiert zu Zeitreihen ist eine sehr wichtige und praktische Frage. In diesem Artikel werden zwei häufig verwendete Anomalieerkennungsmethoden vorgestellt, darunter die Mean-Varianz-Methode und die Boxplot-Methode, die auf statistischen Methoden basieren, sowie der Isolationswaldalgorithmus und die Zeitreihenzerlegungsmethode, die auf Methoden des maschinellen Lernens basieren. Anhand der obigen Codebeispiele können Leser verstehen, wie man mit Python diese Algorithmen implementiert und sie zur Anomalieerkennung auf tatsächliche Zeitreihendaten anwendet. Ich hoffe, dass dieser Artikel den Lesern bei der Erkennung von Zeitreihenanomalien hilfreich sein wird.

Das obige ist der detaillierte Inhalt vonAnomalieerkennungsproblem basierend auf Zeitreihen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn