古典的機械学習

Isolation Forest あいそれーしょんふぉれすと

Isolation Forest異常検知孤立化ランダム分割アンサンブル
Isolation Forestについて教えて

簡単に言うとこんな感じ!

「異常なデータは少ない分割操作で孤立させられる」という発想の異常検知アルゴリズムだよ。ランダムに分割していくとき、異常値は少ない手数で他から切り離されるという直感的な考え方。大規模データでも高速に動く実用的な手法なんだ!


Isolation Forestとは

Isolation Forest(孤立フォレスト)は、2008年にFei Tony Liuらが提案した異常検知アルゴリズムです。「異常なデータは正常なデータよりも少ない分割操作で孤立する」という特性を利用します。


仕組みの直感的理解

ランダムに特徴量を選び、ランダムな値で分割を繰り返す

正常データ(密な領域にある):
  多くの分割を経てやっと孤立
  → 深いところに存在(パス長が長い)

異常データ(密な領域から外れている):
  少ない分割ですぐ孤立
  → 浅いところに存在(パス長が短い)

→ パス長の平均が短い点 = 異常スコアが高い

実装例

from sklearn.ensemble import IsolationForest

model = IsolationForest(
    n_estimators=100,      # ツリーの本数
    contamination=0.05,    # 異常率の想定(5%)
    random_state=42
)
model.fit(X_train)

# 予測:1 = 正常, -1 = 異常
predictions = model.predict(X_test)

# 異常スコア(小さいほど異常)
scores = model.score_samples(X_test)

LOFとの比較

比較項目Isolation ForestLOF
考え方孤立しやすさ局所密度
速度速い(O(nlogn))遅い(O(n²))
大規模データ得意苦手
次元数高次元でも動作高次元で精度低下
解釈性難しい難しい

歴史と背景

  • 2008年:Liu らが ICDM 2008 で発表
  • 2012年:改良版 Extended Isolation Forest が後に登場
  • 現在:scikit-learnに標準実装されており、異常検知のベースラインとして広く使用

関連用語