Maison >Périphériques technologiques >IA >Problème de détection d'anomalies basé sur des séries chronologiques
Le problème de détection d'anomalies basées sur des séries chronologiques nécessite des exemples de code spécifiques
Les données de séries chronologiques sont des données enregistrées dans un certain ordre au fil du temps, telles que les cours des actions, les changements de température, la circulation, etc. Dans les applications pratiques, la détection des anomalies dans les données de séries chronologiques revêt une grande importance. Une valeur aberrante peut être une valeur extrême incompatible avec des données normales, du bruit, des données erronées ou un événement inattendu dans une situation spécifique. La détection des anomalies peut nous aider à découvrir ces anomalies et à prendre les mesures appropriées.
Il existe de nombreuses méthodes couramment utilisées pour résoudre les problèmes de détection d'anomalies dans les séries chronologiques, notamment les méthodes statistiques, les méthodes d'apprentissage automatique et les méthodes d'apprentissage profond. Cet article présentera deux algorithmes de détection d'anomalies de séries chronologiques basés sur des méthodes statistiques et des méthodes d'apprentissage automatique, et fournira des exemples de code correspondants.
1. Algorithme de détection d'anomalies basé sur des méthodes statistiques
1.1 Méthode moyenne-variance
La méthode moyenne-variance est l'une des méthodes de détection d'anomalies les plus simples. L'idée de base est de déterminer s'il existe des anomalies en fonction de la moyenne et de la variance des données de séries chronologiques. Si l’écart d’un point de données par rapport à la moyenne est supérieur à un certain seuil (par exemple 3 fois l’écart type), il est considéré comme une anomalie.
Ce qui suit est un exemple de code qui utilise Python pour implémenter la méthode de variance moyenne pour la détection des anomalies de séries chronologiques :
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)
Résultats d'exécution :
Indice de données anormales : [5]
1.2 Méthode de la boîte à moustaches
La boîte à moustaches La méthode est une autre méthode de détection d'anomalies couramment utilisée. Il détermine les valeurs aberrantes en fonction des quartiles des données (quartiles supérieur et inférieur, médiane). Sur la base de la médiane (Q2) et des quartiles supérieur et inférieur (Q1, Q3), les limites supérieure et inférieure peuvent être calculées. Si le point de données dépasse cette limite, cela est considéré comme une anomalie.
Ce qui suit est un exemple de code utilisant Python pour implémenter la méthode du box plot pour la détection des anomalies de séries chronologiques :
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)
Résultats d'exécution :
Indice de données anormales : [5]
2. Algorithme de détection d'anomalies basé sur des méthodes d'apprentissage automatique
. 2.1 Algorithme de forêt d'isolement
L'algorithme de forêt d'isolement est une méthode de détection d'anomalies basée sur l'apprentissage non supervisé. Il utilise la méthode de segmentation des arbres de décision pour déterminer l'anomalie des points de données. L'algorithme de forêt d'isolement suppose que les valeurs aberrantes ont une densité plus faible dans l'espace des fonctionnalités, donc lors de la création d'un arbre de décision, la longueur du chemin des valeurs aberrantes sera plus courte.
Ce qui suit est un exemple de code utilisant Python pour implémenter l'algorithme de forêt d'isolation pour la détection des anomalies de séries chronologiques :
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)
Résultats d'exécution :
Indice de données anormales : [5]
2.2 Méthode de décomposition des séries chronologiques
Méthode de décomposition des séries chronologiques est une méthode de détection d'anomalies basée sur des méthodes statistiques traditionnelles qui décompose les données de séries chronologiques en trois parties : tendance, saisonnalité et résiduel, et détermine les points anormaux en analysant le résidu.
Ce qui suit est un exemple de code utilisant Python pour implémenter la méthode de décomposition de séries chronologiques pour la détection d'anomalies de séries chronologiques :
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)
Résultats d'exécution :
Indice de données anormales : [1, 5]
Conclusion
Le problème de la détection d'anomalies basée sur les séries chronologiques est une question très importante et pratique. Cet article présente deux méthodes de détection d'anomalies couramment utilisées, notamment la méthode de variance moyenne et la méthode de boîte à moustaches basées sur des méthodes statistiques, ainsi que l'algorithme de forêt d'isolement et la méthode de décomposition de séries chronologiques basées sur des méthodes d'apprentissage automatique. Grâce aux exemples de code ci-dessus, les lecteurs peuvent comprendre comment utiliser Python pour implémenter ces algorithmes et les appliquer aux données de séries chronologiques réelles pour la détection d'anomalies. J'espère que cet article sera utile aux lecteurs sur la détection des anomalies des séries chronologiques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!