el-thobhy / Recommendation-system

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Laporan Proyek Machine Learning - Auriwan Yasper

Project Overview

Pada Proyek kali ini domain proyek yang penulis pilih adalah mengenai hiburan yaitu "Anime Recommendation system".

Latar Belakang Saat ini kartun jepang atau anime mengalami perkembangan yang sangat cepat dan penggemarnya tersebar diseluruh dunia. Terutama dengan merebaknya pandemi yang serba terbatas, membuat kebutuhan manusia akan hiburan semakin bertambah, salah satunya kartun jepang ini. Sudah banyak sekali platform yang menyediakan media hiburan seperti kartun jepang. Tentunya sebagai salah satu strategi marketing dalam dunia bisnis, UX atau user experience merupakan hal yang sangat penting bagi perkembangan platform tersebut. Maka salah satu strategi yang disiapkan perusahaan agar user betah dengan platform tersebut adalah sistem rekomendasi mengenai sesuatu atau apa saja yang mungkin disukai oleh user. Disinilah Machine learning akan bekerja, dengan mengumpulkan data dari user, perusahaan harus mampu membuat suatu sitem rekomendasi yang mungkin akan disukai oleh pengguna.

Terdapat cukup banyak pendekatan yang bisa digunakan dalam sistem rekomendasi diantaranya Content-Based-Filtering, Collaborative-Filtering, Multi-criteria, risk aware, hybrid-filtering dan lainnya. Badal Soni et al [1] dengan RikoNet-nya menggabungkan pendekatan content-based dan collaborative filtering dalam sistem rekomendasi yang dibuatnya. Begitu juga Sistem rekomendasi yang dirancang oleh Ramashini et al[2] yang juga menggunakan kombinasi antara content-base dan collaborative filtering. Kumar et al[3] dengan MOV REC-nya mengajukan sistem rekomendasi dengan pendekatan collaborative filtering yang menggunakan informasi yang disediakan oleh penguna, lalu menganalisanya dan mebuat list rekomendasi yang cocok untuk para pengguna.

Business Understanding

Dalam dunia bisnis user experience sangat berperan penting dalam perkembangan produk milik perusahaan. Sehingga dibutuhkan strategi yang tepat untuk membuat pengguna nyaman dengan plaform tersebut. Jadi sistem rekomendasi akan membuat user experience menjadi lebih baik karena pengguna bisa menemukan rekomendasi tontonan yang tepat, dalam hal ini adalah kartun jepang atau anime.

Problem Statements

Berdasarkan latar belakang yang disebutkan diatas, permasalahan yang dapat diselesaikan pada proyek ini adalah

  • Bagaimana cara pengolahan data yang tepat untuk digunakan dalam merancang suatu model machine learning

  • Bagaimana cara merancang model machine learning untuk sistem rekomendasi kartun jepang.

Goals

Tujuan dari dibuatnya proyek ini adalah:

  • Melakukan data pre-processing yang baik yang akan digunakan dalam merancang model machine learning

  • Merancang model machine learning untuk membuat sistem rekomendasi kartun jepang.

Solution statements

Untuk mencapai tujuan dari proyek ini maka penulis menggunakan 2 algoritma, yaitu content base filtering dan collaborative filtering.

  • Content-base filtering merupakan cara untuk memberikan rekomendasi berdasarkan genre atau item pada fitur yang diminati pengguna. Ide dari sistem rekomendasi berbasis konten (content-based filtering) adalah merekomendasikan item yang mirip dengan item yang disukai pengguna di masa lalu.
  • Collaborative Filtering merupakan cara untuk memberi rekomendasi bedasarkan penilaian komunitas pengguna atau biasa disebut dengan rating.

Data Understanding

Terdapat dua sumber dataset yang penulis gunakan yaitu dataset anime dan dataset rating

jenis Keterangan
Sumber Dataset: Kaggle
Dataset Owner Hernan Valdivieso
lisensi CC0: Public Domain
Usability 10.00
Jenis dan ukuran berkas ZIP(693Mb)
Jumlah file dataset 6 file(5 csv, 1 folder)

Berikut ini file yang terdapat pada dataset:

  • html folder
  • anime.csv
  • anime_with_synopsis.csv
  • animelist.csv
  • rating_complete.csv
  • watching_status.csv

Dataset yang akan digunakan hanya dataset anime.csv lalu selanjutnya dataset rating yang diambil dari sumber berbeda, dengan sumber sebelumnya, karena dataset dari hernan terlalu besar. Berikut dataset yang akan digunakan:

Jenis Keterangan
Sumber Dataset: Kaggle
Dataset Owner Marlesson
lisensi CC0: Public Domain
Usability 10.00
Jenis dan ukuran berkas ZIP(227Mb)
Jumlah file dataset 3 file csv

Berikut file yang ada pada dataset

  • animes.csv
  • profiles.csv
  • reviews.csv

Dataset yang akan digunakan hanya reviews.csv untuk mendapatkan user_id untuk Collaborative learning.

anime.csv jumlah data 17.562

  1. MAL_ID: Id anime
  2. Name: Judul Anime
  3. Score: Rata rating user
  4. Genres: Genre-genre dari anime
  5. English name: Judul dalam bahasa ingris
  6. Japanese name: Judul dalam bahasa jepang
  7. Type: Tipe data TV ataukah Movie
  8. Episodes': Jumlah episode
  9. Aired: tanggal tanyangnya
  10. Premiered: season premiere
  11. Producers: list produser
  12. Licensors: list Lisensi
  13. Studios: Studio yang menggarap
  14. Source: Sumber anime
  15. Duration: Durasi dari anime
  16. Rating: age rate (e.g. R - 17+ (violence & profanity))
  17. Ranked: Rangking berdasarkan score
  18. Popularity: rangking berdasarkan user yang menambahkan ke list tonton
  19. Members: Jumlah pemain dalam anime
  20. Favorites: Jumlah User yang menambahkan sebagai favorite
  21. Watching: Jumlah user yang menonton anime
  22. Completed: Jumlah user yang selesai menonton
  23. On-Hold: Jumlah user yang hold anime
  24. Dropped: Jumlah user yabg drop anime
  25. Plan to Watch': Jumlah user yang berencana menonton
  26. Score-10': jumlah user yang memberi rating 10
  27. Score-9': jumlah user yang memberi rating 9
  28. Score-8': jumlah user yang memberi rating 8
  29. Score-7': jumlah user yang memberi rating 7
  30. Score-6': jumlah user yang memberi rating 6
  31. Score-5': jumlah user yang memberi rating 5
  32. Score-4': jumlah user yang memberi rating 4
  33. Score-3': jumlah user yang memberi rating 3
  34. Score-2': jumlah user yang memberi rating 2
  35. Score-1': jumlah user yang memberi rating 1

reviews.csv Jumlah data 192112

  1. uid : ID User
  2. profile : User profile
  3. anime_uid : ID Anime
  4. text : Text review
  5. score : Rating
  6. scores : Semua rating
  7. link : Link review
  • Sebaran data Sebaran data genre anime Sebaran data genre anime terdapat 47 data genre dan dari data diatas dan genre paling banyak adalah Comedy

sebaran 10 Anime dengan rating tertinggi Sebaran Rating 10 anime  tertinggi

Terlihat pada gambar diatas anime dengan rating tertinggi dipegang oleh Death Note

Data Preparation

  • Content-Based-filtering
    1. Menghapus missing value Pada tahapan ini Penulis memeriksa apakah ada data kosong atau missing value, karena missing value ini akan mempengaruhi keakuratan rekomendasi karena terdapat banyak data yang kosong dan setelah diperiksa tidak ada missing value pada dataset. Jadi penulis tidak perlu melakukan drop data.
    2. Menghapus Duplikasi data Selanjutnya memeriksa data duplikat. Data duplikat juga akan memperlama pemrosesan data karena itu data duplikat harus kita hapus.
  • Collaborative filtering
    1. Menggabungkan data anime dan rating Karena pada algoritma collaborative filtering kita membutuhkan data rating atau score, user id, serta anime_id, penulis harus menggabungkan data anime dan rating..
    2. Menghapus missing value Selanjutnya penanganan missing value pada data dengan melakukan drop data. Setelah diperiksa tidak ada missing value pada data gabungan.
    3. Menghapus duplikasi data Setelah diperiksa terdapat data duplikat pada dataset gabungan yaitu sebanyak 61584, jadi data ini harus dihapus.
    4. Melakukan Normalisasi Nilai Rating Untuk menghasilkan rekomendasi yang sesuai dan akurat maka pada tahap ini diperlukan sebuah normalisasi pada data nilai rating dengan menggunakan formula MinMax pada data rating sebelum memasuki tahap modelling.
    5. Melakukan Splitting Dataset Untuk melatih model maka penulis perlu melakukan pembagian dataset latih dan juga dataset validasi. Data set latih sebesar 80% dari total keseluruhan jumlah data sedangkan dataset validasi sebesar 20% dari keseluruhan data. Hal ini diperlukan untuk pengembangan pada model Collaborative Filtering nantinya.

Modeling dan Result

Model yang penulis gunakan adalah deep learning dan cosine similarity. Deep learning untuk sistem rekomendasi dengan algoritma Collaborative learning dan cosine similarity untuk Conten-based-learning.

  1. Content Based Filtering Pada model ini langkah pertama yang dilakukan ialah melakukan ekstraksi fitur pada genre. Fungsi digunakan adalah TfidfVectorizer() dari library sklearn. Setelah data diekstraksi tahapan selanjutnya adalah melakukan fit dan transformasi ke dalam bentuk matriks, outputnya adalah berupa matriks 17562 x 47 yang merupakan representasi jumlah data anime dan jumlah genre anime.

    Untuk menghitung derajat kesamaan (similarity degree) antar anime, penulis menggunakan teknik cosine similarity dengan fungsi cosine_similarity dari library sklearn. Cara kerja cosine similarity adalah dengan mengukur kesamaan antara dua vektor dan menentukan apakah kedua vektor tersebut menunjuk ke arah yang sama. Ia menghitung sudut cosinus antara dua vektor. Semakin kecil sudut cosinus, semakin besar nilai cosine similarity. Data yang digunakan adalah data matriks yang sudah penulis dapatkan sebelumnya. Berikut Formula dari cosine similarity: Cosine Similarity Langkah selanjutnya yaitu menggunakan argpartition untuk mengambil sejumlah nilai k tertinggi dari similarity data kemudian mengambil data dari bobot (tingkat kesamaan) tertinggi ke terendah. Kemudian menguji akurasi dari sistem rekomendasi ini untuk menemukan rekomendasi anime yang mirip dari anime yang ingin dicari.

    • Kelebihan

      • Akurasi akan cukup bagus dengan banyaknya informasi yang diberikan pengguna.
    • Kekurangan

      • Hanya dapat digunakan untuk fitur yang sesuai, seperti film, anime, buku, dan lain-lain.
      • Tidak mampu menentukan profil dari user baru.

    Berikut ini adalah konten yang dijadikan referensi untuk menentukan 10 rekomendasi anime tertinggi yang memiliki kesamaan genre yang sama: Reference of Recommendation

    Terlihat pada tabel diatas uji coba model akan dilakukan berdasarkan judul anime "Cowboy Bebop" dengan genre Action, Adventure, comedy, Drama, Sci-fi, dan Space.

    Berikut ini adalah hasil rekomendasi tertinggi dari model Content Based Filtering berdasarkan referensi anime diatas: Rekomendasi

  2. Collaborative Filtering Pada Model ini data yang akan digunakan adalah data gabungan antara data anime dan data rating. User id dan anime_id akan diencode dan dimapping kedalam data dan data rating akan diubah menjadi float. Selanjutnya data akan displit menjadi data train dan data test sebesat 80% untuk data training dan 20% untuk data validasi.

    Lalu penulis melakukan proses embedding terhadap data anime dan pengguna. Lalu lakukan operasi perkalian dot product antara embedding pengguna dan anime. Selain itu, penulis juga menambahkan bias untuk setiap pengguna dan anime. Skor kecocokan ditetapkan dalam skala [0,1] dengan fungsi aktivasi sigmoid. Untuk mendapatkan rekomendasi anime, data gabungan akan diacak terlebih dahulu dan mendefinisikan variabel movie_not_watched yang merupakan daftar anime yang belum pernah ditonton oleh pengguna. Berikut adalah kelebihan dan kekurangan dari algoritma collaborative filtering

    • Kelebihan
      • Tidak memerlukan atribut untuk setiap itemnya.
      • Dapat membuat rekomendasi tanpa harus selalu menggunakan dataset yang lengkap.
      • Unggul dari segi kecepatan dan skalabilitas.
      • Rekomendasi akan tetap berjalan meski data sulit dianalisis
    • Kekurangan
      • Membutuhkan parameter rating, sehingga jika ada item baru sistem tidak akan merekomendasikan item tersebut.

    Berikut ini adalah hasil rekomendasi anime tertinggi untuk user 10112: Rekomendasi

Evaluation

Evaluasi yang akan penulis lakukan disini yaitu evaluasi dengan Mean Absolute Error (MAE) dan Root Mean Squared Error (RMSE) pada Collaborative Filtering dan Precision untuk Content Based Filtering

Content Based Filtering

Pada evaluasi model ini penulis menggunakan metrik precision untuk menghitung keakuratan dari model yang telah dibuat sebelumnya. Precision ini menghitung jumlah data relevan dibagi dengan jumlah item yang kita rekomendasikan. rumus untuk precision adalah sebagai berikut formula presisi

hasil dari tesnya adalah sebagai berikut: Hasil tes presisi Data referensi kita yaitu Cowboy Bebop memiliki 6 genre yaitu Action, adventure, Comedy, Drama, Sci-fi, dan Space. Lalu hasil rekomendasi yang relevan hanya 1 yang sama persis memiliki 6 genre yaitu anime dengan judul yang sama juga yaitu Cowboy Bebop: Yose Atsuma Blues. Akan tetapi terdapat 7 anime dengan genre yang sama sebanyak 5 genre, sehingga data ini juga relevan dengan anime referensi yang kita gunakan. Jadi Presisi sistem kita sebesar 8/10 atau 80%.

Collaborative Filtering

  1. Mean Absolute Error (MAE) MAE mengukur berapa besar rata-rata kesalahan yang dilakukan oleh model yang sudah dilatih pada data tes, tampa mempertimbangkan arahnya. Semakin rendah nilai MAE maka akan semakin baik model yang sudah dirancang. Formula MAE: formula mae Berikut hasil grafik MAE enter image description here Berdasarkan fitting diatas nilai error model adalah dibawah 0.14, sedangkan nilai error untuk validasi diatas 0.200.

    MAE

    Nilai MAE yang baik seharusnya berada dibawah 0.1 atau 10%, jadi model bisa dikatan belum cukup baik

  2. Root Mean Squared Error (RMSE) RMSE merupakan aturan penilaian kuadrat yang juga mengukur besarnya rata-rata error, semakin kecil errornya maka model semakin baik. Rumus RMSE adalah sebagai berikut: Rumus RMSE Berikut Grafik RMSE enter image description here Dari Grafik diatas dapat kita lihat bahwa niliai error RMSE adalah dibawah 0.17 pada data training, dan diatas 0.23 pada data tes.

    RMSE

    Nilai RMSE juga berada dibawah 10% skala data, jadi model bisa dikatakan belum cukup baik.

Nilai error dari hasil MAE dan RMSE mengalami overfitting pada data validasi, sehingga membuat score kualitas RMSE dan MAE kurang baik. Jadi pada collaborative learning model masih perlu pengembangan lebih banyak lagi, seperti menambahkan hyperparameter tuning untuk mengatasi overfitting pada data validasi. Namun karena keterbatasan waktu penulis belum bisa menambahkan hyperparameter tuning pada model tersebut.

Berdasarkan Tujuan dari proyek ini dan masalah yang dihadapi, yaitu pengolahan dari dataset yang penulis miliki dan evaluasi dari kedua model yang diajukan, dapat disimpulkan bahwa sistem rekomendasi sudah bisa berjalan, akan tetapi keakuratannya masih perlu ditingkatkan.

About


Languages

Language:Jupyter Notebook 100.0%