Vertex AI: Membangun model deteksi penipuan dengan AutoML

1. Ringkasan

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

Yang Anda pelajari

Anda akan mempelajari cara:

  • Mengupload Set Data Terkelola ke Vertex AI
  • Melatih model dengan AutoML
  • Deploy model AutoML terlatih Anda ke endpoint dan gunakan 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, Prediksi, 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 akan memerlukan ini 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, dalam Notebooks yang dikelola pengguna, klik Notebook Baru:

Buat 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 Anda

Setelah instance dibuat, pilih Open JupyterLab:

Buka Notebook

Data yang akan kita gunakan untuk melatih model kita berasal dari Set data deteksi penipuan kartu kredit ini. Kita akan menggunakan versi {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: Membuat set data

Pada menu Vertex di konsol, pilih Set data:

Pilih Set data

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

Dari halaman Set data, beri nama set data tersebut, lalu pilih Tabular, dan Regresi/klasifikasi. Lalu klik Create set data:

Buat set data

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

  • Mengunggah file lokal dari komputer Anda
  • 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 "Pilih tabel atau tampilan dari 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 {i>dataset<i} Anda:

Data yang diimpor

Jika mau, Anda dapat mengklik Generate statistics untuk melihat info tambahan mengenai set data ini, tetapi itu tidak diperlukan sebelum melanjutkan ke langkah berikutnya. {i>Dataset<i} 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 merupakan penipuan atau tidak. Vertex AI memberi Anda dua opsi untuk melatih model:

  • AutoML: Latih model berkualitas tinggi dengan upaya dan keahlian ML minimal.
  • Pelatihan kustom: Jalankan aplikasi pelatihan kustom Anda 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: Mulai tugas pelatihan

Dari halaman detail set data tempat Anda tinggalkan pada 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 merupakan penipuan atau bukan (0 untuk bukan penipuan, 1 untuk penipuan).

Lalu pilih Lanjutkan:

Langkah 2 pelatihan model

Pada langkah ini, scroll ke bawah dan klik untuk meluaskan Advanced options. Karena set data ini sangat tidak seimbang (kurang dari 1% data berisi transaksi yang menipu), 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 telah Anda pilih. Dari sana, Anda dapat mengubah fitur dan melatih lebih banyak waktu untuk meningkatkan performa model. Berikutnya, pilih Mulai pelatihan.

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

6. Mempelajari metrik evaluasi model

Pada langkah ini, kita akan melihat performa model.

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

Langkah 1: Pahami matriks konfusi

Matriks konfusi memberi tahu kita persentase contoh dari setiap class dalam set pengujian yang diprediksi model kita dengan benar. Dalam kasus set data yang 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 {i>dataset<i} kita adalah transaksi yang bersifat menipu, jadi jika akurasi model kita 99%, kemungkinan besar itu hanya secara acak menebak kelas yang tidak penipu 99% dari waktu itu. Itulah sebabnya melihat akurasi model kita untuk setiap class adalah metrik yang lebih baik di sini.

Jika men-scroll ke bawah pada tab Evaluate, Anda akan melihat matriks konflik yang terlihat seperti ini (persentase persisnya mungkin berbeda-beda):

Confusion matrix

Matriks konfusi menunjukkan bahwa model awal kami dapat mengklasifikasikan 85% contoh yang menipu dalam set pengujian dengan benar. Ini cukup bagus, terutama mengingat ketidakseimbangan {i>dataset <i}kita yang signifikan. Selanjutnya, kita dapat mencoba melatih model kita untuk jam komputasi lebih banyak guna melihat apakah kita dapat meningkatkannya dari 85% ini.

Langkah 2: Melihat tingkat kepentingan fitur

Di bawah matriks konfusi, Anda akan melihat diagram kepentingan fitur yang terlihat seperti ini:

Tingkat kepentingan fitur

Ini menunjukkan fitur yang memberikan sinyal terbesar bagi model saat membuat prediksi. Tingkat kepentingan fitur adalah salah satu jenis Explainable AI - bidang yang mencakup berbagai metode untuk mendapatkan lebih banyak insight tentang model ML adalah membuat prediksi. Diagram tingkat kepentingan fitur yang terlihat di sini dihitung sebagai agregat dengan melihat semua prediksi model pada set pengujian kami. Contoh ini menunjukkan fitur-fitur yang paling penting di sekumpulan contoh.

Bagan ini akan lebih menarik jika sebagian besar fitur dalam {i>dataset<i} kita tidak dikaburkan. Kami dapat mengetahui, misalnya, bahwa jenis transaksi (transfer, setoran, dll.) merupakan indikator penipuan terbesar.

Dalam skenario dunia nyata, nilai tingkat kepentingan fitur ini dapat digunakan untuk membantu meningkatkan kualitas model dan agar lebih yakin dengan prediksinya. Kita mungkin memutuskan untuk menghapus fitur yang paling tidak penting saat melatih model lagi, atau menggabungkan dua fitur yang lebih signifikan ke dalam persilangan fitur untuk melihat apakah hal ini meningkatkan performa model.

Kita melihat nilai penting fitur di seluruh batch di sini, tetapi kita juga bisa mendapatkan nilai penting fitur untuk masing-masing prediksi dalam Vertex AI. Kita akan melihat caranya setelah men-deploy model.

7. Men-deploy model ke endpoint

Setelah kita memiliki model terlatih, langkah berikutnya adalah membuat Endpoint di Vertex. Resource Model di Vertex dapat memiliki beberapa endpoint yang terkait dengannya, dan Anda dapat membagi traffic di antara 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 Done, lalu Continue.

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

Endpoint yang di-deploy

Anda semakin dekat! Sekarang Anda siap untuk mendapatkan prediksi tentang model yang di-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: Mendapatkan prediksi model di UI

Di halaman model tempat endpoint ditampilkan (tempat kami 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 digunakan untuk mendapatkan prediksi pengujian. Anda dapat mengubah nilai-nilai ini jika menghendaki. Scroll ke bagian bawah halaman, lalu pilih Prediksi.

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

Langkah 2: Mendapatkan prediksi model dengan Vertex AI API

UI adalah cara terbaik 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, kami 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 Anda, jalankan perintah 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 konsol di sini:

Menemukan ID endpoint

Terakhir, buat prediksi ke endpoint dengan menyalin dan menjalankan kode di bawah ini dalam 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 berpikir ada 67% kemungkinan transaksi ini bukan penipuan.

🎉 Selamat! 🎉

Anda telah mempelajari cara menggunakan Vertex AI untuk:

  • Mengupload set data terkelola
  • Melatih dan mengevaluasi model pada data tabulasi 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 Anda buat di lab ini, sebaiknya nonaktifkan notebook tersebut saat tidak digunakan. Dari UI Workbench di Konsol Cloud, pilih notebook, lalu pilih Stop.

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

Untuk menghapus endpoint yang telah di-deploy, buka bagian Endpoint di konsol Vertex AI, lalu batalkan deployment model dari endpoint:

Menghapus endpoint

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

Hapus penyimpanan