Mulai Menggunakan BigQuery ML

1. Ringkasan

BigQuery ML (BQML) memungkinkan pengguna membuat dan menjalankan model machine learning di BigQuery menggunakan kueri SQL. Tujuannya adalah untuk membuat machine learning tersedia lebih luas dengan memungkinkan praktisi SQL membuat model menggunakan alat yang sudah ada dan untuk meningkatkan kecepatan pengembangan dengan meniadakan kebutuhan akan pemindahan data.

Yang akan Anda bangun

Anda akan menggunakan contoh set data Analytics 360 untuk membuat model yang memprediksi apakah pengunjung akan melakukan transaksi atau tidak.

Yang akan Anda pelajari

Cara membuat, mengevaluasi, dan menggunakan model machine learning di BigQuery

Yang Anda butuhkan

2. Penyiapan dan Persyaratan

Penyiapan lingkungan mandiri

  1. Login ke Cloud Console lalu buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

Ingat project ID, nama unik di semua project Google Cloud (maaf, nama di atas telah digunakan dan tidak akan berfungsi untuk Anda!) Project ID tersebut selanjutnya akan dirujuk di codelab ini sebagai PROJECT_ID.

  1. Selanjutnya, Anda harus mengaktifkan penagihan di Cloud Console untuk menggunakan resource Google Cloud.

Menjalankan operasi dalam codelab ini seharusnya tidak memerlukan banyak biaya, bahkan mungkin tidak sama sekali. Pastikan untuk mengikuti petunjuk yang ada di bagian "Membersihkan" yang memberi tahu Anda cara menonaktifkan resource sehingga tidak menimbulkan penagihan di luar tutorial ini. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai$300 USD.

Membuka Konsol BigQuery

Di Google Developers Console, klik ikon Menu di kiri atas layar.

{i>select-bq_0.png<i}

Scroll ke bagian bawah menu, lalu klik BigQuery:

select-bq.png

Tindakan ini akan membuka konsol BigQuery di tab browser baru, yang terlihat seperti ini:

8b0218390329e8cf.png

Tapi, tidak ada apa-apa di sini! Untungnya, ada banyak {i>dataset<i} publik yang tersedia di BigQuery untuk Anda jelajahi.

3. Membuat set data

Untuk membuat set data, klik panah di samping nama project Anda dan pilih buat set data baru.

4f51bf57291a59db.pngS

Selanjutnya, beri nama {i>dataset <i}bqml_codelab{i> <i}dan klik OK.

63e32478a5652fbc.pngS

4. Membuat Model

Regresi logistik untuk Analytics 360

Sekarang, mari kita beralih ke tugas kita. Berikut adalah cara membuat model untuk memprediksi apakah pengunjung akan melakukan transaksi atau tidak.

#standardSQL
CREATE OR REPLACE MODEL `bqml_codelab.sample_model` 
OPTIONS(model_type='logistic_reg') AS
SELECT
  IF(totals.transactions IS NULL, 0, 1) AS label,
  IFNULL(device.operatingSystem, "") AS os,
  device.isMobile AS is_mobile,
  IFNULL(geoNetwork.country, "") AS country,
  IFNULL(totals.pageviews, 0) AS pageviews
FROM
  `bigquery-public-data.google_analytics_sample.ga_sessions_*`
WHERE
  _TABLE_SUFFIX BETWEEN '20160801' AND '20170631'
LIMIT 100000;

Di sini, kami menggunakan sistem operasi perangkat pengunjung, baik perangkat tersebut adalah perangkat seluler, negara pengunjung, dan jumlah tayangan halaman sebagai kriteria apakah transaksi telah dilakukan atau tidak.

Dalam hal ini, "codelab" adalah nama set data dan "sample_model" adalah nama model kita. Jenis model yang ditentukan adalah regresi logistik biner. Dalam hal ini, label adalah yang ingin kita sesuaikan. Perlu diketahui bahwa jika Anda hanya tertarik pada 1 kolom, ini adalah cara alternatif untuk menetapkan input_label_cols. Kami juga membatasi data pelatihan kami pada data pelatihan yang dikumpulkan dari 1 Agustus 2016 hingga 31 Juni 2017. Kami melakukan ini untuk menyimpan data bulan lalu untuk "prediksi". Selain itu, kami membatasi 100.000 titik data untuk menghemat waktu. Jangan ragu untuk menghapus baris terakhir jika Anda tidak terburu-buru.

Menjalankan perintah CREATE MODEL akan membuat Tugas Kueri yang akan berjalan secara asinkron sehingga Anda dapat, misalnya, menutup atau memuat ulang jendela UI BigQuery.

[Opsional] Informasi model & statistik pelatihan

Jika tertarik, Anda bisa mendapatkan informasi tentang model dengan mengklik sample_model pada set data bqml_codelab di UI. Di bagian Detail, Anda akan menemukan beberapa info model dasar dan opsi pelatihan yang digunakan untuk menghasilkan model. Di bagian Statistik Pelatihan, Anda akan melihat tabel yang serupa dengan ini:

b8bd9548a0d89165.png

5. Mengevaluasi Model

Mengevaluasi model

#standardSQL
SELECT
  *
FROM
  ml.EVALUATE(MODEL `bqml_codelab.sample_model`, (
SELECT
  IF(totals.transactions IS NULL, 0, 1) AS label,
  IFNULL(device.operatingSystem, "") AS os,
  device.isMobile AS is_mobile,
  IFNULL(geoNetwork.country, "") AS country,
  IFNULL(totals.pageviews, 0) AS pageviews
FROM
  `bigquery-public-data.google_analytics_sample.ga_sessions_*`
WHERE
  _TABLE_SUFFIX BETWEEN '20170701' AND '20170801'));

Jika digunakan dengan model regresi linear, kueri di atas akan menampilkan kolom berikut: mean_absolute_error, mean_squared_error, mean_squared_log_error, median_absolute_error, r2_score, explained_variance. Jika digunakan dengan model regresi logistik, kueri di atas akan menampilkan kolom berikut: precision, recall, accuracy, f1_score, log_loss, roc_auc. Baca glosarium machine learning atau jalankan penelusuran Google untuk memahami cara penghitungan setiap metrik dan artinya.

Konkretnya, Anda akan menyadari bagian SELECT dan FROM dari kueri tersebut identik dengan yang digunakan selama pelatihan. Bagian WHERE mencerminkan perubahan jangka waktu dan bagian FROM menunjukkan bahwa kita memanggil ml.EVALUATE. Anda akan melihat tabel yang mirip dengan yang berikut:

1c7779f6028730cc.pngS

6. Menggunakan Model

Memprediksi pembelian per negara

Di sini, kita mencoba memprediksi jumlah transaksi yang dilakukan oleh pengunjung dari setiap negara, mengurutkan hasilnya, dan memilih 10 negara teratas berdasarkan pembelian.

#standardSQL
SELECT
  country,
  SUM(predicted_label) as total_predicted_purchases
FROM
  ml.PREDICT(MODEL `bqml_codelab.sample_model`, (
SELECT
  IFNULL(device.operatingSystem, "") AS os,
  device.isMobile AS is_mobile,
  IFNULL(totals.pageviews, 0) AS pageviews,
  IFNULL(geoNetwork.country, "") AS country
FROM
  `bigquery-public-data.google_analytics_sample.ga_sessions_*`
WHERE
  _TABLE_SUFFIX BETWEEN '20170701' AND '20170801'))
GROUP BY country
ORDER BY total_predicted_purchases DESC
LIMIT 10;

Perhatikan bahwa kueri ini sangat mirip dengan kueri evaluasi yang kami tunjukkan di bagian sebelumnya. Sebagai ganti ml.EVALUATE, kita menggunakan ml.PREDICT di sini dan menggabungkan bagian BQML dari kueri dengan perintah SQL standar. Sebenarnya, kita ingin tahu negaranya dan jumlah pembelian untuk setiap negara, jadi itulah yang kita SELECT, GROUP BY, dan ORDER BY. LIMIT digunakan di sini untuk memastikan kita hanya mendapatkan 10 hasil teratas. Anda akan melihat tabel yang mirip dengan yang berikut:

e639f7a409741dcb.png

Memprediksi pembelian per pengguna

Berikut adalah contoh lainnya. Kali ini kami mencoba memprediksi jumlah transaksi yang dilakukan setiap pengunjung, mengurutkan hasil, dan memilih 10 pengunjung teratas berdasarkan transaksi.

#standardSQL
SELECT
  fullVisitorId,
  SUM(predicted_label) as total_predicted_purchases
FROM
  ml.PREDICT(MODEL `bqml_codelab.sample_model`, (
SELECT
  IFNULL(device.operatingSystem, "") AS os,
  device.isMobile AS is_mobile,
  IFNULL(totals.pageviews, 0) AS pageviews,
  IFNULL(geoNetwork.country, "") AS country,
  fullVisitorId
FROM
  `bigquery-public-data.google_analytics_sample.ga_sessions_*`
WHERE
  _TABLE_SUFFIX BETWEEN '20170701' AND '20170801'))
GROUP BY fullVisitorId
ORDER BY total_predicted_purchases DESC
LIMIT 10;

Anda akan melihat tabel yang mirip dengan yang berikut:

2be1d8fa96e10178.pngS

7. Selamat!

Anda telah menyelesaikan codelab ini. Mencari tantangan? Coba buat model regresi linear dengan BQML.

Yang telah kita bahas

  • Membuat model regresi logistik biner
  • Mengevaluasi model
  • Menggunakan model untuk membuat prediksi

Langkah Berikutnya

  • Untuk informasi selengkapnya tentang BQML, lihat dokumentasi.