相见恨晚!时序异常检测AutoML

时间序列数据异常点是指序列中模式存在不一致的点(如突然的上升或下降,趋势改变,层级变换,超出历史最大值/最小值)。

时序数据的异常检测旨在快速准确的找到这些异常点。

按照算法的监督方式区分,时序异常检测可以分为有监督,无监督以及弱监督三类。

其中,有监督的方法将异常检测转化为二分类问题,正常数据为一个类,异常数据为一个类。这样可以直接利用现成的分类算法。但是需要人工标记异常数据,在许多实际应用中往往不太现实

无监督的方法相对比较实用,主要分为三类:

1、基于规则的方法,如3\pm \sigma准则;

2、基于聚类的方法,将数据聚为多个类,如果某个数据和类中心都比较远,则该数据为异常,或是将数据量少于某个阈值的类中所有数据认为是异常。

3、基于重建的方法,这类的方法主要基于auto-encoder (AE)或variational auto-encoder (VAE)。先训练一个模型,得到数据的隐空间。对于测试数据,若该数据的重建误差较大,说明该数据不能和其他数据的分布吻合,即为异常数据。

然而,无论是有监督还是无监督,我们都需要进行调所选择合适的算法并调其超参数。并且,最终所的算法往往还存在不稳定的现象。在本文,笔者介绍一种针对于时序异常检测的AutoML工具:HyperTS。该工具利用弱监督结合无监督的方式,实现了全pipeline的时序异常检测,即可以端到端的实现数据预处理,模型选择,超参数调优,异常结果评估,可视化展示等。操作也十分的简单:

from hyperts import make_experiment
from hyperts.datasets import load_real_known_cause_dataset

from sklearn.model_selection import train_test_split

data = load_real_known_cause_dataset()
ground_truth = data.pop('anomaly')

detection_length = 15000
train_data, test_data = train_test_split(data, test_size=detection_length, shuffle=False)

model = make_experiment(train_data.copy(),
                        task='detection',
                        mode='stats',
                        reward_metric='f1',
                        max_trials=30,
                        early_stopping_rounds=10).run()

X_test, _ = model.split_X_y(test_data.copy())
y_test = ground_truth.iloc[-detection_length:]

y_pred = model.predict(X_test)
y_proba = model.predict_proba(X_test)

scores = model.evaluate(y_test, y_pred, y_proba=y_proba)

model.plot(y_pred, actual=test_data, history=train_data, interactive=False)

从上图可以看出,对于测试集,该算法检测出了一系列异常值(蓝色点),并且还绘制出了每个时间戳的异常程度(浅蓝色线条)。

笔者今天先介绍到这里,有兴趣的朋友,可以研究一下该项目示例,一起挖掘宝藏:

https://github.com/DataCanvasIO/HyperTS/blob/main/examples/14_anomaly_detection_experiment.ipynb

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值