Vertex AI: Membangun model deteksi penipuan dengan AutoML

1. Ringkasan

Di lab ini, Anda akan menggunakan Vertex AI untuk melatih dan menayangkan model dengan data tabulasi. Ini adalah penawaran produk AI terbaru di Google Cloud, dan saat ini masih dalam tahap pratinjau.

Yang Anda pelajari

Anda akan mempelajari cara:

  • Mengupload Set Data Terkelola ke Vertex AI
  • Melatih model dengan AutoML
  • Men-deploy model AutoML terlatih ke endpoint dan menggunakan endpoint tersebut untuk mendapatkan prediksi

Total biaya untuk menjalankan lab ini di Google Cloud adalah sekitar $22.

2. Pengantar Vertex AI

Lab ini menggunakan penawaran produk AI terbaru yang tersedia di Google Cloud. Vertex AI mengintegrasikan penawaran ML di Google Cloud ke dalam pengalaman pengembangan yang lancar. Sebelumnya, model yang dilatih dengan AutoML dan model kustom dapat diakses melalui layanan terpisah. Penawaran baru ini menggabungkan kedua model ini menjadi satu API, beserta produk baru lainnya. Anda juga dapat memigrasikan project yang sudah ada ke Vertex AI. Jika Anda memiliki masukan, harap lihat halaman dukungan.

Vertex AI mencakup banyak produk yang berbeda untuk mendukung alur kerja ML secara menyeluruh. Lab ini akan berfokus pada produk yang disorot di bawah: AutoML untuk data tabulasi, Prediction, dan Workbench.

Ringkasan produk Vertex

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.

Langkah 1: Aktifkan Compute Engine API

Buka Compute Engine dan pilih Aktifkan jika belum diaktifkan. Anda memerlukannya untuk membuat instance notebook.

Langkah 2: Aktifkan Vertex AI API

Buka bagian Vertex AI di Cloud Console Anda, lalu klik Aktifkan Vertex AI API.

Dasbor Vertex

Langkah 3: Membuat instance Vertex AI Workbench

Dari bagian Vertex AI di Cloud Console Anda, klik Workbench:

Menu Vertex AI

Dari sana, di bagian Notebook yang dikelola pengguna, klik Notebook Baru:

Membuat notebook baru

Kemudian, pilih jenis instance TensorFlow Enterprise (dengan LTS) versi terbaru tanpa GPU:

Instance TFE

Gunakan opsi default, lalu klik Create.

Langkah 5: Buka Notebook

Setelah instance dibuat, pilih Open JupyterLab:

Buka Notebook

Data yang akan kita gunakan untuk melatih model berasal dari Set data deteksi penipuan kartu kredit ini. Kita akan menggunakan versi dari {i>dataset<i} ini yang tersedia untuk publik di BigQuery.

4. Membuat Set Data Terkelola

Di Vertex AI, Anda dapat membuat set data terkelola untuk berbagai jenis data. Anda kemudian dapat membuat statistik pada set data ini dan menggunakannya untuk melatih model dengan AutoML atau kode model kustom Anda sendiri.

Langkah 1: Buat set data

Di menu Vertex di konsol, pilih Set data:

Memilih Set data

Di lab ini, kita akan membuat model deteksi penipuan untuk menentukan apakah transaksi kartu kredit tertentu harus diklasifikasikan sebagai penipuan atau tidak.

Dari halaman Set data, beri nama set data, lalu pilih Tabular, dan Regression/classification. Kemudian, Buat set data:

Buat set data

Ada beberapa opsi untuk mengimpor data ke Set Data Terkelola di Vertex:

  • Mengupload file lokal dari komputer
  • Memilih file dari Cloud Storage
  • Memilih data dari BigQuery

Di sini, kita akan mengupload data dari tabel BigQuery publik.

Langkah 2: Impor data dari BigQuery

Pilih "Select a table or view from BigQuery" sebagai metode impor, lalu salin teks berikut ke kotak BigQuery table: bigquery-public-data.ml_datasets.ulb_fraud_detection. Lalu pilih Lanjutkan:

Impor data BQ

Anda akan melihat tampilan seperti berikut setelah mengimpor set data:

Data yang diimpor

Jika mau, Anda dapat mengklik Buat statistik untuk melihat info tambahan tentang set data ini, tetapi hal ini tidak diperlukan sebelum melanjutkan ke langkah berikutnya. Set data ini berisi transaksi kartu kredit yang sebenarnya. Sebagian besar nama kolom telah disamarkan, sehingga disebut V1, V2, dll.

5. Melatih model dengan AutoML

Setelah set data terkelola diupload, kita siap untuk melatih model dengan data ini. Kita akan melatih model klasifikasi untuk memprediksi apakah transaksi tertentu bersifat menipu atau tidak. Vertex AI memberi Anda dua opsi untuk melatih model:

  • AutoML: Melatih model berkualitas tinggi dengan upaya dan keahlian ML minimal.
  • Pelatihan kustom: Jalankan aplikasi pelatihan kustom di cloud menggunakan salah satu container bawaan Google Cloud atau gunakan container Anda sendiri.

Di lab ini, kita akan menggunakan AutoML untuk pelatihan.

Langkah 1: Memulai tugas pelatihan

Dari halaman detail set data tempat Anda berhenti di langkah sebelumnya, pilih Train new model di kanan atas. Pilih Classification sebagai tujuan, biarkan AutoML dipilih untuk pelatihan model, lalu klik Lanjutkan:

Langkah 1 pelatihan model

Beri nama model Anda, atau gunakan default. Di bagian Target column, pilih Class. Ini adalah bilangan bulat yang menunjukkan apakah transaksi tertentu bersifat menipu atau tidak (0 untuk non-penipuan, 1 untuk penipuan).

Lalu pilih Lanjutkan:

Langkah 2 pelatihan model

Pada langkah ini, scroll ke bawah, lalu klik untuk meluaskan Opsi lanjutan. Karena set data ini sangat tidak seimbang (kurang dari 1% data berisi transaksi penipuan), pilih opsi AUC PRC yang akan memaksimalkan presisi-recall untuk class yang kurang umum:

Opsi pelatihan lanjutan

Pilih Lanjutkan, lalu lanjutkan ke langkah terakhir (Komputasi dan harga). Di sini, masukkan 1 sebagai jumlah jam kerja node untuk anggaran Anda dan biarkan penghentian awal diaktifkan. Melatih model AutoML Anda selama 1 jam komputasi biasanya merupakan awal yang baik untuk memahami apakah ada hubungan antara fitur dan label yang Anda pilih atau tidak. Dari sana, Anda dapat memodifikasi fitur dan melatihnya dengan durasi lebih lama guna meningkatkan performa model. Selanjutnya, pilih Mulai pelatihan.

Anda akan mendapatkan email saat tugas pelatihan selesai. Pelatihan akan membutuhkan waktu sedikit lebih dari satu jam untuk memperhitungkan waktu guna menyiapkan dan menghancurkan resource.

6. Menjelajahi metrik evaluasi model

Pada langkah ini, kita akan melihat performa model.

Setelah tugas pelatihan model selesai, buka tab Model di Vertex. Klik model yang baru saja Anda latih dan lihat tab Evaluasi. Ada banyak metrik evaluasi di sini - kita akan berfokus pada dua metrik: Matriks Konfusi dan Kepentingan Fitur.

Langkah 1: Pahami matriks konfusi

Matriks konfusi menunjukkan persentase contoh dari setiap class dalam set pengujian yang diprediksi dengan benar oleh model. Dalam kasus set data tidak seimbang seperti yang sedang kita hadapi, ini adalah ukuran yang lebih baik untuk performa model kita daripada akurasi keseluruhan.

Ingat bahwa kurang dari 1% contoh dalam set data kami adalah transaksi penipuan, jadi jika akurasi model kami adalah 99%, kemungkinan besar model tersebut hanya menebak kelas non-penipuan secara acak 99% dari waktu. Itulah sebabnya melihat akurasi model untuk setiap class adalah metrik yang lebih baik di sini.

Jika men-scroll ke bawah di tab Evaluasi, Anda akan melihat matriks kebingungan yang terlihat seperti ini (persentase pastinya dapat bervariasi):

Confusion matrix

Matriks konfusi menunjukkan bahwa model awal kami dapat mengklasifikasikan 85% contoh penipuan dalam set pengujian dengan benar. Hasil ini cukup baik, terutama mengingat ketidakseimbangan set data yang signifikan. Selanjutnya, kita dapat mencoba melatih model selama lebih banyak jam komputasi untuk melihat apakah kita dapat meningkatkan 85% ini.

Langkah 2: Melihat tingkat kepentingan fitur

Di bawah matriks kebingungan, Anda akan melihat diagram nilai penting fitur yang terlihat seperti ini:

Tingkat kepentingan fitur

Hal ini menunjukkan fitur yang memberikan sinyal terbesar ke model saat membuat prediksi. Nilai penting fitur adalah salah satu jenis Explainable AI - bidang yang mencakup berbagai metode untuk mendapatkan lebih banyak insight tentang model ML yang membuat prediksi. Diagram nilai penting fitur yang terlihat di sini dihitung sebagai gabungan dengan melihat semua prediksi model pada set pengujian. Fitur ini menunjukkan fitur terpenting di seluruh contoh.

Diagram ini akan lebih menarik jika sebagian besar fitur dalam set data kami tidak dikaburkan. Kita mungkin mengetahui, misalnya, bahwa jenis transaksi (transfer, setoran, dll.) adalah indikator terbesar penipuan.

Dalam skenario dunia nyata, nilai penting fitur ini dapat digunakan untuk membantu kami meningkatkan kualitas model, dan lebih yakin dengan prediksinya. Kita mungkin memutuskan untuk menghapus fitur yang paling tidak penting saat kita melatih model berikutnya, atau menggabungkan dua fitur yang lebih penting menjadi satu persilangan fitur untuk mengetahui apakah hal ini meningkatkan performa model atau tidak.

Di sini, kita melihat nilai penting fitur di seluruh batch, tetapi kita juga bisa mendapatkan nilai penting fitur untuk setiap prediksi di Vertex AI. Kita akan melihat cara melakukannya setelah men-deploy model.

7. Men-deploy model ke endpoint

Setelah memiliki model yang terlatih, langkah selanjutnya adalah membuat Endpoint di Vertex. Resource Model di Vertex dapat memiliki beberapa endpoint yang terkait dengannya, dan Anda dapat membagi traffic antar-endpoint.

Langkah 1: Membuat endpoint

Di halaman model, buka tab Deploy and test, lalu klik Deploy to endpoint:

Men-deploy dan menguji

Beri nama endpoint Anda, seperti fraud_v1, biarkan Akses ditetapkan ke Standar, lalu klik Lanjutkan.

Biarkan pemisahan traffic dan jenis mesin sebagai setelan default, klik Selesai, lalu Lanjutkan.

Kami tidak akan menggunakan pemantauan model untuk endpoint ini, jadi Anda dapat membiarkan opsi tersebut tidak dipilih dan mengklik Deploy. Endpoint Anda akan memerlukan waktu beberapa menit untuk di-deploy. Setelah selesai, Anda akan melihat tanda centang hijau di sampingnya:

Endpoint yang di-deploy

Anda hampir selesai! Sekarang Anda siap untuk mendapatkan prediksi pada model yang Anda deploy.

8. Mendapatkan prediksi pada model yang di-deploy

Ada beberapa opsi untuk mendapatkan prediksi model:

  • UI Vertex AI
  • Vertex AI API

Kita akan menampilkan keduanya di sini.

Langkah 1: Dapatkan prediksi model di UI

Di halaman model tempat endpoint Anda ditampilkan (tempat kita berhenti di langkah terakhir), scroll ke bawah ke bagian Uji model Anda:

Uji model

Di sini, Vertex AI telah memilih nilai acak untuk setiap fitur model yang dapat kita gunakan untuk mendapatkan prediksi pengujian. Anda dapat mengubah nilai ini jika ingin. Scroll ke bagian bawah halaman, lalu pilih Prediksi.

Di bagian Hasil prediksi pada halaman, Anda akan melihat persentase prediksi model untuk setiap class. Misalnya, skor keyakinan 0.99 untuk class 0 berarti model Anda menganggap contoh ini memiliki kemungkinan 99% bukan penipuan.

Langkah 2: Dapatkan prediksi model dengan Vertex AI API

UI adalah cara yang bagus untuk memastikan endpoint yang di-deploy berfungsi seperti yang diharapkan, tetapi kemungkinan besar Anda ingin mendapatkan prediksi secara dinamis melalui panggilan REST API. Untuk menunjukkan cara mendapatkan prediksi model di sini, kita akan menggunakan instance Vertex Workbench yang Anda buat di awal lab ini.

Selanjutnya, buka instance notebook yang Anda buat, dan buka notebook Python 3 dari Peluncur:

Buka notebook

Di notebook, jalankan kode berikut dalam sel untuk menginstal Vertex SDK:

!pip3 install google-cloud-aiplatform --upgrade --user

Kemudian, tambahkan sel di notebook Anda untuk mengimpor SDK dan membuat referensi ke endpoint yang baru saja di-deploy:

from google.cloud import aiplatform

endpoint = aiplatform.Endpoint(
    endpoint_name="projects/YOUR-PROJECT-NUMBER/locations/us-central1/endpoints/YOUR-ENDPOINT-ID"
)

Anda harus mengganti dua nilai dalam string endpoint_name di atas dengan nomor dan endpoint project Anda. Anda dapat menemukan nomor project dengan membuka dasbor project dan mendapatkan nilai Project Number.

Anda dapat menemukan ID endpoint di bagian endpoint pada konsol di sini:

Menemukan ID endpoint

Terakhir, buat prediksi ke endpoint Anda dengan menyalin dan menjalankan kode di bawah ini di sel baru:

test_instance={
    'Time': 80422,
    'Amount': 17.99,
    'V1': -0.24,
    'V2': -0.027,
    'V3': 0.064,
    'V4': -0.16,
    'V5': -0.152,
    'V6': -0.3,
    'V7': -0.03,
    'V8': -0.01,
    'V9': -0.13,
    'V10': -0.18,
    'V11': -0.16,
    'V12': 0.06,
    'V13': -0.11,
    'V14': 2.1,
    'V15': -0.07,
    'V16': -0.033,
    'V17': -0.14,
    'V18': -0.08,
    'V19': -0.062,
    'V20': -0.08,
    'V21': -0.06,
    'V22': -0.088,
    'V23': -0.03,
    'V24': 0.01,
    'V25': -0.04,
    'V26': -0.99,
    'V27': -0.13,
    'V28': 0.003
}

response = endpoint.predict([test_instance])

print('API response: ', response)

Anda akan melihat prediksi sekitar .67 untuk class 0, yang berarti model menganggap ada kemungkinan 67% bahwa transaksi ini bukan merupakan penipuan.

🎉 Selamat! 🎉

Anda telah mempelajari cara menggunakan Vertex AI untuk:

  • Mengupload set data terkelola
  • Melatih dan mengevaluasi model pada data tabular menggunakan AutoML
  • Men-deploy model ke endpoint
  • Mendapatkan prediksi di endpoint model menggunakan SDK untuk Vertex

Untuk mempelajari lebih lanjut berbagai bagian Vertex AI, lihat dokumentasinya.

9. Pembersihan

Jika ingin terus menggunakan notebook yang dibuat di lab ini, sebaiknya Anda menonaktifkannya saat tidak digunakan. Dari UI Workbench di Cloud Console, pilih notebook, lalu pilih Stop.

Jika Anda ingin menghapus notebook secara keseluruhan, cukup klik tombol Hapus di kanan atas.

Untuk menghapus endpoint yang Anda deploy, buka bagian Endpoints di konsol Vertex AI, lalu batalkan deployment model dari endpoint Anda:

Menghapus endpoint

Untuk menghapus Bucket Penyimpanan menggunakan menu Navigasi di Cloud Console, jelajahi Penyimpanan, pilih bucket Anda, lalu klik Hapus:

Hapus penyimpanan