Deteksi Fraud dengan Machine Learning
Bagaimana model machine learning mendeteksi dan mencegah fraud finansial secara real-time, melindungi bisnis dan pelanggan.
Ancaman Fraud Digital yang Berkembang
Seiring ekspansi ekonomi digital Indonesia, luas permukaan untuk fraud juga ikut meluas. Sektor fintech negara ini memproses miliaran transaksi setiap tahun, dan setiap transaksi tersebut adalah target potensial. Fraud kartu kredit, pengambilalihan akun, fraud identitas sintetis, dan manipulasi pembayaran merugikan bisnis Indonesia ratusan miliar rupiah setiap tahun.
Sistem deteksi fraud tradisional berbasis aturan menangkap pola yang sudah dikenal: transaksi di atas jumlah tertentu, pembelian beruntun dalam waktu singkat, atau transaksi dari lokasi yang di-blacklist. Tetapi pelaku fraud beradaptasi. Mereka mempelajari aturannya dan mengakalinya. Di sinilah machine learning mengubah persamaan.
Sistem deteksi fraud berbasis ML belajar dari data, beradaptasi dengan pola baru, dan menangkap skema fraud canggih yang tidak bisa diantisipasi oleh aturan statis mana pun.
Mengapa Machine Learning Unggul dalam Deteksi Fraud
Deteksi fraud pada dasarnya adalah masalah pengenalan pola dengan beberapa karakteristik yang membuatnya ideal untuk ML:
Dimensionalitas tinggi. Setiap transaksi memiliki puluhan fitur: jumlah, waktu, lokasi, perangkat, kategori merchant, riwayat pengguna, pola jaringan. Model ML memproses semua dimensi ini secara bersamaan, menemukan kombinasi halus yang mengindikasikan fraud.
Pola yang berevolusi. Pelaku fraud terus mengubah taktik. Model ML yang di-retrain pada data terbaru menangkap pola baru secara otomatis, sementara sistem berbasis aturan memerlukan update manual.
Skala masif. Platform pembayaran Indonesia menengah mungkin memproses jutaan transaksi per hari. Model ML mengevaluasi setiap transaksi dalam hitungan milidetik.
Data tidak seimbang. Fraud biasanya merepresentasikan kurang dari 1% transaksi. Algoritma ML yang dirancang khusus untuk klasifikasi tidak seimbang menangani ini secara efektif.
Pendekatan Inti
Supervised Learning
Latih model pada data historis yang sudah dilabeli (transaksi yang ditandai sebagai fraud atau legitimate). Model belajar membedakan antara kedua kelas.
import pandas as pd
import numpy as np
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report, precision_recall_curve
from imblearn.over_sampling import SMOTE
# Muat data transaksi
data = pd.read_csv("transaksi.csv")
# Feature engineering
fitur = [
"jumlah", "jam_hari", "hari_minggu",
"jarak_dari_rumah", "jarak_dari_transaksi_terakhir",
"rasio_terhadap_median_jumlah", "waktu_sejak_transaksi_terakhir",
"jumlah_transaksi_24jam_terakhir", "merchant_unik_7hari_terakhir",
"is_weekend", "is_internasional",
]
X = data[fitur]
y = data["is_fraud"]
# Tangani ketidakseimbangan kelas dengan SMOTE
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, stratify=y, random_state=42
)
smote = SMOTE(random_state=42)
X_train_balanced, y_train_balanced = smote.fit_resample(X_train, y_train)
# Latih gradient boosting classifier
model = GradientBoostingClassifier(
n_estimators=200,
max_depth=5,
learning_rate=0.1,
random_state=42,
)
model.fit(X_train_balanced, y_train_balanced)
# Evaluasi
y_pred = model.predict(X_test)
print(classification_report(y_test, y_pred))
Unsupervised Learning
Deteksi fraud tanpa data berlabel dengan mengidentifikasi transaksi yang menyimpang secara signifikan dari perilaku normal. Berguna ketika data fraud berlabel langka atau ketika Anda ingin menangkap pola fraud yang sepenuhnya baru.
Isolation Forest mengisolasi anomali dengan mempartisi data secara acak. Transaksi fraud, karena langka dan berbeda, diisolasi dalam lebih sedikit partisi.
from sklearn.ensemble import IsolationForest
# Latih model deteksi anomali pada transaksi legitimate
data_legitimate = data[data["is_fraud"] == 0][fitur]
iso_forest = IsolationForest(
contamination=0.01, # Tingkat fraud yang diharapkan
random_state=42,
n_estimators=200,
)
iso_forest.fit(data_legitimate)
# Skor transaksi baru (-1 untuk anomali, 1 untuk normal)
data["skor_anomali"] = iso_forest.predict(data[fitur])
potensi_fraud = data[data["skor_anomali"] == -1]
print(f"Transaksi yang di-flag: {len(potensi_fraud)}")
Deteksi Berbasis Graph
Fraud sering melibatkan jaringan akun yang terhubung. Pendekatan berbasis graph menganalisis hubungan antara akun, perangkat, alamat IP, dan transaksi untuk mengidentifikasi jaringan fraud.
Jika akun A berbagi perangkat dengan akun B, dan akun B berbagi alamat IP dengan akun C, dan akun C adalah akun fraud yang diketahui, maka A dan B layak mendapat pengawasan lebih ketat.
Metode Ensemble
Sistem deteksi fraud production biasanya menggabungkan beberapa model:
- Model supervised yang dilatih pada label fraud historis
- Detektor anomali unsupervised untuk pola fraud baru
- Model berbasis graph untuk analisis jaringan
- Business rules untuk indikator fraud yang diketahui dengan confidence tinggi
Setiap model menghasilkan skor, dan ensemble akhir menggabungkannya menjadi probabilitas fraud keseluruhan.
Feature Engineering untuk Deteksi Fraud
Kualitas fitur Anda lebih penting daripada pilihan algoritma. Fitur deteksi fraud yang efektif terbagi dalam beberapa kategori:
Fitur Transaksi
- Jumlah, kategori merchant, metode pembayaran
- Jam, hari dalam minggu, indikator hari libur
Fitur Perilaku
- Rata-rata jumlah transaksi selama 30 hari terakhir
- Standar deviasi jumlah transaksi
- Jumlah transaksi dalam satu jam, hari, minggu terakhir
- Jumlah merchant unik dalam 7 hari terakhir
- Waktu sejak transaksi terakhir
Fitur Kecepatan
- Jumlah percobaan autentikasi yang gagal
- Tingkat perubahan alamat atau metode pembayaran
- Frekuensi transaksi dari perangkat baru
Fitur Geografis
- Jarak dari lokasi transaksi tipikal pengguna
- Indikator transaksi internasional
- Lokasi transaksi versus alamat terdaftar
def rekayasa_fitur_fraud(transaksi_df: pd.DataFrame) -> pd.DataFrame:
"""Buat fitur deteksi fraud dari data transaksi mentah."""
df = transaksi_df.copy()
# Fitur berbasis waktu
df["jam"] = pd.to_datetime(df["timestamp"]).dt.hour
df["is_malam"] = df["jam"].between(0, 5).astype(int)
df["is_weekend"] = pd.to_datetime(df["timestamp"]).dt.dayofweek.isin([5, 6]).astype(int)
# Agregat perilaku pengguna (rolling windows)
user_groups = df.sort_values("timestamp").groupby("user_id")
df["rata_rata_jumlah_30h"] = user_groups["jumlah"].transform(
lambda x: x.rolling("30D", min_periods=1).mean()
)
df["zscore_jumlah"] = (df["jumlah"] - df["rata_rata_jumlah_30h"]) / (
user_groups["jumlah"].transform(
lambda x: x.rolling("30D", min_periods=1).std()
).fillna(1)
)
# Fitur kecepatan
df["jml_txn_1jam"] = user_groups["jumlah"].transform(
lambda x: x.rolling("1H", min_periods=1).count()
)
return df
Arsitektur Deployment
Pipeline Scoring Real-Time
Untuk fraud pembayaran, keputusan harus terjadi dalam hitungan milidetik. Arsitektur tipikal:
- Transaksi tiba di payment gateway
- Layanan komputasi fitur memperkaya transaksi dengan fitur perilaku dan kontekstual
- Layanan scoring ML mengevaluasi transaksi yang diperkaya terhadap model
- Decision engine menerapkan skor bersama business rules
- Transaksi disetujui, ditolak, atau di-flag untuk review manual
Target latensi: di bawah 100 milidetik dari penerimaan transaksi hingga keputusan.
Antrian Review
Tidak setiap transaksi yang di-flag harus diblokir secara otomatis. Implementasi respons bertingkat:
| Rentang Skor | Tindakan | Deskripsi |
|---|---|---|
| 0.0 hingga 0.3 | Auto-approve | Risiko rendah, proses secara normal |
| 0.3 hingga 0.7 | Step-up auth | Minta verifikasi tambahan (OTP, biometrik) |
| 0.7 hingga 0.9 | Review manual | Antri untuk review analis manusia |
| 0.9 hingga 1.0 | Auto-block | Fraud confidence tinggi, tolak segera |
Sesuaikan threshold berdasarkan toleransi false positive dan target kerugian fraud Anda.
Lanskap Fraud Indonesia
Tipe Fraud Umum
Pengambilalihan akun. Pelaku fraud mendapat akses ke akun pengguna legitimate melalui credential stuffing, phishing, atau social engineering. Sangat prevalent menargetkan akun e-wallet.
Fraud identitas sintetis. Membuat identitas palsu menggunakan kombinasi informasi personal nyata dan fabrikasi. Kekhawatiran yang berkembang dalam digital lending.
Fraud transaksi. Menggunakan detail kartu curian atau kredensial pembayaran yang dikompromi untuk pembelian. Sering menargetkan elektronik bernilai tinggi dan barang yang mudah dijual kembali.
Penyalahgunaan promo. Mengeksploitasi penawaran promosi melalui akun palsu atau sistem otomatis. Sangat umum selama event sale besar.
Konteks Regulasi
Bank Indonesia dan OJK (Otoritas Jasa Keuangan) telah mengeluarkan panduan pencegahan fraud untuk institusi keuangan dan perusahaan fintech. Mengimplementasikan deteksi fraud berbasis ML sejalan dengan ekspektasi regulasi ini dan mendemonstrasikan manajemen risiko yang proaktif.
Mengukur Performa
Deteksi fraud memerlukan pemilihan metrik yang cermat karena ketidakseimbangan kelas:
- Precision: Dari semua transaksi yang di-flag, berapa persen yang benar-benar fraud? Precision tinggi berarti lebih sedikit alarm palsu.
- Recall: Dari semua fraud aktual, berapa persen yang ditangkap sistem? Recall tinggi berarti lebih sedikit kasus fraud yang terlewat.
- F1 Score: Rata-rata harmonik precision dan recall. Berguna sebagai metrik ringkasan tunggal.
- False positive rate: Persentase transaksi legitimate yang salah di-flag. Ini langsung berdampak pada pengalaman pelanggan.
- Detection rate pada FPR rendah: Berapa banyak fraud yang Anda tangkap sambil menjaga false positive di bawah 1%?
Keseimbangan ideal tergantung pada bisnis Anda. Platform pembayaran mungkin mentoleransi lebih banyak false positive untuk menangkap lebih banyak fraud, sementara checkout ritel mungkin memprioritaskan minimisasi friction bagi pelanggan legitimate.
Memulai
Mulai dengan mengaudit pendekatan pencegahan fraud Anda saat ini. Identifikasi celahnya: tipe fraud apa yang lolos? Berapa false positive rate Anda? Seberapa cepat Anda bisa beradaptasi dengan pola fraud baru?
Kemudian bangun proof of concept menggunakan data transaksi historis Anda. Bahkan model gradient boosting sederhana yang dilatih pada fitur yang direkayasa dengan baik kemungkinan akan mengungguli sistem berbasis aturan.
Idea Comindo membantu institusi keuangan dan platform e-commerce Indonesia membangun sistem deteksi fraud berbasis ML. Dari feature engineering hingga deployment model dan monitoring, kami membawa keahlian teknis untuk melindungi bisnis dan pelanggan Anda dari ancaman fraud yang terus berevolusi.