Anda dapat menemukan kode lengkapnya di sini

Di dunia digital yang serba cepat ini, kita terintegrasi ke dalam masyarakat transaksi digital. Transaksi non-tunai diperkirakan akan terus meningkat di tahun-tahun mendatang. Seiring dengan meningkatnya transaksi digital setiap tahunnya, jumlah penipuan kartu kredit juga terus meningkat pada titik tertinggi sepanjang masa. 15,4 juta orang mengalami penipuan kredit pada tahun 2016 saja di AS, menurut sebuah penelitian terbaru.

Ada beberapa cara untuk menghentikan aktivitas penipuan ini, tetapi saya akan memandu Anda melalui pendekatan pembelajaran mesin saya di sini.

Mengumpulkan Data

Saya menggunakan"kumpulan data Kaggle" yang berisi 284807 transaksi. Dataset ini menyajikan transaksi yang terjadi dalam dua hari, dimana terdapat 492 penipuan dari 284.807 transaksi. Dataset sangat tidak seimbang, kelas positif (penipuan) mencapai 0,172% dari seluruh transaksi.

Analisis Data Eksplorasi

Awalnya saya ingin mendalami kolom Time, Amount, dan class data

Waktu dicatat dalam jumlah detik dan kumpulan data mencakup semua transaksi yang dicatat selama dua hari. Sebagian besar transaksi terjadi pada siang hari. Sebagian besar transaksi relatif kecil dan hanya sebagian kecil yang mendekati jumlah maksimum. Sebagian besar transaksi harian tidak terlalu mahal (sebagian besar berharga ‹$50), namun kemungkinan besar transaksi penipuan juga terjadi di sana.

Dalam jangka panjang, transaksi penipuan lebih sering terjadi. Tampaknya sulit membedakan penipuan dari transaksi normal berdasarkan jumlah transaksi saja. Jam “nol” sesuai dengan jam transaksi pertama terjadi dan belum tentu jam 12–1 pagi. Mengingat penurunan tajam dalam transaksi normal dari jam 1 hingga 8 dan sekitar jam 24 hingga 32, tampaknya penipuan cenderung terjadi pada tingkat yang lebih tinggi pada malam hari. Uji statistik dapat digunakan untuk memberikan bukti atas fakta ini.

Dilihat dari sebaran kelasnya kita melihat hanya ada 492 transaksi penipuan. Itu hanya 0,173% dari seluruh transaksi di dataset ini!

Penskalaan Fitur

Seperti yang kita ketahui dari kumpulan data, fitur V1-V28 telah diubah oleh PCA dan telah diskalakan. Sedangkan fitur “Waktu” dan “Jumlah” belum. Dan mengingat kami akan menganalisis kedua fitur ini dengan V1-V28 lainnya, sebaiknya kami menskalakannya sebelum kami melatih model kami menggunakan berbagai algoritme. Metode penskalaan manakah yang harus kita gunakan? Scaler Standar tidak direkomendasikan karena fitur “Waktu” dan “Jumlah” tidak terdistribusi secara normal. Min-Max Scaler juga tidak direkomendasikan karena terdapat outlier yang terlihat pada fitur “Jumlah”. Robust Scaler tangguh terhadap outlier: (xi–Q1(x))/( Q3(x)–Q1(x)) (Q1 dan Q3 mewakili 25% dan 75% kuartil). Jadi kami memilih Robust Scaler untuk menskalakan kedua fitur ini.

Matriks Korelasi

Matriks korelasi adalah inti dari pemahaman data kita. Kami ingin mengetahui apakah ada fitur yang sangat mempengaruhi apakah suatu transaksi tertentu merupakan penipuan. Saya menggunakan peta panas untuk memahami apakah ada kolinearitas kuat yang terjadi pada data

Model Bangunan

Saya membagi kumpulan data menjadi 70%-30% untuk pelatihan dan pengujian sebelum saya membuat model apa pun. Masalah lain yang perlu diatasi adalah kumpulan data yang sangat tidak seimbang. Ada berbagai cara untuk mengevaluasi dan memecahkan masalah ketidakseimbangan. Teknik pengambilan sampel berlebihan minoritas sintetik (SMOTE) merupakan salah satu metode pengambilan sampel berlebih untuk mengatasi masalah ini. Berdasarkan metode SMOTE, saya menggunakan metode borderline-SMOTE untuk mengatasi ketidakseimbangan dataset saya. Dengan pengaturan ini, saya sekarang siap menjalankan data melalui beberapa model. Sebelum saya bekerja dengan tiga model regresi logistik, DecisionTreeClassifier, dan RandomForestClassifier, saya menggunakan metode pipeline untuk menyederhanakan alur kerja saya.

Ringkasan Hasil dari tiga model:

dengan model regresi logistik, kami menangkap 129 dari 147 kasus penipuan dalam kumpulan data pengujian dan 1501 transaksi secara keliru ditandai sebagai penipuan. Bayangkan skenario positif palsu ini ketika Anda bepergian ke luar negara bagian tanpa mengonfirmasi perjalanan Anda dan Anda mendapat pemberitahuan setelah membeli sesuatu.

dengan DecisionTreeClassifier 104 dari 147 kasus penipuan dalam kumpulan data pengujian terdeteksi tetapi hasilnya sangat baik dan menunjukkan lebih sedikit positif palsu sekitar 81 transaksi.

RandomForestClassifier menangkap 117 dari 147 kasus penipuan dan hanya 13 yang salah mendeteksi transaksi normal sebagai transaksi penipuan

Model Keras TensorFlow

Saya menggunakan model pembelajaran mendalam untuk mengklasifikasikan kasus penipuan dan membandingkannya dengan tiga model saya sebelumnya.

Saya menggunakan fungsi aktivasi Relu untuk semua lapisan untuk menyandikan dan fungsi aktivasi sigmoid untuk memecahkan kode output. Model Keras kemudian dilatih dengan pengoptimal Adam. biner_crossenttropy digunakan sebagai fungsi kerugian dan model dilatih pada 100 periode, ukuran batch sama dengan 256.

Evaluasi Model

Saya menggunakan karakteristik operasi penerima (ROC) dan matriks kebingungan untuk mengevaluasi model. ROC adalah pengukuran kinerja untuk masalah klasifikasi pada berbagai ambang batas. Ini pada dasarnya adalah kurva probabilitas, dan semakin tinggi skor Area Under the Curve (AUC) maka semakin baik model tersebut dalam memprediksi transaksi penipuan/non-penipuan.

Pada akhir pelatihan dari 85334 transaksi validasi, kami dapat mengidentifikasi 82 ​​transaksi penipuan dengan benar dan melewatkan 26 transaksi di antaranya. Kami salah menandai 1552 transaksi yang sah.

Di dunia nyata, seseorang akan memberikan bobot yang lebih tinggi pada kelas 1, untuk mencerminkan bahwa Negatif Palsu lebih mahal daripada Positif Palsu. Lain kali kartu kredit Anda ditolak dalam pembelian online — inilah alasannya.

Kesimpulan

Deteksi penipuan kartu kredit telah menjadi area penting dalam pembelajaran mesin. Hal ini terjadi terutama karena perubahan pola penipuan yang terus menerus.

Ada banyak metode untuk mendeteksi aktivitas penipuan pada kartu kredit Anda, dan sungguh keren melihat bagaimana perusahaan menangani hal ini sehari-hari. Model pembelajaran mesin kami menunjukkan bahwa model berbasis regresi logistik sederhana yang dilatih pada data yang sangat anonim pun mampu memprediksi transaksi penipuan-non-penipuan.