TagAnomaly简介
TagAnomaly是微软开发的一款开源工具,专门用于多个时间序列(每个类别一个时间序列)的异常检测分析和标记。它为创建异常检测模型的标记数据提供了一个直观的可视化界面,允许标记人员在时间序列上选择点,并通过查看同一时间范围内其他时间序列的行为或原始数据来进一步检查这些点。
这个工具最初是作为微软的一个客户项目的一部分而开发的,目前已经开源并托管在GitHub上。尽管它不是一个定期维护的项目,但仍然为时间序列异常检测领域提供了宝贵的工具和思路。
TagAnomaly的主要功能
TagAnomaly提供了以下主要功能:
- 时间序列可视化和交互式标记
- 多时间序列比较分析
- 原始数据查看
- 基于Twitter AnomalyDetection包的自动异常检测
- 类别间分布变化观察
让我们详细了解一下这些功能:
时间序列可视化和交互式标记
TagAnomaly的核心功能是提供一个直观的时间序列可视化界面,允许用户交互式地选择和标记异常点。
如上图所示,用户可以在时间序列图上直接选择可疑的异常点,并将它们添加到候选列表中。这种交互式的标记方式使得异常检测的过程更加直观和高效。
多时间序列比较分析
TagAnomaly允许用户比较不同类别的时间序列,这对于理解异常是否仅限于单个类别还是影响多个类别非常有帮助。
通过这个功能,用户可以轻松地识别出跨类别的异常模式,从而更全面地理解数据的行为。
原始数据查看
对于聚合的时间序列数据,TagAnomaly提供了查看原始数据的功能。这使得用户可以深入了解构成异常值的具体事件。
这个功能对于理解异常的根本原因和验证异常标记的正确性非常有价值。
基于Twitter AnomalyDetection包的自动异常检测
TagAnomaly集成了Twitter的AnomalyDetection包,可以自动提出潜在的异常点。这为人工标记提供了一个很好的起点,可以显著提高标记效率。
类别间分布变化观察
TagAnomaly还提供了观察类别间分布变化的功能,这有助于理解异常是单变量的还是多变量的。
通过这个功能,用户可以更好地理解异常对整体数据分布的影响。
如何使用TagAnomaly
本地运行
TagAnomaly可以通过R或Docker在本地运行。
使用R
TagAnomaly使用Shiny框架来可视化事件。要运行它,您需要安装:
- R (3.4.0或以上版本)
- RStudio (推荐)
安装完成后,打开RStudio中的项目文件(taganomaly.Rproj),点击"Run App"或在控制台中调用runApp()即可启动应用。
TagAnomaly使用的R包包括:
- shiny
- dplyr
- gridExtra
- shinydashboard
- DT
- ggplot2
- shinythemes
- AnomalyDetection
使用Docker
也可以通过Docker运行TagAnomaly:
docker pull omri374/taganomaly
docker run --rm -p 3838:3838 omri374/taganomaly
部署到云平台
TagAnomaly可以部署到Azure等云平台上:
- 可以部署到Azure Web App for Containers或Azure Container Instances
- 也可以手动拉取Docker镜像并部署到自己的环境中
使用说明
- 导入时间序列CSV文件(格式:日期、类别、值)
- (可选)导入原始数据时间序列CSV文件
- 选择类别(如果存在)
- 在滑块上选择时间范围
- 检查时间序列:
- 点击表格中的时间范围查看该范围的原始数据
- 打开"All Categories"标签页查看同一时间范围内其他时间序列的行为
- 在图上选择看起来异常的点
- 点击"Add selected points"将标记的点添加到候选列表
- 确定这些是实际的异常后,点击"Download labels set"将结果表保存为CSV
TagAnomaly的优势与局限性
优势
- 直观的可视化界面,便于交互式标记
- 支持多时间序列比较,有助于发现跨类别的异常模式
- 提供原始数据查看功能,便于深入分析
- 集成自动异常检测算法,提高标记效率
- 开源项目,可根据需求进行定制和扩展
局限性
- 未保存的添加点在更改日期滑块或类别时会丢失,这使得在复杂的时间序列中保存多个点变得困难
- 不是定期维护的项目,可能存在一些bug或兼容性问题
- 主要针对时间序列数据,对于其他类型的异常检测任务可能不太适用
总结
TagAnomaly作为一个专门用于多时间序列异常检测分析和标记的工具,为数据科学家和分析师提供了一个强大的平台。它的直观界面和丰富功能使得异常检测的过程更加高效和准确。虽然它有一些局限性,但作为一个开源项目,它为时间序列异常检测领域提供了宝贵的参考和起点。
对于那些需要处理大量时间序列数据并进行异常检测的团队来说,TagAnomaly无疑是一个值得尝试的工具。它不仅可以提高标记效率,还能帮助用户更深入地理解数据中的异常模式。
如果您对时间序列异常检测感兴趣,不妨尝试使用TagAnomaly,或者参与到这个开源项目中来,为其发展做出贡献。您可以在GitHub仓库中找到更多信息和使用说明。
无论您是数据科学家、分析师还是对时间序列分析感兴趣的开发者,TagAnomaly都为您提供了一个探索和学习的绝佳平台。让我们一起拥抱开源,推动时间序列异常检测技术的进步!