Membangun Sistem Rekomendasi dengan Collaborative Filtering: dari Matrix Factorization sampai Prediksi

Lhuqita Fazry
Machine Learning Collaborative Filtering Matrix Factorization Python
Membangun Sistem Rekomendasi dengan Collaborative Filtering: dari Matrix Factorization sampai Prediksi

Sistem rekomendasi menjadi tulang punggung platform digital modern. Netflix, Spotify, dan Amazon mengandalkan algoritma rekomendasi untuk mempersonalisasi pengalaman pengguna. Collaborative Filtering adalah salah satu pendekatan paling efektif dalam membangun sistem ini. Teknik ini memanfaatkan pola interaksi historis antar pengguna dan item untuk menghasilkan prediksi yang akurat.

Collaborative Filtering bekerja berdasarkan premis sederhana: pengguna yang memiliki preferensi serupa di masa lalu cenderung menyukai item yang sama di masa depan. Pendekatan ini tidak memerlukan informasi detail tentang item itu sendiri, melainkan mempelajari struktur laten dari data interaksi.

Memahami Collaborative Filtering

Collaborative Filtering terbagi menjadi dua kategori utama: memory-based dan model-based. Memory-based method menghitung similarity langsung dari user-item interaction matrix. Model-based method, seperti matrix factorization, mempelajari representasi laten yang lebih kompak.

Dalam konteks e-commerce, data interaksi dapat berupa rating eksplisit atau perilaku implisit. Rating eksplisit adalah skor yang diberikan pengguna secara langsung, misalnya bintang 1 hingga 5. Perilaku implisit mencakup klik, waktu menonton, atau pembelian. Data implisit umumnya lebih melimpah namun lebih noise dibandingkan rating eksplisit.

Matriks interaksi user-item sering kali sangat sparse. Jika platform memiliki 10.000 pengguna dan 5.000 produk, matriks akan berukuran 10.000 × 5.000. Namun, setiap pengguna mungkin hanya berinteraksi dengan puluhan produk. Sparsity ini menjadi tantangan utama yang harus diatasi.

User-Based dan Item-Based Approach

User-Based Collaborative Filtering mencari pengguna yang memiliki pola rating serupa dengan target user. Kita menghitung similarity antar pengguna menggunakan metrik seperti cosine similarity atau Pearson correlation. Setelah menemukan nearest neighbors, kita agregasikan rating mereka untuk memprediksi rating target user terhadap item baru.

Item-Based Collaborative Filtering bekerja sebaliknya. Kita menghitung similarity antar item berdasarkan pola rating yang diberikan oleh seluruh pengguna. Jika pengguna menyukai item A, dan item A sangat mirip dengan item B, maka sistem merekomendasikan item B. Pendekatan ini lebih scalable untuk platform dengan jutaan pengguna karena similarity antar item relatif stabil.

pythonpython
!pip install pandas scikit-learn

import pandas as pd
from sklearn.metrics.pairwise import cosine_similarity

# Membuat sample user-item interaction matrix
ratings = pd.DataFrame({
    'user_id': [1, 1, 2, 2, 3, 3],
    'item_id': [101, 102, 101, 103, 102, 103],
    'rating': [5, 3, 4, 5, 2, 4]
})

# Pivot ke matrix
user_item_matrix = ratings.pivot(
    index='user_id',
    columns='item_id',
    values='rating'
).fillna(0)

# Hitung similarity antar user
user_similarity = cosine_similarity(user_item_matrix)
print(pd.DataFrame(user_similarity, index=user_item_matrix.index, columns=user_item_matrix.index))

Output:

text
user_id         1         2         3
user_id                              
1        1.000000  0.535672  0.230089
2        0.535672  1.000000  0.698430
3        0.230089  0.698430  1.000000
Data Science with Python
Data Science • Beginner

Data Science with Python

Master the art of data analysis, visualization, and predictive modeling.

Project: E-commerce Sales Dashboard

Daftar

Kode di atas membangun user-item matrix dan menghitung cosine similarity antar pengguna. Method fillna(0) mengganti nilai kosong dengan nol agar matriks dapat diproses secara numerik. Output similarity matrix menunjukkan seberapa mirip preferensi antar pengguna.

Matrix Factorization dengan SVD

Matrix Factorization adalah teknik model-based yang mendekomposisi user-item matrix menjadi dua matriks berdimensi lebih rendah. Matriks pertama merepresentasikan karakteristik laten pengguna, dan matriks kedua merepresentasikan karakteristik laten item.

Singular Value Decomposition (SVD) adalah metode faktorisasi yang paling umum digunakan. SVD memfaktorkan matriks R menjadi tiga komponen: U, Σ, dan V^T. Matriks U merepresentasikan pengguna dalam ruang laten, Σ adalah matriks diagonal singular values, dan V^T merepresentasikan item dalam ruang laten.

Kita dapat mengurangi dimensi dengan hanya mempertahankan k singular values terbesar. Nilai k ini merepresentasikan jumlah faktor laten, misalnya genre film atau kategori produk. Semakin besar k, model menjadi lebih kompleks dan berpotensi overfit. Semakin kecil k, model kehilangan informasi penting.

pythonpython
!pip install numpy scipy

import numpy as np
from scipy.sparse.linalg import svds

# Gunakan user_item_matrix dari contoh sebelumnya
# Konversi ke numpy array
R = user_item_matrix.values

# Dekomposisi dengan k=2 faktor laten
U, sigma, Vt = svds(R, k=2)
sigma = np.diag(sigma)

# Rekonstruksi matriks prediksi
predicted_ratings = np.dot(np.dot(U, sigma), Vt)
predicted_df = pd.DataFrame(
    predicted_ratings,
    index=user_item_matrix.index,
    columns=user_item_matrix.columns
)
print(predicted_df)

Output:

text
item_id       101       102       103
user_id                              
1        5.278030  2.384427 -0.018416
2        3.378844  1.375273  5.041144
3        0.794569  0.240781  3.947369

Proses dekomposisi mengekstrak pola tersembunyi dari data. Faktor laten tidak selalu memiliki interpretasi langsung, namun mereka menangkap hubungan kompleks antar pengguna dan item. Rekonstruksi matriks menghasilkan prediksi rating bahkan untuk item yang belum pernah diinteraksi oleh pengguna. Perhatikan bahwa prediksi untuk item 102 oleh user 1 adalah 2.38 (mendekati rating aktual 3), sementara prediksi untuk item 103 oleh user 1 bernilai negatif, mengindikasikan bahwa model memprediksi user 1 tidak akan menyukai item tersebut.

Evaluasi Model Rekomendasi

Metrik evaluasi untuk sistem rekomendasi berbeda dari klasifikasi biasa. Root Mean Square Error (RMSE) dan Mean Absolute Error (MAE) mengukur seberapa dekat prediksi rating dengan nilai aktual. Semakin rendah nilai RMSE, semakin akurat prediksi model. Namun, RMSE saja tidak cukup untuk menilai kualitas rekomendasi secara keseluruhan.

Selain metrik error, kita perlu mengevaluasi kualitas rekomendasi secara top-N. Precision@K mengukur proporsi item relevan di antara K rekomendasi teratas. Recall@K mengukur proporsi item relevan yang berhasil direkomendasikan dari seluruh item relevan yang ada.

Cross-validation untuk sistem rekomendasi memerlukan strategi khusus. Kita harus memastikan tidak ada data leakage antara training dan testing set. Time-based split sering digunakan untuk mensimulasikan skenario produksi, di mana model dilatih pada data historis dan dievaluasi pada data terbaru.

Tantangan dan Rekomendasi Praktis

Cold start problem adalah tantangan paling signifikan dalam collaborative filtering. Pengguna baru tidak memiliki riwayat interaksi, sehingga sistem tidak dapat menghitung similarity. Pendekatan hybrid yang menggabungkan content-based filtering dapat mengatasi masalah ini dengan memanfaatkan metadata profil pengguna atau atribut item.

Scalability juga menjadi perhatian ketika dataset mencapai skala jutaan pengguna dan item. Algoritma seperti Alternating Least Squares (ALS) dirancang khusus untuk dataset besar dan dapat dijalankan secara distributed menggunakan Spark. ALS mengoptimasi faktor laten secara bergantian, memperbarui matriks pengguna sambil mematikan matriks item konstan, dan sebaliknya.

Untuk implementasi produksi, kita perlu membangun pipeline retraining secara periodik. Preferensi pengguna berubah seiring waktu, dan model yang tidak diperbarui akan menjadi stale. Monitoring metrik bisnis seperti click-through rate dan conversion rate juga penting untuk mengukur dampak nyata dari sistem rekomendasi.

Ingin menguasai machine learning dari fundamental hingga deployment model? Bergabunglah dengan Machine Learning Bootcamp di Rumah Coding. Kurikulum praktis dengan studi kasus industri dan mentorship langsung dari praktisi berpengalaman.

Course Terkait

E-commerce Sales Dashboard
Premium Course
Premium Course Data Science

Data Science with Python

Master the art of data analysis, visualization, and predictive modeling.

Capstone Project

E-commerce Sales Dashboard

  • Data Cleaning Pipeline
  • Interactive Charts
  • Sales Forecasting Model
7 Weeks Beginner
Lihat Detail Course
GreenGuard: Intelligent Plant Disease Diagnosis Web App
Premium Course
Premium Course Machine Learning

Deep Learning Bootcamp

A beginner-friendly, highly interactive bootcamp designed to take you from foundational concepts to deploying real-world Artificial Intelligence applications. Through a completely project-based approach, you will master the core of Deep Learning, Artificial Neural Networks, and Computer Vision using Python and TensorFlow, ultimately building a professional-grade AI web application for your portfolio.

Capstone Project

GreenGuard: Intelligent Plant Disease Diagnosis Web App

  • Interactive Image Upload UI: A clean, user-friendly interface built with Streamlit that supports drag-and-drop image uploads directly from a computer or mobile phone.
  • Real-Time AI Inference: Utilizes a lightweight, optimized CNN model (like MobileNetV2) to process the image and return a diagnosis in seconds without heavy server load.
  • Confidence Scoring Dashboard: Visually displays the model's prediction probability (e.g., "95% confident this is Tomato Late Blight") using interactive progress bars or charts.
7 Weeks Intermediate
Lihat Detail Course
Domain-Specific AI Knowledge Assistant
Premium Course
Premium Course Machine Learning

LLM Bootcamp

This project-based bootcamp is designed for beginners to dive practically into the world of Large Language Models (LLMs). Through hands-on building, you will learn how to interact with top-tier AI APIs, master prompt engineering, orchestrate complex workflows using LangChain, and implement Retrieval-Augmented Generation (RAG) to query your own documents. By the end of this course, you will have the skills to build, test, and deploy a fully functional, custom AI web application.

Capstone Project

Domain-Specific AI Knowledge Assistant

  • Dynamic Document Processing: A sidebar interface allowing users to upload new PDF or TXT files, which the app automatically chunks, embeds, and stores in the vector database.
  • Context-Aware Chat UI: A modern chat interface built with Streamlit that maintains conversation history, allowing users to ask follow-up questions naturally.
  • Strict Guardrails (Anti-Hallucination): System instructions designed so the AI politely declines to answer questions that fall outside the context of the uploaded documents.
7 Weeks Beginner
Lihat Detail Course

Artikel Terkait