Ch04 机器学习

Isolation Forest (孤立森林/隔离森林)

概述

Isolation Forest (iForest, 孤立森林/隔离森林) 是一种基于集成学习的无监督异常检测算法,由 Liu, Ting, 和 Zhou 于 2008 年提出。其核心思想极其简洁:异常点 (Anomaly) 是”少而不同”的,因此更容易被随机分割隔离。

Isolation Forest exploits the fact that anomalies are “few and different” — they are easier to isolate from the rest of the data through random partitioning. This is fundamentally different from traditional anomaly detection methods that try to model the normal distribution.

核心直觉

想象在一个平面上,正常点密集地聚集在一起,而异常点孤零零地远离群体。如果随机画一条线来分割这个平面:

  • 异常点:只需很少的几次分割就会被”隔离”到一个独立区域
  • 正常点:需要很多次分割才能被隔离,因为它们周围有大量邻居

这就是 Isolation Forest 名称的由来——通过”孤立”一个点所需的分割次数来判断它是否异常。

算法原理

1. 构建隔离树 (iTree)

对给定数据集,递归地执行以下步骤:

  1. 随机选择一个特征
  2. 在该特征的最小值和最大值之间随机选择一个分割值
  3. 将数据分为左右两部分
  4. 递归地对每个子集重复,直到:
    • 节点中只剩一个样本 (被隔离)
    • 所有样本在该特征上取值相同
    • 达到树的最大深度限制

2. 异常分数 (Anomaly Score)

对于一个样本 x,其异常分数定义为:

s(x, n) = 2^(-E[h(x)] / c(n))

其中:

  • h(x): 样本 x 在所有 iTree 中的平均路径长度 (从根节点到被隔离的叶子节点)
  • c(n): 给定 n 个样本时,二叉搜索树的平均路径长度 (归一化因子)
  • E[h(x)]: 期望路径长度

分数解读:

  • s ≈ 1 → 很可能是异常 (路径很短)
  • s ≈ 0.5 → 无明显异常 (路径接近平均)
  • s ≈ 0 → 很可能是正常 (路径很长)

3. 关键特性

  • 无需定义”正常”分布:不依赖距离或密度度量
  • 线性时间复杂度:O(n) 训练,O(log n) 推理
  • 子采样:通常只需 256 个样本即可构建一棵 iTree,无需使用全部数据
  • 无监督:不需要标注数据

Isolation Forest vs 其他异常检测方法

维度Isolation ForestLOF (局部异常因子)One-Class SVMAutoEncoder
核心思想随机分割→隔离局部密度比较寻找超球面边界重构误差
监督方式无监督无监督半监督无监督/半监督
时间复杂度O(n)O(n^2)O(n^2) ~ O(n^3)训练 O(n·epochs)
高维数据良好差 (维度灾难)差良好
可解释性中等 (路径长度)低低低
参数调优少中等多多
类别特征不直接支持不直接支持不直接支持支持 (Embedding)
2026年应用广泛中等较少广泛

参数说明

主要参数

  • n_estimators (默认 100): iTree 的数量,越多越稳定
  • max_samples (默认 256): 每棵 iTree 的采样大小,通常 256 就足够
  • contamination (默认 ‘auto’): 数据集中异常点的比例估计,用于确定阈值
  • max_features (默认 1.0): 每次分裂时使用的特征比例

调参建议

  • 大多数情况下,默认参数即可获得良好效果
  • n_estimators 增加到 200-500 可以提高稳定性
  • max_samples 通常不需要超过 512
  • 如果特征数量很大,可以适当降低 max_features

优缺点

优点

  • 训练速度快,线性时间复杂度,适合大规模数据
  • 子采样机制使其内存效率极高
  • 不需要计算距离或密度,天然适合高维数据
  • 对数据的分布没有假设,适应性广
  • 可解释性相对较好 (通过路径长度)
  • 参数少,调参简单
  • 可以处理含有缺失值的数据

缺点

  • 对类别特征不直接支持,需要编码转换
  • 在特征数量极多 (数千+) 时,随机分割的效率下降
  • 对局部异常 (Local Anomaly) 的检测能力弱于 LOF
  • 对”集合异常” (Collective Anomaly) 不敏感
  • 不适用于流式数据 (通常需要批量训练)

2026 年应用场景

  • 网络安全: 检测网络入侵、DDoS 攻击、异常流量
  • 金融风控: 信用卡欺诈检测、异常交易识别
  • 工业 IoT: 设备故障预测、传感器异常检测
  • 数据清洗: 在训练机器学习模型前识别并移除异常样本
  • 日志分析: 从海量系统日志中自动发现异常模式

相关笔记

来源

关联8

知识图谱

局部图谱 · 点节点跳转