背景
背景
什么是异常检测
什么是异常检测
图1 异常检测
什么是异常点
什么是异常点
图2 异常点
然而,并不是所有超出范围的值都是异常点。在某些情况下,一个时间点是否正常取决于它的值是否与它“最近的过去”一致。如果价值突然增加或减少是暂时的,则称为峰值;如果这种变化是永久性的,则称为水平转移。请注意,虽然峰值看起来与离群值类似,但是峰值却不能等同于离群值,峰值不是时间依赖性的,而离群值是时间依赖性的。如果在不考虑时间顺序的情况下检查所有数据点,峰值的值可能是正常的(见下图)。
图3 峰值
我们可以并排滑动两个时间窗口,并跟踪它们的平均值或中值之间的差异。这种随时间变化的差异是一种新的时间序列,可以用离群值检测器来检验。当左右窗口中的统计数据有显著差异时,则表明在此时间点附近发生了突然变化。时间窗口的长度控制用来检测变化的时间尺度:对于峰值,左边的窗口比右边的更长,以捕获近过去的代表性信息;另一方面,对于关卡转换,两个窗口都应该足够长以捕获稳定状态。
图4 水平转移
异常检测开源工具
异常检测开源工具
1、Arundo开源的ADTK
ADTK是一个用于非监督、基于规则的时间序列异常检测的Python包。这个软件包提供了一组具有统一通用检测器、转换器和聚合器的API,以及将它们连接到模型中的管道类。它还提供了一些处理和可视化时间序列和异常事件的功能。
图5 ADTK包检测结果
组件的特点:
· 丰富的算法:包含多种时间序列异常检测算法;
· 标准的接口:支持标准化的对外服务接口,便于第三方系统调用
下载地址:https://github.com/arundo/adtk
2、LoudML
Loud ML是一个建立在TensorFlow之上的开源时间序列推理引擎。该工具有助于预测数据、检测异常值,并使用先验的知识使异常检测过程自动化。
图6 Loud ML管理界面
工具特点:
· 内置HTTP API,方便与其他应用系统集成;
· 可以通过机器学习引擎处理来自不同数据源的异常数据;
· 支持ElasticSearch、InfluxDB、MongoDB、OpenTSDB等数据库;
· 支持JSON配置安装和管理;
· 近乎实时的数据处理,并提供给推理引擎以返回结果。
下载地址:https://github.com/regel/loudml
3、Linkedin开源的luminol
Luminol是一个轻量级的时间序列数据分析python库。它支持的两个主要功能是异常检测和关联。它可以用来计算异常的可能原因。给定一个时间序列,检测数据是否包含任何异常,并返回异常发生的时间窗口、异常达到其严重程度的时间戳,以及指示该异常与时间序列中的其他异常相比有多严重的分数。给定两个时间序列,帮助求出它们的相关系数。
图7 Luminol API调用方式
工具的特点:可以建立一个异常检测分析的逻辑流程。例如,假设网络延迟出现峰值:异常检测可以发现网络延迟时间序列中的峰值,并获取峰值的异常周期,之后与同一时间范围内的其他系统指标(如GC、IO、CPU等)关联获得相关指标的排序列表,根源候选项很可能位于最前面。
下载地址:https://github.com/linkedin/luminol
4、PyOD
PyOD是用于检测数据中异常值的库,它能对20多种不同的算法进行访问,以检测异常值,并能够与Python 2和Python 3兼容。
图8 PyOD异常检测库
工具特点:
· 包括近20种常见的异常检测算法,比如经典的LOF/LOCI/ABOD以及最新的深度学习如对抗生成模型(GAN)和集成异常检测(outlier ensemble);
· 支持不同版本的Python:包括2.7和3.5+;支持多种操作系统:windows,macOS和Linux;
· 简单易用且一致的API,只需要几行代码就可以完成异常检测,方便评估大量算法;
· 使用即时编译器(JIT)和并行化(parallelization)进行优化,加速算法运行及扩展性(scalability),可以处理大量数据;
下载地址:
https://pyod.readthedocs.io/en/latest/
5、PyOdds
PyODDS是一个端到端的异常检测Python组件。PyODDS提供异常检测算法,满足不同领域的用户需求,无论是数据科学还是机器学习背景。PyODDS提供了在数据库中执行机器学习算法的能力,而无需将数据移出数据库服务器。它还提供了大量基于统计和深度学习的异常检测算法。
图9 PyOdds异常检测库
组件的特点:
· 全栈服务,支持从轻量级的基于SQL的数据库到后端机器学习算法的操作和维护,使得吞吐量速度更快;
· 先进的异常检测方法,包括统计、机器学习、深度学习模型与统一的API和详细的文档;
· 强大的数据分析机制,支持静态和时间序列数据分析与灵活的时间片(滑动窗口)分割;
· 自动化机器学习,首次尝试将自动机器学习与异常检测结合起来,并属于将自动机器学习概念扩展到现实世界数据挖掘任务的尝试之一。
下载地址:
https://github.com/datamllab/pyodds
6、Twitter开源的AnomalyDetection
AnomalyDetection是一个R语言程序包,Twitter通常会在重大新闻和体育赛事期间用AnomalyDetection扫描入站流量,发现那些使用僵尸账号发送大量垃圾(营销)信息的机器人。
图10 AnomalyDetection 入站流量异常检测
下载地址:
https://github.com/twitter/AnomalyDetection
其他开源工具包情况如下表所示:
开源异常检测(入侵检测)数据集
为了更好的研究异常检测,数据集是必不可少的,我们整理了下面9种异常检测(入侵检测)相关数据集:
为便于排版已省去参考文献
原文来源:中国保密协会科学技术分会
本文始发于微信公众号(网络安全应急技术国家工程实验室):异常检测以及开源工具简介
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论