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
- Browser, seperti Chrome atau Firefox
- Pengetahuan dasar tentang 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 Google Developers Console, klik ikon Menu di kiri atas layar.
Scroll ke bagian bawah menu, 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 {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.
Selanjutnya, beri nama {i>dataset <i}bqml_codelab{i> <i}dan klik OK.
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:
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:
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:
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:
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.