跳转到主要内容

Orion是一个专为无监督时间序列异常检测构建的机器学习库。

项目描述

“DAI-Lab” 来自麻省理工学院Data to AI Lab的开源项目。

“Orion”

Development Status Python PyPi Shield Tests Downloads Binder

Orion

一个用于无监督时间序列异常检测的机器学习库。

重要链接
:computer: 网站 访问Sintel网站了解该项目更多信息。
:book: 文档 快速入门、用户和开发指南,以及API参考。
:star: 教程 查看我们的笔记本
:octocat: 仓库 本库的GitHub仓库链接。
:scroll: 许可 该仓库遵循MIT许可协议发布。
社区 加入我们的Slack工作区,获取公告和讨论。

概述

Orion是一个针对无监督时间序列异常检测构建的机器学习库。给定时间序列数据,我们提供一系列“经过验证”的ML管道(即Orion管道),用于识别罕见模式并将它们标记供专家审查。

该库使用在麻省理工学院数据到AI实验室下开发的多个自动化机器学习工具。

在博客系列中了解如何使用Orion管道处理纽约出租车数据集

第1部分:了解无监督时间序列异常检测 第2部分:我们如何使用GANs解决问题? 第3部分:如何评估异常检测管道?

笔记本:通过启动我们的笔记本来发现Orion

快速入门

使用pip安装

安装Orion最简单、最推荐的方式是使用pip

pip install orion-ml

这将从PyPi拉取并安装最新稳定版本。

以下示例展示了如何使用Orion管道之一。

拟合Orion管道

我们将为此示例加载数据

from orion.data import load_signal

train_data = load_signal('S-1-train')
train_data.head()

应显示带有timestampvalue的信号。

    timestamp     value
0  1222819200 -0.366359
1  1222840800 -0.394108
2  1222862400  0.403625
3  1222884000 -0.362759
4  1222905600 -0.370746

在此示例中,我们使用aer管道并设置一些超参数(在这种情况下,训练轮次为5)。

from orion import Orion

hyperparameters = {
    'orion.primitives.aer.AER#1': {
        'epochs': 5,
        'verbose': True
    }
}

orion = Orion(
    pipeline='aer',
    hyperparameters=hyperparameters
)

orion.fit(train_data)

使用拟合的管道检测异常

一旦拟合,我们就可以使用它来检测我们传入时间序列中的异常。

new_data = load_signal('S-1-new')
anomalies = orion.detect(new_data)

:warning: 根据您的系统和可能已安装的确切版本,可能打印出一些警告。这些可以安全地忽略,因为它们不会干扰管道的正常行为。

上一个命令的输出将是一个包含检测到的异常表的pandas.DataFrame

        start         end  severity
0  1402012800  1403870400  0.122539

排行榜

在每次发布中,我们都会运行Orion基准测试。我们维护一个最新的排行榜,其中包含根据基准测试程序验证的管道的当前评分。

我们在12个数据集上运行基准测试,这些数据集具有已知的真实情况。我们记录每个数据集上管道的评分。为了计算排行榜表,我们展示了每个管道相对于ARIMA管道的胜利次数。

管道 优于ARIMA
AER 11
TadGAN 7
LSTM动态阈值 8
LSTM自动编码器 7
密集自动编码器 7
VAE 6
LNN 7
矩阵配置文件 5
GANF 5
Azure 0

您可以在详细Google Sheets文档中找到每个管道在每条记录中的评分。总结结果也可以在以下总结Google Sheets文档中浏览。

资源

可能感兴趣的其他资源

引用

如果您的研究使用了 AER,请考虑引用以下论文

Lawrence Wong, Dongyu Liu, Laure Berti-Equille, Sarah Alnegheimish, Kalyan Veeramachaneni. AER: 用于时间序列异常检测的自编码回归器.

@inproceedings{wong2022aer,
  title={AER: Auto-Encoder with Regression for Time Series Anomaly Detection},
  author={Wong, Lawrence and Liu, Dongyu and Berti-Equille, Laure and Alnegheimish, Sarah and Veeramachaneni, Kalyan},
  booktitle={2022 IEEE International Conference on Big Data (IEEE BigData)},
  pages={1152-1161},
  doi={10.1109/BigData55660.2022.10020857},
  organization={IEEE},
  year={2022}
}

如果您的研究使用了 TadGAN,请考虑引用以下论文

Alexander Geiger, Dongyu Liu, Sarah Alnegheimish, Alfredo Cuesta-Infante, Kalyan Veeramachaneni. TadGAN - 使用生成对抗网络进行时间序列异常检测.

@inproceedings{geiger2020tadgan,
  title={TadGAN: Time Series Anomaly Detection Using Generative Adversarial Networks},
  author={Geiger, Alexander and Liu, Dongyu and Alnegheimish, Sarah and Cuesta-Infante, Alfredo and Veeramachaneni, Kalyan},
  booktitle={2020 IEEE International Conference on Big Data (IEEE BigData)},
  pages={33-43},
  doi={10.1109/BigData50022.2020.9378139},
  organization={IEEE},
  year={2020}
}

如果您的研究使用了 Orion(Sintel生态系统的一部分),请考虑引用以下论文

Sarah Alnegheimish, Dongyu Liu, Carles Sala, Laure Berti-Equille, Kalyan Veeramachaneni. Sintel:从信号中提取洞察的机器学习框架.

@inproceedings{alnegheimish2022sintel,
  title={Sintel: A Machine Learning Framework to Extract Insights from Signals},
  author={Alnegheimish, Sarah and Liu, Dongyu and Sala, Carles and Berti-Equille, Laure and Veeramachaneni, Kalyan},  
  booktitle={Proceedings of the 2022 International Conference on Management of Data},
  pages={1855–1865},
  numpages={11},
  publisher={Association for Computing Machinery},
  doi={10.1145/3514221.3517910},
  series={SIGMOD '22},
  year={2022}
}

历史

0.6.1 - 2024-10-04

解决的问题

  • 更新最小测试图像 – 问题 #563 由 @sarahmish
  • 更新基准 – 问题 #538 由 @sarahmish
  • 在 GH Actions 中固定 MacOS 版本 – 问题 #535 由 @sarahmish
  • 添加异常转换方法 – 问题 #452 由 @sarahmish

0.6.0 - 2024-2-13

支持 python 3.10 和 3.11

解决的问题

0.5.2 - 2023-10-19

支持 python 3.9 和新的矩阵轮廓管道

解决的问题

  • 在基准参数中发送管道名称 – 问题 #466 由 @sarahmish
  • 为基准添加延续参数 – 问题 #464 由 @sarahmish
  • 修复文档中的引用 – 问题 #453 由 @sarahmish
  • 更新文档 – 问题 #448 由 @sarahmish
  • 添加矩阵轮廓方法 – 问题 #446 由 @sarahmish
  • 支持 python 3.9 – 问题 #408 由 @sarahmish

0.5.1 - 2023-08-16

本版本向基准引入了一个新数据集。

解决的问题

  • 将 UCR 数据集添加到基准 – 问题 #443 由 @sarahmish
  • docker 图像构建失败 – 问题 #439 由 @sarahmish
  • 编辑 azure 管道中的时间间隔设置 – 问题 #436 由 @sarahmish

0.5.0 - 2023-05-23

本版本使用 ml-stars 包而不是 mlprimitives

解决的问题

  • 迁移到 ml-stars – 问题 #418 由 @sarahmish
  • find_anomalies 原语中更新 best_cost问题 #403 由 @sarahmish
  • 弃用 lstm_dynamic_threshold_gpulstm_autoencoder_gpu 管道维护 – 问题 #373 由 @sarahmish
  • 在 xlsxwriter 依赖规范中存在错别字 – 问题 #394 由 @sarahmish 提出
  • orion.evaluate 在拟合时使用失败 – 问题 #384 由 @sarahmish 提出
  • 带可视化选项的 AER 管道 – 问题 #379 由 @sarahmish 提出

0.4.1 - 2023-01-31

解决的问题

  • 将 VAE 从沙盒移至验证状态 – 问题 #377 由 @sarahmish 提出
  • 锁定 opencv问题 #372 由 @sarahmish 提出
  • 锁定 scikit-learn问题 #367 由 @sarahmish 提出
  • 修复 VAE 文档 – 问题 #360 由 @sarahmish 提出

0.4.0 - 2022-11-08

本版本引入了几个新增强功能

  • 支持 Python 3.8
  • 迁移到 Tensorflow 2.0
  • 新增管道,名为 VAE,是一种变分自动编码器模型。

解决的问题

  • 添加 Python 3.8 – 问题 #342 由 @sarahmish 提出
  • VAE (变分自动编码器) 管道实现 – 问题 #349 由 @dyuliu 提出
  • regression_errors 添加遮罩选项 – 问题 #352 由 @dyuliu 提出
  • 在 tensorflow 2.0 中修改 TadGAN – 问题 #161 由 @lcwong0928 提出
  • 添加自动依赖检查器 – 问题 #320 由 @sarahmish 提出
  • TadGAN 的 batch_size 不能更改 – 问题 #313 由 @sarahmish 提出

0.3.2 - 2022-07-04

本版本修复了 aeraetadgan 管道中的一些问题。

解决的问题

  • 修复加载后 AER 模型预测错误 – 问题 #304 由 @lcwong0928 提出
  • 将 AE 更新为支持任何 window_size问题 #300 由 @sarahmish 提出
  • 更新 tadgan_viz.json – 问题 #292 由 @Hramir 提出

0.3.1 - 2022-04-26

本版本引入了一个新的管道,名为 AER,是一种自动编码回归器模型。

解决的问题

  • 添加 AER 模型 – 问题 #286 由 @lcwong0928 提出

0.3.0 - 2022-03-31

本版本弃用了对 OrionDBExplorer 的支持,该功能已迁移到 sintel。因此,Orion 不再需要 mongoDB 作为依赖。

解决的问题

  • 更新依赖 – 问题 #283 由 @sarahmish 提出
  • 常规维护 – 问题 #278 由 @sarahmish 提出
  • 修复教程测试问题 – 问题 #276 由 @sarahmish 提出
  • 将 OrionExplorer 迁移到 Sintel – 问题 #275 由 @dyuliu 提出
  • 添加 LSTM viz JSON 管道 – 问题 #271 由 @Hramir 提出

0.2.1 - 2022-02-18

本版本引入了改进和更多测试。

解决的问题

  • 调整 TadGAN 的构建 – 问题 #261 由 @sarahmish 提出
  • 测试教程、依赖项和操作系统 – 问题 #251 由 @sarahmish 提出

0.2.0 - 2021-10-11

本版本支持多元时间序列作为输入。此外,还进行了少量改进和维护。

解决的问题

  • setuptools 不再支持 lib2to3,这会影响 mongoengine问题 #252 由 @sarahmish 提出
  • 支持多元输入 – 问题 #248 由 @sarahmish 提出
  • 带可视化选项的 TadGAN 管道 – 问题 #240 由 @sarahmish 提出
  • 在使用 dbExplorer 时,支持为 add_signals 和 add_signal 保存绝对路径 – 问题 #202 由 @sarahmish 提出
  • 基于window_size的TadGAN原语动态可伸缩性 - 由@sarahmish发起的问题#87

0.1.7 - 2021-05-04

本版本增加了新的功能到基准函数中,用户现在可以保存管道、查看计算中的结果,并允许单个评估多次比较。

解决的问题

  • 基准函数中的Dask问题及改进 - 由@sarahmish发起的问题#225
  • 使用上下文度量时出现数值溢出 - 由@kronerte发起的问题#212

0.1.6 - 2021-03-08

本版本引入了两个新的管道:LSTM AE和Dense AE。除了细微的改进外,还对代码进行了一些重构,引入了一个新的原语:reconstruction_errors

解决的问题

  • DTW库性能比较 - 由@sarahmish发起的问题#205
  • 无法pickle保存tadgan管道 - 由@sarahmish发起的问题#200
  • 新的管道LSTM和Dense自动编码器 - 由@sarahmish发起的问题#194
  • README - 由@pvk-developer发起的问题#192
  • 无法启动cli - 由@sarahmish发起的问题#186
  • index.rst中的项目符号格式不正确 - 由@micahjsmith发起的问题#178
  • 更新笔记本 - 由@sarahmish发起的问题#176
  • orion/evaluation/中的README.md文件存在不准确 - 由@sarahmish发起的问题#157
  • Dockerfile -- docker无法自动找到orion原语 - 由@sarahmish发起的问题#155
  • 原语文档 - 由@sarahmish发起的问题#151
  • tadgan中变量名不一致 - 由@sarahmish发起的问题#150
  • BENCHMARK.md和文档之间同步排行榜表 - 由@sarahmish发起的问题#148

0.1.5 - 2020-12-25

本版本包括新的文档风格和README.md的重构。除了基准代码和原语的一些细微改进外,此版本还包括将tadgan管道转移到verified

解决的问题

  • 与google colab链接 - 由@sarahmish发起的问题#144
  • 添加timeseries_anomalies单元测试 - 由@sarahmish发起的问题#136
  • 更新将序列转换为数组中的find_sequences - 由@sarahmish发起的问题#135
  • 在得分异常原语中定义错误/批评平滑窗口 - 由@sarahmish发起的问题#132
  • 基准增强中的训练-测试分割 - 由@sarahmish发起的问题#130

0.1.4 - 2020-10-16

基准的细微改进

  • 在try-catch之前加载地面实况 - 由@sarahmish发起的问题#124
  • 在Azure原语中将时间戳转换为datetime - 由@sarahmish发起的问题#123
  • 基准异常 - 由@sarahmish发起的问题#120

0.1.3 - 2020-09-29

新的基准和Azure原语。

  • 实现基准函数的新功能 - 由@sarahmish发起的问题#94
  • 将Azure异常检测作为原语新功能添加 - 由@sarahmish发起的问题#97
  • 批评和重建错误组合 - 由@sarahmish发起的问题#99
  • find_anomalies设置固定阈值 - 由@sarahmish发起的问题#101
  • 添加选项,使窗口大小和窗口步长为误差大小的百分比 - 由 @sarahmish 提交的问题 #102
  • 将管道组织为经过验证和沙盒 - 由 @sarahmish 提交的问题 #105
  • 地面实况参数名称增强 - 由 @sarahmish 提交的问题 #114
  • 将基准数据集列表和参数添加到s3桶增强 - 由 @sarahmish 提交的问题 #118

0.1.2 - 2020-07-03

添加新的评估子包和重构TadGAN。

  • 如果没有检测到事件,保存signalrun时出现两个错误 - 由 @dyuliu 提交的问题 #92
  • 关于 README.mdHISTORY.md 的文件编码/解码问题 - 由 @dyuliu 提交的问题 #88
  • 修复Cyclegan原始中score_anomaly的瓶颈 - 由 @dyuliu 提交的问题 #86
  • 调整Cyclegan原始中epoch的含义 - 由 @sarahmish 提交的问题 #85
  • 将评估重命名为基准,将指标重命名为评估 - 由 @sarahmish 提交的问题 #83
  • 大小为1的区间评分函数 - 由 @sarahmish 提交的问题 #76

0.1.1 - 2020-05-11

基于类和函数的新接口。

  • 实现Orion类 - 由 @csala 提交的问题 #79
  • 实现新的功能接口 - 由 @csala 提交的问题 #80

0.1.0 - 2020-04-23

Orion的第一个PyPI发布:https://pypi.ac.cn/project/orion-ml/

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源代码分发

orion-ml-0.6.1.tar.gz (1.1 MB 查看哈希值)

上传时间 源代码

构建分发

orion_ml-0.6.1-py2.py3-none-any.whl (143.4 kB 查看哈希值)

上传时间 Python 2 Python 3