异常值检测

使用隔离森林检测数值数据中的异常值. 使用隔离森林算法识别异常值。异常分数较高的数据点将根据污染率阈值被标记为潜在异常。. 孤立森林(Isolation Forest)是一种用于异常检测的无监督机器学习算法,其基本原理是:离群点“数量少且与众不同”,因此比正常点更容易被孤立。与基于距离的方法不同,它不计算距离或密度,因…

使用隔离森林算法识别异常值。异常分数较高的数据点将根据污染率阈值被标记为潜在异常。

什么是孤立森林异常检测?

孤立森林(Isolation Forest)是一种用于异常检测的无监督机器学习算法,其基本原理是:离群点“数量少且与众不同”,因此比正常点更容易被孤立。与基于距离的方法不同,它不计算距离或密度,因此在大规模数据集上效率极高。

该算法构建由随机孤立树组成的集成模型。每棵树通过随机选取一个特征和一个切分值来递归划分数据。异常点稀少且特征突出,只需较少次划分即可被孤立(从根节点到叶节点的路径长度更短);正常点则聚集在一起,需要更多次划分。

异常分数由所有树上的平均路径长度推导得到,并按该数据规模下的期望路径长度做归一化。分数接近 1 表示异常点,接近 0.5 表示正常点。污染率(contamination)参数设定预期的异常比例,从而决定用于分类的分数阈值。

Formula: Anomaly Score s(x, n) = 2^(-E(h(x)) / c(n)) c(n) = 2H(n-1) - 2(n-1)/n where h(x) = path length, c(n) = average path length in BST, H(i) = harmonic number ≈ ln(i) + 0.5772

计算示例

100 个数据点,contamination = 0.05(预期约 5 个离群点),共构建 100 棵孤立树。点 A 的平均路径长度为 3.2(很快被孤立 → 异常分数 0.82 → 标记为异常)。点 B 的平均路径长度为 8.7(难以孤立 → 异常分数 0.45 → 正常)。共有 4 个点超过阈值,被标记为异常。

何时使用此计算器

常见错误

如何解读结果

相关标准与参考文献

常见问题

如何设定污染率(contamination)参数?

污染率是数据中预期的异常比例。如果已知历史异常率(例如 2% 的不良率),可直接采用该值。若未知,可从 0.05-0.10 开始,再结合领域经验调整。设得过低会漏掉真正的异常;设得过高则会把正常点误判为异常。对被标记点做可视化检查有助于校准该参数。

什么时候该用孤立森林,什么时候该用其他离群点检测方法?

孤立森林在高维数据、大规模数据集,以及离群点在全局上明显不同的场景中表现出色。当局部密度更重要时(即相对于自身邻域而言的离群点),应使用 LOF。对于简单的单变量数据,可使用统计方法(Z 分数、IQR)。若同时还需要聚类,则使用 DBSCAN。孤立森林 O(n log n) 的复杂度使其成为可扩展性最好的选择。