| Nama | NIM |
|---|---|
| BRANDON RAPHAEL VALENTINO | 2902735635 |
| DARREN JEHONATHAN | 2902714100 |
| MUHAMMAD DHIYAUL HAQ | 2902736934 |
| MUHAMMAD FATHIR | 2902730432 |
| SIMONE RAPHAEL ERUS | 2902703394 |
Penipuan kartu kredit merupakan permasalahan nyata di industri keuangan yang dapat merugikan nasabah maupun institusi perbankan. Oleh karena itu, diperlukan sistem yang mampu mendeteksi transaksi mencurigakan secara otomatis. Dengan pendekatan machine learning, kita dapat membangun model klasifikasi untuk membedakan transaksi normal dan fraud (penipuan).
Nama dataset: Credit Card Fraud Detection
Sumber: Kaggle – Credit Card Fraud Detection
Deskripsi singkat:
Time, V1 … V28 (hasil transformasi PCA), Amount, dan Class (label: 0 = normal, 1 = fraud).Amount dan Time, mengatasi class imbalance (misal dengan SMOTE atau undersampling).| Tahap | Metode/Alat | |——-|————–| | Pengumpulan data | unduh CSV | | Eksplorasi data | Pandas, Matplotlib, Seaborn | | Preprocessing | Scikit-learn (StandardScaler, SMOTE) | | Pemodelan | Scikit-learn, XGBoost | | Evaluasi | Classification report, confusion matrix, ROC curve |
Dataset dibaca menggunakan pandas.
import pandas as pd
df = pd.read_csv('creditcard.csv')
print(df.shape) # (284807, 31)
print(df.info())
Hasil:
Identifikasi Masalah
| Masalah | Ada? | Keterangan |
|---|---|---|
| Missing values | Tidak | Semua kolom memiliki 284.807 non-null. |
| Outliers ekstrem | Ya | Pada kolom Amount dan Time. |
| Duplikasi data | Ya | Terdapat 1.081 baris duplikat. |
Penanganan Duplikasi Kami menghapus baris duplikat menggunakan drop_duplicates().
df = df.drop_duplicates()
print(df.shape) # (283726, 31)
Alasan: Duplikat dapat menyebabkan bias dalam model, terutama pada data yang tidak seimbang (fraud sangat sedikit).
Penanganan Outlier Outlier pada kolom Amount diidentifikasi menggunakan metode IQR (Interquartile Range).
Q1 = df['Amount'].quantile(0.25)
Q3 = df['Amount'].quantile(0.75)
IQR = Q3 - Q1
lower = Q1 - 1.5*IQR
upper = Q3 + 1.5*IQR
df = df[(df['Amount'] >= lower) & (df['Amount'] <= upper)]
Outlier ekstrem pada Amount (misal transaksi hingga >25.000) dapat mengganggu normalisasi dan kinerja model. Kami memilih IQR karena distribusi Amount tidak simetris. Setelah penghapusan outlier, jumlah baris menjadi 252.041.
Standarisasi (Normalisasi) Karena Amount dan Time memiliki rentang yang sangat berbeda dengan fitur PCA, kami melakukan standarisasi menggunakan StandardScaler dari scikit-learn.
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
df['Amount_scaled'] = scaler.fit_transform(df[['Amount']])
df['Time_scaled'] = scaler.fit_transform(df[['Time']])
df = df.drop(['Amount', 'Time'], axis=1)
Standarisasi diperlukan agar semua fitur memiliki skala yang sama (mean=0, std=1), sehingga algoritma berbasis jarak (seperti SVM, KNN) tidak bias terhadap fitur dengan skala besar.
Reduksi Dimensi Kami tidak melakukan reduksi dimensi karena jumlah fitur (30) masih tergolong kecil dan PCA sudah diterapkan pada data asli (fitur V1–V28 merupakan hasil PCA dari data asli).
Visualisasi Sebelum dan Sesudah Preprocessing Histogram Amount (Sebelum vs Sesudah Scaling) Sebelum: Distribusi menceng ke kanan (skewed), banyak outlier. Sesudah: Distribusi mendekati normal (mean 0, std 1).
Perbandingan Jumlah Fraud vs Normal Tetap sangat tidak seimbang (fraud ~0.17%). Visualisasi dengan countplot menunjukkan dominasi kelas normal.
Heatmap Korelasi Korelasi antar fitur PCA sangat rendah (mendekati 0), sesuai dengan sifat PCA yang menghasilkan komponen tidak berkorelasi.
Scatter Plot (V1 vs V2) Titik merah (fraud) cenderung berada di area tertentu, namun masih bercampur dengan normal. Menunjukkan perlunya model yang lebih kompleks.
| Pertanyaan | Jawaban | |————|———| | Apakah dataset sudah cukup bersih untuk analisis? | Ya. Missing values tidak ada, duplikat dihapus, outlier pada Amount telah ditangani, dan fitur telah distandarisasi. | | Apakah masih ada masalah? | Ketidakseimbangan kelas (fraud sangat sedikit) masih menjadi tantangan utama. Perlu teknik resampling (SMOTE, undersampling) pada tahap pemodelan. | | Tantangan utama dalam proses ini | Menentukan batas IQR untuk outlier tanpa menghilangkan transaksi fraud yang sah (tidak ada fraud yang terhapus karena semua fraud memiliki Amount relatif kecil). |
Dataset siap untuk dilanjutkan ke tahap pemodelan machine learning (klasifikasi biner) dengan menangani ketidakseimbangan kelas terlebih dahulu.