时序数据分析——异常检测

举报
就挺突然 发表于 2021/07/29 22:03:11 2021/07/29
【摘要】 时序数据的异常点是指序列中存在模式不一致的点(如时序数据超出正常范围的上/下界,突然的上升或下降,趋势改变)。时序数据的异常检测旨在快速准确的找到这些异常点。代码块导入在NAIE训练平台的JupyterLab界面操作,不需要手动添加这一部分,因为在新创建的特征工程下已经包含了导入代码。import os os.chdir("/home/ma-user/work/test_ano...

时序数据的异常点是指序列中存在模式不一致的点(如时序数据超出正常范围的上/下界,突然的上升或下降,趋势改变)。时序数据的异常检测旨在快速准确的找到这些异常点。

代码块导入

在NAIE训练平台的JupyterLab界面操作,不需要手动添加这一部分,因为在新创建的特征工程下已经包含了导入代码。

import os
os.chdir("/home/ma-user/work/test_anomaly_detection_noah")
from naie.context import Context as context
from naie.datasets import data_reference
from naie.feature_processing import data_flow
from naie.feature_analysis import data_analysis
from naie.feature_processing.expression import col, cols, cond, f_and, f_not, f_or
from naie.common.data.typedefinition import StepType, ColumnRelationship, JoinType, ColumnSelector,DynamicColumnsSelectorDetails, StaticColumnsSelectorDetails, ColumnsSelectorDetails, DataProcessMode


数据准备 - 选择数据1

  • 在NAIE平台上,点击菜单栏中“数据集”下的“选择数据”生成,然后填写对应数据集和数据集实例参数即可。
  • 也可以直接调用提供的生成样例数据的代码来生成突变类异常样例数据。


dataset = 'air'
dataset_entity = 'ts_data_analysis'
datareference = data_reference.get_data_reference(dataset, dataset_entity)
dataflow = data_flow.create_data_flow(datareference)

1. 超出正常范围上/下界

检测平稳的时序数据时序数据是否异常,给出异常判断参考区间

参数:

  • data: 时序数据,可以是dataframe,数据路径或者dataflow
  • columns: 待进行时序数据分析的目标列,list类型
  • id_column: 代表时序数据id列,没有id列则使用默认值None,即认为整个数据为同一个id下的数据
  • time_column: 时序数据的时间列,用来对数据进行排序的列。没有时间列则使用默认值None. 如果不为None,则会根据给定的时间列对时序数据排序
  • method: 获取用于判断时序数据异常的上/下界的方法,'boxplot', '3sigma’, 'and', 'or'可选;其中'and', 'or'分别表示前面二者获取区间的交集,并集

返回:

  • 时序数据的参考正常范围
from naie.ts_data_analysis import AnomalyDetection


ad = AnomalyDetection(data=dataflow, columns=['col_1', 'col_2', 'col_3', 'col_4', 'col_5'], id_column='id', time_column=None)
result = ad.fit(method='boxplot')
# result = ad.anomaly_detection(method='3sigma')
# result = ad.anomaly_detection(method='and')
# result = ad.anomaly_detection(method='or')
print('Anomaly detection: ')
result

Anomaly detection:
Out[5]:


数据准备 - 选择数据2

dataset = 'ts_data'
dataset_entity = 'ts_anomaly' 
datareference = data_reference.get_data_reference(dataset, dataset_entity)
dataflow = data_flow.create_data_flow(datareference)


# 获取数据的另一方法,生成突变类异常样例数据
from naie.feature_analysis.data_generator import generate_mutation_data
df = generate_mutation_data()

2. 突然的上升或下降

检测平稳的时序数据中突增或突降的点

参数:

  • top_n: 指定需要找到多少个突变点(结果可能少于这个值),整型,默认5
  • period_decomposition: 如果是周期数据,是否进行周期分解,增强数据的差异性, True或False,默认False
  • length_per_period: 如果进行周期分解,则需输入此参数,即一个周期内的数据量,整型,默认None
  • threshold_filtering: 是否对筛选出的top n个点进行二次过滤,True或False, 默认False即不过滤
  • threshold: 如果对筛选出的top n个点进行二次过滤,则需输入此参数作为过滤阈值,小于阈值的即认为是突变点,浮点型,默认None

返回:

  • 最可能是突变的点的索引
from naie.ts_data_analysis import MutationAnomalyDetection


mad = MutationAnomalyDetection(df, columns=['F_x'], id_column='id', time_column=None)
res = mad.fit(top_n=5, period_decomposition=False, length_per_period=None, threshold_filtering=False, threshold=None)
print("Mutation anomaly detection: ")
res

Mutation anomaly detection:


import matplotlib
%matplotlib inline


mad._plot_mutation_anomaly(res)





NAIE SDK帮助文档汇总请参考:

网络人工智能园地:NAIE SDK帮助文档汇总 zhuanlan.zhihu.com图标


文章来源: zhuanlan.zhihu.com,作者:网络人工智能园地,版权归原作者所有,如需转载,请联系作者。

原文链接:zhuanlan.zhihu.com/p/381415746

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。