Cara Membuat Sistem Rekomendasi Sederhana
Pernah penasaran gimana cara Netflix atau Spotify menyarankan film atau lagu yang cocok buat kamu? Itu semua berkat sistem rekomendasi. Tenang, kamu nggak perlu jadi data scientist dulu buat bikin versi sederhananya. Yuk, kita coba bareng-bareng!
Apa Itu Sistem Rekomendasi?
Bayangkan kamu punya toko buku online. Setiap pelanggan punya selera beda-beda. Sistem rekomendasi adalah semacam asisten pribadi yang bilang, “Eh, si A suka novel misteri, mungkin dia juga suka buku ini.” Idenya simpel: memprediksi apa yang mungkin disukai user berdasarkan data yang ada.
Dua Pendekatan Populer
Untuk yang sederhana, ada dua cara:
1. Content-Based Filtering – merekomendasikan item yang mirip dengan yang pernah disukai user sebelumnya. Misal, kamu suka film action, maka sistem bakal cari film action lain.
2. Collaborative Filtering – merekomendasikan item berdasarkan kesamaan preferensi antar user. “User yang suka film A juga suka film B, jadi mungkin kamu juga suka B.”
Kita akan coba content-based dulu karena lebih gampang diimplementasikan.
Persiapan Data
Anggap kita punya data film dengan genre. Contoh sederhana:
| Film | Genre |
|——|——-|
| Film A | Action, Thriller |
| Film B | Comedy, Romance |
| Film C | Action, Sci-Fi |
| Film D | Comedy, Drama |
Kita juga punya riwayat user: User X suka Film A dan Film C. Nah, user ini ternyata doyan action. Maka sistem akan merekomendasikan film bergenre action lain yang belum ditonton.
Langkah-Langkah Sederhana (Pakai Python)
1. Ubah genre menjadi angka (vectorization).
Kita bisa pakai teknik One-Hot Encoding. Misal, kolom genre dipecah jadi beberapa kolom binary: Action, Thriller, Comedy, Romance, Sci-Fi, Drama. Film A jadi [1,1,0,0,0,0], Film B [0,0,1,1,0,0], dst.
2. Hitung kemiripan antar film.
Gunakan cosine similarity. Semakin besar nilai (mendekati 1), semakin mirip. Contoh, antara Film A dan Film C punya kemiripan tinggi karena sama-sama Action.
3. Buat profil user.
Ambil rata-rata vector dari film yang disukai user. User X suka Film A dan C, maka profilnya = rata-rata [1,1,0,0,0,0] dan [1,0,0,0,1,0] = [1,0.5,0,0,0.5,0].
4. Hitung skor rekomendasi.
Bandingkan profil user dengan vector film yang belum ditonton, pakai cosine similarity lagi. Film dengan skor tertinggi jadi rekomendasi.
Contoh Kode Mini
“`python
import pandas as pd
from sklearn.metrics.pairwise import cosine_similarity
Data film
data = {‘judul’: [‘Film A’, ‘Film B’, ‘Film C’, ‘Film D’],
‘action’: [1,0,1,0],
‘thriller’: [1,0,0,0],
‘comedy’: [0,1,0,1],
‘romance’: [0,1,0,0],
‘sci_fi’: [0,0,1,0],
‘drama’: [0,0,0,1]}
df = pd.DataFrame(data)
Film yang disukai user
suka = [0, 2] # indeks Film A dan C
Profil user
profil = df.iloc[suka, 1:].mean().values.reshape(1, -1)
Hitung similarity dengan semua film
skor = cosine_similarity(profil, df.iloc[:, 1:])
Urutkan, ambil film dengan skor tertinggi yang belum ditonton
df[‘skor’] = skor[0]
rekomendasi = df.sort_values(‘skor’, ascending=False)
rekomendasi = rekomendasi[~rekomendasi.index.isin(suka)]
print(rekomendasi[[‘judul’, ‘skor’]].head())
“`
Hasilnya? Film D punya skor rendah karena genre beda, sementara Film B mungkin medium. Tapi karena data minim, hasilnya belum akurat. Di dunia nyata, kita pakai lebih banyak fitur.
Tips Biar Lebih Canggih
– Tambahkan metadata lain, seperti aktor, sutradara, atau sinopsis (bisa diubah ke vektor pakai TF-IDF atau embedding).
– Gunakan collaborative filtering dengan library seperti `scikit-surprise` atau metode matrix factorization (SVD) – lebih cocok untuk data rating.
– Jangan lupa evaluasi, pakai metrik seperti precision@k atau RMSE kalau ada data rating.
Kesimpulan
Membuat sistem rekomendasi sederhana ternyata nggak serumit yang dibayangkan. Modal data, sedikit logika matematika, dan Python, kamu sudah bisa bikin rekomendasi otomatis. Mulai dari hal kecil dulu, misal rekomendasi buku atau resep masakan. Yang penting, terus eksplorasi dan sesuaikan dengan kebutuhan.
Selamat mencoba, dan semoga rekomendasi buatanmu makin hari makin jitu!