movie-recommendation-system

created Open Notebook LinkedIn Dicoding Profile


Movie Recommendation System

Movie Recommendation System

Project Overview

Sistem rekomendasi telah menjadi bagian penting dari berbagai layanan digital, seperti e-commerce, platform streaming, dan media sosial. Dalam konteks platform streaming film, sistem rekomendasi memainkan peran penting dalam meningkatkan pengalaman pengguna dengan menyarankan film yang sesuai dengan preferensi individu. Dua metode utama yang digunakan dalam sistem rekomendasi adalah content-based filtering dan collaborative filtering 1.

Content-based filtering bekerja dengan menganalisis karakteristik atau fitur dari konten yang telah dinikmati pengguna sebelumnya, lalu merekomendasikan konten yang memiliki karakteristik serupa. Di sisi lain, collaborative filtering berfokus pada perilaku dan preferensi pengguna lain yang memiliki pola serupa, menggunakan pendekatan seperti Singular Value Decomposition (SVD) untuk memprediksi preferensi 2.

Proyek ini menggabungkan kedua metode tersebut untuk menciptakan sistem rekomendasi film yang lebih akurat dan personal. Dengan menggabungkan content-based dan collaborative filtering, diharapkan dapat mengatasi kelemahan dari masing-masing metode. Misalnya, content-based filtering sering kali terbatas pada preferensi pengguna yang sudah ada, sementara collaborative filtering dapat menghasilkan rekomendasi yang lebih inovatif namun mungkin rentan terhadap masalah cold start.

Pentingnya Proyek

Sistem rekomendasi yang akurat sangat penting dalam meningkatkan kepuasan pengguna dan menjaga keterlibatan pengguna dalam platform streaming. Dalam dunia di mana jumlah konten digital yang tersedia terus bertambah secara eksponensial, pengguna sering kali merasa kewalahan dengan banyaknya pilihan yang ada. Oleh karena itu, sistem rekomendasi yang dapat menyaring dan menyajikan konten yang relevan menjadi sangat berharga.

Proyek ini penting untuk diselesaikan karena akan memungkinkan platform streaming untuk menyediakan rekomendasi film yang lebih tepat sasaran, meningkatkan retensi pengguna, dan pada akhirnya, mengoptimalkan pendapatan platform tersebut. Selain itu, dengan memanfaatkan metode gabungan, proyek ini berpotensi untuk memberikan wawasan baru dalam pengembangan sistem rekomendasi yang lebih canggih di masa depan.

Business Understanding

Problem Statements

Goals

Solution Approach

  1. Content-Based Filtering:

    Pendekatan ini menggunakan informasi yang terdapat dalam deskripsi film, seperti genre dan tag, untuk menemukan film yang mirip dengan film yang sudah ditonton oleh pengguna. Algoritma ini bekerja dengan menganalisis kesamaan antara fitur-fitur tersebut menggunakan metode cosine similarity untuk menghasilkan rekomendasi yang relevan.

  2. Collaborative Filtering

    Pendekatan ini menggunakan pola interaksi pengguna dengan berbagai film untuk memberikan rekomendasi. Dalam proyek ini, metode Singular Value Decomposition (SVD) digunakan untuk mendeteksi pola dalam preferensi pengguna, yang kemudian digunakan untuk merekomendasikan film.

Data Understanding

Dataset yang digunakan dalam proyek ini adalah MovieLens 20M dari Kaggle, yang terdiri dari 6 file CSV yang mencakup informasi mengenai film, tag, rating, dan relevansi tag. Dataset ini sangat kaya dengan sekitar 20 juta interaksi pengguna terhadap lebih dari 27.000 film, memberikan landasan yang kuat untuk mengembangkan sistem rekomendasi.

Data ini menggambarkan aktivitas pengguna yang memberikan rating dan tag pada film, dengan total 20 juta rating dan lebih dari 465.000 tag yang diterapkan. Dataset ini mencakup kontribusi dari lebih dari 138.000 pengguna yang aktif antara 9 Januari 1995 hingga 31 Maret 2015. Pengguna dalam dataset ini dipilih secara acak, dan setiap pengguna telah menilai setidaknya 20 film, memberikan wawasan yang mendalam tentang preferensi film mereka. Berdasarkan informasi pada halaman dataset ini terakhir diperbarui pada 17 Oktober 2016.

Namun, pada proyek ini hanya 3 file dataset yang akan digunakan, yaitu:

1. movie.csv:

# Column Non-Null Count Dtype Description
0 movieId 27278 non-null int64 ID film.
1 title 27278 non-null object Judul film.
2 genres 27278 non-null object Genre film.

Memiliki 3 kolom dan data sebanyak 27.278 untuk masing-masing kolom. Tidak terdapat missing value dan duplicate.

2. tag.csv:

# Column Non-Null Count Dtype Description
0 userId 465564 non-null int64 ID pengguna yang memberikan tag.
1 movieId 465564 non-null int64 ID film yang ditag oleh pengguna.
2 tag 465548 non-null object Tag yang diberikan oleh pengguna.
3 timestamp 465564 non-null object Waktu saat tag diberikan.

Memiliki 4 kolom dan data sebanyak 465.564 baris. Tidak ditemukan data duplicate, namun ditemukan adanya missing value pada data kolom tag sebanyak 16 baris data.

3. rating.csv: | # | Column | Non-Null Count |Dtype | Description | | — | ——— | ————– |——- | ———————————————— | | 0 | userId | 20000263 non-null |int64 | ID pengguna yang memberikan rating. | | 1 | movieId | 20000263 non-null |int64 | ID film yang diberi rating. | | 2 | rating | 20000263 non-null |float64 | Nilai rating yang diberikan pengguna (skala 0.5 - 5.0). | | 3 | timestamp | 20000263 non-null |object | Waktu saat rating diberikan. |

Memiliki 4 kolom dan data sebanyak 20.000.263 baris untuk masing-masing kolom. Tidak terdapat missing value dan duplicate.

Exploratory Data Analysis

Data Preparation

Modeling

  1. Content-Based Filtering:

    Content-based filtering bekerja dengan menganalisis fitur-fitur yang melekat pada film, yaitu genre dan tag untuk memberikan rekomendasi. Misalnya, jika pengguna menyukai film dengan genre “Action” dan tag “Hero,” sistem akan mencari film lain yang memiliki kesamaan dalam genre dan tag tersebut.

    Implementasi model ini menggunakan data gabungan dari file movie.csv dan tag.csv. Menggunakan TF-IDF Vectorizer untuk menghilangkan mengubah deskripsi teks pada kolom combined_features menjadi vektor numerik pada proses sebelummnnya. Kesamaan antar-film dihitung menggunakan teknik cosine similarity, di mana film yang memiliki nilai kesamaan tertinggi dengan film yang telah ditonton pengguna akan direkomendasikan.

    Model ini menghasilkan daftar Top-N film yang dapat diatur sesuai dengan kebutuhan rekomendasikan untuk pengguna berdasarkan kesamaan konten. Sebagai contoh, jika seorang pengguna baru saja menonton “The Dark Knight” sistem mungkin merekomendasikan “Justice League” atau “LEGO Batman” karena kesamaan dalam genre dan tag.

    Lihat hasil yang direkomendasikan berikut:

    image

    Kelebihan Cosine Similarity:

    • Mengukur kesamaan arah, tidak terpengaruh oleh ukuran vektor.
    • Efektif pada data dengan banyak nilai nol, seperti teks.
    • Konsep dan perhitungan yangsederhana.
    • Efektif meski panjang konten bervariasi.

    Kekurangan Cosine Similarity:

    • Tidak mempertimbangkan ukuran vektor.
    • Tidak menangkap hubungan kompleks atau non-linier.
    • Tidak menangani perbedaan skala antar fitur.
    • Sensitif terhadap fitur ekstrem (outlier) yang mungkin mengganggu hasil.
  2. Collaborative Filtering

    Collaborative filtering menggunakan pola interaksi pengguna lain yang memiliki preferensi serupa untuk memberikan rekomendasi. Alih-alih hanya mengandalkan kesamaan konten, pendekatan ini mencari kesamaan dalam perilaku pengguna, seperti film yang mereka beri rating tinggi.

    Implementasi pendekatan ini menggunakan data gabungan dari movie.csv dan rating.csv. Model Singular Value Decomposition (SVD) digunakan untuk memprediksi film yang mungkin disukai oleh pengguna. SVD bekerja dengan mendekonstruksi matriks rating pengguna-film menjadi komponen yang lebih kecil, memungkinkan sistem untuk mengidentifikasi preferensi tersembunyi dan kesamaan antar pengguna berdasarkan pola rating yang serupa.

    Sistem ini kemudian menghasilkan daftar Top-N film yang dapat diatur sesui dengan kebutuhan rekomendasikan untuk pengguna berdasarkan perilaku pengguna lain yang serupa. Misalnya, jika pengguna A dan pengguna B memiliki rating yang mirip untuk beberapa film, dan pengguna B menyukai film yang belum ditonton oleh pengguna A, film tersebut akan direkomendasikan kepada pengguna A.

    Lihat hasil yang direkomendasikan berikut:

    image

    Kelebihan SVD:

    • Mengurangi dimensi data, sehingga lebih efisien menangani data yang jarang (sparse).
    • Memperbaiki prediksi dengan menemukan pola tersembunyi dalam data pengguna dan item.
    • Mengurangi jumlah fitur, membuat model lebih sederhana dan lebih cepat.
    • Mampu menghasilkan rekomendasi yang lebih personal berdasarkan preferensi tersembunyi.

    Kekurangan SVD:

    • Memerlukan data yang sudah diisi lengkap (non-sparse), sehingga perlu teknik imputasi data yang tepat.
    • Menghitung dekomposisi matriks besar membutuhkan sumber daya komputasi yang signifikan.
    • Kurang cocok untuk data yang sering berubah, seperti penambahan pengguna atau item baru.
    • Hanya menangkap hubungan linier, kurang efektif jika ada pola non-linear dalam data.

Evaluation

Content-Based Filtering

Untuk Content Based filtering menggunakan metrik Precission. Metrik ini digunakan untuk mengukur akurasi sistem rekomendasi. Precision mengukur seberapa banyak item yang direkomendasikan atau diklasifikasikan sebagai positif yang benar-benar relevan atau positif.

Formula Precission:

image

Cara Kerja:

Hasil:

Precission
1.0

Precision sebesar 1.0, artinya semua film yang direkomendasikan memiliki kemiripan yang tinggi dengan film dasar dalam hal konten yang dianalisis, sehingga semua rekomendasi dianggap relevan dan sesuai dengan preferensi yang diukur. Bisa dikatakan

Collaborative Filtering

Untuk collaborative filtering digunakan metode Singular Value Decomposition (SVD) dan metrik evaluasi yang dipakai adalah Root Mean Square Error (RMSE). RMSE mengukur seberapa dekat prediksi rating film dengan rating asli yang diberikan oleh pengguna.

Formula RMSE sebagai berikut:

image

Di mana:

Cara Kerja RMSE:

Interpretasi RMSE:

Hasil:

RMSE
0.288

RMSE (Root Mean Square Error) sebesar 0.288 menunjukkan bahwa rata-rata kesalahan antara prediksi dan nilai sebenarnya (rating yang diberikan pengguna) adalah sekitar 0.288. Menunjukkan bahwa prediksi sistem cukup dekat dengan nilai yang diharapkan dan sudah cukup baik. BIsa dikatakan model berhasil memberikan rekomendasi yang cukup relevan. Namun masih perlu ditingkatkan lagi agar mendapatkan nilai yang lebih kecil atau mendekati nol.

Conclussion

Reference

  1. Meel, P., et al. “Movie Recommendation Using Content-Based and Collaborative Filtering”. 2020. SpringerLink. Link Available 

  2. Koren, Y., et al. “Matrix Factorization Techniques for Recommender Systems”. 2009. IEEE. DOI: 10.1109/MC.2009.263