Dalam tutorial ini, Anda menggunakan model regresi logistik biner dalam ML BigQuery 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 turun di atas atau di bawah $50.000.
Tutorial ini menggunakan
set data
bigquery-public-data.ml_datasets.census_adult_income
. {i>Dataset<i} 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.
- Membuat prediksi menggunakan model tersebut.
- 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.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
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 menjadi 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 label tersebut mungkin adalah 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. Retailer kemudian 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 masuk ke dalam salah satu dari dua rentang berdasarkan atribut demografis 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. Jalankan kueri GoogleSQL
untuk menampilkan 100 baris dari tabel census_adult_income
:
Di konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, jalankan kueri berikut ini:
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:
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
tampak tidak terkait dengan nilai income_bracket
untuk baris tertentu.
Menyiapkan data sampel
Dalam tutorial ini, Anda memprediksi pendapatan responden sensus berdasarkan atribut berikut:
- Usia
- Jenis pekerjaan yang dilakukan
- Status pernikahan
- Tingkat pendidikan
- Pekerjaan
- Jam kerja per minggu
Untuk melakukannya, buat tampilan yang berisi data yang akan digunakan untuk melatih dan mengevaluasi model, serta membuat prediksi.
Tampilan ini digunakan oleh pernyataan CREATE MODEL
nanti dalam
tutorial ini.
Kueri yang membuat tampilan mengekstrak data responden sensus, termasuk
education_num
, yang mewakili tingkat pendidikan responden, dan
workclass
, yang mewakili jenis pekerjaan yang dilakukan responden. Kueri ini mengecualikan beberapa kolom yang menduplikasi data: misalnya, kolom education
dan education_num
dalam tabel census_adult_income
menyatakan data yang sama dalam format yang berbeda sehingga kueri ini mengecualikan kolom education
.
Kolom dataframe
baru dibuat yang menggunakan kolom functional_weight
pada tabel census_adult_income
guna memberi label 80% sumber data untuk melatih model, dan mencadangkan data yang tersisa untuk evaluasi dan prediksi.
Jalankan kueri yang menyiapkan data sampel:
Di konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, jalankan kueri berikut ini:
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 akan muncul di tab Skema.
Membuat model regresi logistik
Anda membuat model regresi logistik menggunakan pernyataan CREATE MODEL
dan menentukan LOGISTIC_REG
untuk jenis model. Bagian dari pembuatan model mencakup melatih model pada data pelatihan yang Anda beri label di bagian sebelumnya.
Berikut adalah hal-hal berguna 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 label 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.Tidak perlu menentukan apakah model regresi logistik adalah biner atau multiclass. BigQuery dapat menentukan jenis model yang akan dilatih berdasarkan jumlah nilai unik dalam kolom label.
Opsi
auto_class_weights
disetel 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
mengkueri tampilaninput_data
yang berisi data pelatihan. KlausaWHERE
memfilter baris dalaminput_data
sehingga hanya baris yang diberi label sebagai data pelatihan yang digunakan untuk melatih model.
Jalankan kueri yang membuat model regresi logistik Anda:
Di konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, jalankan kueri berikut ini:
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 tersebut akan terlihat seperti berikut:
Menggunakan fungsi ML.EVALUATE
untuk mengevaluasi model
Setelah membuat model, evaluasi performa model menggunakan
fungsi ML.EVALUATE
.
Fungsi ML.EVALUATE
mengevaluasi nilai prediksi yang dihasilkan oleh model
berdasarkan data aktual.
Untuk input, fungsi ML.EVALUATE
menggunakan model terlatih 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 ini:
SELECT * FROM ML.EVALUATE (MODEL `census.census_model`, ( SELECT * FROM `census.input_data` WHERE dataframe = 'evaluation' ) )
Hasilnya akan terlihat seperti berikut:
Anda juga dapat melihat panel informasi model di Konsol Google Cloud untuk melihat metrik evaluasi yang dihitung selama pelatihan:
Gunakan fungsi ML.PREDICT
untuk memprediksi kelompok pendapatan
Untuk mengidentifikasi kategori pendapatan tempat responden tertentu berada, gunakan
fungsi ML.PREDICT
.
Untuk input, fungsi ML.PREDICT
menggunakan model terlatih dan baris
dari tampilan input_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 ini:
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 nilaiincome_bracket
.
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 menampilkan 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, baca
ringkasan BigQuery ML explainable AI.
Jalankan kueri ML.EXPLAIN_PREDICT
:
Di konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, jalankan kueri berikut ini:
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 berdasarkan
nilai absolut atribusi dalam urutan menurun. Di baris 1 contoh ini, fitur hours_per_week
memberikan kontribusi paling besar pada prediksi keseluruhan, tetapi di baris 2, occupation
memberikan kontribusi terbesar pada prediksi keseluruhan.
Menjelaskan model secara global
Untuk mengetahui fitur mana yang secara umum paling penting dalam 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 ditetapkan 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 selanjutnya
- Untuk ringkasan BigQuery ML, lihat Pengantar BigQuery ML.
- Untuk informasi tentang cara membuat model, lihat halaman sintaksis
CREATE MODEL
.