Faktorisasi Matriks dengan SVD
Matriks pengguna-item, dekomposisi SVD, faktor laten, implementasi pustaka Surprise.
Faktorisasi Matriks dengan SVD adalah pelajaran Learn AI with Python gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Learn AI with Python, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Learn AI with Python mencakup 4 pelajaran total.
Mengapa Faktorisasi Matriks?
Matriks pengguna-item berukuran sangat besar dan sebagian besar kosong. Faktorisasi matriks memampatkannya menjadi dua matriks faktor laten yang lebih kecil, satu untuk pengguna dan satu untuk item. Hasil perkaliannya merekonstruksi dan melengkapi peringkat. Pendekatan ini menangani kerenggangan dengan jauh lebih baik daripada metode berbasis tetangga.
Intuisi tentang Faktor Laten
Setiap pengguna dan item dijelaskan oleh vektor pendek yang berisi fitur tersembunyi, misalnya tingkat kesukaan terhadap aksi atau komedi untuk film. Peringkat prediksi adalah dot product antara vektor pengguna dan vektor item, yang dipelajari sepenuhnya dari data.
SVD dalam Sistem Rekomendasi
Model bergaya SVD mempelajari faktor-faktor ini dengan meminimalkan galat prediksi pada peringkat yang diketahui, serta menerapkan regularisasi. Pustaka surprise menyediakan SVD siap pakai yang dioptimalkan untuk rekomendasi dan dipopulerkan oleh Netflix Prize.
Pustaka Surprise
Impor komponen yang Anda perlukan: algoritmanya, pembungkus kumpulan data, dan pembaca yang menjelaskan format data Anda.
from surprise import SVD, Dataset, Reader
from surprise.model_selection import cross_validatePembaca dan rating_scale
Reader memberi tahu Surprise rentang peringkat yang valid melalui rating_scale. Sesuaikan rentang tersebut dengan data Anda, misalnya 1 hingga 5 bintang, atau prediksi akan memiliki kalibrasi yang keliru.
reader = Reader(rating_scale=(1, 5))Memuat DataFrame
Muat DataFrame dengan tepat tiga kolom dalam urutan berikut: pengguna, item, peringkat.
data = Dataset.load_from_df(
df[["user_id", "item_id", "rating"]],
reader
)Validasi Silang
cross_validate mengevaluasi model pada beberapa lipatan, lalu melaporkan metrik galat agar Anda dapat menilai akurasi secara jujur pada data yang tidak digunakan saat pelatihan.
results = cross_validate(
SVD(), data,
measures=["RMSE", "MAE"],
cv=5,
verbose=True
)RMSE dan MAE
- RMSE (akar galat kuadrat rata-rata) memberikan penalti besar pada galat yang besar.
- MAE (galat absolut rata-rata) adalah rata-rata selisih absolut sehingga lebih mudah ditafsirkan.
Nilai yang lebih rendah lebih baik untuk keduanya; RMSE adalah metrik utama standar untuk prediksi peringkat.
Pelatihan pada Seluruh Kumpulan Data
Setelah validasi, latih model pada seluruh kumpulan data sebelum menyajikan prediksi.
trainset = data.build_full_trainset()
algo = SVD()
algo.fit(trainset)Membuat Prediksi
algo.predict(uid, iid) mengembalikan objek prediksi yang bidang .est-nya berisi perkiraan peringkat untuk pasangan pengguna-item tersebut.
pred = algo.predict(uid="user_42", iid="item_99")
print(pred.est) # estimated ratingMenyetel Hiperparameter
Parameter utama SVD adalah n_factors (dimensi laten), n_epochs, lr_all (laju pembelajaran), dan reg_all (regularisasi). Gunakan GridSearchCV untuk menemukan kombinasi terbaik berdasarkan RMSE.
from surprise.model_selection import GridSearchCV
grid = {"n_factors": [50, 100], "reg_all": [0.02, 0.1]}
gs = GridSearchCV(SVD, grid, measures=["rmse"], cv=3)
gs.fit(data)
print(gs.best_params["rmse"])Pemeriksaan Singkat
Uji pengetahuan Anda tentang faktorisasi matriks.
Ringkasan
Anda telah mempelajari faktorisasi matriks melalui SVD: vektor laten pengguna/item yang dot product-nya memprediksi peringkat. Dengan menggunakan surprise, Anda menetapkan rating_scale, memuat data, menjalankan cross_validate dengan RMSE/MAE, melakukan pelatihan, dan memanggil algo.predict(uid, iid). Berikutnya: penyaringan berbasis konten.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Faktorisasi Matriks dengan SVD” gratis?
Ya — teks lengkap “Faktorisasi Matriks dengan SVD” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Learn AI with Python, upgrade ke CoddyKit PRO. Kursus Learn AI with Python mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Faktorisasi Matriks dengan SVD”?
Matriks pengguna-item, dekomposisi SVD, faktor laten, implementasi pustaka Surprise. Kamu berlatih Learn AI with Python dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Learn AI with Python?
Tidak diperlukan pengalaman sebelumnya. Learn AI with Python di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Faktorisasi Matriks dengan SVD” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Learn AI with Python ini?
Ya. Setiap pelajaran Learn AI with Python menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Penyaringan Kolaboratif: Berbasis Pengguna dan Berbasis Item
- Faktorisasi Matriks dengan SVD
- Penyaringan Berbasis Konten
- Sistem Hibrida dan Metrik Evaluasi