iForest (Isolation Forest)是由Liu et al. [1] 提出来的基于二叉树的ensemble异常检测算法,具有效果好、训练快(线性复杂度)等特点。
1. 前言
iForest为聚类算法,不需要标记数据训练。首先给出几个定义:
- 划分(partition)指样本空间一分为二,相当于决策树中节点分裂;
- isolation指将某个样本点与其他样本点区分开。
iForest的基本思想非常简单:完成异常点的isolation所需的划分数大于正常样本点(非异常)。如下图所示:

\(x_i\)样本点的isolation需要大概12次划分,而异常点\(x_0\)指需要4次左右。因此,我们可以根据划分次数来区分是否为异常点。但是,如何建模呢?我们容易想到:划分对应于决策树中节点分裂,那么划分次数即为从决策树的根节点到叶子节点所经历的边数,称之为路径长度(path length)。假设样本集合共有\(n\)个样本点,对于二叉查找树(Binary Search Tree, BST),则查找失败的平均路径长度为
\[c(n) = 2H(n-1) -(2(n-1)/n) \]
其中,\(H(i)\)为harmonic number,可估计为\(\ln (i) + 0.577215
Isolation Forest是一种由Liu等人提出的用于异常检测的算法,基于二叉树的集成方法,以其高效和准确著称。算法的核心思想是异常点的隔离路径比正常点更短,通过计算样本的路径长度来评估异常得分。在训练过程中,通过随机属性选择和子采样防止错检和漏检。sklearn库提供了iForest与其他异常检测算法的对比。
订阅专栏 解锁全文
1324

被折叠的 条评论
为什么被折叠?



