Tutorial ini mengajarkan cara menggunakan model pengklasifikasi hierarki yang ditingkatkan untuk memprediksi rentang pendapatan individu berdasarkan data demografis mereka. Model memprediksi apakah suatu nilai termasuk dalam salah satu dari dua kategori, dalam hal ini,apakah pendapatan tahunan individu 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
Tutorial ini memandu Anda menyelesaikan tugas-tugas berikut:
- Membuat model hierarki yang ditingkatkan untuk memprediksi rentang pendapatan responden sensus
menggunakan
pernyataan
CREATE MODEL
. - Mengevaluasi model menggunakan
fungsi
ML.EVALUATE
. - Mendapatkan prediksi dari model menggunakan
fungsi
ML.PREDICT
.
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
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- BigQuery secara otomatis diaktifkan dalam project baru.
Untuk mengaktifkan BigQuery dalam project yang sudah ada, buka
Enable the BigQuery API.
Izin yang Diperlukan
- Untuk membuat set data, Anda memerlukan izin
IAM
bigquery.datasets.create
. Untuk membuat resource koneksi, Anda memerlukan izin berikut:
bigquery.connections.create
bigquery.connections.get
Untuk membuat model, Anda memerlukan izin berikut:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
bigquery.connections.delegate
Untuk menjalankan inferensi, Anda memerlukan izin berikut:
bigquery.models.getData
bigquery.jobs.create
Untuk mengetahui informasi lebih lanjut tentang peran dan izin IAM di BigQuery, baca Pengantar IAM.
Membuat set data
Buat set data BigQuery untuk menyimpan model ML 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
bqml_tutorial
.Untuk Location type, pilih Multi-region, lalu pilih US (multiple regions in United States).
Set data publik disimpan di
US
multi-region. Untuk mempermudah, simpan set data Anda di lokasi yang sama.Jangan ubah setelan default yang tersisa, lalu klik Create dataset.
Menyiapkan data sampel
Model yang Anda buat dalam tutorial ini memprediksi kelompok pendapatan untuk responden sensus, berdasarkan fitur berikut:
- Usia
- Jenis pekerjaan yang dilakukan
- Status pernikahan
- Tingkat pendidikan
- Pekerjaan
- Jam kerja per minggu
Kolom education
tidak disertakan dalam data pelatihan, karena kolom education
dan education_num
sama-sama mengekspresikan tingkat pendidikan responden dalam format yang berbeda.
Anda memisahkan data ke dalam set pelatihan, evaluasi, dan prediksi dengan membuat
kolom dataframe
baru yang berasal dari kolom functional_weight
.
Delapan puluh persen data digunakan untuk melatih model, dan dua puluh persen data yang tersisa digunakan 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 `bqml_tutorial.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 Penjelajah, luaskan set data
bqml_tutorial
dan temukan tampilaninput_data
.Klik nama tampilan untuk membuka panel informasi. Skema tampilan muncul di tab Schema.
DataFrame BigQuery
Buat DataFrame bernama 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 ADC untuk lingkungan pengembangan lokal.
Membuat model boosted tree
Buat model boosted tree untuk memprediksi rentang pendapatan responden sensus, dan latih model tersebut pada data sensus. Kueri membutuhkan waktu sekitar 30 menit untuk menyelesaikannya.
SQL
Ikuti langkah-langkah berikut untuk membuat model:
Di Konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, tempel kueri berikut dan klik Jalankan:
CREATE MODEL `bqml_tutorial.tree_model` OPTIONS(MODEL_TYPE='BOOSTED_TREE_CLASSIFIER', BOOSTER_TYPE = 'GBTREE', NUM_PARALLEL_TREE = 1, MAX_ITERATIONS = 50, TREE_METHOD = 'HIST', EARLY_STOP = FALSE, SUBSAMPLE = 0.85, INPUT_LABEL_COLS = ['income_bracket']) AS SELECT * EXCEPT(dataframe) FROM `bqml_tutorial.input_data` WHERE dataframe = 'training';
Setelah kueri selesai, model
tree_model
akan muncul di panel Explorer. Karena kueri tersebut menggunakan pernyataanCREATE MODEL
untuk membuat model, Anda tidak akan melihat hasil kueri.
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 ADC untuk lingkungan pengembangan lokal.
Mengevaluasi model
SQL
Ikuti langkah-langkah berikut untuk mengevaluasi model:
Di Konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, tempel kueri berikut dan klik Jalankan:
SELECT * FROM ML.EVALUATE (MODEL `bqml_tutorial.tree_model`, ( SELECT * FROM `bqml_tutorial.input_data` WHERE dataframe = 'evaluation' ) );
Hasilnya akan terlihat seperti berikut:
+---------------------+---------------------+---------------------+-------------------+---------------------+---------------------+ | precision | recall | accuracy | f1_score | log_loss | roc_auc | +---------------------+---------------------+---------------------+-------------------+-------------------------------------------+ | 0.67192429022082023 | 0.57880434782608692 | 0.83942963422194672 | 0.621897810218978 | 0.34405456040833338 | 0.88733566433566435 | +---------------------+---------------------+ --------------------+-------------------+---------------------+---------------------+
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 ADC untuk lingkungan pengembangan lokal.
Metrik evaluasi menunjukkan performa model yang baik, khususnya,
fakta bahwa
skor roc_auc
lebih besar dari 0.8
.
Untuk informasi selengkapnya tentang metrik evaluasi, lihat Model klasifikasi.
Menggunakan model untuk memprediksi klasifikasi
SQL
Ikuti langkah-langkah berikut untuk memperkirakan data dengan model:
Di Konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, tempel kueri berikut dan klik Jalankan:
SELECT * FROM ML.PREDICT (MODEL `bqml_tutorial.tree_model`, ( SELECT * FROM `bqml_tutorial.input_data` WHERE dataframe = 'prediction' ) );
Beberapa kolom pertama hasil akan terlihat seperti berikut:
+---------------------------+--------------------------------------+-------------------------------------+ | predicted_income_bracket | predicted_income_bracket_probs.label | predicted_income_bracket_probs.prob | +---------------------------+--------------------------------------+-------------------------------------+ | <=50K | >50K | 0.05183430016040802 | +---------------------------+--------------------------------------+-------------------------------------+ | | <50K | 0.94816571474075317 | +---------------------------+--------------------------------------+-------------------------------------+ | <=50K | >50K | 0.00365859130397439 | +---------------------------+--------------------------------------+-------------------------------------+ | | <50K | 0.99634140729904175 | +---------------------------+--------------------------------------+-------------------------------------+ | <=50K | >50K | 0.037775970995426178 | +---------------------------+--------------------------------------+-------------------------------------+ | | <50K | 0.96222406625747681 | +---------------------------+--------------------------------------+-------------------------------------+
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 ADC untuk lingkungan pengembangan lokal.
predicted_income_bracket
berisi nilai yang diprediksi dari model.
predicted_income_bracket_probs.label
menampilkan dua label yang harus dipilih oleh
model, dan kolom predicted_income_bracket_probs.prob
menunjukkan probabilitas label yang diberikan adalah
label yang benar.
Untuk mengetahui informasi selengkapnya tentang kolom output, lihat Model klasifikasi.
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.
- Anda dapat menghapus project yang dibuat.
- Atau, Anda dapat menyimpan project dan menghapus set data.
Menghapus set data
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 bqml_tutorial yang telah Anda buat.
Klik Delete dataset di sisi kanan jendela. Tindakan ini akan menghapus set data, tabel, dan semua data.
Pada dialog Hapus set data, konfirmasi perintah hapus dengan mengetikkan nama set data Anda (
bqml_tutorial
), lalu klik Hapus.
Menghapus project Anda
Untuk menghapus project:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Langkah selanjutnya
- Pelajari cara membuat model klasifikasi regresi logistik.
- Untuk ringkasan BigQuery ML, lihat Pengantar AI dan ML di BigQuery.