Capaian Pembelajaran
Setelah minggu ini kamu bisa:
- Menjelaskan jenis anomali (titik, kontekstual, kolektif/relasional) dan masalah cold-start pada predictive maintenance.
- Menjelaskan mekanisme Isolation Forest, menghitung
c(n)dan skor anomalis(x, n). - Membangun Autoencoder dan memakai reconstruction error (MSE) sebagai skor anomali.
- Menentukan ambang (threshold) tanpa label memakai persentil data normal.
- 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
- Ambil subsampel ψ data (default 256).
- 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).
- Ulangi untuk banyak pohon (mis. 100–200).
- 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
- Standarisasi fitur (z-score) memakai statistik data latih.
- Latih autoencoder (mis. 5 → 8 → 3 → 8 → 5, aktivasi ReLU) pada data normal.
- Skor anomali = MSE rekonstruksi per baris.
- 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
- Kerjakan
lab.ipynbsampai selesai (bagian PyTorch butuhtorch). - Kerjakan kuis (di web, atau baca
quiz.json). - Isi
exercise.py, lalu cek:python check.py 16