ML BigQuery untuk Deteksi Penipuan dalam transaksi kartu kredit menggunakan konsol

1. Pengantar

Di lab ini, Anda akan menggunakan BigQuery untuk melatih dan menyajikan model dengan data tabulasi menggunakan konsol. Penawaran ini adalah tambahan favorit untuk pelatihan dan inferensi model berbasis SQL. BigQuery ML memungkinkan pengguna membuat dan menjalankan model machine learning di BigQuery menggunakan kueri SQL. Tujuannya adalah untuk membuat machine learning tersedia lebih luas dengan memungkinkan praktisi SQL membuat model menggunakan alat yang sudah ada, dan untuk meningkatkan kecepatan pengembangan dengan meniadakan kebutuhan akan pemindahan data.

Yang akan Anda pelajari

  • Menjelajahi data yang tersedia di BigQuery
  • Membuat model menggunakan SQL di BigQuery menggunakan konsol
  • Mengevaluasi hasil model yang dibuat
  • Memprediksi apakah transaksi bersifat penipuan atau tidak dengan model yang dibuat

2. Tentang data

Set data berisi transaksi yang dilakukan dengan kartu kredit pada September 2013 oleh pemegang kartu Eropa. Set data ini menyajikan transaksi yang terjadi dalam dua hari, dengan 492 penipuan dari 284.807 transaksi. Dataset ini sangat tidak seimbang, kelas positif (penipuan) mencakup 0,172% dari semua transaksi.

File ini hanya berisi variabel input numerik yang merupakan hasil transformasi PCA. Sayangnya, karena masalah kerahasiaan, kami tidak dapat memberikan fitur asli dan informasi latar belakang lebih lanjut tentang data tersebut.

  1. Fitur V1, V2, ... V28 adalah komponen utama yang diperoleh dengan PCA, satu-satunya fitur yang belum diubah dengan PCA adalah 'Time' dan 'Amount'.
  2. Fitur 'Time' berisi detik yang berlalu antara setiap transaksi dan transaksi pertama dalam set data.
  3. Fitur 'Jumlah' adalah Jumlah transaksi. Fitur ini dapat digunakan untuk pembelajaran sensitif biaya yang bergantung pada contoh.
  4. Fitur 'Class' adalah variabel respons dan mengambil nilai 1 jika terjadi penipuan dan 0 jika tidak.

Set data ini telah dikumpulkan dan dianalisis selama kolaborasi riset antara Worldline dan Machine Learning Group ( http://mlg.ulb.ac.be) dari ULB (Université Libre de Bruxelles) tentang penambangan big data dan deteksi penipuan.

Detail selengkapnya tentang project saat ini dan sebelumnya terkait topik ini tersedia di https://www.researchgate.net/project/Fraud-detection-5 dan halaman project DefeatFraud

Kutipan:

Andrea Dal Pozzolo, Olivier Caelen, Reid A. Johnson dan Gianluca Bontempi. Mengalibrasi Probabilitas dengan Undersampling untuk Klasifikasi yang Tidak Seimbang. Dalam Symposium on Computational Intelligence and Data Mining (CIDM), IEEE, 2015

Dal Pozzolo, Andrea; Caelen, Olivier; Le Borgne, Yann-Ael; Waterschoot, Serge; Bontempi, Gianluca. Pelajaran yang didapat dalam deteksi penipuan kartu kredit dari perspektif praktisi, Sistem pakar dengan aplikasi,41,10,4915-4928,2014, Pergamon

Dal Pozzolo, Andrea; Boracchi, Giacomo; Caelen, Olivier; Alippi, Cesare; Bontempi, Gianluca. Deteksi penipuan kartu kredit: pemodelan yang realistis dan strategi pembelajaran baru, IEEE transactions on neural networks and learning systems,29,8,3784-3797,2018,IEEE

Dal Pozzolo, Andrea Adaptive Machine learning for credit card fraud detection ULB MLG PhD thesis (dibimbing oleh G. Bontempi)

Carcillo, Fabrizio; Dal Pozzolo, Andrea; Le Borgne, Yann-Aël; Caelen, Olivier; Mazzer, Yannis; Bontempi, Gianluca. Scarff: framework yang skalabel untuk streaming deteksi penipuan kartu kredit dengan Spark, Information fusion,41, 182-194,2018,Elsevier

Carcillo, Fabrizio; Le Borgne, Yann-Aël; Caelen, Olivier; Bontempi, Gianluca. Streaming strategi active learning untuk deteksi penipuan kartu kredit dalam kehidupan nyata: penilaian dan visualisasi, International Journal of Data Science and Analytics, 5,4,285-300,2018,Springer International Publishing

Bertrand Lebichot, Yann-Aël Le Borgne, Liyun He, Frederic Oblé, Gianluca Bontempi Deep-Learning Domain Adaptation Techniques for Credit Cards Fraud Detection, INNSBDDL 2019: Recent Advances in Big Data and Deep Learning, hlm. 78-88, 2019

Fabrizio Carcillo, Yann-Aël Le Borgne, Olivier Caelen, Frederic Oblé, Gianluca Bontempi Combining Unsupervised and Supervised Learning in Credit Card Fraud Detection Information Sciences, 2019

3. Menyiapkan lingkungan Anda

Anda memerlukan project Google Cloud Platform dengan penagihan yang diaktifkan untuk menjalankan codelab ini. Untuk membuat project, ikuti petunjuk di sini.

  1. Aktifkan BigQuery API

Buka BigQuery dan pilih Aktifkan jika belum diaktifkan. Anda akan memerlukan ini untuk membuat model.

4. Menjelajahi data

Langkah 1: Buka BigQuery

Cari BigQuery di https://cloud.google.com/console

Langkah 2: Jelajahi data menggunakan kueri

Di editor , ketik kueri SQL di bawah untuk meninjau data dalam set data publik .

SELECT * FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection` LIMIT 5

Langkah 3: Jalankan

Tekan perintah Jalankan di atas untuk menjalankan kueri

c670e136ecd58236.png

Hasil

Harus ada di panel Hasil Kueri dan terlihat seperti ini. Data mungkin bervariasi

be082fb135879158.png

Jelajahi kolom yang terlibat dan outputnya.

Anda dapat menjalankan beberapa kueri untuk memahami cara data didistribusikan. Beberapa contohnya antara lain

SELECT count(*) FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection` 
where Class=0;
SELECT count(*) FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection` 
where Class=1;

5. Membuat set data output

Langkah 1: Buat set data untuk pembuatan model

  1. Di panel Explorer - Di sisi kiri, pilih project yang sedang Anda kerjakan, klik tiga titik di sampingnya

7618699754e066bd.png

  1. Klik Buat Set Data di kanan atas

17851cc9db05dc1.png

  1. Masukkan detail untuk nama set data, retensi, lokasi, dll., Gunakan setelan ini

b8b6731408f61d57.png

6. Buat Model Regresi Logistik

Langkah 1: Buat Pernyataan

Di jendela Kueri, ketik kueri di bawah untuk pembuatan model. Pahami opsi utama dengan pernyataan ini. Dijelaskan di link ini.

INPUT_LABEL_COLS menunjukkan label prediksi

AUTO_CLASS_WEIGHTS digunakan untuk set data yang tidak seimbang

MODEL_TYPE akan menunjukkan algoritma yang digunakan, dalam hal ini adalah Regresi Logistik

DATA_SPLIT_METHOD menunjukkan pembagian antara data pelatihan dan pengujian

CREATE OR REPLACE MODEL advdata.ulb_fraud_detection 
TRANSFORM(
    * EXCEPT(Amount),
    SAFE.LOG(Amount) AS log_amount
)
OPTIONS(
    INPUT_LABEL_COLS=['class'],
    AUTO_CLASS_WEIGHTS = TRUE,
    DATA_SPLIT_METHOD='seq',
    DATA_SPLIT_COL='Time',
    MODEL_TYPE='logistic_reg'
) AS

SELECT 
 *
FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection`

Langkah 2: Jalankan

Jalankan pernyataan di atas. Proses ini akan memakan waktu beberapa menit hingga selesai

Perhatikan hal-hal penting setelah proses selesai

3385a54d3907443e.png

  1. Panel Explorer akan memiliki model yang dibuat
  2. Panel Hasil Kueri akan memiliki durasi yang diperlukan untuk memproses ML SQL yang serupa dengan pernyataan SQL apa pun
  3. Panel Hasil Kueri juga akan memiliki link Buka Model untuk Anda pelajari

Langkah 3: Jelajahi

Jelajahi Model yang dibuat dengan mengklik Buka Model atau dari panel Explorer. Tab ini memberikan informasi tentang model yang dibuat , pelatihan, evaluasi, dll. Meninjau hasil

b350f1b94835f2d1.png

Kita akan mempelajarinya lebih lanjut di bagian berikutnya

Untuk mengetahui Regresi Logistik lebih lanjut, lihat di sini

7. Menjelajahi metrik evaluasi model

Pada langkah ini, kita akan melihat performa model.

Setelah tugas pelatihan model Anda selesai, klik model yang baru saja Anda latih dan lihat tab Evaluasi. Ada banyak metrik evaluasi di sini - kita hanya akan berfokus pada satu metrik :roc_auc

 SELECT * FROM ML.EVALUATE(MODEL advdata.ulb_fraud_detection)

Hasilnya akan terlihat seperti ini. roc_auc umumnya lebih penting pada set data yang tidak seimbang

c3c80286082dc336.png

Untuk mengetahui hasil lebih lanjut. Cari dokumen ML.Evaluate di sini

Presisi dan Perolehan

Kurva ROC dan AUC

8. Memprediksi kelas untuk waktu tertentu

Tekan Buat kueri baru dan jalankan SQL di bawah. Waktu di sini telah mengidentifikasi jumlah penipuan. Kita mencoba mengevaluasi apakah prediksi tersebut berfungsi

SELECT Amount, predicted_class_probs, Class
FROM ML.PREDICT( MODEL advdata.ulb_fraud_detection,
 (SELECT * FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection` WHERE Time = 85285.0)
)

Output akan terlihat seperti ini (angka mungkin berbeda)

676fc8accdab2f6c.png

Dalam contoh ini, kami menampilkan jumlah dengan probabilitas label terkait. Kolom class di sini menunjukkan hasil sebenarnya.

Untuk mengetahui ML.PREDICT lebih lanjut. Lihat di sini

9. Pembersihan

Jika Anda ingin membersihkan resource yang dibuat dengan lab ini, buka set data dari panel Explorer di sisi kiri

e7d18fadd2b781be.png

Klik Hapus Set Data di pojok kanan atas

b47bc819869bed6c.png

Masukkan nama set data lagi untuk mengonfirmasi detailnya. Dalam kasus kita, ini akan menjadi advdata

10. Selamat

Selamat, Anda telah berhasil membuat model pertama, mengevaluasi, dan memprediksi menggunakan machine learning terawasi.

Sekarang Anda telah mengetahui langkah-langkah penting yang diperlukan untuk membuat model regresi logistik.

Apa selanjutnya?

Lihat beberapa cara lain yang terlibat dalam prediksi ini

Dokumen referensi