README
绝大部分是自己翻译自己手打的,少部分参考有道翻译,主要是想仔细再读一遍,顺便就打出来了。这篇论文内容比较多,有代码,原作者有github和知乎账号,感兴趣可以找一下。欢迎讨论和批评指正。
用于异常检测的深度孤立森林
摘要
孤立森林(iForest)由于其在不同基准数据集上的广泛有效性和强大的可扩展性正在兴起为近年来最热门的异常检测器。然而,其平行于轴的线性划分方法通常导致(i)难以检测在高维/不可线性分离数据中的难以检测的异常,(ii)臭名昭著的算法偏差,将出乎意料的低异常分数分配给假象区域(artefact regions)。这些问题导致了高的假阴性错误。已有一些孤立森林的扩展,但它们仍然实施浅显的、线性的数据划分,限制了它们分离真实异常的能力。因此,本文提出深度孤立森林。本文引入一个新的表示方法,使用随机初始化的神经网络来将原始数据映射到随机表示集成中,随后使用随机的基于轴平行的切割来实现数据划分。这种表示方法提高了在原始数据空间中划分的高的自由度(相当于在不同大小的子空间中进行非线性划分),促进了随机表示和基于划分的随机分离之间的协同作用。进一步的实验表明本文的模型与现有最新的基于分离的方法以及深度检测器相比,在表格、图和时序数据上有明显的提升;本文模型也继承了孤立森林的期望的可扩展性。
关键词 异常检测 孤立森林 深度表示 集成学习
引言
异常检测在各种各样的领域有着广泛的应用,例如保险欺诈检测和经济犯罪、数据中心或航天器等复杂系统的监测、以及网络空间中攻击和潜在危险的识别。鉴于这些重要的应用,该任务在数十年来已经成为一个热门的研究话题,出现了大量的异常检测方法[1]、[2]。
近年来,孤立森林(iForest)[3] 由于其在不同基准数据集上的广泛有效性和强大的可扩展性正在兴起为最热门的异常检测器。与许多现有方法例如基于距离、密度的方法相比,孤立森林更好地捕捉了异常点的关键本质,即“少且不同”。它不引入额外的数据特征的假设,因此在不同数据集上表现出一致地高性能。而且,孤立森林有着线性时间复杂度,这通常是一个在有大规模数据和严格时间效率需求的工业应用中非常吸引人的优点。具体地,孤立森林使用一个孤立树(iTee)的集成,孤立树在这个集成中迭代地分支。叶子结点通过使用在随机选择的特征上进行随机切割来构造直到数据对象被孤立。数据的异常程度通过在这些孤立树中从根结点到孤立的叶节点的遍历平均路径长度来估计。
然而,一个明显的问题是它不能处理困难异常(例如,只能通过观察多个特征的组合,在高阶子空间中进行隔离的异常)因为它对所有的异常都是分别处理的且在每次分离操作中只考虑一个特征。图1用一个简单的例子说明了这个问题。异常点(用红色三角形表示)被一个环形的正常样本集围绕,这不能被x轴或y轴切片隔离切割。尽管这些异常点可能通过多次的切割最终被分离,这导致了在孤立树中和正常点相比难以区分的隔离深度。这些异常的失败检测会导致高的假阴性错误。鉴于异常通常包换和潜在意外或故障的关键信息,这些假阴性可能会导致严重的后果。因此,这些问题成为了妨碍孤立森林的性能的一个主要瓶颈,特别是在高维/不可线性划分的数据空间中。
图1. 困难异常挑战的说明。左图是一个合成数据集,红色三角形为异常点,蓝色点为正常样本。