Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Isolation Forest

概要

Isolation Forest(iForest) は、異常検知に特化したツリーベースのアルゴリズム。

「ランダムにデータを分割していくと、外れ値(outliers)は正常値よりも少ない分割数で孤立(isolate)される」 という性質を利用する。

理論

基本アイデア

Isolation Forestでは、以下の仮定を利用する:

  • 異常点はデータ空間で他の点と離れて存在することが多い。

  • ランダムにデータを分割していくと、異常点は早く孤立される。

このアイデアのもと、以下の手順でスコアを算出する。

iTree(Isolation Tree)の構築

1つのiTreeは以下の手順で構築される

  1. データからランダムにサブサンプルを取る(サイズ:ψ\psi)。

  2. 各ノードにおいて:

    • 特徴量 qq をランダムに選ぶ。

    • その特徴量の値の範囲 [min,max][min, max] からランダムに分割値 pp を選ぶ。

    • x[q]<px[q] < p で左、x[q]≥px[q] \ge p で右の子ノードに分割。

  3. 以下のいずれかで停止:

    • ノードにデータが1点しかない。

    • 木の深さが max_depth=⌈log⁡2(ψ)⌉max\_depth = \lceil \log_2(\psi) \rceil に達した。

平均パス長と異常スコア

平均パス長の期待値

ノード数が nn のランダム二分探索木において、任意の点が孤立されるまでの平均パス長 c(n)c(n) は以下で近似できます:

c(n)=2H(n−1)−2(n−1)nc(n) = 2H(n - 1) - \frac{2(n - 1)}{n}

ここで、調和数 H(i)H(i) は以下で近似されます:

H(i)≈ln⁡(i)+γ(γ≈0.5772)H(i) \approx \ln(i) + \gamma \quad (\gamma \approx 0.5772)

異常スコアの定義

Isolation Forestでは、あるデータ点 xx に対し、以下の異常スコア s(x,n)s(x, n) を用います:

s(x,n)=2−E(h(x))c(n)s(x, n) = 2^{-\frac{E(h(x))}{c(n)}}
  • h(x)h(x):xx がiTree内で孤立するまでの平均パス長(複数の木で平均)。

  • c(n)c(n):上記の正規化定数。

解釈:

  • s≈1s \approx 1:異常点(早く孤立する)

  • s≈0.5s \approx 0.5:通常点(他と似ていて孤立しにくい)

<Figure size 800x600 with 2 Axes>