建议投诉 | 联系我们 | 关注微信 安全虎 - 专注于互联网信息安全的科技新媒体!
你的位置:首页 > 技术前沿 » 正文

「异常检测」开源工具库推荐

来源:2018-05-22 | 人围观 | 评论:暂无评论

 异常检测(anomaly detection),也叫异常分析(outlier analysis或者outlier detection),在工业上有非常广泛的应用场景:

  • 金融业:从海量数据中找到“欺诈案例”,如信用卡反诈骗,识别虚假信贷
  • 网络安全:从流量数据中找到“侵入者”,识别新的网络入侵模式
  • 在线零售:从交易数据中发现“恶意买家”,比如恶意刷评等
  • 生物基因:从生物数据中检测“病变”或“突变”

换句话来说,异常检测就是从茫茫数据中找到那些“长得不一样”的数据。但检测异常过程一般都比较复杂,而且实际情况下数据一般都没有标签(label),我们并不知道哪些数据是异常点,所以一般很难直接用简单的监督学习。异常值检测还有很多困难,如极端的类别不平衡、多样的异常表达形式、复杂的异常原因分析等。更多介绍可参考我的文章:微调:机器学习门下,有哪些在工业界应用较多,前景较好的小方向?

异常检测虽然重要,但好用的工具库并不多。今天介绍几个不同语言上的异常检测工具库,分别是PythonMatlabJava。值得一提的是,因为这个领域的应用较少,这些工具库基本都是研究人员开发的,所以工程性稍弱,但“理论上的鲁棒性”应该是比较强的,因为开发者可能就是算法的发明人。一个简单的观察是,Java上的异常检测工具库最全,Python上的工具库正在飞速发展,Matlab上有过不错的工具库但缺乏维护。所以短时间内首选Java,长期来看Java和Python都是不错的选项。


1. Python异常检测

1.1. Python上最容易使用的机器学习工具库肯定是Scikit Learn,它提供了4种常用的异常检测模型(2.7. Novelty and Outlier Detection),分别是Elliptic Envelope,Isolation Forest,LOF和One-class SVM。一般来说,Isolation Forest就可以应付大部分的任务。

1.2. 如果你需要更多不同的模型,也可以关注另一个Python异常检测工具库,Pyod

项目GithubPython Outlier Detection (PyOD) | 23 Stars+4 Forks

这个工具库除了支持Sklearn上的模型,还额外提供了一些额外的模型如kNN异常检测、HBOS和ABOD等。

除此之外,这个工具库还支持一些异常检测融合算法,如Average of Maximum等。根据项目介绍,这个工具库已经被用在了一些研究项目中,正确性还是可以保证的,且已经打包到了PyPI上可以用pip install快速安装。我运行过里面的一些例子,结果和可视化是靠谱的。不足之处就是这个项目的开发历史只有7个月(第一次commit是2017年10月),最近一次commit是昨天。虽然开发者更新很频繁,稳定性还有待观察。假以时日,或许会成为一个重要的开源工具包。

2. Matlab异常检测

项目Githubdsmi-lab-ntust/AnomalyDetectionToolbox | 32 Stars+38 Forks

这个工具库基本包括了常见的算法,如下图所示,常见的LOF,Isolation Forest和Distance based的算法都有。我使用过其中一部分模型,还是比较可靠的,每个模型都有>2人来编写检查。唯一的美中不足是项目最后一次维护是两年前(2016年1月),现在可能已经没人继续维护了。虽说如此,已有的模型应该足以应对大部分需求。感兴趣的小伙伴应该可以着手开发一个新的Matlab工具库。

3. Java异常检测

Java上的异常检测是最全的,必须隆重推荐ELKI,可谓是异常检测届的标杆工具库。

项目Githubelki-project/elki | 276 Stars+151 Forks

ELKI是由Heidelberg University和University of Southern Denmark的研究团队开发的,质量很高。而且 ELKI不仅仅是异常检测,而是一个全功能数据挖掘工具库,比如下图展示了各种各样的聚类模型。

至于异常检测算法,基本上常见的算法都能找到,甚至有很多最新的算法像HiCS。因此如果擅长Java的话,用ELKI必须是首选。当然,美中不足就是数据挖掘和机器学习的流行语言是Python,Java的受众面比较小。

4. 总结

不难看出,异常检测还是一个相对小众但实用的领域,工具库选择比较有限。而且这个领域的难度并不低,因为大部分算法都是无监督学习,很值得感兴趣的朋友一试。下一期文章可能会介绍更多异常检测相关的资料,敬请期待

标签:

相关内容推荐:

Top