shape, key, info pada dataset. Kemudian, dilakukan visualisasi data seperti count plot dan pie chart untuk mendapatkan gambaran atau ilustrasu lebih jelas mengenai dataset yang digunakan.content-based filtering yang memberikan rekomendasi kepada pengguna berdasarkan kesamaan pada item yang ada. Data yang digunakan berisi data dari genre dari setiap film. Dataset tersebut juga melewati tahap Data Preparation agar dataset dapat digunakan untuk proses pembangunan model seperti, menangani data duplikat, missing value, dan mengganti beberapa data agar sesuai. Kemudian, data yang sudah siap, diproses ke tahap modelling yang memanfaatkan Tfidvectorizer, cosine similarity, dan fungsi buatan yang mengembalikan rekomendasi berdasarkan kesamaan pada item. Pendekatan ini berfokus pada karakteristik atau konten dari item yang direkomendasikancollaborative filtering yang memberikan rekomendasi kepada pengguna dengan menganalisis perilaku dan preferensi pengguna. Data yang digunakan berisi data review untuk film-film dari user. Dataset tersebut juga melewati tahap Data Preparation agar dataset dapat digunakan untuk proses pembangunan model seperti, menangani data duplikat, missing value, encoding, dan train test split. Kemudian, data yang sudah siap, diproses ke tahap modelling yang menggunakan RecommenderNet dan Early Stopper dalam proses training-nya. Pendekatan ini membutuhkan data terkait user.movie.csv dan rating.csv. movie.csv terdiri dari 9078 baris data dan 3 kolom data. Kemudian, rating.csv terdiri dari 100836 baris data dan 4 kolom data.Content-Based Filtering maupun Collaborative Filteringmovie.csv:movieId: Id filmtitle: Judul filmgenres: Genre filmrating.csv :userId: Id usermovieId: Id filmrating: Skor rating yang sebuah filmtimestamp: Waktu kapan film diberikan skor ratingmovie.csv ditampung dalam variabel movie_dfrating.csv ditampung dalam variabel review_dfmovie_df:movieIdtitlegenresmovieId = int64title = objectgenres = objectmovie_df. Proses pembersihan dan persiapan dataset akan dikerjakan lebih lanjut pada tahap selanjutnya.review_df:userIdmovieIdreviewtimestampuserId = int64movieId = int64review = float64timestamp = int64count : Jumlah data dari sebuah kolommean : Rata-rata dari sebuah kolomstd : Standar deviasi dari sebuah kolommin : Nilai terendah pada sebuah kolom25% : Nilai kuartil pertama (Q1) dari sebuah kolom50% : Nilai kuartil kedua (Q2) atau median atau nilai tengah dari sebuah kolom75% : Nilai kuartil ketiha (Q3) dari sebuah kolommax : Nilai tertinggi pada sebuah kolom Walaupun kolom selain review ada yang tetap bisa diproses menggunakan fungsi describe() karena bertipe data int64 dan float64, tetapi yang benar-benar kolom numerik hanyalah kolom review.movie_df:

Comedy, Drama, dan Action memiliki proporsi dan jumlah terbesar secara keseluruhan dibandingkan genre lainnya pada `movie_dfreview_df:

4.0 dan 3.0 memiliki proporsi dan jumlah terbesar secara keseluruhan dibandingkan skor lainnya pada review_df.
movieId dengan review terbanyak pada dataset review_df.movieId diatas memiliki review terbanyak pada dataset.movie_df:movie_dfmovie_df, khususnya kolom genre, yang perlu dihapus karena nama nilainya itu sendiri, yaitu `(no genres listed)'.(no genres listed) terbukti sudah tidak ada lagi pada datasetWar pada kolom genre hanya memiliki 4 data point. Dalam kasus ini, value yang kurang dari 6 data dalam dataset perlu dihilangkana karena tidak dapat digunakan. Hal ini akan ditindak lebih lanjut pada bagian selanjutnya.genre yang bernilai Warmovie_df, khususnya kolom genre, yang perlu diganti namanya, yaitu Sci-Fi dan Film-Noir.Sci-Fi dan Film-Noir sudah berhasil diubah dengan menghilangkan tanda - pada kedua nilai tersebut. Maka dari itu, nilai tersebut sudah siap untuk diproses pada tahap selanjutnya.SciFi dan FilmNoirmovie_df masih memiliki:movie_df masih memiliki:review_df :review_df. Maka, tidak perlu dilakukan pengisian pada data hilang.review yang dicek karena hanya kolom tersebut yang tergolong sebagai kolom numeric dan perlu dilakukan pemeriksaan outliers-nya.review adalah 0.5 dan terbesarnya adalah 5.0. Kedua nilai tersebut masih di ambang wajar untuk sebuah review film. Jadi, tidak ada outliers dan tidak ada penghapus outliers untuk kolom reviewtimestamp telah berhasil dihapus. Kolom tersebut dihapus karena tidak diperlukan untuk proses pembuatan sistem rekomendasi secara collaborative filtering.review_df:review_df masih memiliki:userIduserId berhasil dilakukan. Output tersedia di notebook dan tidak dapat ditampilkan disini karena terlalu panjang.movieIdmovieId berhasil dilakukan. Output tersedia di notebook dan tidak dapat ditampilkan disini karena terlalu panjang.userId dan movieId:review_df dengan menempati kolom baru untuk masing-masing hasil.review_df:user dan moviemovie_df dari beberapa aspek lainnya:review_df terdapat:review_df menjadi dua bagian ke x_df dan y_df untuk proses Train Test Split berhasil dilakukanContent-Based Filtering dan Collaborative Filtering. Content-Based Filtering menggunakan dataset movie_df dan Collaborative Filtering menggunakan dataset review_df. Kedua model atau algoritma tersebut memiliki pendekatan yang berbeda-beda. Berikut ini adalah penjelasan berserta kelebihan dan kekurangan dari keduanya:genre dari film yang ada dari dataset movie_df. Model akan memberikan rekomendasi film-film yang memiliki genre yang sama berdasarkan genre dari judul film yang digunakan sebagai input.review_df untuk memberikan rekomendasi kepada seorang user. Sistem Rekomendasi yang dibuat memberikan rekomendasi berdasarkan skor review yang diberikan dari sebuah film dan genre yang dilakukan oleh seorang user. Lebih tepatnya, 5 film dengan skow review tertinggi dan setiap film tersebut memiliki genrenya masing-masing. Kemudian, model akan memberikan 10 rekomendasi film untuk user tersebut berdasarkan riwayat review user tersebut.TfidVectorizergenrefit_tranform dan pengecekan ukuranto_dense()todense() sudah berhasil dilakukancosine_similarity()cosine_similarity telah berhasil dilakukan.cosine_simmovie_recommendations()Train to Busan (2016) yang ber-genre Actionmovie_recommendations untuk mendapatkan Top-N RecommendationsTop-N Recommendation menggunakan Content-Based Filtering. Proses penggunaan model berhasil dilakukan dan model dapat memberikan hasil rekomendasi berdasarkan input yang diberikan.Action berdasarkan input yang diberikan, yaitu Train to Busan (2016) yang juga bergenre Actionclass RecommenderNetclass RecommenderNet yang digunakan untuk pembuatan model Collaborative Filtering telah berhasil dibuat.val_root_mean_squared_error tidak mengalami penurunan lagi selama 5 epochs. Setelah berhenti, model pada epoch tertentu yang memiliki performa terbaik akan dipertahankanloss : 0.5912root_mean_squared_error : 0.1817val_loss : 0.6025val_root_mean_squared_error : 0.1948Top-N Recommendation menggunakan Collaborative Filterting. Proses penggunaan model berhasil dilakukan dan model dapat memberikan hasil rekomendasi berdasarkan review dari user tertentu dan memberikan rekomendasi film lainnya yang cocok untuk user tersebut.567 yang pernah memberikan skor review tinggi ke film dan genre:Eraserhead (1977) : DramaCome and See (Idi i smotri) (1985) : DramaJetée, La (1962) : RomanceThere Will Be Blood (2007) : DramaIt's Such a Beautiful Day (2012) : AnimationShawshank Redemption, The (1994) : CrimeRear Window (1954) : MysteryNorth by Northwest (1959) : ActionCasablanca (1942) : DramaSunset Blvd. (a.k.a. Sunset Boulevard) (1950) : DramaCitizen Kane (1941) : DramaRebecca (1940) : DramaNotorious (1946) : FilmNoirTo Catch a Thief (1955) : CrimeLawrence of Arabia (1962) : AdventureContent-Based Filtering : PrecisionCollaborative Filtering : Root Mean Squared ErrorContent-Based Filtering : PrecisionPrecisionPrecision :
Precision dari model Content-Based Learningcalculate_precision digunakan untuk perhitungan Presisi berdasarkan formula PresisiPrecision dari model Content-Based Filtering telah berhasil dibuat.1.0 atau 100% untuk semua genre dalam memberikan rekomendasi berdasarkan genre.Colaborative Filtering : Root Mean Squared ErrorRoot Mean Squared ErrorRoot Mean Squared Error :Root Mean Squared Error dari model Collaborative LearningRoot Mean Squared Error
callbacks yang berisi early stopper. early stopper menghentikan proses training karena model tidak menunjukkan penurunan yang lebih keci dari val_root_mean_squared_error pada epochs ke-15 selama 5 epochs berturut-turut.loss : 0.5912root_mean_squared_error : 0.1817val_loss : 0.6025val_root_mean_squared_error : 0.1948Posted Jul 14, 2025
Developed a recommendation system for streaming platforms using content-based and collaborative filtering.
0
1