Dalam tutorial ini, Anda menggunakan model regresi linear dalam BigQuery ML untuk memprediksi berat penguin berdasarkan informasi demografis penguin. Regresi linear adalah jenis model regresi yang menghasilkan nilai berkelanjutan dari kombinasi linear fitur input.
Tutorial ini menggunakan
set data
bigquery-public-data.ml_datasets.penguins
.
Tujuan
Dalam tutorial ini, Anda akan melakukan tugas berikut:
- Buat model regresi linear.
- Mengevaluasi model.
- Membuat prediksi menggunakan model tersebut.
Biaya
Tutorial ini menggunakan komponen Google Cloud yang dapat dikenai biaya, 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
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.
Membuat model
Anda membuat model regresi linear menggunakan pernyataan CREATE MODEL
dan menentukan LINEAR_REG
untuk jenis model. Membuat model mencakup pelatihan model.
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 labelnya adalahbody_mass_g
. Untuk model regresi linear, kolom label harus bernilai riil, artinya, nilai kolom harus berupa bilangan riil. Pernyataan
SELECT
kueri ini menggunakan kolom berikut di tabelbigquery-public-data.ml_datasets.penguins
untuk memprediksi berat penguin:species
: spesies penguin.island
: pulau tempat penguin tinggal.culmen_length_mm
: panjang culmen penguin dalam milimeter.culmen_depth_mm
: kedalaman batang penguin dalam milimeter.flipper_length_mm
: panjang sirip penguin dalam milimeter.sex
: jenis kelamin penguin.
Klausa
WHERE
dalam pernyataanSELECT
kueri ini,WHERE body_mass_g IS NOT NULL
, mengecualikan baris yang kolombody_mass_g
-nya adalahNULL
.
Jalankan kueri yang membuat model regresi linear Anda:
Di konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, jalankan kueri berikut ini:
CREATE OR REPLACE MODEL `bqml_tutorial.penguins_model` 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;
Perlu waktu sekitar 30 detik untuk membuat model
penguins_model
. Untuk melihat model tersebut, buka panel Explorer, luaskan set databqml_tutorial
, lalu luaskan folder Models.
Mendapatkan statistik pelatihan
Untuk melihat hasil pelatihan model, Anda dapat menggunakan fungsi ML.TRAINING_INFO
, atau melihat statistik di Konsol Google Cloud. Dalam tutorial ini, Anda akan menggunakan konsol Google Cloud.
Algoritma machine learning membuat model dengan memeriksa banyak contoh dan mencoba menemukan model yang meminimalkan kerugian. Proses ini disebut minimalisasi risiko empiris.
Kerugian adalah akibat dari prediksi yang buruk. Ini adalah angka yang menunjukkan seberapa buruk prediksi model terhadap satu contoh. Jika prediksi model sempurna, kerugiannya nol. Jika tidak, kerugiannya akan lebih besar. Tujuan pelatihan model adalah untuk menemukan set bobot dan bias yang memiliki kerugian rendah, secara rata-rata, di semua contoh.
Lihat statistik pelatihan model yang dihasilkan saat Anda menjalankan kueri CREATE MODEL
:
Di panel Explorer, luaskan set data
bqml_tutorial
, lalu folder Models. Klik penguins_model untuk membuka panel informasi model.Klik tab Training, lalu klik Table. Hasilnya akan terlihat mirip seperti berikut:
Kolom Training Data Loss menunjukkan metrik kerugian yang dihitung setelah model dilatih menggunakan set data pelatihan. Karena Anda melakukan regresi linear, kolom ini menunjukkan nilai rata-rata error kuadrat. Strategi pengoptimalan normal_equation otomatis digunakan untuk pelatihan ini, sehingga hanya satu iterasi yang diperlukan untuk menyatu dengan model akhir. Untuk mengetahui informasi selengkapnya tentang menetapkan strategi pengoptimalan model, lihat
optimize_strategy
.
Evaluasi 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 set data yang cocok dengan skema data yang Anda gunakan untuk melatih model. Dalam lingkungan produksi, Anda harus mengevaluasi model pada data yang berbeda dengan data yang digunakan untuk melatih model.
Jika Anda menjalankan ML.EVALUATE
tanpa memberikan data input, fungsi tersebut akan mengambil metrik evaluasi yang dihitung selama pelatihan. Metrik ini dihitung menggunakan set data evaluasi yang dicadangkan secara otomatis:
SELECT * FROM ML.EVALUATE(MODEL `bqml_tutorial.penguins_model`);
Jalankan kueri ML.EVALUATE
:
Di konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, jalankan kueri berikut ini:
SELECT * FROM ML.EVALUATE(MODEL `bqml_tutorial.penguins_model`, ( SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE body_mass_g IS NOT NULL));
Hasilnya akan terlihat seperti berikut:
Karena Anda melakukan regresi linear, hasilnya mencakup kolom berikut:
mean_absolute_error
mean_squared_error
mean_squared_log_error
median_absolute_error
r2_score
explained_variance
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 terhadap rata-rata. Nilai 1
menunjukkan bahwa model tersebut menjelaskan semua variabilitas data respons di sekitar rerata.
Anda juga dapat melihat panel informasi model di Konsol Google Cloud untuk melihat metrik evaluasi:
Menggunakan model ini untuk memprediksi hasil
Setelah mengevaluasi model, langkah berikutnya adalah menggunakannya untuk memprediksi
hasil. Anda dapat menjalankan fungsi ML.PREDICT
pada model ini untuk memprediksi massa tubuh dalam gram semua penguin yang berada di Kepulauan Biscoe.
Untuk input, fungsi ML.PREDICT
mengambil model terlatih dan set data yang cocok dengan skema data yang digunakan untuk melatih model, kecuali kolom label.
Jalankan kueri ML.PREDICT
:
Di konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, jalankan kueri berikut ini:
SELECT * FROM ML.PREDICT(MODEL `bqml_tutorial.penguins_model`, ( SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE island = 'Biscoe'));
Hasilnya akan terlihat seperti berikut:
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 `bqml_tutorial.penguins_model`, ( SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE island = 'Biscoe'), STRUCT(3 as top_k_features));
Hasilnya akan terlihat seperti berikut:
Untuk model regresi linear, nilai Shapley digunakan untuk menghasilkan nilai atribusi
fitur untuk setiap fitur dalam model. ML.EXPLAIN_PREDICT
menghasilkan
tiga atribusi fitur teratas per baris tabel penguins
karena
top_k_features
ditetapkan ke 3
dalam kueri. Atribusi ini diurutkan berdasarkan
nilai absolut atribusi dalam urutan menurun. Dalam semua contoh, fitur sex
memberikan kontribusi paling besar pada prediksi keseluruhan.
Menjelaskan model secara global
Untuk mengetahui fitur mana yang umumnya paling penting untuk menentukan berat
penguin, 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:
#standardSQL CREATE OR REPLACE MODEL `bqml_tutorial.penguins_model` OPTIONS ( model_type = 'linear_reg', input_label_cols = ['body_mass_g'], enable_global_explain = TRUE) AS SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE body_mass_g IS NOT NULL;
Di editor kueri, jalankan kueri berikut untuk mendapatkan penjelasan global:
SELECT * FROM ML.GLOBAL_EXPLAIN(MODEL `bqml_tutorial.penguins_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.
- 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.
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:
- 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
.