Tutorial ini mengajarkan cara menggunakan penyesuaian hyperparameter di BigQuery ML untuk menyesuaikan model machine learning dan meningkatkan performanya.
Anda melakukan penyesuaian hyperparameter dengan menentukan opsi NUM_TRIALS
pernyataan CREATE MODEL
, bersama dengan opsi khusus model lainnya. Saat Anda menetapkan opsi ini, BigQuery ML akan melatih beberapa versi, atau uji coba model, masing-masing dengan parameter yang sedikit berbeda, dan menampilkan uji coba yang berperforma terbaik.
Tutorial ini menggunakan tabel contoh tlc_yellow_trips_2018
publik, yang berisi informasi tentang perjalanan taksi di New York City pada tahun 2018.
Tujuan
Tutorial ini memandu Anda menyelesaikan tugas-tugas berikut:
- Menggunakan
pernyataan
CREATE MODEL
untuk membuat model regresi linear dasar pengukuran. - Mengevaluasi model dasar pengukuran menggunakan
fungsi
ML.EVALUATE
. - Menggunakan pernyataan
CREATE MODEL
dengan opsi penyesuaian hyperparameter untuk melatih dua puluh uji coba model regresi linear. - Meninjau uji coba menggunakan fungsi
ML.TRIAL_INFO
. - Mengevaluasi uji coba menggunakan fungsi
ML.EVALUATE
. - Dapatkan prediksi tentang perjalanan taksi dari model optimal di antara uji coba dengan menggunakan fungsi
ML.PREDICT
.
Biaya
Tutorial ini menggunakan komponen Google Cloud yang 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.
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.
Membuat tabel data pelatihan
Buat tabel data pelatihan, berdasarkan subset data tabel tlc_yellow_trips_2018
.
Ikuti langkah-langkah berikut untuk membuat tabel:
Di Konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, tempel kueri berikut dan klik Jalankan:
CREATE OR REPLACE TABLE `bqml_tutorial.taxi_tip_input` AS SELECT * EXCEPT (tip_amount), tip_amount AS label FROM `bigquery-public-data.new_york_taxi_trips.tlc_yellow_trips_2018` WHERE tip_amount IS NOT NULL LIMIT 100000;
Membuat model regresi linear dasar pengukuran
Buat model regresi linear tanpa penyesuaian hyperparameter dan latih pada data tabel taxi_tip_input
.
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.baseline_taxi_tip_model` OPTIONS ( MODEL_TYPE = 'LINEAR_REG' ) AS SELECT * FROM `bqml_tutorial.taxi_tip_input`;
Kueri membutuhkan waktu sekitar 2 menit untuk menyelesaikannya.
Mengevaluasi model dasar pengukuran
Evaluasi performa model menggunakan fungsi ML.EVALUATE
.
Fungsi ML.EVALUATE
mengevaluasi prediksi rating konten yang ditampilkan oleh
model terhadap metrik evaluasi yang dihitung selama pelatihan 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.baseline_taxi_tip_model`);
Hasilnya akan terlihat seperti berikut:
+---------------------+--------------------+------------------------+-----------------------+---------------------+---------------------+ | mean_absolute_error | mean_squared_error | mean_squared_log_error | median_absolute_error | r2_score | explained_variance | +---------------------+--------------------+------------------------+-----------------------+---------------------+---------------------+ | 2.5853895559690323 | 23760.416358496139 | 0.017392406523370374 | 0.0044248227819481123 | -1934.5450533482465 | -1934.3513857946277 | +---------------------+--------------------+------------------------+-----------------------+---------------------+---------------------+
Nilai r2_score
untuk model dasar pengukuran negatif, yang menunjukkan
kesesuaian yang buruk untuk data; semakin dekat
skor R2
ke 1, semakin baik kesesuaian model.
Membuat model regresi linear dengan penyesuaian hyperparameter
Buat model regresi linear dengan penyesuaian hyperparameter dan latih pada data tabel taxi_tip_input
.
Anda menggunakan opsi penyesuaian hyperparameter berikut dalam pernyataan CREATE MODEL
:
- Opsi
NUM_TRIALS
untuk menetapkan jumlah uji coba menjadi dua puluh. - Opsi
MAX_PARALLEL_TRIALS
untuk menjalankan dua uji coba di setiap tugas pelatihan, dengan total sepuluh tugas dan dua puluh uji coba. Hal ini akan mengurangi waktu pelatihan yang diperlukan. Namun, kedua uji coba serentak tidak mendapatkan manfaat dari hasil pelatihan satu sama lain. - Opsi
L1_REG
untuk mencoba berbagai nilai regularisasi L1 dalam berbagai uji coba. Regularisasi L1 menghapus fitur yang tidak relevan dari model, yang membantu mencegah overfitting.
Opsi penyesuaian hyperparameter lainnya yang didukung oleh model menggunakan nilai defaultnya, seperti berikut:
L1_REG
:0
HPARAM_TUNING_ALGORITHM
:'VIZIER_DEFAULT'
HPARAM_TUNING_OBJECTIVES
:['R2_SCORE']
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.hp_taxi_tip_model` OPTIONS ( MODEL_TYPE = 'LINEAR_REG', NUM_TRIALS = 20, MAX_PARALLEL_TRIALS = 2, L1_REG = HPARAM_RANGE(0, 5)) AS SELECT * FROM `bqml_tutorial.taxi_tip_input`;
Kueri membutuhkan waktu sekitar 20 menit untuk menyelesaikannya.
Mendapatkan informasi tentang uji coba pelatihan
Dapatkan informasi tentang semua uji coba, termasuk nilai hyperparameter, tujuan, dan statusnya, dengan menggunakan fungsi ML.TRIAL_INFO
. Fungsi ini
juga menampilkan informasi tentang uji coba mana yang memiliki performa terbaik, berdasarkan
informasi ini.
Ikuti langkah-langkah berikut untuk mendapatkan informasi uji coba:
Di Konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, tempel kueri berikut dan klik Jalankan:
SELECT * FROM ML.TRIAL_INFO(MODEL `bqml_tutorial.hp_taxi_tip_model`) ORDER BY is_optimal DESC;
Hasilnya akan terlihat seperti berikut:
+----------+-------------------------------------+-----------------------------------+--------------------+--------------------+-----------+---------------+------------+ | trial_id | hyperparameters | hparam_tuning_evaluation_metrics | training_loss | eval_loss | status | error_message | is_optimal | +----------+-------------------------------------+-----------------------------------+--------------------+--------------------+-----------+---------------+------------+ | 7 | {"l1_reg":"4.999999999999985"} | {"r2_score":"0.653653627638174"} | 4.4677841296238165 | 4.478469742512195 | SUCCEEDED | NULL | true | | 2 | {"l1_reg":"2.402163664510254E-11"} | {"r2_score":"0.6532493667964732"} | 4.457692508421795 | 4.483697081650438 | SUCCEEDED | NULL | false | | 3 | {"l1_reg":"1.2929452948742316E-7"} | {"r2_score":"0.653249366811995"} | 4.45769250849513 | 4.483697081449748 | SUCCEEDED | NULL | false | | 4 | {"l1_reg":"2.5787102060628228E-5"} | {"r2_score":"0.6532493698925899"} | 4.457692523040582 | 4.483697041615808 | SUCCEEDED | NULL | false | | ... | ... | ... | ... | ... | ... | ... | ... | +----------+-------------------------------------+-----------------------------------+--------------------+--------------------+-----------+---------------+------------+
Nilai kolom
is_optimal
menunjukkan bahwa uji coba 7 adalah model optimal yang ditampilkan oleh penyesuaian.
Mengevaluasi uji coba model yang disesuaikan
Evaluasi performa uji coba menggunakan fungsi ML.EVALUATE
.
Fungsi ML.EVALUATE
mengevaluasi prediksi rating konten yang ditampilkan oleh
model terhadap metrik evaluasi yang dihitung selama pelatihan untuk semua
uji coba.
Ikuti langkah-langkah berikut untuk mengevaluasi uji coba model:
Di Konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, tempel kueri berikut dan klik Jalankan:
SELECT * FROM ML.EVALUATE(MODEL `bqml_tutorial.hp_taxi_tip_model`) ORDER BY r2_score DESC;
Hasilnya akan terlihat seperti berikut:
+----------+---------------------+--------------------+------------------------+-----------------------+--------------------+--------------------+ | trial_id | mean_absolute_error | mean_squared_error | mean_squared_log_error | median_absolute_error | r2_score | explained_variance | +----------+---------------------+--------------------+------------------------+-----------------------+--------------------+--------------------+ | 7 | 1.151814398002232 | 4.109811493266523 | 0.4918733252641176 | 0.5736103414025084 | 0.6652110305659145 | 0.6652144696114834 | | 19 | 1.1518143358927102 | 4.109811921460791 | 0.4918672150119582 | 0.5736106106914161 | 0.6652109956848206 | 0.6652144346901685 | | 8 | 1.152747850702547 | 4.123625876152422 | 0.4897808307399327 | 0.5731702310239184 | 0.6640856984144734 | 0.664088410199906 | | 5 | 1.152895108945439 | 4.125775524878872 | 0.48939088205957937 | 0.5723300569616766 | 0.6639105860807425 | 0.6639132416838652 | | ... | ... | ... | ... | ... | ... | ... | +----------+---------------------+--------------------+------------------------+-----------------------+--------------------+--------------------+
Nilai
r2_score
untuk model optimal, yaitu uji coba 7, adalah0.66521103056591446
, yang menunjukkan peningkatan yang signifikan dibandingkan model dasar pengukuran.
Anda dapat mengevaluasi uji coba tertentu dengan menentukan argumen TRIAL_ID
dalam fungsi ML.EVALUATE
.
Untuk mengetahui informasi selengkapnya tentang perbedaan antara tujuan ML.TRIAL_INFO
dan metrik evaluasi ML.EVALUATE
, lihat Fungsi inferensi model.
Menggunakan model yang dioptimalkan untuk memprediksi tip taksi
Gunakan model optimal yang ditampilkan oleh penyesuaian untuk memprediksi tip untuk berbagai perjalanan
taksi. Model optimal otomatis digunakan oleh fungsi ML.PREDICT
, kecuali jika Anda memilih uji coba yang berbeda dengan menentukan argumen TRIAL_ID
. Prediksi
ditampilkan di kolom predicted_label
.
Ikuti langkah-langkah berikut untuk mendapatkan prediksi:
Di Konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, tempel kueri berikut dan klik Jalankan:
SELECT * FROM ML.PREDICT( MODEL `bqml_tutorial.hp_taxi_tip_model`, ( SELECT * FROM `bqml_tutorial.taxi_tip_input` LIMIT 5 ));
Hasilnya akan terlihat seperti berikut:
+----------+--------------------+-----------+---------------------+---------------------+-----------------+---------------+-----------+--------------------+--------------+-------------+-------+---------+--------------+---------------+--------------+--------------------+---------------------+----------------+-----------------+-------+ | trial_id | predicted_label | vendor_id | pickup_datetime | dropoff_datetime | passenger_count | trip_distance | rate_code | store_and_fwd_flag | payment_type | fare_amount | extra | mta_tax | tolls_amount | imp_surcharge | total_amount | pickup_location_id | dropoff_location_id | data_file_year | data_file_month | label | +----------+--------------------+-----------+---------------------+---------------------+-----------------+---------------+-----------+--------------------+--------------+-------------+-------+---------+--------------+---------------+--------------+--------------------+---------------------+----------------+-----------------+-------+ | 7 | 1.343367839584448 | 2 | 2018-01-15 18:55:15 | 2018-01-15 18:56:18 | 1 | 0 | 1 | N | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 193 | 193 | 2018 | 1 | 0 | | 7 | -1.176072791783461 | 1 | 2018-01-08 10:26:24 | 2018-01-08 10:26:37 | 1 | 0 | 5 | N | 3 | 0.01 | 0 | 0 | 0 | 0.3 | 0.31 | 158 | 158 | 2018 | 1 | 0 | | 7 | 3.839580104168765 | 1 | 2018-01-22 10:58:02 | 2018-01-22 12:01:11 | 1 | 16.1 | 1 | N | 1 | 54.5 | 0 | 0.5 | 0 | 0.3 | 55.3 | 140 | 91 | 2018 | 1 | 0 | | 7 | 4.677393985230036 | 1 | 2018-01-16 10:14:35 | 2018-01-16 11:07:28 | 1 | 18 | 1 | N | 2 | 54.5 | 0 | 0.5 | 0 | 0.3 | 55.3 | 138 | 67 | 2018 | 1 | 0 | | 7 | 7.938988937253062 | 2 | 2018-01-16 07:05:15 | 2018-01-16 08:06:31 | 1 | 17.8 | 1 | N | 1 | 54.5 | 0 | 0.5 | 0 | 0.3 | 66.36 | 132 | 255 | 2018 | 1 | 11.06 | +----------+--------------------+-----------+---------------------+---------------------+-----------------+---------------+-----------+--------------------+--------------+-------------+-------+---------+--------------+---------------+--------------+--------------------+---------------------+----------------+-----------------+-------+
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.
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 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.