本文梳理了一系列Python语言的时间序列数据异常检测库。
综合型机器学习库
Merlion
Salesforce开源的工业级库,支持异常检测与预测双任务,提供统一API和AutoML功能,包含统计模型、树模型和深度学习算法(如LSTM-AE、VAE)
PyOD
专注多维离群值检测的参考库,涵盖经典算法(Isolation Forest、LOF)和深度模型(VAE、GAN),在时间序列场景需结合滑动窗口应用
Darts
以预测为核心的时间序列库,通过等模块支持异常检测,提供40+模型(ARIMA到Transformer)
NumbaDetector
TimeSeAD
专注于多变量时间序列的深度学习异常检测,提供新指标和基准测试,适用于复杂时间依赖性的场景
专业型时间序列库
STUMPY
基于矩阵Profile(Matrix Profile)算法的可扩展库,专为大规模时间序列设计,支持分布式计算
Orion
专注无监督深度学习的异常检测框架,以TadGAN等生成模型为核心
River
流式机器学习库,支持在线更新模型,适合实时监控场景
轻量级与专用库
ADTK
提供规则基模型(如PersistAD、RangeAD)和可视化工具
tsod
纯Python实现,集成规则基和神经网络方法,API简洁
dtaianomaly
模块化库,支持算法组合和基准测试
大规模数据处理能力
STUMPY:在商用笔记本上处理万亿级数据点(~10TB),通过矩阵Profile优化实现
PyOD + Dask:支持分布式计算,但需手动实现数据分片
Merlion:单机内存限制在百万级点,依赖后处理(如Calibrator)降低误报
|
算法类型 |
代表库 |
核心思想 |
适用场景 |
|---|---|---|---|
| 统计方法 |
Merlion |
基于EWMA/季节分解的残差分析 |
稳定周期数据 |
| 树模型 |
PyOD |
Isolation Forest通过随机分割路径隔离异常点 |
高维数据 |
| 深度学习 |
Orion, Darts |
自编码器重构误差、GAN生成对比 |
复杂非线性模式 |
| 矩阵Profile |
STUMPY |
计算子序列相似度,低相似度区域判为异常 |
超大规模数据 |
| 流式算法 |
River |
增量更新统计特征(如均值/方差) |
实时数据流 |
|
库 |
文档与代码资源 |
|---|---|
|
Merlion |
GitHub + 案例库 |
|
PyOD |
官方文档 + 20+算法示例 |
|
Darts |
时间序列教程 + 异常检测Notebook |
|
STUMPY |
大规模矩阵Profile指南 |
|
River |
流处理手册 |
此外,通用库如 Scikit-learn 中的 IsolationForest、LocalOutlierFactor 等算法也可用于时间序列异常检测,而 Statsmodels 和 Ruptures 则支持突变点检测。选择时需根据数据特性(如单变量/多变量、是否需要实时检测)和算法需求(如统计方法或深度学习)进行权衡。
异常检测算法的选型需综合数据特征(维度/分布/类型)、异常模式(全局/局部)与计算资源。传统统计方法适用于低维正态数据,树模型(iForest/RCF)适合大规模场景,深度学习方法(AnomalyTransformer/GANomaly)在复杂模式(如图像、多变量时序)中表现突出,但需权衡训练成本。


