Lompat ke konten
nalar

Deteksi Anomali Tingkat Lanjut (Isolation Forest & Autoencoder)

Deteksi anomali tanpa label untuk predictive maintenance — Isolation Forest, Autoencoder dengan reconstruction error, penentuan ambang, dan arsitektur hybrid laten + Isolation Forest.

Capaian Pembelajaran

Setelah minggu ini kamu bisa:

  1. Menjelaskan jenis anomali (titik, kontekstual, kolektif/relasional) dan masalah cold-start pada predictive maintenance.
  2. Menjelaskan mekanisme Isolation Forest, menghitung c(n) dan skor anomali s(x, n).
  3. Membangun Autoencoder dan memakai reconstruction error (MSE) sebagai skor anomali.
  4. Menentukan ambang (threshold) tanpa label memakai persentil data normal.
  5. Menggabungkan representasi laten Autoencoder dengan Isolation Forest (hybrid) dan mengevaluasinya dengan precision/recall.

1. Anomali & Predictive Maintenance

Anomali (outlier) = observasi yang menyimpang jauh dari pola mayoritas sehingga patut dicurigai dibangkitkan oleh mekanisme berbeda.

Jenis Penjelasan Contoh sensor mesin
Titik (point) Satu nilai ekstrem Suhu tiba-tiba 90°C (normal ±70°C)
Kontekstual Normal di konteks lain, aneh di konteks ini 1500 rpm wajar saat produksi, aneh saat mesin idle
Kolektif / relasional Tiap nilai wajar, tetapi kombinasinya tidak rpm normal, tekanan naik, arus turun — hubungan fisik antar sensor rusak

Predictive Maintenance (PdM)

Strategi Kapan perawatan Kelemahan
Reaktif Setelah rusak Downtime mahal, risiko keselamatan
Preventif Terjadwal (mis. tiap 3 bulan) Ganti suku cadang yang masih bagus
Prediktif Saat data menunjukkan gejala awal kerusakan Butuh model deteksi

Masalah cold-start

Klasifikasi biasa (Minggu 6–8) butuh contoh kerusakan berlabel. Di pabrik baru atau mesin baru, data kerusakan belum ada (dan kita tidak mau menunggu mesin rusak!). Solusinya: unsupervised / semi-supervised anomaly detection — pelajari seperti apa "normal" dari data operasi harian, lalu tandai yang menyimpang.


2. Isolation Forest

Ide (Liu, Ting & Zhou, 2008): anomali itu sedikit dan berbeda, sehingga lebih mudah diisolasi.

2.1 Cara kerja

  1. Ambil subsampel ψ data (default 256).
  2. Bangun isolation tree: pilih fitur acak, pilih nilai potong acak di antara min–max fitur itu, bagi data dua. Ulangi rekursif sampai setiap titik terisolasi (atau kedalaman maksimum).
  3. Ulangi untuk banyak pohon (mis. 100–200).
  4. Panjang jalur h(x) = jumlah potongan yang diperlukan untuk mengisolasi x. Anomali → jalur pendek.
          [semua data]
          /          \
    suhu < 84      suhu ≥ 84
    /      \           \
  ...      ...       (titik overheat terisolasi di kedalaman 1!)

2.2 Normalisasi: c(n)

Panjang jalur rata-rata pencarian gagal pada Binary Search Tree dengan n data:

c(n) = 2·H(n−1) − 2(n−1)/n,      H(i) ≈ ln(i) + 0.5772156649 (konstanta Euler)
c(2) = 1,  c(n ≤ 1) = 0

Contoh: n = 256 → H(255) = ln 255 + 0.5772 = 5.5413 + 0.5772 = 6.1185 c(256) = 2·6.1185 − 2·255/256 = 12.2371 − 1.9922 = 10.245

2.3 Skor anomali

s(x, n) = 2^( −E[h(x)] / c(n) )
E[h(x)] s Interpretasi
→ 0 → 1 Sangat anomali
= c(n) 0.5 Tidak ada anomali jelas
→ n−1 → 0 Sangat normal

Contoh: n = 256, E[h(x)] = 3 → s = 2^(−3/10.245) = 2^(−0.2928) = 0.816 → kandidat kuat anomali.

Di scikit-learn: IsolationForest.score_samples(X) mengembalikan −s (negatif skor), sehingga kita pakai -model.score_samples(X) agar "makin besar makin anomali".

2.4 Kelebihan & keterbatasan

  • ✔ Cepat (O(n log n)), tidak butuh jarak, cocok untuk data besar dan dimensi tinggi.
  • ✔ Tidak butuh label.
  • ✘ Potongan sejajar sumbu (axis-parallel) → kurang peka pada anomali relasional (kombinasi fitur yang tidak wajar tetapi tiap fitur masih dalam rentang normal). Inilah motivasi autoencoder & hybrid.

3. Autoencoder

Autoencoder = jaringan saraf yang dilatih menyalin input ke output melalui bottleneck (lapisan sempit).

input (5)  →  encoder  →  laten z (3)  →  decoder  →  rekonstruksi (5)
 x                          ▲                           x̂
                    representasi terkompresi
  • Encoder memaksa jaringan mempelajari struktur/korelasi data normal (mis. tekanan ≈ 5 + 0.0005·rpm).
  • Dilatih hanya pada data normal, minimalkan MSE = (1/d) Σ (x_j − x̂_j)².
  • Pada data anomali, hubungan antar fitur rusak → rekonstruksi buruk → reconstruction error besar.

Langkah praktis

  1. Standarisasi fitur (z-score) memakai statistik data latih.
  2. Latih autoencoder (mis. 5 → 8 → 3 → 8 → 5, aktivasi ReLU) pada data normal.
  3. Skor anomali = MSE rekonstruksi per baris.
  4. Ambang = persentil tinggi (mis. 99) dari error pada data latih.

Di lab kita membangun versi PyTorch; di latihan dipakai MLPRegressor scikit-learn (fit X → X) agar ringan.


4. Menentukan Ambang Tanpa Label

Tanpa data kerusakan kita tidak bisa tuning ambang dengan F1. Pendekatan umum:

Metode Rumus Catatan
Persentil ambang = persentil-q skor data normal (q = 95/99/99.9) ≈ (100−q)% alarm palsu pada data normal
Statistik μ + k·σ dari skor normal (k = 3) Asumsi skor ~normal
Kontaminasi contamination=0.01 di sklearn Butuh perkiraan proporsi anomali

Trade-off bisnis: ambang rendah → banyak alarm palsu (teknisi lelah, alarm fatigue); ambang tinggi → kerusakan terlewat (downtime mahal). Biaya false negative di PdM biasanya jauh lebih mahal → recall sering diutamakan.

Bila nanti ada beberapa label kerusakan, evaluasi dengan precision, recall, F1 (Minggu 8):

precision = TP / (TP + FP)      recall = TP / (TP + FN)      F1 = 2PR / (P + R)

5. Arsitektur Hybrid: Laten Autoencoder + Isolation Forest

Untuk data berdimensi tinggi (puluhan–ratusan sensor), Isolation Forest kehilangan daya karena banyak fitur tidak relevan. Gagasan hybrid:

X (dimensi tinggi) ──► Encoder ──► z (laten, padat)  ─┐
                  └──► Autoencoder ──► error MSE  ────┴──► [z, MSE] ──► Isolation Forest ──► skor
  • z merangkum struktur normal dalam ruang kecil → potongan acak IF lebih bermakna.
  • MSE menambah sinyal "hubungan antar fitur rusak".
  • IF menangkap titik yang terisolasi di ruang gabungan tersebut.

Hasil di lab (data sensor_mesin, ambang persentil 99):

Model Precision Recall Catatan
Isolation Forest (fitur mentah) ≈ 0.58 ≈ 0.45 Melewatkan anomali relasional
Autoencoder (MSE) ≈ 0.9 1.0 Menangkap hubungan antar sensor
Hybrid laten + MSE → IF ≈ 0.87 1.0 Robust, cocok dimensi tinggi

(Angka bisa sedikit berbeda tergantung versi library.)

Aplikasi lain: deteksi intrusi jaringan siber, fraud kartu kredit, deteksi cacat produk di lini produksi.


Ringkasan

  • Cold-start PdM: belum ada label kerusakan → latih pada data normal saja.
  • Isolation Forest: anomali terisolasi dengan jalur pendek; s = 2^(−E[h]/c(n)).
  • Autoencoder: reconstruction error besar = anomali, sangat baik untuk anomali relasional.
  • Ambang tanpa label: persentil skor data normal.
  • Hybrid: laten + error → Isolation Forest untuk data berdimensi tinggi.

Bacaan

  • Liu, Ting & Zhou (2008) — Isolation Forest, ICDM.
  • Chandola, Banerjee & Kumar (2009) — Anomaly Detection: A Survey, ACM Computing Surveys.
  • Goodfellow, Bengio & Courville — Deep Learning, Bab 14 (Autoencoders).
  • Dokumentasi scikit-learn: Novelty and Outlier Detection.

Tugas Minggu Ini

  1. Kerjakan lab.ipynb sampai selesai (bagian PyTorch butuh torch).
  2. Kerjakan kuis (di web, atau baca quiz.json).
  3. Isi exercise.py, lalu cek: python check.py 16

Sudah paham materinya?

Tandai selesai, lalu uji pemahamanmu.

Kerjakan kuis