Tutorial ini mengajarkan cara membuat model faktorisasi matriks dan melatihnya pada data sesi pengguna Google Analytics 360 di tabel GA360_test.ga_sessions_sample
publik. Kemudian, Anda menggunakan model faktorisasi matriks untuk membuat rekomendasi konten bagi pengguna situs.
Menggunakan informasi preferensi pelanggan tidak langsung, seperti durasi sesi pengguna, untuk melatih model disebut pelatihan dengan masukan implisit. Model faktorisasi matriks dilatih menggunakan algoritma Weighted-Alternating Least Squares saat Anda menggunakan masukan implisit sebagai data pelatihan.
Tujuan
Tutorial ini memandu Anda menyelesaikan tugas-tugas berikut:
- Membuat model faktorisasi matriks menggunakan pernyataan
CREATE MODEL
. - Mengevaluasi model menggunakan
fungsi
ML.EVALUATE
. - Membuat rekomendasi konten untuk pengguna menggunakan model dengan
fungsi
ML.RECOMMEND
.
Biaya
Tutorial ini menggunakan komponen Google Cloud yang dapat ditagih, 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
- 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.
Menyiapkan data sampel
Transformasikan data dari tabel GA360_test.ga_sessions_sample
menjadi struktur yang lebih baik untuk pelatihan model, lalu tulis data ini ke tabel BigQuery. Kueri berikut menghitung durasi sesi untuk setiap pengguna untuk setiap konten, yang kemudian dapat Anda gunakan sebagai masukan implisit untuk menyimpulkan preferensi pengguna untuk konten tersebut.
Ikuti langkah-langkah berikut untuk membuat tabel data pelatihan:
Di Konsol Google Cloud, buka halaman BigQuery.
Buat tabel data pelatihan. Di editor kueri, tempel kueri berikut, lalu klik Run:
CREATE OR REPLACE TABLE `bqml_tutorial.analytics_session_data` AS WITH visitor_page_content AS ( SELECT fullVisitorID, ( SELECT MAX( IF( index = 10, value, NULL)) FROM UNNEST(hits.customDimensions) ) AS latestContentId, (LEAD(hits.time, 1) OVER (PARTITION BY fullVisitorId ORDER BY hits.time ASC) - hits.time) AS session_duration FROM `cloud-training-demos.GA360_test.ga_sessions_sample`, UNNEST(hits) AS hits WHERE # only include hits on pages hits.type = 'PAGE' GROUP BY fullVisitorId, latestContentId, hits.time ) # aggregate web stats SELECT fullVisitorID AS visitorId, latestContentId AS contentId, SUM(session_duration) AS session_duration FROM visitor_page_content WHERE latestContentId IS NOT NULL GROUP BY fullVisitorID, latestContentId HAVING session_duration > 0 ORDER BY latestContentId;
Melihat subkumpulan data pelatihan. Di editor kueri, tempel kueri berikut, lalu klik Run:
SELECT * FROM `bqml_tutorial.analytics_session_data` LIMIT 5;
Hasilnya akan terlihat seperti berikut:
+---------------------+-----------+------------------+ | visitorId | contentId | session_duration | +---------------------+-----------+------------------+ | 7337153711992174438 | 100074831 | 44652 | +---------------------+-----------+------------------+ | 5190801220865459604 | 100170790 | 121420 | +---------------------+-----------+------------------+ | 2293633612703952721 | 100510126 | 47744 | +---------------------+-----------+------------------+ | 5874973374932455844 | 100510126 | 32109 | +---------------------+-----------+------------------+ | 1173698801255170595 | 100676857 | 10512 | +---------------------+-----------+------------------+
Membuat model
Buat model faktorisasi matriks dan latih dengan data dalam
tabel analytics_session_data
. Model dilatih untuk memprediksi rating
keyakinan untuk setiap pasangan visitorId
-contentId
. Rating keyakinan dibuat dengan pemusatan dan penskalaan berdasarkan durasi sesi median. Data dengan durasi sesi lebih dari 3,33 kali median akan difilter sebagai pencilan.
Pernyataan CREATE MODEL
berikut menggunakan kolom ini untuk membuat
rekomendasi:
visitorId
—ID pengunjung.contentId
—ID konten.rating
—Rating implisit dari 0 hingga 1 dihitung untuk setiap pasangan pengunjung-konten, yang dipusatkan dan diskalakan.
Di Konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, tempel kueri berikut dan klik Jalankan:
CREATE OR REPLACE MODEL `bqml_tutorial.mf_implicit` OPTIONS ( MODEL_TYPE = 'matrix_factorization', FEEDBACK_TYPE = 'implicit', USER_COL = 'visitorId', ITEM_COL = 'contentId', RATING_COL = 'rating', L2_REG = 30, NUM_FACTORS = 15) AS SELECT visitorId, contentId, 0.3 * (1 + (session_duration - 57937) / 57937) AS rating FROM `bqml_tutorial.analytics_session_data` WHERE 0.3 * (1 + (session_duration - 57937) / 57937) < 1;
Pemrosesan kueri ini memerlukan waktu sekitar 10 menit, setelah itu model
mf_implicit
akan muncul di panel Explorer. Karena kueri tersebut menggunakan pernyataanCREATE MODEL
untuk membuat model, Anda tidak akan melihat hasil kueri.
Mendapatkan statistik pelatihan
Atau, Anda dapat melihat statistik pelatihan model di konsol Google Cloud.
Algoritma machine learning membuat model dengan membuat banyak iterasi model menggunakan parameter yang berbeda, lalu memilih versi model yang meminimalkan kerugian. Proses ini disebut minimalisasi risiko empiris. Statistik pelatihan model memungkinkan Anda melihat kerugian yang terkait dengan setiap iterasi model.
Ikuti langkah-langkah berikut untuk melihat statistik pelatihan model:
Di Konsol Google Cloud, buka halaman BigQuery.
Di panel Explorer, luaskan project Anda, luaskan set data
bqml_tutorial
, lalu luaskan folder Models.Klik model
mf_implicit
, lalu klik tab PelatihanDi bagian Lihat sebagai, klik Tabel. Hasilnya akan terlihat seperti berikut:
+-----------+--------------------+--------------------+ | Iteration | Training Data Loss | Duration (seconds) | +-----------+--------------------+--------------------+ | 5 | 0.0027 | 47.27 | +-----------+--------------------+--------------------+ | 4 | 0.0028 | 39.60 | +-----------+--------------------+--------------------+ | 3 | 0.0032 | 55.57 | +-----------+--------------------+--------------------+ | ... | ... | ... | +-----------+--------------------+--------------------+
Kolom Training Data Loss menunjukkan metrik kerugian yang dihitung setelah model dilatih. Karena ini adalah model faktorisasi matriks, kolom ini menampilkan rataan kuadrat galat (RKG).
Mengevaluasi model
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.
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.mf_implicit`);
Hasilnya akan terlihat seperti berikut:
+------------------------+-----------------------+---------------------------------------+---------------------+ | mean_average_precision | mean_squared_error | normalized_discounted_cumulative_gain | average_rank | +------------------------+-----------------------+---------------------------------------+---------------------+ | 0.4434341257478137 | 0.0013381759837648962 | 0.9433280547112802 | 0.24031636088594222 | +------------------------+-----------------------+---------------------------------------+---------------------+
Untuk mengetahui informasi selengkapnya tentang output fungsi
ML.EVALUATE
, lihat Model faktorisasi matriks.
Mendapatkan prediksi rating untuk sebagian pasangan pengunjung-konten
Gunakan ML.RECOMMEND
untuk mendapatkan prediksi rating untuk setiap konten
untuk lima pengunjung situs.
Ikuti langkah-langkah berikut untuk mendapatkan prediksi rating:
Di Konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, tempel kueri berikut dan klik Jalankan:
SELECT * FROM ML.RECOMMEND( MODEL `bqml_tutorial.mf_implicit`, ( SELECT visitorId FROM `bqml_tutorial.analytics_session_data` LIMIT 5 ));
Hasilnya akan terlihat seperti berikut:
+-------------------------------+---------------------+-----------+ | predicted_rating_confidence | visitorId | contentId | +-------------------------------+---------------------+-----------+ | 0.0033608418060270262 | 7337153711992174438 | 277237933 | +-------------------------------+---------------------+-----------+ | 0.003602395397293956 | 7337153711992174438 | 158246147 | +-------------------------------+---------------------+-- -------+ | 0.0053197670652785356 | 7337153711992174438 | 299389988 | +-------------------------------+---------------------+-----------+ | ... | ... | ... | +-------------------------------+---------------------+-----------+
Membuat rekomendasi
Gunakan prediksi rating untuk membuat lima ID konten teratas yang direkomendasikan untuk setiap ID pengunjung.
Ikuti langkah-langkah berikut untuk membuat rekomendasi:
Di Konsol Google Cloud, buka halaman BigQuery.
Tulis prediksi rating ke tabel. Di editor kueri, tempel kueri berikut, lalu klik Run:
CREATE OR REPLACE TABLE `bqml_tutorial.recommend_content` AS SELECT * FROM ML.RECOMMEND(MODEL `bqml_tutorial.mf_implicit`);
Pilih lima hasil teratas per pengunjung. Di editor kueri, tempel kueri berikut, lalu klik Run:
SELECT visitorId, ARRAY_AGG( STRUCT(contentId, predicted_rating_confidence) ORDER BY predicted_rating_confidence DESC LIMIT 5) AS rec FROM `bqml_tutorial.recommend_content` GROUP BY visitorId;
Hasilnya akan terlihat seperti berikut:
+---------------------+-----------------+---------------------------------+ | visitorId | rec:contentId | rec:predicted_rating_confidence | +---------------------+-----------------+------------------------- ------+ | 867526255058981688 | 299804319 | 0.88170525357178664 | | | 299935287 | 0.54699439944935124 | | | 299410466 | 0.53424780863188659 | | | 299826767 | 0.46949603950374219 | | | 299809748 | 0.3379991197434149 | +---------------------+-----------------+---------------------------------+ | 2434264018925667659 | 299824032 | 1.3903516407308065 | | | 299410466 | 0.9921995618196483 | | | 299903877 | 0.92333625294129218 | | | 299816215 | 0.91856701667757279 | | | 299852437 | 0.86973661454890561 | +---------------------+-----------------+---------------------------------+ | ... | ... | ... | +---------------------+-----------------+---------------------------------+
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 navigasi, klik set data bqml_tutorial yang telah Anda buat.
Klik Delete dataset di sisi kanan jendela. 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 selanjutnya
- Coba membuat model faktorisasi matriks berdasarkan masukan eksplisit.
- Untuk ringkasan BigQuery ML, lihat Pengantar BigQuery ML.
- Untuk mempelajari machine learning lebih lanjut, lihat Kursus singkat machine learning.