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 set data contoh 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
- Browser, seperti Chrome atau Firefox
- Pengetahuan dasar terkait SQL atau BigQuery
- Dokumentasi BQML
2. Penyiapan dan Persyaratan
Penyiapan lingkungan mandiri
- 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.



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.
- 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 Konsol Google Developer, klik ikon Menu di kiri atas layar.

Scroll ke bawah menu hingga ke bagian bawah, lalu klik BigQuery:

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

Tapi, tidak ada apa-apa di sini! Untungnya, ada banyak set data publik yang tersedia di BigQuery yang dapat Anda jelajahi.
3. Membuat set data
Untuk membuat set data, klik panah di samping nama project Anda, lalu pilih create new dataset.

Selanjutnya, beri nama set data Anda bqml_codelab, lalu klik OK.

4. Membuat Model
Regresi logistik untuk Analytics 360
Sekarang, mari kita lanjutkan ke tugas kita. Berikut 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, apakah perangkat tersebut adalah perangkat seluler, negara pengunjung, dan jumlah tayangan halaman sebagai kriteria untuk menentukan apakah transaksi telah dilakukan.
Dalam hal ini, "codelab" adalah nama set data dan "sample_model" adalah nama model kita. Jenis model yang ditentukan adalah regresi logistik program biner. Dalam hal ini, label adalah sesuatu yang ingin kita sesuaikan. Perhatikan bahwa jika Anda hanya ingin melihat 1 kolom, cara ini adalah cara alternatif untuk menetapkan input_label_cols. Kami juga membatasi data pelatihan kami pada data yang dikumpulkan dari 1 Agustus 2016 hingga 31 Juni 2017. Kami melakukan ini untuk menyimpan data bulan terakhir untuk "prediksi". Selain itu, kami membatasi hingga 100.000 titik data untuk menghemat waktu. Anda dapat menghapus baris terakhir jika tidak terburu-buru.
Menjalankan perintah CREATE MODEL akan membuat Tugas Kueri 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 model dengan mengklik sample_model di bagian set data bqml_codelab di UI. Di bagian Details, Anda akan menemukan beberapa info model dasar dan opsi pelatihan yang digunakan untuk menghasilkan model. Di bagian Statistik Pelatihan, Anda akan melihat tabel yang mirip dengan yang berikut:

5. Mengevaluasi Model
Mengevaluasi model kami
#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 menghasilkan 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 menghasilkan kolom berikut: precision, recall, accuracy, f1_score, log_loss, roc_auc. Harap baca glosarium machine learning atau jalankan penelusuran dengan Google untuk memahami cara menghitung masing-masing metrik ini beserta artinya.
Secara konkret, Anda akan menyadari bahwa bagian SELECT dan FROM pada kueri 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:

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 kita menggabungkan bagian BQML dari kueri dengan perintah SQL standar. Secara konkret, kita tertarik pada negara dan jumlah pembelian di 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:

Memprediksi pembelian per pengguna
Berikut adalah contoh lainnya. Kali ini kita mencoba memprediksi jumlah transaksi yang dilakukan setiap pengunjung, mengurutkan hasilnya, 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:

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 mengetahui informasi selengkapnya tentang BQML, lihat dokumentasi.