Perkembangan teknologi telah meningkat dalam berbagai bidang seperti bidang ekonomi, ilmu pengetahuan, industri maupun dalam kehidupan sosial. Salah satu dampak perkembangan teknologi audio dan visual yang mana saat ini berkembang sangat pesat adalah industri Perfilman. Hingga saat ini jika di hitung jumlah judul film internasional di dunia ini sebesar 3,357,063 dan jumlah tersebut akan terus bertambah (Sumarlin, E. et al., 2016). Dengan adanya jumlah film yang banyak sampai saat ini, tentu hal tersebut membuat seorang user menjadi susah untuk mencari film dengan kriteria yang sama berdasarkan genre, produser, tahun dll. Maka dari itu, yang dibutuhkan oleh user adalah sebuah solusi untuk membantu dalam memilih film berdasarkan kriteria-kriteria tersebut.
Gambar 1. Sistem rekomendasi merupakan salah satu solusi tersebut
Salah satu solusi dari permasalahan tersebut adalah dengan membuat sistem rekomendasi. Sampai saat ini sudah terdapat banyak aplikasi rekomendasi film yang telah beredar (Sumarlin, E. et al., 2016). Sistem rekomendasi dapat dibuat berdasarkan satu atau beberapa kriteria contohnya seperti sistem rekomendasi berdasarkan genre. Genre dalam film merupakan elemen utama dalam suatu sistem rekomendasi, karena dengan adanya pengklasifikasian genre dapat memudahkan sistem dalam mencari sebuah film berdasarkan tipe-tipe tertentu, penonton juga lebih mudah dalam mengidentifikasi film seperti apa yang ditayangkan (Zhou, H. et al., 2010). Pada kasus ini model yang dibuat adalah sebuah model sistem rekomendasi yang digunakan untuk merekomendasikan film berdasarkan genre yang ada. Dataset yang digunakan berasal dari MovieLens 20M Dataset.
Berdasarkan latar belakang di atas, rumusan masalah dalam kasus ini adalah :
- Bagaimana membuat model sistem rekomendasi untuk merekomendasikan film berdasarkan genre ?
- Bagaimana cara kerja model sistem rekomendasi untuk merekomendasikan film berdasarkan genre ?
- Bagaimana hasil evaluasi model yang telah dibuat untuk merekomendasikan film berdasarkan genre ?
Adapun tujuan yang ingin dicapai dari kasus ini adalah sebagai berikut:
- Menghasilkan model sistem rekomendasi yang dapat digunakaan untuk merekomendasikan film berdasarkan genre
- Mengetahui cara kerja model sistem rekomendasi dalam merekomendasikan film berdasarkan genre
- Menghasilkan evaluasi model yang telah dibuat untuk merekomendasikan film berdasarkan genre
Adapun beberapa cara yang akan digunakan untuk menyelesaikan masalah tersebut adalah:
- Menggunakan pendekatan Content Based Filtering dengan metode vektorisasi TF-IDF dan Cosine Similarity.
- Menggunakan pendekatan Collaborative Filtering dengan metode Neural Network berdasarkan data rating user.
Dalam model ini, menggunakan dataset yang dicantumkan dalam jurnal "Increasing Performance of Recommender Systems by Combining Deep Learning and Extreme Learning Machine" (Nazari, Z. et al., 2022) yang mana mengambil dataset opensource di Kaggle dengan nama "MovieLens 20M Dataset". Dataset ini berisi ±270.000 data film dengan berbagai genre. Lalu terdapat dataset rating terhadap film-film tersebut sebanyak 20.000.000 data rating. Lalu terdapat dataset lainnya, tapi pada model ini tidak menggunakan dataset tersebut. Pada dataset tersebut masing-masing memiliki beberapa fitur yang terdiri dari
Pada file dataset movie.csv terdiri dari :
movieId= Id masing masing movietitle= Judul moviegenres= Genre movie
Sedangkan pada file dataset rating.csv terdiri dari :
userId= Id masing masing usermovieId= Id masing masing movierating= Rating user (0-5)timestamp= Genre movie
Variable description merupakan proses investigasi awal pada data untuk menganalisis karakteristik, menemukan pola, anomali, dan memeriksa asumsi pada data (Dicoding, 2022). Salah satu contoh variable description adalah dengan menganalisa jenis tipe data masing masing feature. Dengan menganalisis tipe data peneliti dapat mengecek bagaimana sifat fitur fitur tersebut karena terkadang terdapat fitur tidak tepat. Dengan mengecek tipe data masing masing fitur peneliti akan lebih mengenal dataset tersebut.
Selain itu, melakukan penggantian tipe data agar bisa mengurangi resource saat model mentrain data yang cukup besar. Dalam model ini terdapat penggantian tipe data antara lain:
| Variable | dtype Before Casting | dtype After Casting |
|---|---|---|
movieId |
int64 | category |
genres |
object | category |
userId |
int64 | int32 |
rating |
float64 | float32 |
Tabel 1. Daftar Perubahan dtype dalam dataset
Dengan penggantian tipe data seperti yang ada pada Tabel 1, menjadikan komputasi lebih ringan karena masing masing variabel menjadi lebih sedikit alokasi memorinya (±600 MB ➡ ±300 MB). Hal tersebut akan berdampak pada kecepatan dan akurasi model yang dibuat
Agar model memiliki akurasi yang optimal, pengecekan nilai Null merupakan hal yang penting. Dikarenakan model akan menghitung semua data tanpa peduli nilai data tersebut apa, maka dari itu diperlukan untuk menghapus data yang kosong / Null karena model hanya bisa menghitung/memprediksi berdasarkan angka / nilai.
Pada dataset ini tidak ditemukan data yang berisi null. Maka dari itu tidak diperlukan tindakan untuk membuang data kosong tersebut.
Dalam kasus model ini, masing masing pendekatan (Content Based Filtering dan Collaborative Filtering) dibedakan dalam hal data preparation dikarenakan memang data yang dibutuhkan tiap tiap pendekatan berbeda. Berikut merupakan data preparatin dari masing masing pendekatan:
Dalam pendekatan Content Based Filtering dibutuhkan data yang mencakup movie tersebut (dalam hal ini adalah movieId) dan atribut yang akan digunakan untuk mengelompokkan movie (dalam hal ini adalah genres). Maka dari itu diperlukan beberapa tahap. Berikut merupakan tahapan mempersiapkan data dalam pendekatan Content Based Filtering:
-
Menghapus film dengan genre lebih dari 1
Agar model lebih memahami dengan data yang dimiliki, diperlukan sebuah target yang jelas. Target dalam hal ini adalah
genres. Dalam melakukan hal tersebut, dataset perlu dianalisa terlebih dahulu bentuk value, dan tipedatanya agar memudahkan dalam proses. Berdasarkan dataset tersebut, ditemukan bahwa dalam collumnsgenredapat berisi 1 atau lebih genre. Untuk movie yang memiliki data lebih dari satu genre dipisahkan oleh karakterpipe (|). Maka dari itu, untuk mendapatkan salah satu nilai genre dari movie tersebut dengan cara menggunakan fungsisplit('|')dengan mengisi parameterseparator='|', sehingga nantinya akan mengembalikan sebuah array berupa genre. Setelah mendapatkan array tersebut, pilihindexyang digunakan untuk nilai yang mewakili movie tersebut. Dalam kasus iniindexpertama yang akan digunakan karena kebanyakan genre pada index pertama lebih releven dengan movie. -
Mengecek Null Value
Setelah menghapus genre yang tidak perlu, langkah selanjutnya adalah mengecek null value agar nantinya model bisa bekerja dengan optimal karena jika terdapat data null yang terhitung maka model akan terjadi error.
-
Menghapus Data Duplikat
Dalam dataset data duplikat akan sangat tidak menguntungkan oleh model pada hal akurasi dikarenakan akan terjadi bias serta dalam komputasi karena data duplikat tersebut juga akan ikut terproses. Maka dari itu diperlukan pembuangan data yang duplikat.
Dalam pendekatan Collaborative Filtering dibutuhkan data yang mencakup rating dari user dan atribut lainnya yang menunjang rating tersebut seperti judul film yang di rating (dalam hal ini adalah movieId). Untuk mendapatkan data tersebut diperlukan beberapa tahap. Berikut merupakan tahapan mempersiapkan data dalam pendekatan Collaborative Filtering:
-
Mengencode data user dengan movie
Dalam pendekatan Collaborative Filtering dibutuhkan data yang mana menampung movie apa yang telah ditonton user dan movie apa yang belum ditonton movie. Maka dari itu agar mempermudah model dalam mengelompokkan movie-movie tersebut dibuatlah dictionary antara data user dengan data movie dan sebaliknya.
Dalam proses mengencode, diperlukan sebuah data yang mana berisi movie dan user. Pada masing masing data kita akan buat dictionary masing masing dengan
keyberisi index dari movie/user tersebut danvalueberisi nilai movie/user itu sendiri. Untuk mendapatkan index dapat menggunakan fungsienumerate(data, start). Dalam fungsienumerate()akan mengembalikan 2 nilai berupa index yang berjalan dan data itu sendiri -
Normalisasi
Normalisasi dilakukan agar model dapat bekerja dengan optimal. Dengan melakukan normalisasi, dataset yang sebelumnya memiliki range yang cukup besar akan diubah menjadi range yang lebih kecil (0-1) dengan begitu komputasi model tidak akan terlalu berat.
| Descriptive Statistics | Value |
|---|---|
| count | 20000263.0 |
| mean | 0.7 |
| std | 0.2 |
| min | 0.0 |
| 25% | 0.6 |
| 50% | 0.7 |
| 75% | 0.8 |
| max | 1.0 |
Tabel 2. Statistik Deskriptif Setelah Normalisasi
Seperti yang ada pada Tabel 2, nilai dari rating memiliki range antara 0-1
-
Pembagian dataset
Pembagian dataset merupakan salah satu tindakan yang sangat diperlukan untuk mengetest apakah model sudah memiliki tingkat akurasi sesuai yang diharapkan atau tidak.
Dalam modeling, pendekatan yang digunakan terdapat 2 antara lain:
- Content Based Filtering
- Collaborative Filtering
Adapun kelebihan dan kekurangan masing masing algoritma tersebut antara lain
| No | Algoritma | Kelebihan | Kekurangan | |
|---|---|---|---|---|
| 1 | Content Based Filtering | Simpel | Harus memiliki metadata yang baik | |
| Pilihan yang cocok untuk Unpersonalized Model Recommendation | Terkadang beberapa konten yang susah untuk dianalisis | |||
| Tidak diperlukan data dari user lain | Tidak mendapatkan rekomendasi berdasarkan apa yang dilakukan sebelumnya | |||
| 2 | Collaborative Filtering | Bisa mendapatkan rekomendasi berdasarkan user yang mirip | Komputasi yang mahal | |
| Pilihan yang cocok untuk Personalized Model Recommendation | Harus memiliki data user lainnya | |||
| Memfasilitasi untuk berbagi pengetahuan antar user | Rumit dalam pembuatan model |
Tabel 3. Kekurangan dan Kelebihan Pendekatan Content Based, dan Collaborative Filtering
Content Based Filtering adalah salah satu pendekatan dalam sistem rekomendasi. Content Based Filtering sering digunakan untuk merekomendasikan user berdasarkan objek selain user. Dengan adanya Content Based Filtering suatu perusahaan dapat merekomendasikan produknya berdasarkan kemiripan produk dengan yang lainnya sehingga cocok untuk user yang baru melihat atau datang di situs tersebut. Dalam Content Based Filtering diperlukan metadata yang lengkap dikarenakan metadata itulah yang menjadi jantung Content Based Filtering.
Dalam membuat model sistem rekomendasi dengan pendekatan Content Based Filtering diperlukan beberapa tahap antara lain:
-
Vektorisasi dengan metode TF-IDF
Dalam Content Based Filtering data target perlu di vektorisasikan agar data tersebut dapat dihitung seberapa penting data tersebut terhadap data lainnya. Dalam hal ini dikarenakan targetnya adalah
genre, maka perlu memvektorisasikangenretersebut dan melihat apakah data tersebut memiliki nilai vektor yang tinggi atau tidak -
Mencari Cosine Similarity
Setelah menghitung vektor dari masing masing
genre, agar model mengetahui genre apakah yang saling berkaitan satu sama lain maka perlu dilakukan perhitungan cosine similarity. Dengan melakukan cosine similarity maka movie akan dapat dikelompokkan berdasarkangenreyang sama yang nantinya akan mengeluarkan rekomendasi movie yang memiliki genre yang sama -
Generate Rekomendasi
Setelah mendapatkan matrix dari cosine similarity maka model telah selesai dibuat. Lalu untuk menggerenate rekomendasi model hanya perlu mencari nilai yang mana cossine similaritynya tertinggi.
Berikut merupakan hasil rekomendasi dalam pendekatan Content Based Filtering
# Get recommendations
film_recommendations('toy story', 15)| film | genre | |
|---|---|---|
| 0 | The Pirates | Adventure |
| 1 | Toy Story 3 | Adventure |
| 2 | Descent: Part 2, The | Adventure |
| 3 | The Black Rose | Adventure |
| 4 | Young Winston | Adventure |
| 5 | St Trinian's 2 : The Legend of Fritton's Gold | Adventure |
| 6 | Sky Crawlers, The (Sukai Kurora) | Adventure |
| 7 | Shrek Forever After (A.K.A Shrek: The Final C...) | Adventure |
| 8 | Percy Jackson & The Olympians: The Lightining T.. | Adventure |
| 9 | B.N.B. (Bunty Aur Babli) | Adventure |
| 10 | Agora | Adventure |
| 11 | When Dinosurs Ruled The Earth | Adventure |
| 12 | North Face (Nordwand) | Adventure |
| 13 | Men Who Tread On The Tiger's Tail, The (Tora N.. | Adventure |
| 14 | How To Train Your Dragon | Adventure |
Tabel 4. Hasil rekomendasi 15-Top_Recommendation berdasarkan Genre
-
Evaluasi Model
Untuk melihat apakah model sudah akurat atau tidak perlu melakukan penilaian matriks. Dalam kasus ini, model akan diperiksa keakuratannya dengan matriks Recommendation System Precission. Jika presisi tidak sesuai dengan yang diharapkan maka perlu adanya pengulangan pada tahap, data preparation agar data yang dihasilkan bagus.
Collaborative Filtering adalah salah satu pendekatan dalam sistem rekomendasi. Collaborative Filtering sering digunakan untuk merekomendasikan user berdasarkan pengalaman user itu sendiri ataupun user lainnya. Dengan adanya Collaborative Filtering suatu perusahaan dapat merekomendasikan produknya berdasarkan pengalaman user sebelumnya sehingga cocok untuk user yang memiliki prefensi masing masing. Dalam Collaborative Filtering diperlukan dataset log aktivitas dari user itu sendiri.
Dalam membuat model sistem rekomendasi dengan pendekatan Collaborative Filtering diperlukan beberapa tahap antara lain:
-
Modifikasi kelas model
Dalam Collaborative Filtering , model akan menggunakan sebuah kelas Neural Network model yang mana kelas tersebut nantinya akan dicustom terlebih dahulu agar sesuai dengan studi kasus saat ini. Model yang digunakan adalah RecommenderNet yang mana salah satu pretrained model yang ada dikeras dan digunakan untuk membuat sistem rekomendasi
-
Menerapkan kelas model
Setelah melakukan penyesuaian terhadap kelas model, selanjutnya adalah dengan menerapkan model tersebut ke dataset yang telah dibersihkan sebelumnya. Parameter yang dipakai adalah
num_user,num_movie, danembedding_size -
Train model
Setelah menerapkan model tersebut ke dataset, hal yang perlu dilakukan adalah melatih model tersebut. Pada pelatihan ini model akan dilatih dengan parameter
epoch=50,batch_size=200.000, dancallbacks=EarlyStopping() -
Generate Rekomendasi
Untuk menggenerate rekomendasi tidak hanya menggunakan fungsi
predict()saja karena data return dari fungsipredict()perlu diolah terlebih dahulu agar dipahami oleh user.
Berikut merupakan hasil rekomendasi dengan pendekatan Collaborative Filtering
| Top Movie with High Ratings From User 546 | Genre |
|---|---|
| Dr. Strangelove Or: How I Learned To Stop Worrying And Love The Bomb | Comedy |
| Godfather, The | Crime |
| William Shakespeare'S Romeo + Juliet | Drama |
| Reservoir Dogs | Crime |
| Ice Storm, The | Drama |
| American Beauty | Comedy |
| Ghost Dog: The Way Of The Samurai | Crime |
| City Of God (Cidade De Deus) | Action |
| Lost In Translation | Comedy |
| Garden State | Comedy |
Tabel 5. 10-Top_High_Rated dari userid 546
| Top Movie Recommendation for User 546 | Genre |
|---|---|
| Vertigo | Drama |
| Rear Window | Mystery |
| It Happened One Night | Comedy |
| Sunset Blvd. (A.K.A. Sunset Boulevard) | Drama |
| 12 Angry Men | Drama |
| Best Years Of Our Lives, The | Drama |
| On The Waterfront | Crime |
| 400 Blows, The (Les Quatre Cents Coups) | Crime |
| Rashomon (Rashômon) | Crime |
| Secret In Their Eyes, The (El Secreto De Sus Ojos) | Crime |
Tabel 6. 10-Top_Recommendation berdasarkan userid 546
-
Evaluasi Model
Untuk melihat apakah model sudah akurat atau tidak perlu melakukan penilaian matriks. Dalam kasus ini, model akan diperiksa keakuratannya dengan matriks MSE (Mean Squared Error). Model akan dinilai seberapa error terhadap data benar. Jika error melebihi dengan yang diharapkan maka perlu adanya pengulangan pada tahap data preparation dan data training agar model menghasilkan rekomendasi yang tepat.
Dalam menentukan model mana yang terbaik akurasinya, perlu diperhatikan terlebih dahulu metriks apa yang digunakan. Antara kasus memiliki masing masing matriks. Dalam kasus kali ini, model dibuat untuk menyelesaikan kasus sistem rekomendasi maka dari itu metriks yang digunakan antara lain
- Recommendation System Precission
- MSE (Mean Square Error)
- Recommendation System Precission Recommendation System Precission adalah salah satu matriks yang digunakan untuk mengukur seberapa presisikah sebuh model rekomendasi. Matriks tersebut didapatkan dengan menghitung jumlah rekomendasi yang benar dibagi dengan jumlah rekomendasi yang diberikan. Dalam kasus ini, Recommendation System Precission digunakan untuk menghitung model dengan pendekatan Content Based Filtering. Setelah menggunakan metriks tersebut dalam model Content Based Filtering, didapat presisi mencapai 100% dan recall 1.172
Gambar 2. Rumus Recommender System Precision dan recall
-
MSE (Mean Square Error)
Semua matriks regresi pada umumnya memiliki cara kerja yang sama yaitu menghitung nilai error. Nilai errornya sendiri didapat berdasarkan pada masing masing matriks namun secara umum nilai error didapat dari nilaiBenar - nilaiPrediksi . Jika nilai prediksi semakin mendekati nilai benar maka nilai error pun akan semakin kecil (mendekati 0).
Pada matriks MSE (Mean Square Error) nilai error didapatkan dari mengkuadratkan terlebih dahulu lalu baru di rata rata. Berikut merupakan MSE yang jika dinotasikan dalam matematika
Gambar 3. Rumus Mean Squared Error
Dari matriks tersebut didapatkan tingkat error pada model sebagai berikut
| Epoch | loss | val_loss | mse | val_mse |
|---|---|---|---|---|
| 1 | 0.6538 | 0.6472 | 0.0639 | 0.0611 |
| 2 | 1.4197 | 0.8099 | 0.1478 | 0.1398 |
| 3 | 6.1476 | 1.3699 | 0.2614 | 0.1526 |
| 4 | 6.5779 | 2.0804 | 0.1901 | 0.4447 |
| 5 | 4.5104 | 0.8934 | 0.2610 | 0.1162 |
| 6 | 4.1191 | 2.6865 | 0.1977 | 0.4805 |
| 7 | 3.3527 | 0.6211 | 0.2311 | 0.0457 |
| 8 | 4.7516 | 4.0370 | 0.2012 | 0.5024 |
| 9 | 6.0048 | 0.6586 | 0.2688 | 0.0594 |
Tabel 7. MSE Hasil Train dan Testing
Gamber 4. Plot MSE Hasil Train dan Testing
Berdasarkan tabel 7 dan precision dari masing masing pendekatan (Content Based dan Collaborative Filtering), semua pendekatan memiliki output yang cukup bagus dengan presisi rekomendasi Content Based Filtering mencapai 100 % dan MSE (Mean Squared Error) dari Collaborative Filtering mencapai 0.2688 yang mana itu sudah cukup bagus untuk dijadikan model sistem rekomendasi. Namun jika kita bandingkan antara kedua pendekatan tersebut tentu tidak bisa dikarenakan masing masing pendekatan memiliki tujuannya sendiri sendiri.
- Dicoding, A. (2022). Machine Learning Terapan. Dicoding Academy. https://dicoding.com
- Nazari, Z., Koohi, H. R., & Mousavi, J. (2022). Increasing Performance of Recommender Systems by Combining Deep Learning and Extreme Learning Machine. Journal of AI and Data Mining.
- Sumarlin, E. W., Hansun, S., & Wiratama, Y. W. (2016). Rancang Bangun Aplikasi Rekomendasi Film dengan Menggunakan Algoritma Simple Additive Weighting. Jurnal Informatika Ahmad Dahlan, 10(2), 103958.
- Zhou, H., Hermans, T., Karandikar, A. V., & Rehg, J. M. (2010, October). Movie genre classification via scene categorization. In Proceedings of the 18th ACM international conference on Multimedia (pp. 747-750).

