Advertise

Cara Membuat Sistem Rekomendasi Sederhana dengan Python (Untuk Pemula)

 


Kalau selama ini kamu hanya tahu sistem rekomendasi dari Netflix, Tokopedia, atau Spotify, sekarang saatnya coba bikin sendiri versi sederhananya! Jangan khawatir, kita tidak perlu jadi ahli machine learning dulu. Dengan Python dan beberapa pustaka dasar, kita bisa membuat sistem rekomendasi mini yang cukup keren.

Bagi yang belum membaca artikel sebelumnya, alangkah baiknya membacanya terlebih dahulu dengan mengklik link berikut :

Etika dan Privasi dalam Sistem Rekomendasi – Apakah Algoritma Terlalu Dalam Mengenal Kita?

Masalah Cold Start dalam Sistem Rekomendasi – dan Cara Mengatasinya

Perbandingan: Content-Based vs Collaborative Filtering – Mana yang Lebih Baik?

Mengenal Sistem Rekomendasi: Cara Netflix dan Tokopedia Menebak Selera Kita


🔍 Dataset yang Digunakan

Untuk belajar, kita bisa pakai MovieLens Dataset — dataset film yang berisi rating dari pengguna terhadap berbagai film. Dataset ini sangat populer untuk eksperimen sistem rekomendasi.

Kamu bisa unduh versi kecilnya (100k data) di: https://grouplens.org/datasets/movielens

📦 Persiapan Tools

Sebelum mulai, pastikan kamu punya Python (versi 3.x) dan beberapa library berikut:

pip install pandas scikit-learn

🧑‍💻 Membuat Content-Based Recommendation

Di pendekatan content-based, kita akan merekomendasikan film yang mirip dengan film yang sudah dipilih pengguna berdasarkan genre.

Contoh kode sederhana:

import pandas as pd from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.metrics.pairwise import cosine_similarity # 1. Baca dataset film movies = pd.read_csv("movies.csv") # dataset MovieLens movies['genres'] = movies['genres'].fillna('') # 2. Ubah teks genre menjadi vektor (TF-IDF) tfidf = TfidfVectorizer(stop_words='english') tfidf_matrix = tfidf.fit_transform(movies['genres']) # 3. Hitung kesamaan antar film cosine_sim = cosine_similarity(tfidf_matrix, tfidf_matrix) # 4. Fungsi rekomendasi def recommend(title, cosine_sim=cosine_sim): idx = movies[movies['title'] == title].index[0] sim_scores = list(enumerate(cosine_sim[idx])) sim_scores = sorted(sim_scores, key=lambda x: x[1], reverse=True) sim_scores = sim_scores[1:6] # ambil 5 teratas movie_indices = [i[0] for i in sim_scores] return movies['title'].iloc[movie_indices] # Coba rekomendasi print(recommend("Toy Story (1995)"))

👉 Outputnya akan memberikan daftar film yang mirip dengan Toy Story (1995) berdasarkan genre.

🤝 Membuat Collaborative Filtering

Collaborative filtering menggunakan rating pengguna lain. Kita akan mencari film yang mirip berdasarkan pola rating.

Contoh sederhana dengan pivot dan cosine similarity:

# 1. Baca dataset rating ratings = pd.read_csv("ratings.csv") # 2. Buat matriks user-item user_item_matrix = ratings.pivot_table(index='userId', columns='movieId', values='rating') # 3. Ganti NaN dengan 0 user_item_matrix = user_item_matrix.fillna(0) # 4. Hitung kesamaan antar film cosine_sim = cosine_similarity(user_item_matrix.T) cosine_sim_df = pd.DataFrame(cosine_sim, index=user_item_matrix.columns, columns=user_item_matrix.columns) # 5. Fungsi rekomendasi def recommend_movie(movie_id, num_recommendations=5): similar_movies = cosine_sim_df[movie_id].sort_values(ascending=False)[1:num_recommendations+1] return similar_movies # Coba rekomendasi (gunakan ID film) print(recommend_movie(1)) # movieId 1 = Toy Story

👉 Outputnya berupa daftar movieId film yang mirip berdasarkan rating pengguna.

⚖️ Content-Based vs Collaborative Filtering

  • Content-Based: cocok untuk pengguna baru, karena cukup analisis metadata (genre, kategori, dll).
  • Collaborative Filtering: lebih akurat di platform besar, tapi butuh banyak data rating dari pengguna.

✍️ Penutup

Kita baru saja membuat dua sistem rekomendasi sederhana:

  1. Content-Based → berdasarkan kemiripan konten (genre film).

  2. Collaborative Filtering → berdasarkan perilaku pengguna lain.

Meskipun sederhana, ini adalah fondasi dari sistem rekomendasi canggih yang digunakan raksasa teknologi.



                                                  



Post a Comment

3 Comments

Devi.Angularjs said…
Building a recommendation system with MovieLens is a practical way to understand how Python can be used for real-world data analysis. The article demonstrates how movie data and user ratings can be transformed into useful inputs for similarity calculations and recommendation logic.

Working with the MovieLens dataset also provides good practice with DataFrames and structured data manipulation, making a Pandas Course particularly relevant for learning how to load, clean, reshape, and analyze datasets efficiently.
Devi.Angularjs said…
The recommendation examples involve numerical matrices and similarity calculations, which are common in data-science workflows. Learning through a Numpy Course can further strengthen understanding of arrays and numerical operations that support Python's data-analysis ecosystem.