深度孤立森林 Deep Isolation Forest论文翻译(上)

README 

绝大部分是自己翻译自己手打的,少部分参考有道翻译,主要是想仔细再读一遍,顺便就打出来了。这篇论文内容比较多,有代码,原作者有github和知乎账号,感兴趣可以找一下。欢迎讨论和批评指正。

用于异常检测的深度孤立森林

摘要

孤立森林(iForest)由于其在不同基准数据集上的广泛有效性和强大的可扩展性正在兴起为近年来最热门的异常检测器。然而,其平行于轴的线性划分方法通常导致(i)难以检测在高维/不可线性分离数据中的难以检测的异常,(ii)臭名昭著的算法偏差,将出乎意料的低异常分数分配给假象区域(artefact regions)。这些问题导致了高的假阴性错误。已有一些孤立森林的扩展,但它们仍然实施浅显的、线性的数据划分,限制了它们分离真实异常的能力。因此,本文提出深度孤立森林。本文引入一个新的表示方法,使用随机初始化的神经网络来将原始数据映射到随机表示集成中,随后使用随机的基于轴平行的切割来实现数据划分。这种表示方法提高了在原始数据空间中划分的高的自由度(相当于在不同大小的子空间中进行非线性划分),促进了随机表示和基于划分的随机分离之间的协同作用。进一步的实验表明本文的模型与现有最新的基于分离的方法以及深度检测器相比,在表格、图和时序数据上有明显的提升;本文模型也继承了孤立森林的期望的可扩展性。

关键词 异常检测 孤立森林 深度表示 集成学习

引言

异常检测在各种各样的领域有着广泛的应用,例如保险欺诈检测和经济犯罪、数据中心或航天器等复杂系统的监测、以及网络空间中攻击和潜在危险的识别。鉴于这些重要的应用,该任务在数十年来已经成为一个热门的研究话题,出现了大量的异常检测方法[1]、[2]。

近年来,孤立森林(iForest)[3] 由于其在不同基准数据集上的广泛有效性和强大的可扩展性正在兴起为最热门的异常检测器。与许多现有方法例如基于距离、密度的方法相比,孤立森林更好地捕捉了异常点的关键本质,即“少且不同”。它不引入额外的数据特征的假设,因此在不同数据集上表现出一致地高性能。而且,孤立森林有着线性时间复杂度,这通常是一个在有大规模数据和严格时间效率需求的工业应用中非常吸引人的优点。具体地,孤立森林使用一个孤立树(iTee)的集成,孤立树在这个集成中迭代地分支。叶子结点通过使用在随机选择的特征上进行随机切割来构造直到数据对象被孤立。数据的异常程度通过在这些孤立树中从根结点到孤立的叶节点的遍历平均路径长度来估计。

然而,一个明显的问题是它不能处理困难异常(例如,只能通过观察多个特征的组合,在高阶子空间中进行隔离的异常)因为它对所有的异常都是分别处理的且在每次分离操作中只考虑一个特征。图1用一个简单的例子说明了这个问题。异常点(用红色三角形表示)被一个环形的正常样本集围绕,这不能被x轴或y轴切片隔离切割。尽管这些异常点可能通过多次的切割最终被分离,这导致了在孤立树中和正常点相比难以区分的隔离深度。这些异常的失败检测会导致高的假阴性错误。鉴于异常通常包换和潜在意外或故障的关键信息,这些假阴性可能会导致严重的后果。因此,这些问题成为了妨碍孤立森林的性能的一个主要瓶颈,特别是在高维/不可线性划分的数据空间中。

图1. 困难异常挑战的说明。左图是一个合成数据集,红色三角形为异常点,蓝色点为正常样本。后续图像本文方法为构造的空间(即随机表示)。现有方法中使用的线性数据划分(不论是以竖直/水平或斜的方式)不能有效地隔离在原始数据空间中隔离这些困难

<think>好的,我现在要比较椭圆包络和孤立森林在异常检测中的差异。首先,我需要先分别理解这两种方法的工作原理,然后找出它们的区别。 椭圆包络(Elliptic Envelope)这名字听起来像是基于统计分布的方法。可能假设数据符合某种分布,比如高斯分布,然后通过拟合一个椭圆形状的边界来区分异常值。具体来说,可能计算数据的均值和协方差矩阵,然后根据马氏距离来判断样本是否为异常。因为马氏距离考虑了数据各维度的方差和协方差,可以形成一个椭圆形的边界,正常数据点位于椭圆内,而异常点则在外面。这种方法适用于数据大致呈高斯分布的情况,如果数据分布不是高斯的,效果可能不好。另外,椭圆包络可能对异常值比较敏感,因为协方差矩阵容易被异常值影响,所以可能需要数据相对干净或者预先处理过。 然后是孤立森林Isolation Forest)。我记得孤立森林是一种基于树结构的算法,它通过随机选择特征和分裂值来隔离数据点。异常点因为与正常点差异大,容易被少数几次分割就隔离出来,而正常点需要更多的分割步骤。这样,计算每个样本被隔离所需的路径长度,路径越短的越可能是异常。这种方法不依赖于数据分布,适用于非结构化的数据,处理高维数据可能效果不错。而且,孤立森林在训练时不需要标记数据,属于无监督学习,适合处理大量数据的情况。 两者的主要区别可能在于假设前提、算法原理、适用场景、鲁棒性等方面。椭圆包络需要数据符合高斯分布,而孤立森林没有这个限制。椭圆包络可能对异常值敏感,而孤立森林在处理高维和非线性数据时更有效。此外,椭圆包络可能更适用于小数据集,而孤立森林适合大数据集,因为它的树结构可以并行化处理。 再想想用户给的引用内容。引用[1]提到孤立森林基于异常点更容易被隔离,路径更短。引用[2]提到阈值设置的方法,可能两种方法都需要调整阈值参数,但椭圆包络可能基于概率或马氏距离的阈值,而孤立森林使用路径长度或异常分数。引用[3]中的代码示例显示模型训练和预测的方式,可能两种方法在实现上也有差异,比如椭圆包络需要估计协方差,而孤立森林构建多棵隔离树。 可能还需要比较它们对高维数据、数据分布的假设、计算效率、参数调整等方面的不同。例如,椭圆包络在数据维度较高时,协方差矩阵估计可能不准确,导致效果下降,而孤立森林因为随机选择特征,可能对高维数据更鲁棒。另外,椭圆包络可能受异常值影响大,因为协方差和均值容易被污染,而孤立森林在构建树时随机分割,可能对异常值的干扰不那么敏感。 总结一下,两者的核心区别在于:椭圆包络基于统计分布假设,使用马氏距离;孤立森林基于隔离难易程度,使用路径长度。适用场景上,椭圆包络适合符合高斯分布的数据,孤立森林适合复杂分布或高维数据。此外,鲁棒性、参数设置、计算效率等也是需要考虑的因素。</think>### 椭圆包络与孤立森林的异常检测差异分析 #### 一、工作原理对比 1. **椭圆包络 (Elliptic Envelope)** - 基于统计学方法,假设数据服从**多元高斯分布**。 - 通过计算数据的均值 $\mu$ 和协方差矩阵 $\Sigma$,构建一个包围正常数据的椭圆边界。 - 使用**马氏距离**(Mahalanobis Distance)衡量样本偏离程度: $$d(x) = \sqrt{(x - \mu)^T \Sigma^{-1}(x - \mu)}$$ 若距离超过阈值,则判定为异常[^1]。 2. **孤立森林 (Isolation Forest)** - 基于**隔离难易程度**,无需假设数据分布。 - 通过随机选择特征和分裂值构建多棵二叉树,异常值因与正常值差异大,会被快速隔离(路径短)。 - 异常分数由路径长度决定:路径越短,异常概率越高。 --- #### 二、核心区别 | **维度** | **椭圆包络** | **孤立森林** | |----------------|---------------------------------------|---------------------------------------| | **数据假设** | 需满足高斯分布 | 无分布假设,适用于任意结构数据 | | **计算复杂度** | 协方差矩阵计算复杂度高($O(d^2)$,$d$为维度) | 基于树结构,复杂度低($O(n \log n)$) | | **异常敏感性** | 对协方差估计敏感,易受异常污染 | 随机分割降低异常干扰,鲁棒性更强 | | **适用场景** | 低维、近似高斯分布的数据 | 高维、非结构化或非线性数据 | | **参数调优** | 依赖马氏距离阈值 | 依赖树数量、采样大小等参数[^2] | --- #### 三、示例说明 - **椭圆包络适用场景**:检测传感器采集的温度数据(低维、近似正态分布)。 ```python from sklearn.covariance import EllipticEnvelope model = EllipticEnvelope(contamination=0.05) model.fit(X_train) # 估计均值和协方差 anomalies = model.predict(X_test) # 输出-1表示异常 ``` - **孤立森林适用场景**:识别电商平台中的欺诈交易(高维、复杂分布)。 ```python from sklearn.ensemble import IsolationForest model = IsolationForest(n_estimators=100, contamination=0.01) model.fit(X_train) # 构建多棵隔离树 scores = model.decision_function(X_test) # 异常分数(值越小越异常) ``` --- #### 四、选择建议 - 若数据维度低且分布明确,优先选择**椭圆包络**(计算高效,解释性强)。 - 若数据复杂、维度高或存在大量噪声,选择**孤立森林**(鲁棒性更好,无需分布假设)。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值