Tutorial ini mengajarkan cara menggunakan
klausa TRANSFORM
dari 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. Prapemrosesan
yang Anda terapkan ke 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.
Tujuan
Tutorial ini memandu Anda menyelesaikan tugas-tugas berikut:
- Membuat model regresi linear untuk memprediksi jenis panggilan layanan menggunakan
pernyataan
CREATE MODEL
. Dalam pernyataanCREATE MODEL
, gunakan fungsiML.QUANTILE_BUCKETIZE
danML.FEATURE_CROSS
untuk memproses data. - Mengevaluasi model menggunakan
fungsi
ML.EVALUATE
. - Mendapatkan prediksi dari model menggunakan
fungsi
ML.PREDICT
.
Biaya
Tutorial ini menggunakan komponen Google Cloudyang dapat ditagih, termasuk:
- BigQuery
- BigQuery ML
Untuk mengetahui informasi selengkapnya tentang biaya BigQuery, lihat halaman harga BigQuery.
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.
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).
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.
bq
Untuk membuat set data baru, gunakan perintah bq mk
dengan flag --location
. Untuk daftar lengkap parameter yang mungkin, lihat
referensi
perintah bq mk --dataset
.
Buat set data bernama
bqml_tutorial
dengan lokasi data 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" } }
Membuat model
Buat model regresi linear untuk memprediksi berat penguin dan melatihnya di
tabel contoh 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, yang 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 klausa TRANSFORM
.
Klausa WHERE
—WHERE body_mass_g IS NOT NULL AND RAND() < 0.2
—mengecualikan baris dengan bobot penguin 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 dan klik Jalankan:
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 bobot penguin yang diprediksi yang ditampilkan oleh
model terhadap bobot penguin yang 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 dan klik Jalankan:
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 2. 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 Model regresi.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
menghasilkan output nilai yang diprediksi 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
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 dan klik Jalankan:
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 | +-----------------------+ | ... | +-----------------------+
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 panel navigasi, klik set data bqml_tutorial yang telah Anda buat.
Di sisi kanan jendela, klik Delete dataset. Tindakan ini akan menghapus set data, tabel, dan semua data.
Di kotak dialog Delete dataset, konfirmasi perintah hapus dengan mengetikkan nama set data Anda (
bqml_tutorial
), lalu klik Delete.
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 berikutnya
- Untuk mempelajari machine learning lebih lanjut, lihat Kursus singkat machine learning.
- Untuk ringkasan BigQuery ML, lihat Pengantar BigQuery ML.
- Untuk mempelajari konsol Google Cloud lebih lanjut, lihat Menggunakan konsol Google Cloud.