Cara Mendeteksi Transaksi Fraud Pada Machine Learning - CRUDPRO

Cara Mendeteksi Transaksi Fraud Pada Machine Learning

Pada kesempatan kali ini kami akan berbagi cara mendeteksi pelanggan yang curang menggunakan Machine Learning

Bagian 1: Latar belakang dan pengantar

Deteksi penipuan di perbankan merupakan kegiatan penting yang mencakup berbagai skema penipuan dan penipuan pelanggan. Di blog ini, saya menjelaskan pendekatan Machine Learning untuk mendeteksi pelanggan yang curang.

Tujuan dari proyek ini adalah untuk membangun model Machine Learning untuk menemukan scammers dan mengambil tindakan yang tepat.

Mari kita lihat datanya sekali

Ada tiga kumpulan data yang disebut transaksi, dan kumpulan data pengguna dan penipu berisi informasi tentang pelanggan yang sebelumnya telah melakukan beberapa transaksi penipuan.

Untuk mendeteksi scammers dalam data pengujian, kami melakukan langkah-langkah berikut:

  1. Pra-pemrosesan data
  2. Rekayasa fitur
  3. Pilihan fitur
  4. Bangunan model

Mari kita lihat lebih dekat masing-masing langkah ini

Bagian 2 Pra-pemrosesan data

Ada beberapa langkah dalam preprocessing data. Secara kasar diklasifikasikan ke dalam langkah-langkah berikut.

  • Nilai yang hilang
  • Variabel numerik, variabel waktu dan variabel kategoris
  • Kardinalitas variabel kategoris

2.1 Nilai yang hilang

Pertama, Anda perlu memeriksa data yang hilang dan menanganinya menggunakan berbagai teknik. Periksa nilai yang hilang dalam data Anda

Untungnya, tidak ada nilai yang hilang dalam data.

2.2 Variabel numerik, variabel kategoris, dan variabel waktu

Mari kita analisis jumlah transaksi pelanggan.

Dari plot di atas, Anda dapat melihat bahwa dataset memiliki beberapa transaksi yang tidak biasa. nanti saya proses.

2.3 Kardinalitas variabel kategoris

Mari kita menganalisis kardinalitas variabel kategoris. Ini penting karena kardinalitas tinggi dapat menyebabkan kutukan dimensi.

Anda dapat melihat bahwa dimensi transacition_id dan user_id sangat tinggi, jadi kami tidak mempertimbangkannya saat membangun model.

Dari plot di atas, kita dapat melihat bahwa:

  • Transaksi penipuan lebih sering terjadi pada jenis TOP-UP (external remittance to account) dan selanjutnya TRANSFER (external remittance to bank account).
  • Sebagian besar transaksi penipuan telah diselesaikan.

Bagian 3: Rekayasa fitur

Selanjutnya, desain variabel dalam dataset. Rancang variabel untuk bekerja pada hal berikut:

  1. Bagilah data menjadi pelatihan dan pengujian
  2. Variabel waktu
  3. Variabel kategori: menghapus label langka
  4. Standarisasi nilai variabel ke kisaran yang sama

3.1 Memisahkan kumpulan data menjadi pelatihan dan pengujian

Sebelum Anda mulai mendesain fitur, penting untuk membagi data Anda ke dalam set pelatihan dan set pengujian. Hal ini untuk menghindari overfitting.

Dalam skenario ini, Anda tidak dapat menggabungkan ketiga kumpulan data lalu membagi data menjadi kumpulan pelatihan dan kumpulan pengujian. Ini karena beberapa transaksi yang dilakukan oleh scammer yang sama mungkin ada di set pelatihan dan set pengujian, dan hasilnya mungkin tidak memberikan verifikasi yang adil.

Oleh karena itu, Anda harus terlebih dahulu menggabungkan dan membagi scammers dengan pengguna, dan kemudian menggabungkan set tersebut dengan dataset transaksi. Dalam skenario ini, satu transaksi scammer ada di set pelatihan atau set pengujian, bukan keduanya.

3.2 Variabel waktu

Ada tiga variabel yang mereferensikan tanggal ketika pengguna lahir, terdaftar di aplikasi, dan melakukan transaksi. Dari informasi ini, saya akan mencoba mengekstrak beberapa fitur yang mungkin berguna untuk pemodelan.

Kami mengekstrak berbagai fitur seperti jam, menit, dan detik dari kolom tanggal kumpulan data.

Dari grafik di atas, Anda dapat melihat bahwa sebagian besar transaksi penipuan terjadi setelah jam 9 pagi. Oleh karena itu, Anda dapat membuat flag baru yang menunjukkan apakah transaksi terjadi sebelum atau setelah pukul 9.00.

Ada berbagai jenis kejahatan keuangan.

  1. Terstruktur (Smurfing): Mencakup sejumlah besar transaksi (deposit, penarikan, transfer), seringkali orang yang berbeda, sejumlah besar transaksi, dan mungkin banyak akun untuk menghindari ambang deteksi pelaporan.
  2. Bustout: Di sini, peretas dan pencuri membuat akun dan melakukan banyak transaksi hingga mereka ditangkap dan dikunci.

Penipu dapat melakukan transaksi berkelanjutan sampai mereka tertangkap. Oleh karena itu, menemukan jumlah rata-rata transaksi per pengguna dapat membantu mendeteksinya.

Temukan jumlah rata-rata transaksi yang dilakukan pelanggan Anda setiap hari dan lihat apakah ini berkorelasi dengan jumlah transaksi penipuan.

Dari plot di atas, kita dapat menyimpulkan bahwa semakin tinggi tingkat transaksi rata-rata, semakin tinggi tingkat penipuan. Oleh karena itu, ini bisa menjadi salah satu fitur potensial dari model yang kami bangun.

Usia nasabah juga berpengaruh signifikan terhadap penipuan transaksi. Hal ini dapat disimpulkan dari grafik di bawah ini.

Sebagian besar transaksi penipuan dilakukan oleh anak muda berusia antara 18 dan 27 tahun.

3.3: Variabel kategori: Hapus label langka

Hapus kategori ini dalam variabel yang kurang dari 1% dari nilai yang diamati

Data dimensi yang lebih tinggi biasanya berperilaku aneh. (Data dalam ruang dimensi yang lebih tinggi telah terbukti berada di kulit luar permukaan, dan sebagian besar algoritme ML yang ada tidak berfungsi dengan baik dalam skenario ini. Banyak yang berurusan dengan homologi yang terus-menerus ini. Perhatian sedang dikumpulkan.)

3.4 Standarisasi nilai variabel ke kisaran yang sama

Kemudian skala fungsionalitas ke rentang yang sama. Jika tidak, model dapat mendorong beberapa fitur dengan nilai yang lebih tinggi. Bagian 4 Pilihan fitur

Pemilihan fitur berarti memilih kelompok variabel yang paling prediktif untuk membangun model Machine Learning.

Ini penting karena berbagai alasan.

  • Dalam lingkungan produksi: Semakin sedikit variabel, semakin sedikit persyaratan input yang dimiliki klien (misalnya, pelanggan mengisi formulir di situs web atau aplikasi seluler) dan semakin sedikit kode penanganan kesalahan. Ini mengurangi kemungkinan bug.
  • Untuk kinerja model: Lebih sedikit variabel berarti model lebih sederhana, lebih mudah diinterpretasikan, dan tidak berlebihan.

Ada berbagai cara untuk melakukan seleksi fitur

  1. Metode filter
  2. Metode pembungkus
  3. Metode tertanam

Pilih variabel menggunakan regularisasi L1 regresi logistik. Regularisasi L1 memiliki properti pengaturan koefisien variabel non-informasi ke nol. Dengan cara ini, Anda dapat mengidentifikasi variabel-variabel ini dan menghapusnya dari model akhir.

Bagian 5: Model bangunan

Kemudian, dengan menggunakan data yang dirancang dan fitur yang telah dipilih sebelumnya, kami akhirnya membangun model Machine Learning.

Pertama, dataset ini tidak seimbang karena jumlah transaksi penipuan sangat kecil (kurang dari 0,5%). Pemrosesan data yang tidak proporsional

Ada berbagai cara untuk menangani kumpulan data yang tidak seimbang.

  1. Menghasilkan sampel sintetis (oversampling, SMOTE, dll.)
  2. Coba model dengan penalti
  3. Coba perspektif lain (dengan mempertimbangkan masalah ini sebagai kasus penggunaan deteksi anomali)
  4. Menetapkan bobot yang lebih tinggi ke kelas minoritas (menggunakan parameter class_weight)

Untuk masalah ini, kami memilih metode terakhir untuk menangani data yang tidak seimbang. Yaitu, gunakan parameter class_weight. Namun, untuk mendapatkan hasil yang lebih baik, Anda perlu mencoba berbagai pendekatan untuk menemukan yang terbaik.

Saya melatih berbagai model proyek ini, seperti regresi logistik dan hutan acak.

Untuk hutan acak, hasilnya adalah:

Idealnya, Anda membutuhkan akurasi dan daya ingat yang tinggi. Dalam model ini, baik fit dan recall adalah 0,5, sehingga diperoleh trade-off dengan ambang batas 0,25. Namun, asumsi saya adalah bahwa itu membutuhkan akurasi yang lebih baik daripada penarikan kembali. Ambang batas dipilih sebagai 0,7. Di sini, akurasinya ~ 0,8 dan penarikannya ~ 0,3.

Mari kita evaluasi kinerja strategi ini. Karena tugas menunjukkan bahwa kinerja harus di tingkat pengguna, kami akan menambahkan prediksi ke set pelatihan untuk mengelompokkan keluaran prediksi berdasarkan pengguna.

Evaluasi model

Biasanya, untuk kumpulan data yang tidak seimbang, nilainya selalu tinggi, jadi Anda tidak memilih presisi sebagai metrik. Oleh karena itu, Anda perlu mencari metrik lain seperti fit rate, recall, F1, dan AUC.

Pertama, Anda perlu memahami bisnis Anda dan memahami apakah positif palsu atau positif palsu lebih mahal.

Jika Benar Positif, model memprediksi bahwa pengguna sebenarnya adalah pengguna yang curang. Kunci pengguna dengan benar. Tidak ada biaya atau biaya manajemen untuk perusahaan.

Dalam kasus True Negative, model memprediksi bahwa itu adalah pengguna yang tidak ramah, mengingat dia adalah pengguna yang sangat baik. Kami menyetujuinya dan tidak ada biaya.

Dalam kasus positif palsu, model memprediksi sebagai pengguna yang curang jika dia adalah pengguna yang baik. Anda harus membayar biaya layanan pelanggan (dan Anda mungkin kehilangan pelanggan).

Dalam kasus Negatif Palsu, model memprediksi bahwa dia adalah pengguna yang baik jika dia scam. Anda harus secara tidak sengaja menyetujui pesanan dan membayar tagihan balik saat kehilangan jumlah pesanan.

Jika Anda memiliki jumlah orang yang terbatas untuk memeriksa transaksi penipuan, akurasi lebih penting daripada penarikan. Oleh karena itu, Anda dapat memplot kurva presisi-recall untuk menentukan ambang batas optimal.

Akhirnya, Anda akan mendapatkan akurasi 0,66 dan ingatan 0,42 untuk strategi yang dibayangkan. Namun, Anda dapat menyetel lebih lanjut model ini untuk meningkatkan kinerja.

Apa saja fitur penting tersebut?

Dari plot di atas, kita dapat melihat bahwa fitur yang baru dibuat seperti variabel "avg_transaction_count", "transaction_hr", dan "age" sangat penting dalam model.

Akhirnya, kami memilih Random Forest untuk membangun model. Ini karena mengungguli model regresi logistik. Anda juga dapat mencoba algoritme lain untuk menemukan yang paling cocok untuk Anda.

Peningkatan lebih lanjut

Jika saya memiliki sedikit lebih banyak waktu, saya akan mencoba berbagai algoritma lain untuk memilih yang terbaik dan melakukan penyesuaian hyperparameter menggunakan pencarian acak atau grid untuk meningkatkan kinerja model ini.