Tutorial ini mengajarkan cara membuat
model faktorisasi matriks
dan melatihnya pada rating film pelanggan dalam set data
movielens1m
. Kemudian, Anda
menggunakan model faktorisasi matriks untuk membuat rekomendasi film bagi pengguna.
Penggunaan rating yang diberikan pelanggan untuk melatih model disebut pelatihan dengan masukan eksplisit. Model faktorisasi matriks dilatih menggunakan algoritma Alternating Least Squares saat Anda menggunakan masukan eksplisit sebagai data pelatihan.
Membuat set data
Buat set data BigQuery untuk menyimpan model ML Anda.
Konsol
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).
Jangan ubah setelan default yang tersisa, lalu klik Create dataset.
bq
Untuk membuat set data baru, gunakan perintah bq mk
dengan flag --location
. Untuk daftar lengkap kemungkinan parameter, lihat referensi
perintah bq mk --dataset
.
Buat set data bernama
bqml_tutorial
dengan lokasi data yang ditetapkan keUS
dan deskripsiBigQuery ML tutorial dataset
:bq --location=US mk -d \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
Perintah ini menggunakan pintasan
-d
, bukan flag--dataset
. Jika Anda menghapus-d
dan--dataset
, perintah defaultnya adalah membuat set data.Pastikan set data telah dibuat:
bq ls
API
Panggil metode datasets.insert
dengan resource set data yang ditentukan.
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
BigQuery DataFrames
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan BigQuery DataFrames di Panduan memulai BigQuery menggunakan BigQuery DataFrames. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi BigQuery DataFrames.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan ADC untuk lingkungan pengembangan lokal.
Mengupload data Movielens
Upload data movielens1m
ke BigQuery.
CLI
Ikuti langkah-langkah berikut untuk mengupload data movielens1m
menggunakan
alat command line bq:
Buka Cloud Shell:
Upload data rating ke dalam tabel
ratings
. Di command line, tempel kueri berikut, lalu tekanEnter
:curl -O 'http://files.grouplens.org/datasets/movielens/ml-1m.zip' unzip ml-1m.zip sed 's/::/,/g' ml-1m/ratings.dat > ratings.csv bq load --source_format=CSV bqml_tutorial.ratings ratings.csv \ user_id:INT64,item_id:INT64,rating:FLOAT64,timestamp:TIMESTAMP
Upload data film ke dalam tabel
movies
. Di command line, tempel kueri berikut, lalu tekanEnter
:sed 's/::/@/g' ml-1m/movies.dat > movie_titles.csv bq load --source_format=CSV --field_delimiter=@ \ bqml_tutorial.movies movie_titles.csv \ movie_id:INT64,movie_title:STRING,genre:STRING
BigQuery DataFrames
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan BigQuery DataFrames di Panduan memulai BigQuery menggunakan BigQuery DataFrames. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi BigQuery DataFrames.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan ADC untuk lingkungan pengembangan lokal.
Pertama, buat objek Client
dengan
bqclient = google.cloud.bigquery.Client()
, lalu muat data movielens1m
ke dalam set data yang Anda buat di langkah sebelumnya.
Buat model
Buat model faktorisasi matriks dan latih model tersebut pada data di tabel ratings
. Model dilatih untuk memprediksi rating setiap pasangan item pengguna, berdasarkan rating film yang diberikan pelanggan.
SQL
Pernyataan CREATE MODEL
berikut menggunakan kolom ini untuk membuat
rekomendasi:
user_id
—ID pengguna.item_id
—ID film.rating
—Rating eksplisit dari 1 hingga 5 yang diberikan pengguna untuk item.
Ikuti langkah-langkah berikut untuk membuat model:
Di konsol Google Cloud , buka halaman BigQuery.
Di editor kueri, tempel kueri berikut, lalu klik Run:
CREATE OR REPLACE MODEL `bqml_tutorial.mf_explicit` OPTIONS ( MODEL_TYPE = 'matrix_factorization', FEEDBACK_TYPE = 'explicit', USER_COL = 'user_id', ITEM_COL = 'item_id', L2_REG = 9.83, NUM_FACTORS = 34) AS SELECT user_id, item_id, rating FROM `bqml_tutorial.ratings`;
Kueri memerlukan waktu sekitar 10 menit untuk diselesaikan, setelah itu model
mf_explicit
akan muncul di panel Explorer. Karena kueri tersebut menggunakan pernyataanCREATE MODEL
untuk membuat model, Anda tidak akan melihat hasil kueri.
BigQuery DataFrames
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan BigQuery DataFrames di Panduan memulai BigQuery menggunakan BigQuery DataFrames. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi BigQuery DataFrames.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan ADC untuk lingkungan pengembangan lokal.
Kode memerlukan waktu sekitar 10 menit untuk diselesaikan, setelah itu model
mf_explicit
akan muncul di panel Explorer.
Mendapatkan statistik pelatihan
Secara opsional, Anda dapat melihat statistik pelatihan model di konsolGoogle 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 kiri, klik
Explorer:Jika Anda tidak melihat panel kiri, klik
Luaskan panel kiri untuk membuka panel.Di panel Explorer, luaskan project Anda, klik Set data, lalu klik set data
bqml_tutorial
.Klik tab Model.
Klik model
mf_explicit
, lalu klik tab TrainingDi bagian Lihat sebagai, klik Tabel. Hasilnya akan terlihat mirip dengan berikut ini:
+-----------+--------------------+--------------------+ | Iteration | Training Data Loss | Duration (seconds) | +-----------+--------------------+--------------------+ | 11 | 0.3943 | 42.59 | +-----------+--------------------+--------------------+ | 10 | 0.3979 | 27.37 | +-----------+--------------------+--------------------+ | 9 | 0.4038 | 40.79 | +-----------+--------------------+--------------------+ | ... | ... | ... | +-----------+--------------------+--------------------+
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).
Anda juga dapat menggunakan
fungsi ML.TRAINING_INFO
untuk melihat statistik pelatihan model.
Mengevaluasi model
Evaluasi performa model dengan membandingkan prediksi rating film yang ditampilkan oleh model dengan rating film pengguna sebenarnya dari data pelatihan.
SQL
Gunakan fungsi ML.EVALUATE
untuk mengevaluasi model:
Di konsol Google Cloud , buka halaman BigQuery.
Di editor kueri, tempel kueri berikut, lalu klik Run:
SELECT * FROM ML.EVALUATE( MODEL `bqml_tutorial.mf_explicit`, ( SELECT user_id, item_id, rating FROM `bqml_tutorial.ratings` ));
Hasilnya akan terlihat seperti berikut:
+---------------------+---------------------+------------------------+-----------------------+--------------------+--------------------+ | mean_absolute_error | mean_squared_error | mean_squared_log_error | median_absolute_error | r2_score | explained_variance | +---------------------+---------------------+------------------------+-----------------------+--------------------+--------------------+ | 0.48494444327829156 | 0.39433706592870565 | 0.025437895793637522 | 0.39017059802629905 | 0.6840033369412044 | 0.6840033369412264 | +---------------------+---------------------+------------------------+-----------------------+--------------------+--------------------+
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 di sekitar nilai rata-rata. Nilai1
menunjukkan bahwa model menjelaskan semua variabilitas data respons di sekitar nilai rata-rata.Untuk mengetahui informasi selengkapnya tentang output fungsi
ML.EVALUATE
, lihat Output.
Anda juga dapat memanggil ML.EVALUATE
tanpa memberikan data input. Pelatihan ini akan
menggunakan metrik evaluasi yang dihitung selama pelatihan.
BigQuery DataFrames
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan BigQuery DataFrames di Panduan memulai BigQuery menggunakan BigQuery DataFrames. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi BigQuery DataFrames.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan ADC untuk lingkungan pengembangan lokal.
Panggil
model.score()
untuk mengevaluasi model.
Mendapatkan prediksi rating untuk subkumpulan pasangan item pengguna
Dapatkan prediksi rating untuk setiap film bagi lima pengguna.
SQL
Gunakan fungsi ML.RECOMMEND
untuk mendapatkan prediksi rating:
Di konsol Google Cloud , buka halaman BigQuery.
Di editor kueri, tempel kueri berikut, lalu klik Run:
SELECT * FROM ML.RECOMMEND( MODEL `bqml_tutorial.mf_explicit`, ( SELECT user_id FROM `bqml_tutorial.ratings` LIMIT 5 ));
Hasilnya akan terlihat seperti berikut:
+--------------------+---------+---------+ | predicted_rating | user_id | item_id | +--------------------+---------+---------+ | 4.2125303962491873 | 4 | 3169 | +--------------------+---------+---------+ | 4.8068920531981263 | 4 | 3739 | +--------------------+---------+---------+ | 3.8742203494732403 | 4 | 3574 | +--------------------+---------+---------+ | ... | ... | ... | +--------------------+---------+---------+
BigQuery DataFrames
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan BigQuery DataFrames di Panduan memulai BigQuery menggunakan BigQuery DataFrames. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi BigQuery DataFrames.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan ADC untuk lingkungan pengembangan lokal.
Panggil
model.predict()
untuk mendapatkan rating yang diprediksi.
Buat rekomendasi
Gunakan prediksi rating untuk membuat lima rekomendasi film teratas untuk setiap pengguna.
SQL
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` AS SELECT * FROM ML.RECOMMEND(MODEL `bqml_tutorial.mf_explicit`);
Gabungkan prediksi rating dengan informasi film, dan pilih lima hasil teratas per pengguna. Di editor kueri, tempel kueri berikut, lalu klik Run:
SELECT user_id, ARRAY_AGG(STRUCT(movie_title, genre, predicted_rating) ORDER BY predicted_rating DESC LIMIT 5) FROM ( SELECT user_id, item_id, predicted_rating, movie_title, genre FROM `bqml_tutorial.recommend` JOIN `bqml_tutorial.movies` ON item_id = movie_id ) GROUP BY user_id;
Hasilnya akan terlihat seperti berikut:
+---------+-------------------------------------+------------------------+--------------------+ | user_id | f0_movie_title | f0_genre | predicted_rating | +---------+-------------------------------------+------------------------+--------------------+ | 4597 | Song of Freedom (1936) | Drama | 6.8495752907364009 | | | I Went Down (1997) | Action/Comedy/Crime | 6.7203235758772877 | | | Men With Guns (1997) | Action/Drama | 6.399407352232001 | | | Kid, The (1921) | Action | 6.1952890198126731 | | | Hype! (1996) | Documentary | 6.1895766097451475 | +---------+-------------------------------------+------------------------+--------------------+ | 5349 | Fandango (1985) | Comedy | 9.944574012151549 | | | Breakfast of Champions (1999) | Comedy | 9.55661860430112 | | | Funny Bones (1995) | Comedy | 9.52778917835076 | | | Paradise Road (1997) | Drama/War | 9.1643621767929133 | | | Surviving Picasso (1996) | Drama | 8.807353289233772 | +---------+-------------------------------------+------------------------+--------------------+ | ... | ... | ... | ... | +---------+-------------------------------------+------------------------+--------------------+
BigQuery DataFrames
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan BigQuery DataFrames di Panduan memulai BigQuery menggunakan BigQuery DataFrames. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi BigQuery DataFrames.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan ADC untuk lingkungan pengembangan lokal.
Panggil
model.predict()
untuk mendapatkan rating yang diprediksi.