问题背景: 我正在开展一个项目,该项目涉及类似于 IT 监控空间中的日志文件(据我对 IT 空间的最佳理解)。这些日志文件是时间序列数据,组织成数百/数千行各种参数。每个参数都是数字(浮点数),每个时间点都有一个非平凡/非错误值。我的任务是监视所述日志文件以进行异常检测(峰值、下降、某些参数不同步的异常模式、奇怪的第一/第二/等衍生行为等)。
在一项类似的任务中,我尝试了 Splunk 和 Prelert,但我目前正在探索开源选项。
约束: 我将自己限制在 Python 上,因为我很了解它,并且想延迟切换到 R 和相关的学习曲线。除非似乎对 R(或其他语言/软件)有压倒性的支持,否则我想坚持使用 Python 来完成这项任务。
另外,我目前正在Windows环境中工作。我想继续在 Windows 中对小型日志文件进行沙箱处理,但如果需要可以迁移到 Linux 环境。
资源: 我检查了以下内容,结果是死胡同:
这里的一些信息很有帮助,但不幸的是,我很难找到合适的包,因为:
Twitter 的“AnomalyDetection”在 R 中,我想坚持使用 Python。此外,Python 端口pyculiarity似乎会导致我在 Windows 环境中实现的问题。
Skyline,我的下一次尝试,似乎已经停止了(来自github 问题)。考虑到网上的支持似乎很少,我还没有深入研究。
scikit-learn 我仍在探索,但这似乎更加手动。低调的方法对我来说是可以的,但是我在学习工具方面的背景很薄弱,所以想要像算法这样的技术方面的黑匣子,类似于 Splunk+Prelert。
问题定义和问题: 我正在寻找可以帮助我通过包或库从 Python 中的时间序列日志文件自动检测异常过程的开源软件。
- 是否存在这样的事情来帮助我完成当前的任务,或者它们是我想象中的?
- 任何人都可以提供具体步骤来帮助我实现目标,包括背景基础知识或概念吗?
- 这是最好的 StackExchange 社区,还是 Stats、Math,甚至是 Security 或 Stackoverflow 更好的选择?
编辑 [2015-07-23] 请注意,pyculiarity的最新更新似乎已针对 Windows 环境修复!我尚未确认,但应该是社区的另一个有用工具。
编辑 [2016-01-19] 一个小更新。我没有时间研究这个问题,但在继续研究具体细节之前,我会退后一步了解这个问题的基本原理。例如,我正在采取的两个具体步骤是:
从用于异常检测的 Wikipedia 文章开始,充分理解,然后在其他链接的 Wikipedia 文章的概念层次结构中向上或向下移动,例如this,然后是this。
Chandola et al 2009 Anomaly Detection: A Survey和 Hodge et al 2004 A Survey of Outlier Detection Methodologies所做的大型调查中探索技术。
一旦更好地理解了这些概念(我希望在开发实践方面也能玩一些玩具示例),我希望了解哪些开源 Python 工具更适合我的问题。
编辑 [2020-02-04] 自从我研究这个问题以来已经有几年了,并且不再从事这个项目,所以在另行通知之前我不会关注或研究这个领域。非常感谢大家的意见。我希望这个讨论可以帮助其他需要异常检测工作指导的人。
FWIW,如果我现在必须用相同的资源(几千美元的费用)做同样的项目,我会追求深度学习/神经网络方法。该方法通过隐藏层自动学习结构和层次结构的能力非常有吸引力,因为我们有大量数据并且(现在)可以将钱花在云计算上。我仍然会使用 Python ;)。
干杯!