异常值检测
使用隔离森林检测数值数据中的异常值. 使用隔离森林算法识别异常值。异常分数较高的数据点将根据污染率阈值被标记为潜在异常。. 孤立森林(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 个点超过阈值,被标记为异常。
何时使用此计算器
- 进货检验数据审查中标记可能表示供应商质量问题或测量错误的异常测量值时
- 统计分析前清理数据集时 — 未检测到的异常值可能严重扭曲均值、标准偏差和能力指数
- 大批量制造SPC中检测标准控制图在多变量数据中可能遗漏的异常生产模式时
- 分析设备监控传感器或IoT数据以识别机器退化或工艺漂移的早期迹象时
- 质量审核中查找可能表示记录错误、测试设备故障或工艺异常的数据异常时
常见错误
- 不调查就自动删除所有标记的异常值 — 异常值可能代表需要纠正措施的真实重要工艺事件,而不仅是数据清理
- 将污染度设得太高,将正常变异标记为异常 — 保守开始(0.01-0.05),仅在领域专业知识表明更高异常率时增加
- 对非常小的数据集(少于50点)使用Isolation Forest — 算法需要足够数据来构建有意义的隔离树;小样本使用更简单的方法(Z分数、IQR)
- 忽略异常分数分布 — 不要仅依赖二元分类,而应检查分数分布以理解检测到的异常的严重程度梯度
如何解读结果
- 异常分数接近1.0 — 该点被强烈隔离,很可能是真正的异常;立即调查
- 异常分数0.6-0.8 — 该点为中度异常;在领域背景下审查以确定是否需要行动
- 异常分数约0.5 — 该点正常;嵌入在主数据分布中
- 异常比例显著高于预期 — 污染参数设得太高,或工艺存在比假设更多的问题
- 在相似特征值处的异常聚集 — 可能代表不同的子群而非随机异常值;调查系统性原因
相关标准与参考文献
- Liu, Ting & Zhou (2008), "Isolation Forest", IEEE ICDM — 定义此处所实现算法与异常分数的原始论文
- ISO 16269-4 — 数据的统计解释:异常值的判定与处理,为异常值处理决策提供框架的国际标准
- ASTM E178 — 处理离群观测值的标准实务,涵盖何时有理由剔除被标记的点
- NIST/SEMATECH e-Handbook §1.3.5.17 — 经典单变量异常值检验(Grubbs),可用于单特征数据的交叉核对
常见问题
如何设定污染率(contamination)参数?
污染率是数据中预期的异常比例。如果已知历史异常率(例如 2% 的不良率),可直接采用该值。若未知,可从 0.05-0.10 开始,再结合领域经验调整。设得过低会漏掉真正的异常;设得过高则会把正常点误判为异常。对被标记点做可视化检查有助于校准该参数。
什么时候该用孤立森林,什么时候该用其他离群点检测方法?
孤立森林在高维数据、大规模数据集,以及离群点在全局上明显不同的场景中表现出色。当局部密度更重要时(即相对于自身邻域而言的离群点),应使用 LOF。对于简单的单变量数据,可使用统计方法(Z 分数、IQR)。若同时还需要聚类,则使用 DBSCAN。孤立森林 O(n log n) 的复杂度使其成为可扩展性最好的选择。