Orion是一个专为无监督时间序列异常检测构建的机器学习库。
项目描述
来自麻省理工学院Data to AI Lab的开源项目。
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()
应显示带有timestamp
和value
的信号。
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
解决的问题
- 更新
test_core
文件 – 问题 #507 由 @sarahmish - 更新 ARIMA 原语和管道 – 问题 #503 由 @sarahmish
- 更新依赖关系 – 问题 #497 & 问题 #499 由 @sarahmish
- 更新 Python 以进行依赖测试 – 问题 #484 由 @sarahmish
- 添加 python 3.10 和 3.11 并删除 3.6 和 3.7 – 问题 #477 由 @sarahmish
- LNN 管道 – 问题 #475 由 @sarahmish
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_gpu
和lstm_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
本版本修复了 aer
、ae
和 tadgan
管道中的一些问题。
解决的问题
- 修复加载后 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
本版本引入了改进和更多测试。
解决的问题
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
本版本增加了新的功能到基准函数中,用户现在可以保存管道、查看计算中的结果,并允许单个评估多次比较。
解决的问题
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.md
和HISTORY.md
的文件编码/解码问题 - 由 @dyuliu 提交的问题 #88 - 修复Cyclegan原始中
score_anomaly
的瓶颈 - 由 @dyuliu 提交的问题 #86 - 调整Cyclegan原始中
epoch
的含义 - 由 @sarahmish 提交的问题 #85 - 将评估重命名为基准,将指标重命名为评估 - 由 @sarahmish 提交的问题 #83
- 大小为1的区间评分函数 - 由 @sarahmish 提交的问题 #76
0.1.1 - 2020-05-11
基于类和函数的新接口。
0.1.0 - 2020-04-23
Orion的第一个PyPI发布:https://pypi.ac.cn/project/orion-ml/
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源代码分发
构建分发
orion-ml-0.6.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1ff1e0007c6027d700aaf678e3e43ef58d4942a1559366e27a426a913fc6327b |
|
MD5 | 8b4fe059e69eecc379e5fef5fb6d459c |
|
BLAKE2b-256 | d74938e4d9324f75027da7687ad3f077a22262805cc8200cd3d2bfb535414ba9 |
orion_ml-0.6.1-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d1153b1f016219f3ef592b8909f0638b54467e83b88e3fdb059f5b0286ba14ef |
|
MD5 | b59654f248f1b404f68147b10a8f04be |
|
BLAKE2b-256 | b70f49dc0968ac579aaeb979d37316adcda3aa1ec0d30170f406ba58feb07722 |