Tutorial ini mengajarkan cara menggunakan
klausa TRANSFORM
pernyataan CREATE MODEL
untuk melakukan rekayasa fitur sekaligus
membuat dan melatih model. Dengan menggunakan klausa TRANSFORM
, Anda dapat menentukan satu atau beberapa fungsi pra-pemrosesan untuk mengubah data input yang Anda gunakan untuk melatih model. Pra-pemrosesan yang Anda terapkan pada model akan otomatis diterapkan saat Anda menggunakan model dengan fungsi
ML.EVALUATE
dan
ML.PREDICT
.
Tutorial ini menggunakan set data
bigquery-public-data.ml_datasets.penguin
publik.
Membuat set data
Buat set data BigQuery untuk menyimpan model ML Anda.
Konsol
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).
Jangan ubah setelan default yang tersisa, lalu klik Create dataset.
bq
Untuk membuat set data baru, gunakan perintah bq mk
dengan flag --location
. Untuk daftar lengkap kemungkinan parameter, lihat referensi
perintah bq mk --dataset
.
Buat set data bernama
bqml_tutorial
dengan lokasi data yang ditetapkan keUS
dan deskripsiBigQuery ML tutorial dataset
:bq --location=US mk -d \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
Perintah ini menggunakan pintasan
-d
, bukan flag--dataset
. Jika Anda menghapus-d
dan--dataset
, perintah defaultnya adalah membuat set data.Pastikan set data telah dibuat:
bq ls
API
Panggil metode datasets.insert
dengan resource set data yang ditentukan.
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
BigQuery DataFrames
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 mengetahui informasi selengkapnya, lihat Menyiapkan ADC untuk lingkungan pengembangan lokal.
Buat model
Buat model regresi linier untuk memprediksi berat penguin dan latih model tersebut menggunakan
tabel sampel penguins
.
Klausa OPTIONS(model_type='linear_reg', input_label_cols=['body_mass_g'])
menunjukkan bahwa Anda membuat
model
regresi linear. Model regresi linear menghasilkan
nilai berkelanjutan dari kombinasi linear fitur input. Kolom
body_mass_g
adalah kolom label input. Untuk model regresi linear,
kolom label harus bernilai riil (artinya, nilai kolom harus berupa
bilangan riil).
Klausa TRANSFORM
kueri ini menggunakan kolom berikut dari pernyataan
SELECT
:
body_mass_g
: Digunakan dalam pelatihan tanpa perubahan apa pun.culmen_depth_mm
: Digunakan dalam pelatihan tanpa perubahan apa pun.flipper_length_mm
: Digunakan dalam pelatihan tanpa perubahan apa pun.bucketized_culmen_length
: Dihasilkan dariculmen_length_mm
dengan mengelompokkanculmen_length_mm
berdasarkan kuantil menggunakan fungsi analisisML.QUANTILE_BUCKETIZE()
.culmen_length_mm
: Nilaiculmen_length_mm
asli, ditransmisikan ke nilaiSTRING
dan digunakan dalam pelatihan.species_sex
: Dihasilkan dari persilanganspecies
dansex
menggunakan fungsiML.FEATURE_CROSS
.
Anda tidak perlu menggunakan semua kolom dari tabel pelatihan
dalam klausaTRANSFORM
.
Klausa WHERE
—WHERE body_mass_g IS NOT NULL AND RAND() < 0.2
—
mengecualikan baris dengan bobot penguin adalah NULL
, dan menggunakan fungsi RAND
untuk mengambil sampel data secara acak.
Ikuti langkah-langkah berikut untuk membuat model:
Di konsol Google Cloud , buka halaman BigQuery.
Di editor kueri, tempel kueri berikut, lalu klik Run:
CREATE OR REPLACE MODEL `bqml_tutorial.penguin_transform` TRANSFORM( body_mass_g, culmen_depth_mm, flipper_length_mm, ML.QUANTILE_BUCKETIZE(culmen_length_mm, 10) OVER () AS bucketized_culmen_length, CAST(culmen_length_mm AS string) AS culmen_length_mm, ML.FEATURE_CROSS(STRUCT(species, sex)) AS species_sex) OPTIONS ( model_type = 'linear_reg', input_label_cols = ['body_mass_g']) AS SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE body_mass_g IS NOT NULL AND RAND() < 0.2;
Kueri memerlukan waktu sekitar 15 menit untuk diselesaikan, setelah itu model
penguin_transform
akan muncul di panel Explorer. Karena kueri tersebut menggunakan pernyataanCREATE MODEL
untuk membuat model, Anda tidak akan melihat hasil kueri.
Mengevaluasi model
Evaluasi performa model menggunakan fungsi ML.EVALUATE
.
Fungsi ML.EVALUATE
mengevaluasi prediksi bobot penguin yang ditampilkan oleh model terhadap bobot penguin sebenarnya dari data pelatihan.
Pernyataan SELECT
dan klausa FROM
bertingkat dari kueri ini sama dengan
pernyataan dan klausa dalam kueri CREATE MODEL
. Karena Anda menggunakan klausa TRANSFORM
saat
membuat model, Anda tidak perlu menentukan kolom dan transformasi
lagi dalam fungsi ML.EVALUATE
. Fungsi ini otomatis mengambilnya
dari model.
Ikuti langkah-langkah berikut untuk mengevaluasi model:
Di konsol Google Cloud , buka halaman BigQuery.
Di editor kueri, tempel kueri berikut, lalu klik Run:
SELECT * FROM ML.EVALUATE( MODEL `bqml_tutorial.penguin_transform`, ( SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE body_mass_g IS NOT NULL ));
Hasilnya akan terlihat seperti berikut:
+---------------------+--------------------+------------------------+-----------------------+--------------------+--------------------+ | mean_absolute_error | mean_squared_error | mean_squared_log_error | median_absolute_error | r2_score | explained_variance | +---------------------+--------------------+------------------------+-----------------------+--------------------+--------------------+ | 64.21134350607677 | 13016.433317859564 | 7.140935762696211E-4 | 15.31788461553515 | 0.9813042531507734 | 0.9813186268757634 | +---------------------+--------------------+------------------------+-----------------------+--------------------+--------------------+
Metrik penting dalam hasil evaluasi adalah skor R2. Skor R2 adalah ukuran statistik yang menentukan apakah prediksi regresi linear memperkirakan data sebenarnya. Nilai
0
menunjukkan bahwa model tidak menjelaskan variabilitas data respons di sekitar nilai rata-rata. Nilai1
menunjukkan bahwa model menjelaskan semua variabilitas data respons di sekitar nilai rata-rata.Untuk mengetahui informasi selengkapnya tentang output fungsi
ML.EVALUATE
, lihat Output.Anda juga dapat memanggil
ML.EVALUATE
tanpa memberikan data input. Pelatihan ini akan menggunakan metrik evaluasi yang dihitung selama pelatihan.
Menggunakan model untuk memprediksi berat penguin
Gunakan model dengan fungsi ML.PREDICT
untuk memprediksi berat penguin jantan.
Fungsi ML.PREDICT
menampilkan nilai prediksi di kolom predicted_label_column_name
, dalam hal ini predicted_body_mass_g
.
Saat menggunakan fungsi ML.PREDICT
, Anda tidak perlu meneruskan semua
kolom yang digunakan dalam pelatihan model. Hanya kolom yang Anda gunakan dalam
klausa TRANSFORM
yang diperlukan. Serupa dengan ML.EVALUATE
, fungsi ML.PREDICT
secara otomatis mengambil kolom dan transformasi TRANSFORM
dari model.
Ikuti langkah-langkah berikut untuk mendapatkan prediksi dari model:
Di konsol Google Cloud , buka halaman BigQuery.
Di editor kueri, tempel kueri berikut, lalu klik Run:
SELECT predicted_body_mass_g FROM ML.PREDICT( MODEL `bqml_tutorial.penguin_transform`, ( SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE sex = 'MALE' ));
Hasilnya akan terlihat seperti berikut:
+-----------------------+ | predicted_body_mass_g | +-----------------------+ | 2810.2868541725757 | +-----------------------+ | 3813.6574220842676 | +-----------------------+ | 4098.844698262214 | +-----------------------+ | 4256.587135004173 | +-----------------------+ | 3008.393497302691 | +-----------------------+ | ... | +-----------------------+