淘先锋技术网

首页 1 2 3 4 5 6 7

e2119897b4ceb00d8cc23dba3514ded0.png

图1 异常检测

什么是异常点

异常点是指其值与其他值存在显著不同的数据点。以时间序列为例,时间序列中的异常点,其时间超过了该序列的正常范围,而不考虑数据点之间的时间关系。换句话说,即使将所有数据点都视为时间无关的[2] ,异常点就突出了,如下图所示。

ce77b47bbef0896951aada931c869ce6.png

图2 异常点

然而,并不是所有超出范围的值都是异常点。在某些情况下,一个时间点是否正常取决于它的值是否与它“最近的过去”一致。如果价值突然增加或减少是暂时的,则称为峰值;如果这种变化是永久性的,则称为水平转移[3]。请注意,虽然峰值看起来与离群值类似,但是峰值却不能等同于离群值,峰值不是时间依赖性的,而离群值是时间依赖性的。如果在不考虑时间顺序的情况下检查所有数据点,峰值的值可能是正常的(见下图)。

2ca8f912e5160ae144f69ac167b674e7.png

图3 峰值

我们可以并排滑动两个时间窗口,并跟踪它们的平均值或中值之间的差异。这种随时间变化的差异是一种新的时间序列,可以用离群值检测器来检验。当左右窗口中的统计数据有显著差异时,则表明在此时间点附近发生了突然变化。时间窗口的长度控制用来检测变化的时间尺度:对于峰值,左边的窗口比右边的更长,以捕获近过去的代表性信息;另一方面,对于关卡转换,两个窗口都应该足够长以捕获稳定状态。

2d5f9b1d3256d478badf39ccf1cff616.png

图4 水平转移

异常检测开源工具

为了更好的对异常检测进行分析。我们整理了下面6种异常检测相关开源工具。

1、Arundo开源的ADTK[8]

ADTK是一个用于非监督、基于规则的时间序列异常检测的Python包。这个软件包提供了一组具有统一通用检测器、转换器和聚合器的API,以及将它们连接到模型中的管道类。它还提供了一些处理和可视化时间序列和异常事件的功能。

ce374814d19a5316481e514e41676ad4.png

图5 ADTK包检测结果

组件的特点:

丰富的算法: 包含多种时间序列异常检测算法;

标准的接口:支持标准化的对外服务接口,便于第三方系统调用

下载地址:https://github.com/arundo/adtk

2、LoudML[14]

Loud ML是一个建立在TensorFlow之上的开源时间序列推理引擎。该工具有助于预测数据、检测异常值,并使用先验的知识使异常检测过程自动化。

154c1f61fa87e71f4be56d19c87f69fa.png

图6 Loud ML管理界面

工具特点:

内置HTTP API,方便与其他应用系统集成;

可以通过机器学习引擎处理来自不同数据源的异常数据;

支持ElasticSearch、InfluxDB、MongoDB、OpenTSDB等数据库;

支持JSON配置安装和管理;

近乎实时的数据处理,并提供给推理引擎以返回结果。

下载地址:https://github.com/regel/loudml

3、Linkedin开源的luminol[15]

Luminol是一个轻量级的时间序列数据分析python库。它支持的两个主要功能是异常检测和关联。它可以用来计算异常的可能原因。给定一个时间序列,检测数据是否包含任何异常,并返回异常发生的时间窗口、异常达到其严重程度的时间戳,以及指示该异常与时间序列中的其他异常相比有多严重的分数。给定两个时间序列,帮助求出它们的相关系数。

d268e36c5d77c2cffa52685f3cee24a4.png

图7 Luminol API调用方式

工具的特点:可以建立一个异常检测分析的逻辑流程。例如,假设网络延迟出现峰值:异常检测可以发现网络延迟时间序列中的峰值,并获取峰值的异常周期,之后与同一时间范围内的其他系统指标(如GC、IO、CPU等)关联获得相关指标的排序列表,根源候选项很可能位于最前面。

下载地址:https://github.com/linkedin/luminol

4、PyOD[16]

PyOD是用于检测数据中异常值的库,它能对20多种不同的算法进行访问,以检测异常值,并能够与Python 2和Python 3兼容。

2239e59c303cdca88179b0bcd2502371.png

图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[17]

PyODDS是一个端到端的异常检测Python组件。PyODDS提供异常检测算法,满足不同领域的用户需求,无论是数据科学还是机器学习背景。PyODDS提供了在数据库中执行机器学习算法的能力,而无需将数据移出数据库服务器。它还提供了大量基于统计和深度学习的异常检测算法。

9f29b9e34ea8bf33604c4e9ee5c56499.png

图9 PyOdds异常检测库

组件的特点:

全栈服务,支持从轻量级的基于SQL的数据库到后端机器学习算法的操作和维护,使得吞吐量速度更快;

先进的异常检测方法,包括统计、机器学习、深度学习模型与统一的API和详细的文档;

强大的数据分析机制,支持静态和时间序列数据分析与灵活的时间片(滑动窗口)分割;

自动化机器学习,首次尝试将自动机器学习与异常检测结合起来,并属于将自动机器学习概念扩展到现实世界数据挖掘任务的尝试之一。

下载地址:

https://github.com/datamllab/pyodds

6、Twitter开源的AnomalyDetection[4]

AnomalyDetection是一个R语言程序包,Twitter通常会在重大新闻和体育赛事期间用AnomalyDetection扫描入站流量,发现那些使用僵尸账号发送大量垃圾(营销)信息的机器人。

4211c185ac14c84607934317da054d05.png

图10 AnomalyDetection 入站流量异常检测

下载地址:

https://github.com/twitter/AnomalyDetection

其他开源工具包情况如下表所示:

edfcda948a9af6057e93ae788bed9fec.png

ada730b9499391a4f6e5d9ad3965c63a.png

开源异常检测(入侵检测)数据集

为了更好的研究异常检测,数据集是必不可少的,我们整理了下面9种异常检测(入侵检测)相关数据集:

fb0c75ced954ff167700fbe1fc1e92c1.png

6d34e01f87209e8e756d9126666c6ac8.png

9aed683a340de321e575616dc3299334.gif

参考文献

[1] V. Chandola, A. Banerjee, and V. Kumar, “Outlier detection: A survey,” ACM Computing Surveys, 2007.

[2] D. Hawkins, Identification of Outliers. Chapman and Hall, London, 1980.

[3] A. Javaid, Q. Niyaz, W. Sun, and M. Alam, “A deep learning approach for network intrusion detection system,” in Proceedings of the 9th EAI International Conference on Bio-inspired Information and Com-munications Technologies (formerly BIONETICS), pp. 21–26, ICST(Institute for Computer Sciences, Social-Informatics and Telecommunications Engineering), 2016.

[4]https://github.com/twitter/AnomalyDetection

[5]https://github.com/pridiltal/oddstream

[6]https://github.com/earthgecko/skyline

[7]https://github.com/hastic

[8]https://github.com/arundo/adtk

[9]https://github.com/tsurubee/banpei

[10]https://github.com/smirmik/CAD

[11]https://github.com/MentatInnovations/datastream.io

[12]https://github.com/KDD-OpenSource/DeepADoTS

[13]https://github.com/NetManAIOps/donut

[14]https://github.com/regel/loudml

[15]https://github.com/linkedin/luminol

[16]https://pyod.readthedocs.io/en/latest/

[17]https://github.com/datamllab/pyodds

[18]https://github.com/selimfirat/pysad

[19]https://github.com/kLabUM/rrcf

[20]https://github.com/khundman/telemanom

[21]https://github.com/ExpediaDotCom/adaptive-alerting

[22]https://github.com/yahoo/egads

[23]https://github.com/netflix/surus

[24]https://github.com/lytics/anomalyzer

[25]https://github.com/facesea/banshee

[26]https://github.com/Stream-AD/MIDAS

[27]https://github.com/pridiltal/oddstream

[28] A. Shiravi, H. Shiravi, M. Tavallaee, and A. A. Ghorbani, “Toward developing a systematic approach to generate benchmark datasets for intrusion detection,” computers & security, vol. 31, no. 3, pp. 357–374, 2012.

[29] Y. Yu, J. Long, and Z. Cai, “Network intrusion detection through stacking dilated convolutional autoencoders,” Security and Communication Networks, vol. 2017, 2017.

[30] A. Adam, E. Rivlin, I. Shimshoni, and D. Reinitz, “Robust real-time unusual event detection using multiple fixed-location monitors,” IEEE transactions on pattern analysisand machine intelligence, vol. 30, no. 3, pp. 555–560, 2008.

[31] C. Yin, Y. Zhu, J. Fei, and X. He, “A deep learning approach for intrusion detection using recurrent neural networks,” IEEE Access, vol. 5, pp. 21954–21961, 2017.

[32] T. A. Tang, L. Mhamdi, D. McLernon, S. A. R. Zaidi, and M. Ghogho, “Deep learning approach for network intrusion detection in software defined networking,” in Wireless Networks and Mobile Communications (WINCOM), 2016 International Conference on, pp. 258–263, IEEE, 2016.

[33] M. Yousefi-Azar, V. Varadharajan, L. Hamey, and U. Tupakula, “Autoencoder-based feature learning for cyber security applications,” in Neural Networks (IJCNN), 2017 International Joint Conference on, pp. 3854–3861, IEEE, 2017.

[34] S. Mohammadi and A. Namadchian, “A new deep learning approach for anomaly base ids using memetic classifier.,” International Journal of Computers, Communications & Control, vol. 12, no. 5, 2017.

[35] M. Lopez-Martin, B. Carro, A. Sanchez-Esguevillas, and J. Lloret, “Conditional variational autoencoder for prediction and feature recovery applied to intrusion detection in iot,” Sensors, vol. 17, no. 9, p. 1967, 2017.

[36] J. Stolfo, W. Fan, W. Lee, A. Prodromidis, and P. K. Chan, “Cost-based modeling and evaluation for data mining with application to fraud and intrusion detection,” Results from the JAM Project by Salvatore, pp. 1–15, 2000.

[37] K. Alrawashdeh and C. Purdy, “Toward an online anomaly intrusion detection system based on deep learning,” in Machine Learning and Applications (ICMLA), 2016 15th IEEE International Conference on, pp. 195–200, IEEE, 2016.

[38] N. T. Van, T. N. Thinh, and L. T. Sach, “An anomaly-based network intrusion detection system using deep learning,” in System Science and Engineering (ICSSE), 2017 International Conference on, pp. 210–214, IEEE, 2017.

[39] R. Fontugne, P. Borgnat, P. Abry, and K. Fukuda, “Mawilab: combining diverse anomaly detectors for automated anomaly labeling and performance benchmarking,” in Proceedings of the 6th International COnference, p. 8, ACM, 2010.

[40] C. G. Cordero, S. Hauke, M. Mühlhäuser, and M. Fischer, “Analyzing flow-based anomaly intrusion detection using replicator neural networks,” in Privacy, Security and Trust (PST), 2016 14th Annual Conference on, pp. 317–324, IEEE, 2016.

[41] “Jamk university of applied sciences,realistic global cyber environment (rgce),” 2009

作者:康肖钰 大象无形

责编:郝璐萌

f564ee49ecc7acd966123db2204ef679.gif