Menggunakan BigQuery ML untuk memprediksi berat penguin


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

  1. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  2. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  3. Enable the BigQuery API.

    Enable the API

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 model
  • bigquery.jobs.create

Membuat set data

Buat set data BigQuery untuk menyimpan model ML Anda:

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka halaman BigQuery

  2. Di panel Explorer, klik nama project Anda.

  3. Klik View actions > Create dataset.

    Buat set data.

  4. 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.

      Halaman 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 pernyataan SELECT yang akan digunakan sebagai kolom label. Di sini, kolom labelnya adalah body_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 tabel bigquery-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 pernyataan SELECT kueri ini, WHERE body_mass_g IS NOT NULL, mengecualikan baris yang kolom body_mass_g-nya adalah NULL.

Jalankan kueri yang membuat model regresi linear Anda:

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. 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;
    
  3. Perlu waktu sekitar 30 detik untuk membuat model penguins_model. Untuk melihat model tersebut, buka panel Explorer, luaskan set data bqml_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:

  1. Di panel Explorer, luaskan set data bqml_tutorial, lalu folder Models. Klik penguins_model untuk membuka panel informasi model.

  2. Klik tab Training, lalu klik Table. Hasilnya akan terlihat mirip seperti berikut:

    Output ML.TRAINING_INFO

    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:

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. 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));
    
  3. Hasilnya akan terlihat seperti berikut:

    Output ML.EVALUATE

    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:

Output ML.EVALUATE

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:

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. 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'));
    
  3. Hasilnya akan terlihat seperti berikut:

    Output ML.PREDICT

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:

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. 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));
    
  3. Hasilnya akan terlihat seperti berikut:

    Output ML.EXPLAIN_PREDICT

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:

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. 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;
    
  3. Di editor kueri, jalankan kueri berikut untuk mendapatkan penjelasan global:

    SELECT
      *
    FROM
      ML.GLOBAL_EXPLAIN(MODEL `bqml_tutorial.penguins_model`)
    
  4. Hasilnya akan terlihat seperti berikut:

    Output ML.GLOBAL_EXPLAIN

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:

  1. Jika perlu, buka halaman BigQuery di konsol Google Cloud.

    Buka halaman BigQuery

  2. Di navigasi, klik set data bqml_tutorial yang telah Anda buat.

  3. Klik Delete dataset di sisi kanan jendela. Tindakan ini akan menghapus set data, tabel, dan semua data.

  4. 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:

  1. Di konsol Google Cloud, buka halaman Manage resource.

    Buka Manage resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

Langkah selanjutnya