### 14.1 Sistem Rekomendasi

Bagian sistem rekomendasi ditulis olehCandy Olivia Mawalim(Japan
Advanced Institute of Science and Technology). Penulis ingin berterima kasih
atas sumbangsih yang diberikan.
Salah satu penerapan pembelajaran mesin adalah sistem rekomendasi. Sistem
rekomendasi dimotivasi oleh keinginan pemilik usaha untuk meningkatkan
penjualan dengan cara mengerti pola pembelian pengguna. Aplikasi yang memanfaatkan
sistem rekomendasi dapat kita temukan dalam kehidupan seharihari,
misalnya Youtube yang memberikan rekomendasi video berdasarkan riwayat
video yang telah kita lihat sebelumnya dan Amazon yang merekomendasikan
produknya dengan cara menawarkan produk yang sering dibeli pengguna
lain yang memiliki karakteristik yang “mirip” dengan kita. Ada dua
komponen penting pada sistem rekomendasi yaitu: pengguna dan _item_. Pengguna
adalah sang pengguna sistem, sementara _item_ dapat berupa video, buku,
dan lain sebagainya (produk/layanan yang ditawarkan sistem).
Secara umum, terdapat dua teknik untuk membangun sistem rekomendasi
yaitu: (1) _content-based filtering_ dan (2) _collaborative filtering_. Teknik
pertama berfokus pada karakteristik pengguna secara spesifik. Teknik kedua
berfokus pada selera terhadap suatu _item_. Dalam sistem rekomendasi, teknik
_machine learning_ dapat digunakan untuk memprediksi _item_ yang mungkin
disukai pengguna. Dua subbab berikutnya memuat aplikasi teknikmachine
_learning_ untuk kedua teknik sistem rekomendasi(14.1.1 dan 14.1.2). Setelah
proses _filtering_ (memprediksi _item_ yang mungkin disukai pengguna), biasanya
ada tahapan _post-processing_. Misalnya menampilkan _item_ yang bersesuaian
dengan usia pengguna. Contoh lain adalah _post-processing_ untuk memberikan
rekomendasi yang cukup beranekaragam [100].

14.1.1 Content-based Filtering

Teknik membangun sistem rekomendasi berdasarkan _content-based filtering_
memanfaatkan informasi mengenai profil seorang pengguna beserta uraian
_item_  yang sangat menarik bagi pengguna tersebut [101]. Profil pengguna diartikan
sebagai karakteristik (atribut dan _behavior_ ) yang dimiliki pengguna.
Atribut pengguna misalnya _gender_, kewarganegaraan, umur, dan lain-lain. Informasi
mengenai _behavior_ mencakup karakteristik _item_ yang seorang pengguna
sukai. Misalkan _item_ adalah film, karakteristik film dapat ditentukan
dari aktor yang terlibat dalam film, pembuat film, tahun pembuatan film,
dan _genre_ dari film (misalnya _action_, _horror_, _comedy_ ). Dengan ka _rate_ ristik
ini, kita dapat menentukan kemiripan antar-film.
Kedua informasi ini dapat direpresentasikan sebagai vektor (ekuivalen denganfeature
vector) agar mudah untuk dilakukan operasi aritmatika, dikenal
dengan istilah _user embedding_ dan _item embedding_. Cara melakukan _embedding_ untuk
profil pengguna dan uraian item mirip dengan cara _word embedding_ yang
telah dijelaskan pada subbab 12.5.3, _one-hot encoding_.


```
14.1 Sistem Rekomendasi 217
```
Rekomendasi _item_ yang diberikan pada pengguna adalah _item_ yang paling
mungkin disukai pengguna berdasarkan karakteristiknya. Agar mendapat
gambaran lebih jelas, penulis mengajak pembaca untuk mengikuti tutorial
pembuatan sistem rekomendasi film sangat sederhana menggunakan dataset
MovieLens^1 berukuran kecil (100K). Dataset ini memuat berbagai informasi
sebagai berikut:

1. Informasi _rating_ pengguna untuk masing-masing film.
2. Informasi film, misalkan berupa _genre_ dan tanggal _release_.
3. Demografik pengguna, misal usia, _gender_, pekerjaan, dan lain lain.

Untuk menyederhanakan tutorial, kami hanya akan menjelaskan contoh penggunaan _genre_ film
untuk membuat sistem rekomendasi. Pertama-tama, kita
bangun representasi _item embedding_, yaitu _genre_ untuk masing-masing film
(Tabel 14.1). Setiap baris pada tabel tersebut merepresentasikan _item embedding_ untuk
suatu film. Perhatikan! Setiap sel pada tabel diisi nilai “1” apabila
film memiliki _genre_ yang tertera pada kolom bersesuaian, “0” apabila tidak.

```
MovieId Adventure Animation Children Comedy
6 1 1 1 1
22 1 0 1 0
50 0 0 0 1
```
```
Tabel 14.1: Representasi _item embedding_ untuk film berdasarkan _genre_.
```
Kedua, kita bangun representasi _user embedding_, yaitu apakah pengguna
menyukai suatu film atau tidak ( _binary_ ). Suka atau tidaknya pengguna terhadap
suatu film dapat dilihat berdasarkan _rating_ yang ia berikan. Sebagai
contoh sederhana, kita anggap apabila pengguna menyukai suatu film apabila
memberi nilai _rating_ lebih dari atau sama dengan 4. Sebagai contoh, perhatikan
Tabel 14.2. Apabila user menyukai suatu film, nilai “1” diisi pada
kolom “Like or Not”, dan “0” apabila sebaliknya.

```
UserId MovieId Like or Not
1 6 0
1 22 0
1 50 1
```
Tabel 14.2: Representasi _user embedding_ berdasarkan _rating_ yang diberikan
pengguna.

(^1) https://grouplens.org/ _dataset_ s/movielens/


218 14 Penerapan Pembelajaran Mesin

Berdasarkan _item embedding_ dan _user embedding_ yang kita punya, kita
ganti kolom MovieId pada Tabel 14.2 menggunakan baris pada _item embedding_.
Sekarang, kita memiliki dataset _behavior_ pengguna dengan UserId=1
(Tabel 14.3). Perhatikan! Tabel tersebut seperti dataset _machine learning_
yang sudah kamu pelajari pada bab-bab sebelumnya. Diberikan _feature vector_ dan
kelas (Like or Not) yang berkorespondensi. Menggunakan data seperti

```
MovieId Adventure Animation Children Comedy Like or Not
6 1 1 1 1 0
22 1 0 1 0 0
50 0 0 0 1 1
```
```
Tabel 14.3: Dataset _behavior_ pengguna dengan UserId=1.
```
pada Tabel 14.3 yang dirata-ratakan, kita dapat menggunakan teknikmachine
_learning_ untuk memprediksi apakah suatu pengguna akan menyukai film tertentu,
berdasarkan _genre_ yang dimuat oleh film tersebut. Sederhananya, bisa
menggunakan K-nearest-neighbordengan menghitung _cosine similarity_ antara _item_
_embedding_ dan _user embedding_.
Teknik _content-based filtering_ memiliki keunggulan dimana kita tidak
memerlukan banyak informasi tentang pengguna lain. Kita hanya memerlukan
informasi uraian _item_ dan informasi karakteristik suatu pengguna. Hal ini
mengakibatkan rekomendasi yang diberikan sangat bergantung pada kepribadian
pengguna. Apabila pengguna tidak konsisten, sistem rekomendasi juga
bingung.

14.1.2 Collaborative Filtering

Teknik ini diperkenalkan oleh Paul Resnick dan Hal Varian pada 1997 [102].
Prinsip _collaborative filtering_ adalah asumsi bahwa selera penggunaan terhadap
suatu _item_ cenderung sama dari waktu ke waktu [103]. Pada contoh
kasus sederhana untuk sistem rekomendasi film, teknik ini memanfaatkan informasi _rating_ dari
banyak pengguna. Kita dapat merepresentasikan tingkah
laku ( _behaviour_ ) semua pengguna menggunakan matriks utilitas dimana baris
merepresentasikan profil pengguna dan kolom merepresentasikan _item_. Sebagai
contoh, perhatikanlah Tabel 14.4.
Ada dua metode varian _collaborative filtering_ yaitu: (1)neighborhood-based
_collaborative filtering_ ( _memory-based method_ ) dan (2) _model_ -based collaborative
_filtering_. Metode _neighborhood-based collaborative filtering_ bekerja dengan
fakta bahwa pengguna yang “mirip” memiliki pola yang “mirip” dalam
memberikan _rating_ untuk _item_ [104] (pada Tabel 14.4, pengguna yang mirip
memiliki baris yang mirip). Selain itu, _item_ yang memiliki kemiripan, akan
memiliki pola _rating_ yang mirip (pada Tabel 14.4, _item_ yang mirip memiliki


```
14.2 Peringkasan Dokumen 219
```
```
_item_  1 item 2 ... itemN
_user_  1 2 3 ... 4
_user_  2 5 3 ... 1
```
```
_user_  3 4 1 ... 2
```
```
Tabel 14.4: Matriks utilitas.
```
kolom yang mirip). Dengan itu, kita dapat menggunakan perhitungan kemiripan
_vektor_  untuk menghitung pengguna mana yang mirip dengan suatu penggunap.
Saat memberikan rekomendasi film bagi penggunap, kita tunjukkan
film-film yang pernah ditonton pengguna yang mirip dengannya, atau kita
tunjukkan film-film yang mirip dengan film-film yang pernah ditonton oleh
penggunap.
Untuk _model-based collaborative filtering_, prediksi dibangun dengan menggunakan
teknik _machine learning_ [104]. Untuk suatu sistem dengan data yang
_sparse_, matriks utilitas seperti Tabel 14.4 tidaklah efisien secara memori. Kita
dapat memanfaatkan teknik-tenik sepertimatrix factorization/principal component
analysisdan _autoencoder_ untuk mengurangi ukuran matriks. Silakan
membaca lebih lanjut materi-materi tersebut (ingat kembali materi bab 12).

