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_tutorialdengan lokasi data yang ditetapkan keUSdan 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-ddan--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_mmdengan mengelompokkanculmen_length_mmberdasarkan kuantil menggunakan fungsi analisisML.QUANTILE_BUCKETIZE().culmen_length_mm: Nilaiculmen_length_mmasli, ditransmisikan ke nilaiSTRINGdan digunakan dalam pelatihan.species_sex: Dihasilkan dari persilanganspeciesdansexmenggunakan 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_transformakan muncul di panel Explorer. Karena kueri tersebut menggunakan pernyataanCREATE MODELuntuk 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
0menunjukkan bahwa model tidak menjelaskan variabilitas data respons di sekitar nilai rata-rata. Nilai1menunjukkan 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.EVALUATEtanpa 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 | +-----------------------+ | ... | +-----------------------+