Tutorial PyOD: Deteksi Anomali dan Outlier dengan Python

# 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 s...

By Ruby Abdullah · · tutorial
PyODAnomaly DetectionOutlier DetectionMachine LearningFraud DetectionPython

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 saat fit.
  • 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 (default 0.1). Parameter ini dipakai untuk menetapkan threshold.

Artikel Terkait

Tutorial SHAP: Explainable AI dan Interpretasi Model

SHAP - Panduan Praktis Explainable AI dan Interpretabilitas Model Model machine learning makin sering dipakai untuk meng...

Tutorial spaCy: NLP Berskala Industri dengan Python

spaCy: NLP Kelas Industri di Python spaCy adalah pustaka open-source untuk pemrosesan bahasa alami (NLP) yang dirancang ...

DSPy: Framework untuk Optimasi LLM Secara Programatik

DSPy: Framework untuk Optimasi LLM Secara Programatik Prompt engineering secara manual adalah proses yang melelahkan dan...

Tutorial Optuna: Optimasi Hyperparameter Otomatis

Tutorial Lengkap Optuna: Optimasi Hyperparameter Otomatis Daftar Isi Pendahuluan Prasyarat Instalasi dan Setup [Konsep D...