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 Forest | LOF |
|---|---|---|
| 考え方 | 孤立しやすさ | 局所密度 |
| 速度 | 速い(O(nlogn)) | 遅い(O(n²)) |
| 大規模データ | 得意 | 苦手 |
| 次元数 | 高次元でも動作 | 高次元で精度低下 |
| 解釈性 | 難しい | 難しい |
歴史と背景
- 2008年:Liu らが ICDM 2008 で発表
- 2012年:改良版 Extended Isolation Forest が後に登場
- 現在:scikit-learnに標準実装されており、異常検知のベースラインとして広く使用