Deteksi Anomali di Python dengan PyOD: Panduan Praktis
Sebagian besar dataset di dunia nyata mengandung sebagian kecil data yang berperilaku berbeda dari mayoritas: pembayaran penipuan, pembacaan sensor yang rusak, percobaan intrusi, atau unit cacat di lini produksi. PyOD adalah pustaka matang bergaya scikit-learn yang mengemas lebih dari 40 algoritma deteksi outlier di balik satu antarmuka yang konsisten, sehingga mudah untuk mencoba beberapa metode dan membandingkannya. Tutorial ini membahas konsep inti, API terpadu, keluarga algoritma utama, dan alur kerja realistis dari awal hingga akhir.
Apa Itu Deteksi Outlier / Anomali?
Deteksi outlier (sering dipakai bergantian dengan deteksi anomali) adalah tugas mengidentifikasi observasi yang menyimpang begitu jauh dari mayoritas sehingga kemungkinan dihasilkan oleh proses yang berbeda. Tidak seperti klasifikasi biasa, biasanya Anda hanya punya sangat sedikit anomali berlabel, atau tidak sama sekali, sehingga sebagian besar pekerjaan bersifat tanpa pengawasan (unsupervised): model mempelajari seperti apa "normal" itu dan memberi skor pada setiap titik berdasarkan seberapa jauh ia dari wilayah normal tersebut.
Beberapa poin kerangka berpikir penting:
- Anomali pada dasarnya jarang. Jika 40% data Anda "anomali," itu kemungkinan bukan masalah anomali melainkan masalah klasifikasi yang tidak seimbang.
- Batas antara normal dan abnormal jarang tegas. Detektor menghasilkan skor kontinu; Andalah yang memilih ambang batas.
- "Anomali" bergantung pada konteks. Transaksi sebesar USD 5.000 normal bagi satu pelanggan tetapi mencurigakan bagi yang lain.
Kasus Penggunaan di Dunia Nyata
- Deteksi penipuan. Transaksi kartu kredit, klaim asuransi, pengambilalihan akun. Pola penipuan berubah seiring waktu, sehingga detektor unsupervised atau semi-supervised melengkapi mesin aturan.
- Deteksi gangguan dan cacat. Sensor getaran, suhu, dan tekanan pada peralatan industri; barang cacat di manufaktur.
- Deteksi intrusi jaringan. Volume lalu lintas yang tidak biasa, perilaku pemindaian port, atau pola koneksi yang berbeda dari baseline yang dipelajari.
- Kontrol kualitas. Pengukuran di luar spesifikasi dalam satu batch produksi, atau pembacaan yang melenceng dari toleransi yang diharapkan.
- Pembersihan data. Menangkap baris yang rusak, kesalahan satuan, dan gangguan sensor sebelum mencemari model di hilir.
Instalasi
PyOD sendiri ringan dan terutama bergantung pada NumPy, SciPy, dan scikit-learn.
pip install pyod
Beberapa detektor memiliki dependensi opsional. Model neural (misalnya AutoEncoder) memerlukan PyTorch, dan beberapa utilitas menggunakan paket tambahan:
# Diperlukan hanya untuk detektor berbasis jaringan saraf
pip install torch
Opsional, dipakai oleh sebagian helper kombinasi/visualisasi
pip install combo matplotlib
Anda dapat memverifikasi instalasi dari shell Python:
import pyod
print(pyod.version)
API Terpadu Bergaya scikit-learn
Setiap detektor di PyOD mengikuti siklus hidup yang sama, dan inilah alasan utama pustaka ini nyaman digunakan. Begitu Anda menguasai satu model, Anda menguasai semuanya.
Bagian-bagian umumnya adalah:
fit(X)— melatih model dari data latih. Deteksi umumnya unsupervised, jadi Anda tidak mengoper label.decisionfunction(X)— mengembalikan skor outlier mentah untuk data baru. Semakin tinggi berarti semakin anomali.predict(X)— mengembalikan label biner (0 = inlier, 1 = outlier).predictproba(X)— mengembalikan probabilitas (terkalibrasi secara longgar) untuk menjadi outlier.decisionscores— skor outlier mentah yang dihitung pada data latih saatfit.labels— label biner yang diberikan ke data latih.threshold— ambang batas skor yang dipakai untuk memisahkan inlier dari outlier.contamination— parameter konstruktor yang memberi tahu model proporsi outlier yang diharapkan (default0.1). Parameter ini dipakai untuk menetapkanthreshold.