Isolation Forest

May 14, 2016


1. Isolation Tree

用T表示Isolation Tree的一个节点,如果T是非叶节点,则一定有两个子节点,且记录了一个特征和一个值,特征的值小于p的数据点划分到,否则划分到

用h(x)表示数据点x落到的叶节点距离根节点的距离 设定有n个数据点,数据点是d维 使用c(n)表示h(x)的均值

\begin{align} c(n)=2H(n-1)-\frac{2(n-1)}{n} \end{align}

是谐波数 \begin{align} H(i)\approx \ln(i)+0.5772156649 \end{align}

Anomaly分数定义为

\begin{align} s(x,n)=2^{-\frac{E(h(x))}{c(n)}} \end{align}

是多个iTree的的均值

因此

  • 如果数据点的接近1,判定为异常点
  • 如果数据点的小于0.5,可以认为是非常正常的数据点
  • 如果所有数据点的都在0.5附近,那么不存在任何异常点

2. Characteristic of Isolation Trees

异常点密集处导致偏大,iForest难于检测 因此需要采样降低异常点的密度,相比于全量构造,更快且效果更好。

3. Anomaly Detection using iForest

3.1 Training

  • Input: 输入数据,森林大小,采样大小
  • Output: 森林
  • 步骤:
    • 初始化
    • 设定树高限制
    • 迭代t次
      • 取样生成子集
      • 生成新的iTree

限制树高,是因为我们只关心小于平均高度的节点。 根据经验值,

3.2 Evaluating Stage

为实际长度 由于限制了树高,实际计算时 \begin{align} h(x)=e+c(\varphi) \end{align}