//
you're reading...
Bahasa Indonesia

Sistem Rekomendasi dan SpotDokter

Ada update status teman di Facebook yang lucu. Like. Ada Fan Pages Katy Perry di Facebook. Like. Ada berita menarik di Kompas.com. Like. +1. Ada video menghasut SARA di Youtube. Dislike. Ada sepatu warna-warni lucu di Amazon. 4 bintang dari 5. Melihat resensi Batman: The Dark Knight di IMDb. 9 bintang dari 10.

Ketika kita sibuk mengaktualisasi diri, di balik data center Facebook, Amazon, Google, dan IMDb, Recommendation Engine bekerja memproses input-input yang kita berikan melalui tombol Like, Dislike, +1, dan Likert Scale (bintang-bintang) dengan algoritma kompleks– yang bisa ditelusuri di paper-paper berkaitan dengan Recommender Systems (Sistem Rekomendasi), dan memberikan berbagai macam rekomendasi untuk dilihat atau dibeli.

Contoh di Facebook dapat dilihat di sisi kanan laman: People You May Know, People To Subscribe ToDiscover New Games, dan Recommended Pages. Untuk Amazon (dan online shopping lainnya): ada baris dengan judul Customers Who Viewed This Item Also Viewed yang menampilkan barang-barang lainnya (yang mungkin saja menarik untuk dibeli). Dan IMDb di sisi kanan laman, ada Related Lists menampilkan film-film lain dengan genre sama.

Dan sistem ini menjadi terkenal ketika Amazon mengimplementasikannya untuk menjual barang kepada calon pembeli. 20-30% barang-barang yang terjual dihasilkan dari rekomendasi (cara lain untuk meningkatkan pembeliannya adalah melalui pencarian dengan kata kunci– Search dan mengisi karakteristik barang di sisi kiri laman Amazon– Knowledge-based Recommender System). Facebook pun juga menggunakannya untuk Sponsored Ad yang dapat dilihat di sisi kanan news feed.

Singkatnya Sistem Rekomendasi bertujuan memberikan rekomendasi item (barang-barang) baru kepada user (pengguna/calon pembeli) yang akan digunakan [1]. Item di sini bermacam-macam, dari barang jualan, musik, film, restoran, makanan, tempat wisata, hingga teman baru (baca: jodoh).

Pembahasan berikutnya akan menjadi lebih teknis. Stop di sini jika tidak tertarik dan lanjutkan menekan tombol like untuk update status lucu teman-teman di Facebook dan dislike video-video yang memancing kemarahan di Youtube agar dunia ini menjadi damai.

Yang masih membaca baris ini, maka termasuk dalam tipe Aktif Mencari Tahu. Alhamdulillah kalau begitu.

Jadi ada banyak teknik kompleks yang dapat digunakan dalam Sistem Rekomendasi, tapi secara mendasar ada 3 macam: Content-based, Collaborative Filtering, dan Hybrid Recommender [2] [3] [4] [5].

Agar lebih mudah menjelaskan 3 macam algoritma ini, saya akan menggunakan contoh, yaitu app Android yang baru di-launch oleh Project Eden: SpotDokter [6]. Aplikasi direktori mobile untuk memberikan informasi tentang dokter, rumah sakit, apotek, dan laboratorium yang cukup lengkap [7]. Selain itu, app ini memiliki fitur location-aware, meski belum sepenuhnya kelebihan location digunakan.

Permasalahan yang muncul adalah bagaimana kita bisa menemukan dokter yang cocok dengan keinginan kita (preference). Ada orang yang cocoknya dengan dokter A, tapi mungkin tidak terlalu cocok dengan dokter B. Mencari satu per satu melalui direktori jelas bukan pekerjaan mudah. Melakukan pencarian dengan kata kunci, tentu jika kita sudah tahu dokter mana yang ingin dituju. Menggunakan fitur location, ini untuk mencari dokter yang lokasinya paling dekat, bukan mencari dokter yang cocok.

Permasalahan seperti inilah yang coba dijawab Sistem Rekomendasi dengan memberikan rekomendasi dari pengalaman pribadi sebelumnya atau dengan pengalaman pasien-pasien lainnya (Word of Mouth) yang sudah menggunakan jasa dokter tertentu. Saya pribadi (to the best of my knowledge) tidak melihat ada fitur ini pada app SpotDokter dan tertarik untuk memberikan sumbang saran dari sisi akademik. Tentunya masalah privasi menjadi sangat krusial karena ini berhubungan dengan nama baik dokter dan medical record pasien.

Algoritma pertama yang dapat kita gunakan adalah Content-based. Teknik ini akan merekomendasikan dokter dengan menggunakan pengalaman pribadi sebelumnya. Sama sekali tidak bergantung dari pengalaman pasien-pasien lain. Caranya dengan mencocokkan user profile, yaitu dokter-dokter yang sudah di-rating sebelumnya (Like atau 5-star Likert Scale), dengan item profile, semua informasi yang berhubungan dengan dokter-dokter baru yang belum pernah dituju untuk direkomendasikan.

Detailnya, teknik ini dapat diimplementasi dengan menggunakan information retrieval (TF-IDF/Term Frequency – Inverse Document Frequency) untuk memberikan nilai TF-IDF tiap kata pada deskripsi sekumpulan dokter-dokter potensial untuk direkomendasikan dan nilai TF-IDF pada user profile, deskripsi dokter-dokter yang pernah dituju [2] [3]. Kemudian cari dokter yang paling sesuai dengan preference dari user profile menggunakan similarity measure, seperti cosine similarity measure dengan TF-IDF sebagai vektor, sehingga didapatkan sejumlah rekomendasi dokter disorting berdasarkan kemiripan (similary).

Ada 3 masalah yang dimiliki algoritma Content-based. Pertama, tidak semua domain dapat menggunakan teknik ini karena memanfaatkan text processing. Selain itu, kita (atau tim SpotDokter) harus melengkapi semua deskripsi item yang tentunya tidak otomatis dan melelahkan. Kedua, semakin lama rekomendasi (dokter) yang diberikan akan semakin spesifik (overspecialization) sehingga tidak memunculkan rekomendasi yang baru. Dan yang terakhir, adalah new user problem. Penggunaan awal tidak akan memunculkan rekomendasi yang berkualitas karena memang tidak ada sama sekali dokter yang di-rating atau terlalu sedikit data untuk diproses.

Algoritma kedua dan yang cukup populer digunakan adalah Collaborative Filtering. Teknik ini akan merekomendasikan dokter-dokter menggunakan pengalaman pasien-pasien lainnya. Dan pengalaman pasien-pasien lain yang kita gunakan adalah pasien-pasien yang memiliki kemiripan saat merating dokter-dokter yang telah dituju. Dengan demikian, teknik ini sama sekali tidak membutuhkan deskripsi dari item (dokter-dokter) seperti yang disebutkan pada problem pertama Content-based.

Ada beberapa macam implementasi yang akan digunakan, seperti user-based dan item-based [8]. Yang akan dijelaskan di sini adalah user-based sebagai algoritma yang pertama kali muncul dan lebih intuitif. Teknik ini mencoba untuk “memprediksi” rating dari dokter yang belum pernah dituju.

Rating setiap dokter oleh setiap pasien menjadi penting dan khususnya rating 5-star Likert Scale agar menghasilkan rekomendasi yang lebih berkualitas. Dan dari kumpulan rating-rating ini, kita sudah memiliki sebuah matrix user-item (pasien-dokter) yang berisi nilai rating yang berbeda-beda untuk setiap pasangan pasien dan dokter.

Untuk memprediksi rating dokter yang belum pernah dituju (belum dirating) didapat dari hasil aggregasi/penjumlahan dari “kemiripan rating pengguna dengan rating semua pasien-pasien lainnya terhadap dokter-dokter yang sama” menggunakan Pearson similarity (seperti cosine similarity measure) yang diberi bobot weighted sum. Bobot total (weighted sum) di sini bertujuan untuk memberikan bobot lebih pada pasien-pasien lain yang memiliki kemiripan pemberian rating sehingga rekomendasi dokter-dokter akan cenderung cocok dengan pilihan pengguna.

Ada 2 masalah yang dimiliki algorithma Collaborative Filtering. Pertama, new user problem yang sama dengan masalah ketiga dari Content-based. Kedua, new item problem di mana sulit untuk memberikan rekomendasi ketika item (dokter) lainnya belum dirating oleh pengguna (pasien) lainnya. Dua masalah ini jika dijadikan satu maka akan terlihat sparsity atau jumlah rating yang ada terlalu sedikit dibandingkan total rating seluruhnya (user x item) sehingga jika tidak ada irisan di antara rating pengguna dan pasien-pasien lainnya terhadap dokter-dokter yang sama sulit untuk merekomendasikan dokter-dokter baru.

Oleh karena adanya masalah-masalah yang dimiliki oleh Content-based and Collaborative Filtering, maka muncul algoritma ketiga yaitu Hybrid Recommender. Mencoba menggabungkan kelebihan dari tiap algoritma untuk menutupi kekurangan algoritma lainnya. Contohnya seperti yang digunakan oleh [5] menggabungkan Content-based (CB) dan Collaborative Filtering (CF). CB digunakan pada tahap awal penggunaan app untuk menghasilkan pseudo rating sehingga didapatkan matriks yang penuh (full matrix). Kemudian setelah banyak rating aktual dimasukkan barulah digunakan CF untuk merekomendasikan dokter-dokter. Penelitian membuktikan bahwa secara empirik Hybrid Recommender menghasilkan rekomendasi lebih berkualitas ketimbang pure CB ataupun pure CF.

Banyak teknik lainnya yang bisa dieksplor untuk memberikan rekomendasi yang berkualitas kepada para pengguna, seperti memanfaatkan location, di mana ini sudah masuk dalam topik Context-Aware Recommender Systems. Kapan-kapan akan saya bahas.

Sekian, penjelasan pengantar tentang Sistem Rekomendasi dengan contoh app SpotDokter yang baru saja di-launching. Artikel ini hanya bertujuan untuk memberikan gagasan agar kualitas software (dan app) di Indonesia semakin bagus. Selain itu, software (dan app) menjadi raja di negaranya sendiri.

Referensi

[1] F. Ricci, L. Rokach, B. Shapira. Chapter 1: Introduction to Recommender Systems Handbook. Recommender Systems Handbook. Springer. 2011.

[2] G. Adomavicius, A. Tuzhilin. Toward the Next Generation of Recommender Systems: A Survey of the State-of-the-Art and Possible Extensions. IEEE Transactions on Knowledge and Data Engineering. pp734-749. 2005

[3] M. Balabanovic, Y. Shoham. Fab: Content-based, Collaborative Recommendation. Comm. ACM, vol. 40, no. 3, pp. 66-72. 1997.

[4] J.S. Breese, D. Heckerman, and C. Kadie. Empirical Analysis of Predictive Algorithms for Collaborative Filtering. Proc. 14th Conf. Uncertainty in Artificial Intelligence. July 1998.

[5] P. Melville, R.J. Mooney, and R. Nagarajan. Content-Boosted Collaborative Filtering for Improved Recommendations. Proc. 18th Nat’l Conf. Artificial Intelligence. 2002.

[6] Dailysocial.net. Aplikasi Direktori Fasilitas Kesehatan SpotDokter Diluncurkan Hari Ini.

[7] Tempo.com. Sakit? Tanya ke Spotdokter.com.

[8] G. Linden, B. Smith, J. York. Amazon.com Recommendations: Item-to-Item Collaborative Filtering. IEEE Internet Computing. Jan/Feb 2003.

Advertisements

About Winnu Ayi

Computer Engineer. Computer Scientist.

Discussion

10 thoughts on “Sistem Rekomendasi dan SpotDokter

  1. hmm menarik. mulai berpikir apakah app dan jarsos lokal sudah menggunakan algoritma kompleks multivariabel atau masih mengurutkan berdasarkan rating dari user saja. yang pasti bisnis cari-mencari keknya cukup potensial terutama kultur orang indo yg lebih suka mendengarkan apa kata orang :))

    Posted by imelwa | 13 February 2012, 00:31
    • Saatnya untuk membuka buku-buku akademik dan menerapkan teori-teori yang ada. Biar produk yang dibuat tidak mainstream dan hanya latah mengikuti tren (baca: clone), yu.

      Posted by Winnu Ayi | 16 February 2012, 10:44
      • negara ini masi terlalu awam win belon bisa bikin apa2, masi dalam tahapan menjiplak spt cina dulu. mudah2an selanjutnya bisa jadi besar jg spt mereka dengan engineer2 seperti kita :))

        Posted by imelwa | 17 February 2012, 04:06
  2. Like this gan! ahaha gw tau loe pasti nunggu komentar dari gw kaann? Tapi sez ini blog lu jadi ngeri gini.. Gw jadi kepingin nulis juga dah.. Nulis chart status RO..

    Posted by rmulyawan | 16 February 2012, 08:45
  3. Selamat datang di dunia rekomendasi, Win 🙂
    Boleh nih kapan2 diskusi kita.

    Posted by yonata | 23 February 2012, 14:20
  4. Nice article. Thanks for the sharing (:

    Posted by David Wijaya | 10 May 2012, 07:53
  5. nice.. thank you..

    Posted by Vincent Otniel | 6 June 2012, 05:07
  6. Mau nanya apa yang dimaksud dengan memanfaatkan location yang sudah masuk dalam topik Context-Aware Recommender Systems

    Posted by Yudi | 7 January 2014, 11:06

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: