Sekilas tentang Recommender System

Beberapa waktu lalu saya dapat ajakan untuk memberi pengenalan AI ke teman-teman di prodi Komputer dan Sistem Informasi, Sekolah Vokasi UGM. Dengan durasi yang singkat dan background yang “baru” untuk belajar AI, istri saya mengusulkan untuk memberi materi yang sederhana tapi bisa langsung mengena dan diaplikasikan. Tercetuslah untuk mengisi materi tentang Recommender System, menurut saya ini adalah salah satu topik di AI yang bisa dipelajari sekaligus di-coding dalam waktu kurang dari 3 jam.

Apa itu Recommender System?

Recommender system adalah sistem yang perekomendasi sesuatu item yang sering kita temui sehari-hari, misalnya di amazon.com atau e-commerce lain, kita sering mendapat rekomendasi tentang item yang seharusnya kamu beli. Di youtube atau spotify, kita juga mendapat rekomendasi tentang video atau lagu yang harusnya kita mainkan. Contoh lain lagi adalah (salah satu favorit saya) Movielens. Salah satu pioneer dalam riset sistem rekomendasi yang merekomendasikan film berdasarkan rating-rating film yang telah kita berikan.

Tentu saja metode yang digunakan pada platform-platform tersebut bukanlah algoritma yang di-coding dalam 3 jam. Mereka terus memperbarui menggunakan algoritma-algoritma terbaik mereka untuk merekomendasikan suatu item. Dengan menggunakan algoritma yang tepat, beberapa platform seperti amazon atau youtube dapat meningkatkan profit menggunakan recommender system.

Algoritma

Secara umum terdapat dua “sudut pandang” dalam pembuatan recommender system, yakni Content-Based dan Collaborative Filtering. Definisinya kira-kira seperti ini:

Content-Based Filtering: Kita buat profil user, misal melalui riwayat aktivitasnya terhadap item-item lain (like/dislike/rating, dsb.). Lalu ketika kita akan merekomendasikan sebuah item, kita lihat profil sebuah item apakah akan disukai atau tidak berdasarkan profil user tersebut.

Content-Based Recommender System

Collaborative Filtering: Kita merekomendasikan suatu item, berdasarkan kecocokan profil user dengan profil user yang lain. Misalnya, kebanyakan user yang suka produk A juga suka produk B, maka jika ada user lain yang suka produk A, kita bisa rekomendasikan produk B.

Collaborative Recommender System

Jika diperhatikan terdapat perbedaan yang mencolok antara kedua sudut pandang tersebut, masing-masing mempunyai plus dan minusnya. Beberapa catatan yang saya miliki:

  • Content-Based Filtering membutuhkan profil dari sebuah item. Artinya kita butuh fitur / karakteristik sebuah item. Misalnya, untuk buku ini bisa berarti Tema, Genre, Penulis, Tahun Terbit, dsb. Terkadang pada beberapa item hal ini sulit untuk dicari. Misalnya kita ingin merekomendasikan suatu “Tempat/Lokasi”
  • Collaborative Filtering membutuhkan profil dari user lain. Jika sistem yang kita buat masih “baru” mendapatkan profil user lain akan sulit dan kurangnya informasi bisa jadi menghasilkan hasil yang tidak sesuai. Bisa dibayangkan ketika sistem kita hanya ada dua user. Lalu user 1 beli item A dan item B, dan user 2 beli item A. Karena hanya terdiri dari dua user, tentu kita tidak bisa langsung bilang user 2 akan suka item B kan? karena bisa jadi item B yang dibeli user sama sekali tidak ada “hubungan” dengan item A.
  • Masalah kurangnya data di awal disebut dengan Cold Start Problem. Masalah tersebut dapat lebih diminimalkan (bukan dihilangkan) pada Content-Based Filtering karena kita tidak membutuhkan banyak riwayat user. User yang telah melakukan aktivitas “sebentar” sudah bisa mendapat rekomendasi yang cukup baik.
  • Seperti yang disinggung sebelumnya, Collaborative Filtering dapat memunculkan relasi dua buah item yang memiliki perbedaan profil yang tinggi tapi memiliki kedekatan secara “makna” misalnya, Payung dan Obat Flu sering dibeli secara bersamaan walaupun keduanya memiliki profil yang berbeda.
  • Content Based juga cocok untuk merekomendasikan suatu item yang sangat jarang di-“sentuh” semua user. Misalnya item yang tidak laku-laku. Hal ini bisa membantu meningkatkan profit dengan merekomendasikan item tersebut yang cocok dengan profil user tertentu.
  • Terdapat lebih banyak metode atau algoritma yang dapat digunakan pada Collaborative Filtering. Berbeda dengan algoritma Content-Based yang kebanyakan adalah “searching dan matching” pada Collaborative Filtering terdapat beragam metode dari yang sederhana hingga rumit.

Pada kenyataannya kebanyakan orang menggunakan teknik hybrid pada sistem rekomendasinya. Menggabungkan Content-Based dan Collaborative Filtering dengan rule-rule yang sesuai.

Pada post selanjutnya saya akan tunjukkan implementasi movie recommender system menggunakan Python. Codingannya tidak terlalu panjang tapi hasilnya sudah cukup baik untuk sistem rekomendasi.

Catatan: Beberapa waktu lalu saya sempat mendapat task recommender system yang cukup menarik, yakni Implicit Feedback. Implicit Feedback adalah kasus pada recommender system di mana kita tidak mengetahui aksi yang dilakukan positif atau negatif, misalnya “view” atau “click”. Pendekatan solusi kasus ini bisa menggunakan salah satu algoritma collaborative filtering yang disebut Alternating Least Square (ALS). Task ini menunjukkan masih banyak hal yang dapat di eksplor di recommender system

Sumber gambar:
– cover dari compfight.com
– icon dari flaticon.com

About the author

Rian Adam

View all posts

Leave a Reply