Advertise

Membuat Sistem Rekomendasi Dengan Python ( Part-1)

Sebelum kita membuat sistem rekomendasi kita perlu tahu jenis — jenis nya, terdapat 2 jenis system rekomendasi yang sering dipakai yaitu sebagai berikut. ( dalam artikel ini saya akan mencontohkannya dengan data film , sehingga semua terminologi akan berhubungan dengan film )

1. Content Based Filtering

Content Based Filtering akan mencocokan film x dengan film yang lainnya yang memiliki karakteriskik hampir sama, bisa jadi genre nya sama atau aktor/aktris, sinopsis dan lain sebagainya memiliki kesamaan dengan film yang kita tonton, dengan demikian yang akan direkomendasikan kepada kita adalah film yang memiliki karakteristik hampir sama dengan yang saat kita tonton sekarang. Misal kita sedang nonton film mission impossible 1 maka system akan merekomendasikan film mission impossible 2, mission impossible 3 dan sebagainya.

Untuk membuat sistem rekomendasi content based filtering ada tahapan yang harus dilakukan yaitu sebagai berikut :

a. Mengumpulkan data training

Data training ini sangat diperlukan untuk melatih computer supaya dapat menemukan konten yang sesuai

b. Menghilangkan outlier

Didalam data text biasanya terdapat emoji, punctuation (!@#$%^), dan stop words ( kita, aku, dan, adalah), kita harus menghilangkan ketiga outlier tersebut karena tidak memiliki makna yang signifikan jika kita tidak menghilangkan data tersebut maka proses komputasi akan meningkat dan tentunya hal ini sangat tidak kita inginkan

c. Menghitung Bobot kata dan kalimat

Menghitung bobot ini biasa juga disebut sebagai feature extraction, kita perlu menghitung bobot ini supaya kita bisa menghitung kesamaan antara text 1 dengan yang lainnya. ( pada contoh kali ini saya akan menggunakan deskripsi film sebagai data perbandingan antara film 1 dengan film yang lainnya ).

Untuk menghitung bobot kalimat saya akan menggunakan rumus TF-IDF ( TERM FREQUENCY — INVERSE DOCUMENT FREQUENCY) dan rumusnya adalah sebagai berikut

  • TF ( Term Frequency)
tf
  • IDF ( Inverse Document Frequecny )
idf
  • TF IDF
tf idf

d. Menghitung Kesamaan

Untuk menghitung kesamaan antara film 1 dan film yang lainnya disini saya akan menggunakan rumus persamaan kosinus ( cosine similarity )

cosine similarity

Rumus ini akan mengasilkan nilai dari range -1 hingga 1, yang artinya adalah jika kesamaan film 1 dengan yang lainnya hasilnya -1 maka bisa dikatakan film tersebut sangat berbeda dan tidak memiliki hubungan kesamaan sedikitpun, dan sebaliknya jika kesamaan yang dihasilkan adalah 1 maka bisa dikatakan film tersebut memiliki kesamaan sempurna.

Rumus ini hanya sebagai pilihan saja, terdapat pilihan lain seperti Euclidean distance ataupun Manhattan distance, yang mana jika memakai 2 rumus ini kita harus memilih yang hasilnya paling kecil, berbeda dengan persamaan kosinus kita harus memilih hasil yang paling besar.

  • euclidean distance
euclidean distance
  • manhattan distance
manhattan distance

Jangan khawatir dengan rumus tersebut karena kita akan menggunakan library yag sudah tersedia untuk proses komputasi ini. tapi sebelum menggunakan library pastikan terlebih dahulu kita menguasai dan paham akan rumus nya

2. Collaborative Filtering

Collaborative Filtering cara kerjanya adalah, user x akan di cocokan dengan user yang lainnya. Artinya adalah jika user x menonton film a dan film b maka system akan mencoba mencari perilaku user x yang sama dengan user yang lainnya yang pernah menonton film a dan b kemudian akan diberikan rekomendasi berdasarkan film yang di tonton oleh user tersebut, Teknik ini biasa disebut juga sebagai user to user collaborative filtering.

Untuk melakukan teknin ini tahanpannya sama dengan content based filtering namun yang dihitung persamaannya bebeda

a. Mengumpulkan data training

b. Membuat pivot table

Pivot table secara gampang akan menggambarkan seperti ini, apakah user x sudah pernah menonton film a ? jika sudah maka akan diberikan nilai / rating > 0 dan jika belum maka akan diberikan rating 0, berikut contohnya

Bisa kita lihat bahwa user dengan id 1 pernah menonton film dengan id 1, tapi dia belum pernah nonton film dengan id ke 2

c. Menghitung Kesamaan antara user ke x dengan yang lainnya

Jika didalam content based filtering kita menghitung kesamaan deskripsinya, maka di dalam collaborative filtering ini kita akan menghitung antara user x dan user yang lainnya. ( ingat bahwa rating adalah nilai user yang diberikan ke pada film, jika sudah pernah menonton akan diberikan rating > 0 dan jika belum maka 0 ). Untuk menghitung tingkat kemiripannya rumus nya sama bisa mengguakan consine similarity, Euclidean distance ataupun Manhattan distance. Namun pada contoh kali ini saya akan tetap menggunakan cosine similarity

d. Mengurutkan nilai kesamaan

Setelah kita mengetahui nilai kesamaannya maka kita perlu mengurutkannya dan mengambil nilai yang paling besar, karena disini saya akan menggunakan cosine similarity maka data harus diurutkan dari yang terbesar hingga terkecil, jika kalian ingin menggunakan rumus Euclidean atau Manhattan maka kalian harus mengurutkanya dari yang terkecil hingga terbesar dan ambil nilai yang paling kecil

e. Ekstrak Film

Setelah kita mengetahui dan mengurutkan tingkat kesamaanya, maka Langkah selanjutnya kita perlu mengekstrak film apa saja yang pernah di tonton oleh user yang memiliki tingkat kesamaan tinggi dengan kita.

Nah itu saja untuk teori nya di artikel berikutnya saya akan menunjukan cara membuatnya dengan menggunakan python. 

Post a Comment

0 Comments