Isolation Forest

Basic

Isolation Forest | Mengisolasi Outlier dengan Pemisahan Acak

Dibuat: Pembaruan terakhir: Waktu baca: 2 menit

Isolation Forest membangun banyak pohon acak dan memberi skor anomali berdasarkan seberapa cepat sebuah sampel bisa diisolasi. Metode ini tetap cepat bahkan untuk data berdimensi tinggi.


1. Cara kerja #

  • Mengambil sub-sampel data secara acak.
  • Membangun Isolation Tree dengan fitur dan ambang yang dipilih acak.
  • Sampel dengan panjang jalur rata-rata yang lebih pendek lebih mudah terisolasi, sehingga lebih mungkin menjadi anomali.

Skor anomali dinormalisasi menggunakan panjang jalur harapan pohon biner acak, \(c(n)\).


2. Contoh Python #

import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
from sklearn.ensemble import IsolationForest

rng = np.random.default_rng(0)
X_inliers = 0.3 * rng.normal(size=(200, 2))
X_anom = rng.uniform(low=-4, high=4, size=(20, 2))
X = np.vstack([X_inliers, X_anom])

model = IsolationForest(n_estimators=200, contamination=0.1, random_state=0)
model.fit(X)
scores = -model.score_samples(X)
labels = model.predict(X)  # -1 = anomali

plt.figure(figsize=(6, 5))
plt.scatter(X[:, 0], X[:, 1], c=scores, cmap="magma", s=30)
plt.colorbar(label="anomaly score")
plt.title("Skor Isolation Forest")
plt.tight_layout()
plt.show()

print("Anomali terdeteksi:", np.sum(labels == -1))

Plot contoh Python


3. Hiperparameter #

  • n_estimators: Jumlah pohon. Lebih banyak biasanya lebih stabil.
  • max_samples: Sampel per pohon. Default min(256, n_samples).
  • contamination: Perkiraan proporsi anomali; dipakai sebagai ambang.
  • max_features: Jumlah fitur yang dipakai pada setiap split.

4. Kelebihan dan kekurangan #

KelebihanKekurangan
Relatif cepat pada dimensi tinggiHasil bisa berubah karena seed acak
Tidak wajib scaling (meski disarankan)Anomali lokal kecil bisa terlewat
Training dan inferensi sederhanacontamination kadang sulit ditentukan

5. Ringkasan #

  • Isolation Forest adalah metode berbasis pohon yang memakai jalur isolasi yang pendek sebagai sinyal anomali.
  • Mudah digunakan di scikit-learn, terutama mengatur jumlah pohon dan jumlah sampel.
  • Cocok untuk menyaring kandidat anomali secara cepat pada log atau data sensor.