无监督学习:决策树AI异常检测

ximingri 2018-01-16

导语:除非你参与异常检测(anomaly detection),否则你可能从未听说过无监督决策树。从表面上看,这是一种非常有趣的决策树方法,但在实践中是现代入侵检测技术的主干。

最近作者正在做一个关于流处理的演示,但是介绍的用例是关于异常检测的。事实证明,如果你设涉及到异常检测,无监督的决策树是相当普遍的。

异常与稀疏数据

在之前处理过相关的不平衡数据集的技术之后我们观察到,当不平衡变得如此之大以至于它应该被认为是一个异常时,其实是没有什么统一的标准。就像判断艺术的造诣如何,只可意会不可言传。

在这里作为例证的异常是关于入侵检测的。虽然这些可能会在一天中出现很多次,但与常规Web日志和系统数据包所产生的数据洪流相比,这些数据是非常罕见的。具体到人的生活中,异常可能是信用卡欺诈或正常CT扫描中发现的癌症。

如果你认为你的用例处于稀疏和异常之间,那么就按照我们所做的,尝试以下两种方法,看看哪个比较成功。

监督与无监督

在异常检测中,我们试图识别与数据集中的预期模式不匹配的项目或事件。在入侵检测系统中广泛使用的传统的“基于特征码”的方法创建了可以在正常的监督技术中使用的训练数据。当检测到攻击时,相关的流量模式被记录并被标记并被分类为一次入侵。然后将这些数据与正常数据相结合,用于创建监督训练集。

在受监督和无监督的情况下,现在以随机森林形式出现的决策树成为是选择的重要决定。决策树是非参数的,他们没有对数据的分布做出假设,擅长将数字和分类相结合,并像冠军一样处理缺失的数据。所有类型的异常数据往往都是高维度的,决策树可以将其全部纳入其中,并提供合理清晰的指导,以便修剪重要的内容。

为了完整起见,还有一类半监督异常检测,其中训练数据仅由正常事务组成,没有任何异常。这也被称为“一类分类”,并以稍微不同的方式使用一个类SVM或自动编码器。

事实上,监督方法在入侵检测方面仍然比无监督方式更精确,但是它们完全无法确定新的零时差攻击,这可能是更严重的威胁。

无监督学习:决策树AI异常检测

无监督决策树

无监督的决策树的概念有点误导大家的意思,因为它是一个无监督的聚类算法的组合,创建第一个猜测什么是好的、什么是坏的,来决定决策树在何处分裂。

第1步:对你的数据运行一个聚类算法。在尝试过几乎所有的聚类技术之后,发现,k-NN似乎还是最好的。设定K = 2可能是大家都想尝试的一个做法,但是鉴于可能存在的不同类型的入侵,预期好的结果是不现实的。实际的指导是将K设置为至少10,并且对值进行高达50的试验。因为数据是未标记过的,所以没有能够确定最佳聚类的目标函数。

这并不包括在文献中,但这可能是一个很好的理由,可以尝试关于不平衡数据集的文章中讨论的SMOTE(Synthetic Minority Oversampling Technique),因为它的目的是澄清集群之间的界限。

无监督学习:决策树AI异常检测

步骤2:在数据上记录了集群,以正常的方式运行决策树。显然,如果K很大,这将是一个多级问题,就需要解释阈值来发现异常。

关注k-NN方法的结果是相当不错的,从这个ROC曲线可以看出乳腺癌检测基准数据。(请注意AUC轴在0.5时截止)。

无监督学习:决策树AI异常检测

异常检测无监督决策树的实际执行力其实比较复杂,存在不同类型的异常问题,数据规范化过程以及基准数据集本身的变化等。

最佳实践

如果你对此感兴趣,无监督的随机森林的Python脚本,会让你的生活变得更容易。戴尔EMC的首席解决方案架构师Boni Bruno表示,他描述的场景是通过监测每个单独的地点,在世界范围内分布遍布全球各地的数据中心进行异常检测。

该技术体系结构的核心是Spark Streaming,其流中的运算符包含使用Python无监督的随机森林脚本构建的检测算法。警报通知在入侵检测不到5秒内就会发出。

此外,该系统的目的是每24小时收集一个新的(和真正的大数据)数据集,以重新训练模型,以便实时捕获任何新的零时差攻击。

相关推荐