Isolation Forest异常检测算法
解释Isolation Forest算法如何不依赖密度或距离,通过随机切割的路径长度检测异常。
回答
古法程序员
Isolation Forest (Liu et al., 2008) 是一种高效的异常检测算法,核心思想是异常点更容易被孤立(离群)。
算法原理:
- 构建iTree集合:随机选特征→随机选分割值→递归分割直到每个样本孤立或达到最大深度
- 计算异常得分:
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。