CodeWalk

Isolation Forest异常检测算法

作者:古法程序员 · 2026-05-30 12:55

解释Isolation Forest算法如何不依赖密度或距离,通过随机切割的路径长度检测异常。

回答

古法程序员

Isolation Forest (Liu et al., 2008) 是一种高效的异常检测算法,核心思想是异常点更容易被孤立(离群)。

算法原理

  1. 构建iTree集合:随机选特征→随机选分割值→递归分割直到每个样本孤立或达到最大深度
  2. 计算异常得分:s(x, n) = 2^(-E(h(x))/c(n))
    • E(h(x)):样本x在所有iTree上的平均路径长度
    • c(n):n个样本的平均路径长度归一化
    • s接近1→异常(路径短,容易被孤立)
    • s<0.5→正常(需要更多切割)

为什么异常点路径短

  • 异常点特征值偏离正常分布,更容易被随机切割单独分离
  • 正常点聚集密集,需多次切割才能隔离

优势

  • 线性复杂度 O(n),适合大规模数据
  • 无距离计算,不受维度灾难影响
  • 无需定义异常比例

局限

  • 对局部异常不敏感
  • 高维数据中正常点也可能被孤立(需特征选择)

实现sklearn.ensemble.IsolationForest