Dalam tutorial ini, Anda akan menggunakan model regresi logistik biner di BigQuery ML untuk memprediksi rentang pendapatan individu berdasarkan data demografis mereka. Model regresi logistik biner memprediksi apakah suatu nilai termasuk dalam salah satu dari dua kategori, dalam hal ini apakah pendapatan tahunan seseorang berada di atas atau di bawah $50.000.
Tutorial ini menggunakan set data
bigquery-public-data.ml_datasets.census_adult_income
. Set data ini berisi informasi demografis dan pendapatan penduduk
AS dari tahun 2000 dan 2010.
Tujuan
Dalam tutorial ini, Anda akan melakukan tugas-tugas berikut:- Membuat model regresi logistik.
- Mengevaluasi model.
- Buat prediksi menggunakan model.
- Jelaskan hasil yang dihasilkan oleh model.
Biaya
Tutorial ini menggunakan komponen Google Cloud yang dapat ditagih, termasuk:
- BigQuery
- BigQuery ML
Untuk informasi selengkapnya tentang biaya BigQuery, lihat halaman harga BigQuery.
Untuk informasi selengkapnya tentang biaya BigQuery ML, lihat harga BigQuery ML.
Sebelum memulai
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Make sure that billing is enabled for your Google Cloud project.
-
Aktifkan API BigQuery.
Izin yang diperlukan
Untuk membuat model menggunakan BigQuery ML, Anda memerlukan izin IAM berikut:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
bigquery.models.updateMetadata
Untuk menjalankan inferensi, Anda memerlukan izin berikut:
bigquery.models.getData
pada modelbigquery.jobs.create
Pengantar
Tugas umum dalam machine learning adalah mengklasifikasikan data ke dalam salah satu dari dua jenis,
yang dikenal sebagai label. Misalnya, retailer mungkin ingin memprediksi apakah pelanggan tertentu akan membeli produk baru, berdasarkan informasi lain tentang pelanggan tersebut. Dalam hal ini, kedua labelnya mungkin will buy
dan won't buy
. Retailer
dapat membuat set data sedemikian rupa sehingga satu kolom mewakili kedua label,
dan juga berisi informasi pelanggan seperti lokasi pelanggan, pembelian sebelumnya, dan preferensi yang dilaporkan. Kemudian, retailer dapat menggunakan
model regresi logistik biner yang menggunakan informasi pelanggan ini untuk memprediksi
label mana yang paling mewakili setiap pelanggan.
Dalam tutorial ini, Anda akan membuat model regresi logistik biner yang memprediksi apakah pendapatan responden Sensus AS termasuk dalam salah satu dari dua rentang berdasarkan demografi responden.
Membuat set data
Buat set data BigQuery untuk menyimpan model Anda:
Di Konsol Google Cloud, buka halaman BigQuery.
Di panel Explorer, klik nama project Anda.
Klik
View actions > Create dataset.Di halaman Create dataset, lakukan hal berikut:
Untuk Dataset ID, masukkan
census
.Untuk Location type, pilih Multi-region, lalu pilih US (multiple regions in United States).
Set data publik disimpan di
US
multi-region. Agar mudah, simpanlah set data Anda di lokasi yang sama.Jangan ubah setelan default lainnya, lalu klik Create dataset.
Memeriksa data
Periksa set data dan identifikasi kolom mana yang akan digunakan sebagai data pelatihan untuk model regresi logistik. Pilih 100 baris dari tabel census_adult_income
:
SQL
Di Konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, jalankan kueri GoogleSQL berikut:
SELECT age, workclass, marital_status, education_num, occupation, hours_per_week, income_bracket, functional_weight FROM `bigquery-public-data.ml_datasets.census_adult_income` LIMIT 100;
Hasilnya akan terlihat seperti berikut:
DataFrame BigQuery
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan BigQuery DataFrames di panduan memulai BigQuery menggunakan BigQuery DataFrames. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery DataFrames.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Hasil kueri menunjukkan bahwa kolom income_bracket
dalam tabel census_adult_income
hanya memiliki salah satu dari dua nilai: <=50K
atau >50K
. Kolom functional_weight
adalah jumlah individu yang menurut organisasi sensus diwakili oleh baris tertentu. Nilai kolom ini tampaknya tidak terkait dengan nilai income_bracket
untuk baris tertentu.
Menyiapkan data sampel
Dalam tutorial ini, Anda akan memprediksi pendapatan responden sensus berdasarkan atribut berikut:
- Usia
- Jenis pekerjaan yang dilakukan
- Status pernikahan
- Tingkat pendidikan
- Pekerjaan
- Jam kerja per minggu
Untuk membuat prediksi ini, Anda akan mengekstrak informasi dari data responden sensus di
tabel census_adult_income
. Pilih kolom fitur, termasuk:
education_num
, yang mewakili tingkat pendidikan respondenworkclass
, yang mewakili jenis pekerjaan yang dilakukan responden
Mengecualikan kolom yang menduplikasi data. Contoh:
education
, karenaeducation
daneducation_num
menyatakan data yang sama dalam format yang berbeda
Pisahkan data menjadi set pelatihan, evaluasi, dan prediksi dengan membuat
kolom dataframe
baru yang berasal dari kolom functional_weight
.
Beri label pada 80% sumber data untuk melatih model, dan siapkan 20% data yang tersisa untuk evaluasi dan prediksi.
SQL
Untuk menyiapkan data sampel, buat tampilan untuk
berisi data pelatihan. Tampilan ini digunakan oleh pernyataan CREATE MODEL
nanti dalam tutorial ini.
Jalankan kueri yang menyiapkan data sampel:
Di Konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, jalankan kueri berikut:
CREATE OR REPLACE VIEW `census.input_data` AS SELECT age, workclass, marital_status, education_num, occupation, hours_per_week, income_bracket, CASE WHEN MOD(functional_weight, 10) < 8 THEN 'training' WHEN MOD(functional_weight, 10) = 8 THEN 'evaluation' WHEN MOD(functional_weight, 10) = 9 THEN 'prediction' END AS dataframe FROM `bigquery-public-data.ml_datasets.census_adult_income`
Di panel Explorer, luaskan set data
census
dan temukan tampilaninput_data
.Klik nama tampilan untuk membuka panel informasi. Skema tampilan muncul di tab Schema.
DataFrame BigQuery
Buat DataFrame
dengan nama input_data
. Anda akan menggunakan input_data
nanti dalam
tutorial ini untuk melatih model, mengevaluasinya, dan membuat prediksi.
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan BigQuery DataFrames di panduan memulai BigQuery menggunakan BigQuery DataFrames. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery DataFrames.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Membuat model regresi logistik
Buat model regresi logistik dengan data pelatihan yang Anda beri label di bagian sebelumnya.
SQL
Gunakan
pernyataan CREATE MODEL
dan tentukan LOGISTIC_REG
untuk jenis model
Berikut adalah hal-hal penting yang perlu diketahui tentang pernyataan CREATE MODEL
:
Opsi
input_label_cols
menentukan kolom mana dalam pernyataanSELECT
yang akan digunakan sebagai kolom label. Di sini, kolom labelnya adalahincome_bracket
, sehingga model akan mempelajari mana dari dua nilaiincome_bracket
yang paling mungkin untuk baris tertentu berdasarkan nilai lain yang ada di baris tersebut.Anda tidak perlu menentukan apakah model regresi logistik bersifat biner atau multi-class. BigQuery dapat menentukan jenis model yang akan dilatih berdasarkan jumlah nilai unik dalam kolom label.
Opsi
auto_class_weights
ditetapkan keTRUE
untuk menyeimbangkan label class dalam data pelatihan. Secara default, data pelatihan tidak diberi bobot. Jika label dalam data pelatihan tidak seimbang, model dapat belajar untuk lebih banyak memprediksi class label yang paling populer. Dalam hal ini, sebagian besar responden dalam set data berada dalam kelompok berpendapatan lebih rendah. Hal ini dapat menyebabkan model yang memprediksi terlalu banyak kelompok pendapatan yang lebih rendah. Bobot class menyeimbangkan label class dengan menghitung bobot untuk setiap class dengan proporsi yang terbalik dengan frekuensi class tersebut.Pernyataan
SELECT
membuat kueri tabel virtualinput_data
yang berisi data pelatihan. KlausaWHERE
memfilter baris diinput_data
sehingga hanya baris yang diberi label sebagai data pelatihan yang digunakan untuk melatih model.
Jalankan kueri yang membuat model regresi logistik:
Di Konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, jalankan kueri berikut:
CREATE OR REPLACE MODEL `census.census_model` OPTIONS ( model_type='LOGISTIC_REG', auto_class_weights=TRUE, data_split_method='NO_SPLIT', input_label_cols=['income_bracket'], max_iterations=15) AS SELECT * EXCEPT(dataframe) FROM `census.input_data` WHERE dataframe = 'training'
Di panel Explorer, luaskan set data
census
, lalu folder Models.Klik model census_model untuk membuka panel informasi.
Klik tab Schema. Skema model mencantumkan atribut yang digunakan BigQuery ML untuk melakukan regresi logistik. Skema akan terlihat mirip dengan yang berikut ini:
DataFrame BigQuery
Gunakan metode
fit
untuk melatih model dan metode
to_gbq
untuk menyimpannya ke set data Anda.
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan BigQuery DataFrames di panduan memulai BigQuery menggunakan BigQuery DataFrames. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi BigQuery DataFrames.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Mengevaluasi performa model
Setelah membuat model, evaluasi performa model terhadap data yang sebenarnya.
SQL
Fungsi
fungsi ML.EVALUATE
mengevaluasi nilai yang diprediksi yang dihasilkan oleh model terhadap
data sebenarnya.
Untuk input, fungsi ML.EVALUATE
menggunakan model yang dilatih dan baris dari tampilan input_data
yang memiliki evaluation
sebagai nilai kolom dataframe
. Fungsi ini menampilkan satu baris statistik tentang model.
Jalankan kueri ML.EVALUATE
:
Di Konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, jalankan kueri berikut:
SELECT * FROM ML.EVALUATE (MODEL `census.census_model`, ( SELECT * FROM `census.input_data` WHERE dataframe = 'evaluation' ) )
Hasilnya akan terlihat seperti berikut:
DataFrame BigQuery
Gunakan metode
score
untuk mengevaluasi model berdasarkan data sebenarnya.
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan BigQuery DataFrames di panduan memulai BigQuery menggunakan BigQuery DataFrames. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi BigQuery DataFrames.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Anda juga dapat melihat panel informasi model di konsol Google Cloud untuk melihat metrik evaluasi yang dihitung selama pelatihan:
Memprediksi rentang pendapatan
Identifikasi kelompok pendapatan yang kemungkinan mencakup responden tertentu menggunakan model.
SQL
Gunakan
fungsi ML.PREDICT
untuk membuat prediksi tentang kemungkinan kategori pendapatan. Masukkan model yang dilatih dan
baris dari tampilaninput_data
yang memiliki prediction
sebagai nilai kolom
dataframe
.
Jalankan kueri ML.PREDICT
:
Di Konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, jalankan kueri berikut:
SELECT * FROM ML.PREDICT (MODEL `census.census_model`, ( SELECT * FROM `census.input_data` WHERE dataframe = 'prediction' ) )
Hasilnya akan terlihat seperti berikut:
predicted_income_bracket
adalah prediksi nilai income_bracket
.
DataFrame BigQuery
Gunakan metode
predict
untuk membuat prediksi tentang kemungkinan kategori pendapatan.
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan BigQuery DataFrames di panduan memulai BigQuery menggunakan BigQuery DataFrames. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery DataFrames.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Menjelaskan hasil prediksi
Untuk memahami alasan model menghasilkan hasil prediksi ini, Anda dapat menggunakan
fungsi ML.EXPLAIN_PREDICT
.
ML.EXPLAIN_PREDICT
adalah versi yang diperluas dari fungsi ML.PREDICT
.
ML.EXPLAIN_PREDICT
tidak hanya menghasilkan output hasil prediksi, tetapi juga menghasilkan
kolom tambahan untuk menjelaskan hasil prediksi. Dalam praktiknya, Anda dapat menjalankan
ML.EXPLAIN_PREDICT
, bukan ML.PREDICT
. Untuk mengetahui informasi selengkapnya, lihat Ringkasan Explainable AI BigQuery ML.
Jalankan kueri ML.EXPLAIN_PREDICT
:
Di Konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, jalankan kueri berikut:
SELECT * FROM ML.EXPLAIN_PREDICT(MODEL `census.census_model`, ( SELECT * FROM `census.input_data` WHERE dataframe = 'evaluation'), STRUCT(3 as top_k_features))
Hasilnya akan terlihat seperti berikut:
Untuk model regresi logistik, nilai Shapley digunakan untuk menghasilkan nilai atribusi fitur untuk setiap fitur dalam model. ML.EXPLAIN_PREDICT
menghasilkan
tiga atribusi fitur teratas per baris tampilan input_data
karena
top_k_features
ditetapkan ke 3
dalam kueri. Atribusi ini diurutkan menurut nilai absolut atribusi dalam urutan menurun. Di baris 1 contoh
ini, fitur hours_per_week
berkontribusi paling banyak terhadap prediksi
keseluruhan, tetapi di baris 2, occupation
berkontribusi paling banyak terhadap
prediksi keseluruhan.
Menjelaskan model secara global
Untuk mengetahui fitur mana yang umumnya paling penting guna menentukan
kelompok pendapatan, Anda dapat menggunakan
fungsi ML.GLOBAL_EXPLAIN
.
Untuk menggunakan ML.GLOBAL_EXPLAIN
, Anda harus melatih ulang model dengan
opsi ENABLE_GLOBAL_EXPLAIN
yang disetel ke TRUE
.
Latih ulang dan dapatkan penjelasan global untuk model:
Di Konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, jalankan kueri berikut untuk melatih ulang model:
CREATE OR REPLACE MODEL `census.census_model` OPTIONS ( model_type='LOGISTIC_REG', auto_class_weights=TRUE, enable_global_explain=TRUE, input_label_cols=['income_bracket'] ) AS SELECT * EXCEPT(dataframe) FROM `census.input_data` WHERE dataframe = 'training'
Di editor kueri, jalankan kueri berikut untuk mendapatkan penjelasan global:
SELECT * FROM ML.GLOBAL_EXPLAIN(MODEL `census.census_model`)
Hasilnya akan terlihat seperti berikut:
Pembersihan
Agar akun Google Cloud Anda tidak dikenai biaya untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus resource satu per satu.
Menghapus set data Anda
Jika project Anda dihapus, semua set data dan semua tabel dalam project akan dihapus. Jika ingin menggunakan kembali project tersebut, Anda dapat menghapus set data yang dibuat dalam tutorial ini:
Jika perlu, buka halaman BigQuery di konsol Google Cloud.
Di navigasi, klik set data census yang Anda buat.
Klik Delete dataset di sisi kanan jendela. Tindakan ini akan menghapus set data dan model.
Di kotak dialog Delete dataset, konfirmasi perintah hapus dengan mengetikkan nama set data Anda (
census
), lalu klik Delete.
Menghapus project Anda
Untuk menghapus project:
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Langkah berikutnya
- Untuk ringkasan BigQuery ML, lihat Pengantar BigQuery ML.
- Untuk informasi tentang cara membuat model, lihat halaman sintaksis
CREATE MODEL
.