- Project Overview
- Business Understanding
- Data Understanding
- Data Preprocessing
- Data Preparation
- Modeling
- Evaluation
- Kesimpulan
- Referensi
Dalam proyek ini akan membahas permasalahan mengenai minat membaca buku masyarakat Indonesia yang berhubungan langsung dengan perkembangan teknologi seperti media sosial dan e-commerce di Indonesia.
Dalam beberapa dekade terakhir, perkembangan teknologi dan juga internet sangat mempengaruhi minat membaca buku masyarakat Indonesia. Contohnya adalah hadirnya media sosial, dan platform seperti YouTube, Netflix, Amazon, dan layanan web sejenis yang lainnya membuat masyarakat lebih banyak menyukai menggunakan platform tersebut sebagai hiburan dan sumber untuk memperoleh informasi. Berbeda pada zaman dahulu di mana masyarakat Indonesia masih bergantung pada media cetak contohnya adalah buku untuk memperoleh ilmu dan informasi.
Membaca sebagai salah satu dari empat keterampilan dalam berbahasa, merupakan suatu proses yang dilakukan serta digunakan oleh pembaca untuk memperoleh pesan yang ingin disampaikan oleh penulis melalui media kata-kata atau bahasa tulis. [1] Selain itu, membaca juga memerlukan sebuah kemampuan untuk memahami apa yang dibaca sehingga dapat menemukan pesan implisit, dan dapat mengaplikasikan pengetahuan yang terdapat dalam teks melalui proses sintesis dari berbagai gagasan dan informasi. [2]
Menurut data yang diambil dari picodi.com, terjadi peningkatan paling tinggi terhadap permintaan jumlah buku di toko buku online pada bulan Desember, yaitu sebesar 12% dari semua transaksi tahunan. Sedangkan penurunan yang paling signifikan terjadi pada bulan Juni sebesar 6% dari semua transaksi tahunan. Berdasarkan survei tentang bagaimana cara pelanggan yang membeli buku, sebanyak 47% membeli buku di toko buku konvensional, sekitar 37% meminjamnya dari perpustakaan, dan hanya 12% yang meminjam dari teman. Sedangkan 10% menyatakan bahwa tidak banyak membaca atau tidak tertarik pada buku. Mengingat semakin populernya teknologi dan internet, ternyata sebesar 55% responden lebih suka memesan buku secara online, sedangkan yang lebih memilih untuk membeli buku di toko buku konvensional sebesar 73%. [3]
Salah satu situs media sosial yang populer untuk membaca dan menuliskan cerita, yaitu Wattpad. Wattpad merupakan platform untuk membuat komunitas membaca dan menghapus penghalang antara pembaca dan penulis. Menurut opini dari Restu I. Aji, dilansir dari Quora.com, beberapa karya yang terdapat pada Wattpad bahkan lebih berwarna dari pada buku yang terbit secara konvensional atau cetak. Menurutnya, tidak sedikit buku yang populer di Wattpad yang justru dialih-mediakan ke buku fisik dan hadir di toko buku offline disertai embel-embel "telah dibaca sekian ratus ribu/juta kali di Wattpad". [4]
Dari permasalahan dan latar belakang di atas, maka di dalam proyek ini akan dibuat sebuah model machine learning berupa recommendation system atau sistem rekomendasi untuk menentukan rekomendasi buku yang terbaik kepada pengguna. Model ini nantinya dapat digunakan dan di-deploy untuk keperluan tertentu, misalnya diterapkan di dalam katalog buku, daftar buku perpustakaan, media sosial seperti Wattpad, ataupun pada e-commerce yang menjual buku baik digital maupun cetak.
Berdasarkan latar belakang yang telah dijelaskan di atas, maka diperoleh rumusan masalah yang akan diselesaikan pada proyek ini, yaitu:
- Bagaimana cara melakukan tahap persiapan data buku, pengguna, dan rating atau penilaian agar dapat digunakan sebagai informasi untuk membuat model machine learning sistem rekomendasi?
- Bagaimana cara membuat model machine learning untuk sistem rekomendasi buku?
Berdasarkan rumusan masalah yang telah dipaparkan di atas, maka didapatkan tujuan dari proyek ini, yaitu:
- Melakukan tahap persiapan data sehingga data siap digunakan pada model machine learning untuk sistem rekomendasi.
- Membuat model machine learning untuk sistem rekomendasi buku terbaik kepada pengguna.
Di bawah ini merupakan gambar diagram alir kerja (workflow) yang dilakukan dalam mengerjakan proyek ini.
Berdasarkan tujuan dari proyek yang telah dipaparkan di atas, maka berikut adalah beberapa solusi yang dapat dilakukan agar dapat mencapai tujuan dari proyek ini, yaitu:
-
Tahap pra-pemrosesan data atau data preprocessing merupakan tahap untuk mengubah data mentah atau raw data menjadi data yang bersih atau clean data yang siap untuk digunakan pada proses selanjutnya. Tahap ini dapat dilakukan dengan cara, yaitu:
- Melakukan penyesuaian dan mengubah nama kolom atau atribut sehingga memudahkan ketika proses pemanggilan dataset beserta nama atribut atau kolom tertentu.
- Menggabungkan data yang terpisah sehingga dapat digunakan pada tahap selanjutnya.
-
Tahap persiapan data atau data preparation merupakan proses transformasi pada data sehingga data menjadi bentuk yang cocok untuk melakukan proses pemodelan di tahap selanjutnya. Tahap ini dapat dilakukan dengan beberapa teknik, yaitu:
- Melakukan pengecekan nilai data yang kosong, tidak ada, ataupun null (missing value) dan menghapus data tersebut atau mengganti/mengisinya dengan suatu nilai tertentu.
- Melakukan pengecekan data yang mungkin duplikat agar tidak akan mengganggu hasil dari pemodelan dan sistem yang telah dibangun.
-
Tahap pembuatan model machine learning untuk sistem rekomendasi buku adalah jenis algoritma sistem rekomendasi yang terpersonalisasi atau personalized recommender system. Pembuatan model akan menggunakan dua (2) pendekatan, yaitu content-based filtering recommendation, dan pendekatan collaborative filtering recommendation.
-
Content-based Filtering Recommendation
Sistem rekomendasi yang berbasis konten (content-based filtering) merupakan sistem rekomendasi yang memberikan rekomendasi item yang hampir sama dengan item yang disukai oleh pengguna di masa lalu. Content-based filtering akan mempelajari profil minat pengguna baru berdasarkan data dari objek yang telah dinilai oleh pengguna lain sebelumnya. Pada pendekatan menggunakan content-based filtering akan menggunakan algoritma TF-IDF Vectorizer dan Cosine Similarity.-
TF-IDF Vectorizer
Algoritma Term Frequency Inverse Document Frequency Vectorizer (TF-IDF Vectorizer) adalah algoritma yang dapat melakukan kalkulasi dan transformasi dari teks mentah menjadi representasi angka yang memiliki makna tertentu dalam bentuk matriks serta dapat digunakan dan dimengerti oleh model machine learning. [5]Kelebihan dari teknik ini adalah tidak membutuhkan data yang diperoleh dari pengguna lain karena rekomendasi yang akan diberikan akan spesifik hanya untuk pengguna tersebut. Sedangkan kekurangan dengan menggunakan teknik ini ialah hasil rekomendasi yang hanya terbatas dari pengguna itu saja dan tidak dapat memperluas data dari penilaian pengguna lain. TF-IDF dapat dihitung menggunakan rumus sebagai berikut: [6]
$$idf_i=log \left( \frac{n}{df_i} \right)$$ Di mana
$idf_i$ merupakan skor IDF untuk term$i$ ;$df_i$ adalah jumlah dokumen yang mengandung term$i$ ; dan$n$ adalah jumlah total dokumen. Semakin tinggi nilai$df$ suatu term, maka semakin rendah$idf$ untuk term tersebut. Ketika jumlah$df$ sama dengan$n$ yang berarti istilah/term tersebut muncul di semua dokumen,$idf$ akan menjadi 0, karena$log(1)=0$ .Sedangkan nilai TF-IDF merupakan perkalian dari matriks frekuensi term dengan IDF-nya.
$$w_{i,j}=tf_{i,j} \times idf_i$$ Di mana
$w_{i,j}$ merupakan skor TF-IDF untuk term$i$ pada dokumen$j$ ;$tf_{i,j}$ adalah frekuensi term untuk term$i$ pada dokumen$j$ , dan$idf_i$ adalah skor$idf$ untuk term$i$ . -
Cosine Similarity
Teknik cosine similarity digunakan untuk melakukan perhitungan derajat kesamaan (similarity degree) antara dua sampel. [7]$$S_c(A,B)=cos(\theta)= \frac{A \times B}{|A| |B|} = \frac{\displaystyle\sum^{n}{i=1} A_iB_i}{\sqrt{\displaystyle\sum^{n}{i=1} A^{2}{i} } \sqrt{\displaystyle\sum^{n}{i=1} B^{2}_{i}} }$$
Di mana
$A_i$ dan$B_i$ merupakan komponen dari masing-masing vektor A dan B.
-
-
Collaborative Filtering Recommendation
Sistem rekomendasi yang berbasis penyaringan kolaboratif (collaborative filtering) adalah sistem rekomendasi yang memberikan rekomendasi item yang hampir sama dengan preferensi pengguna di masa lalu berdasarkan riwayat pengguna lain yang memiliki preferensi yang sama, misalnya berdasarkan penilaian atau rating yang telah diberikan pengguna di masa lalu. [8] Namun, teknik ini memilki kekurangan yaitu, tidak dapat memberikan rekomendasi item yang tidak memiliki riwayat penilaian/rating atau transaksi.Menggunakan teknik collaborative filtering recommendation akan memerlukan proses penyandian (encoding) fitur-fitur yang terdapat pada dataset ke dalam bentuk indeks integer, lalu memetakannya ke dalam dataframe yang berkaitan. Kemudian akan dilakukan pembagian distribusi dataset dengan rasio tertentu untuk memisahkan data latih (training data) dan juga data uji (validation data) sebelum dilakukan tahap pemodelan.
-
Data yang digunakan dalam proyek ini adalah dataset yang diambil dari Kaggle Dataset. Di bawah ini adalah informasi detail tentang dataset yang digunakan.
Keterangan | |
---|---|
Sumber | Kaggle Dataset: Book Recommendation Dataset |
Usability | 10.00 |
Lisensi | CC0: Public Domain |
Penilaian/Rating | Silver |
Jenis dan Ukuran Berkas | zip (25 MB) |
Kategori | Literature, Art, Culture and Humanities |
Dalam dataset tersebut berisi tiga (3) berkas CSV (Comma-separated Values), yaitu Books.csv
, Ratings.csv
, Users.csv
.
-
Books.csv, memiliki atribut atau fitur sebagai berikut,
ISBN
: International Standard Book NumberBook-Title
: Judul bukuBook-Author
: Penulis bukuYear-Of-Publication
: Tahun terbit bukuPublisher
: Penerbit bukuImage-URL-S
: Tautan sampul buku ukuran kecilImage-URL-M
: Tautan sampul buku ukuran sedangImage-URL-L
: Tautan sampul buku ukuran besar
-
Ratings.csv, memiliki atribut atau fitur sebagai berikut,
User-ID
: Identitas unik pengguna berupa bilangan bulat atau integerISBN
: International Standard Book NumberBook-Rating
: Rating buku yang diberikan pengguna
-
Users.csv, memiliki atribut atau fitur sebagai berikut,
User-ID
: Identitas unik pengguna berupa bilangan bulat atau integerLocation
: Lokasi tempat tinggal penggunaAge
: Umur pengguna
Deskripsi statistik untuk dataset ratings
pada fitur Book-Rating
dapat dilihat pada gambar di bawah ini.
Dari gambar di atas dapat dilihat bahwa terdapat,
- Total jumlah data (
count
) sebanyak 1.149.780; - Rata-rata rating (
mean
) 3; - Simpangan baku/standar deviasi rating (
std
) 4; - Rating Minimal (
min
), kuartil bawah/Q1 rating (25%
), kuartil tengah/Q2/median rating (50%
) 0; - Kuartil atas/Q3 rating (
75%
) 7; - Rating maksimum (
max
) 10
Berikut adalah visualisasi grafik histogram frekuensi sebaran data rating pengguna terhadap buku yang sudah pernah dibaca, mulai dari rating 1 hingga rating 10.
Berdasarkan hasil visualisasi grafik histogram "Jumlah Rating Buku" di atas, dapat disimpulkan bahwa rating terbanyak dari buku yang sudah pernah dibaca adalah rating 0, dengan jumlah rating kira-kira sebanyak lebih dari 700.000. Rating 0 tersebut dapat menyebabkan bias dan mempengaruhi hasil analisis, sehingga data dengan rating 0 tersebut dapat dihapus pada tahap data preparation.
Pada tahap pra-pemrosesan data atau data preprocessing dilakukan untuk mengubah data mentah (raw data) menjadi data yang bersih (clean data) yang siap untuk digunakan pada proses selanjutnya. Ada beberapa tahap yang dilakukan pada data preprocessing, yaitu:
-
Mengubah Nama Kolom/Atribut/Fitur
Proses pengubahan nama kolom atau atribut atau fitur dari masing-masing dataframe bertujuan untuk memudahkan proses pemanggilan dataframe tersebut. -
Menggabungkan Data ISBN
Penggabungan data ISBN buku dilakukan menggunakan fungsi.concatenate
dengan bantuan librarynumpy
. Data ISBN terdapat pada dataframe buku dan dataframe rating, sehingga dilakukan penggabungan data tersebut pada atribut atau kolomisbn
. -
Menggabungkan Data User
Penggabungan datauser_id
buku dilakukan menggunakan fungsi.concatenate
dengan bantuan librarynumpy
. Datauser_id
terdapat pada dataframe rating dan dataframe user, sehingga dilakukan penggabungan data tersebut pada atribut atau kolomuser_id
.
Pada tahap persiapan data atau data preparation dilakukan proses transformasi pada data sehingga menjadi bentuk yang cocok untuk proses pemodelan nantinya. Ada beberapa tahap yang dilakukan pada data preparation, yaitu:
-
Pengecekan Missing Value
Proses pengecekan data yang kosong, hilang, null, atau missing value ditemukan pada dataframebooks
, sehingga data yang missing tersebut dihapus atau di-drop.Sedangkan pada dataframe
ratings
tidak ditemukan adanya missing value, tetapi perlu dilakukan penghapusan rating 0 dikarenakan rating 0 tersebut merupakan rating yang paling banyak berdasarkan proses data understanding sebelumnya, yaitu sebanyak 716.109 data dengan rating 0. Hal tersebut dapat menyebabkan bias pada hasil analisis data. Kategori rating 0 tidak diikutsertakan, sehingga diperoleh hasil visualisasi grafik histogram di bawah ini.Berdasarkan hasil visualisasi grafik histogram di atas dengan rating 0 yang telah dihapus, dapat dilihat distribusi frekuensi data yang lebih rapi dan jelas, terutama pada data rating 1 hingga rating 4.
Kemudian pada dataframe
Users
, terdapat sebanyak 110.762 missing value pada fitur umur. Sehingga data tersebut dapat diganti atau diisi dengan nilai modus atau nilai yang paling sering muncul dalam data umur tersebut.Berdasarkan hasil visualisasi grafik histogram umur pengguna di atas dapat dilihat bahwa rentang umur pengguna paling banyak berada pada umur 20 hingga 30-an.
-
Pengecekan Data Duplikat
Melakukan pengecekan data duplikat atau data yang sama pada masing-masing dataframe. Hasilnya tidak ada data yang duplikat dari ketiga dataframe. -
Data Buku dan Rating
Melakukan penggabungan atau merge data buku dan rating menjadi sebuah dataframe.
Tahap selanjutnya adalah proses modeling atau membuat model machine learning yang dapat digunakan sebagai sistem rekomendasi untuk menentukan rekomendasi buku yang terbaik kepada pengguna dengan beberapa algoritma sistem rekomendasi tertentu.
Berdasarkan tahap pemahaman data atau data understanding sebelumnya, dapat dilihat bahwa data untuk masing-masing dataframe, yaitu data buku, rating, dan users tergolong data yang cukup banyak, mencapai ratusan hingga jutaan data. Hal tersebut akan berdampak pada biaya yang akan diperlukan untuk melakukan proses pemodelan machine learning, seperti memakan waktu yang lama dan resource RAM ataupun GPU yang cukup besar. Oleh karena itu, dalam kasus ini data yang akan digunakan untuk proses pemodelan machine learning data akan dibatasi hanya 10.000 baris data buku dan 5000 baris data rating.
books = books[:10000]
ratings = ratings[:5000]
-
Content-based Recommendation
-
TF-IDF Vectorizer
TF-IDF Vectorizer akan mentransformasikan teks menjadi representasi angka yang memiliki makna tertentu dalam bentuk matriks. Ukuran matriks yang diperoleh adalah sebesar 10.000 data buku dan 5.575 data author atau penulis buku. -
Cosine Similarity
Cosine Similarity akan melakukan perhitungan derajat kesamaan (similarity degree) antar judul buku. Ukuran matriks yang diperoleh adalah sebesar 10.000 data buku dan 10.000 data buku juga. -
Hasil Top-N Recommendation Hasil pengujian sistem rekomendasi dengan pendekatan content-based recommendation adalah sebagai berikut.
Pada gambar di atas merupakan data berdasarkan judul buku yang dipilih oleh pengguna.
Dapat dilihat bahwa sistem yang telah dibangun berhasil memberikan rekomendasi beberapa judul buku berdasarkan input atau masukan sebuah judul buku, yaitu "Proxies", dan diperoleh beberapa judul buku yang berdasarkan perhitungan sistem.
-
-
Collaborative Filtering Recommendation
-
Data Preparation
Data preparation yang dilakukan adalah dengan melakukan penyandian (encoding) fituruser_id
danisbn
pada dataframeratings
ke dalam bentuk indeks integer. Kemudian melakukan pemetaan fitur yang telah di-encoding tersebut ke dalam masing-masing dataframe yangratings
.Diperoleh jumlah user sebesar 1204, jumlah buku sebesar 4565, nilai minimal rating yaitu 1, dan nilai maksimum rating yaitu 10.
-
Split Training Data dan Validation Data
Tahap ini dilakukan pengacakan dataframe ratings terlebih dahulu, lalu kemudian membagi data dengan rasio 80:20, di mana 80% untuk data latih (training data) dan 20% sisanya adalah untuk data uji (validation data). -
Model Development dan Hasil
Berdasarkan model yang telah di-training, berikut adalah hasil pengujian sistem rekomendasi buku dengan pendekatan collaborative filtering recommendation.Berdasarkan hasil di atas, dapat dilihat bahwa sistem akan mengambil pengguna secara acak, yaitu pengguna dengan
user_id
885. Lalu akan dicari buku dengan rating terbaik dari user tersebut, yaitu,- The Joy Luck Club oleh Amy Tan
- Awakening oleh Kate Chopin
Kemudian sistem akan membandingkan antara buku dengan rating tertinggi dari user dan semua buku, kecuali buku yang telah dibaca tersebut, lalu akan mengurutkan buku yang akan direkomendasikan berdasarkan nilai rekomendasi yang tertinggi. Dapat dilihat terdapat 10 daftar buku yang direkomendasikan oleh sistem.
Dapat dibandingkan antara Book with high ratings from user dan Top 10 Books Recommendation, terdapat buku dengan penulis atau author yang sama, yaitu The Kitchen God's Wife oleh Amy Tan. Dengan begitu, dapat dikatakan bahwa sistem yang telah dibangun dapat merekomendasikan buku kepada pengguna dengan prediksi yang cukup sesuai.
-
-
Content-based Recommendation
Pada tahap evaluasi untuk model sistem rekomendasi dengan pendekatan content-based recommendation dapat menggunakan evaluasi dengan metrik akurasi yang diperoleh dari,$$Accuracy=\frac{\displaystyle\sum_{i=1}^{n} RecommendedBooks_i}{\displaystyle\sum_{i=1}^{n} BooksWithSameAuthor_i} \times 100$$ Masih menggunakan data yang sama pada tahap Modeling content-based recommendation, pada proses Hasil Top-N Recommendation, yaitu penulis buku atau
book_author
Toni Morrison, akan dilakuakn proses pencarian jumlah judul buku ataubook_title
dengan penulis atau author yang sama. Pencarian tersebut menggunakan variabel baru yang di mana akan mengambil sebuah data buku yang telah dibaca oleh pengguna. Hasil yang diperoleh adalah Toni Morrison memiliki jumlah buku sebanyak 7 buah buku.accuracy = (recommendations.shape[0] / readedBookSameAuthor) * 100 accuracy
Proses perhitungan akurasi dilakukan dengan membagi banyaknya rekomendasi buku yang dihasilkan, dibagi dengan banyaknya jumlah buku yang ditulis oleh author atau penulis yang sama, kemudian dikalikan dengan 100. Sehingga diperoleh nilai akurasi sebesar 57.14%.
-
Collaborative Filtering Recommendation
Berdasarkan model machine learning yang sudah dibangun menggunakan embedding layer dengan Adam optimizer dan binary crossentropy loss function, metrik yang digunakan adalah Root Mean Squared Error (RMSE). Perhitungan RMSE dapat dilakukan menggunakan rumus berikut,$$RMSE=\sqrt{\sum^{n}_{i=1} \frac{y_i - y\_pred_i}{n}}$$ Di mana, nilai
$n$ merupakan jumlah dataset, nilai$y_i$ adalah nilai sebenarnya, dan$y\_pred$ yaitu nilai prediksinya terdahap$i$ sebagai urutan data dalam dataset.Hasil nilai RMSE yang rendah menunjukkan bahwa variasi nilai yang dihasilkan dari model sistem rekomendasi mendekati variasi nilai observasinya. Artinya, semakin kecil nilai RMSE, maka akan semakin dekat nilai yang diprediksi dan diamati.
Berikut merupakan visualisasi hasil training dan validation error dari metrik RMSE serta training dan validation loss ke dalam grafik plot.
Kesimpulannya adalah model yang digunakan untuk melakukan rekomendasi buku berdasarkan teknik Content-based Recommendation dan teknik Collaborative Filtering Recommendation telah berhasil dibuat dan sesuai dengan preferensi pengguna. Pada collaborative filtering diperlukan data rating dari pengguna, sedangkan pada content-based filtering, data rating tidak diperlukan karena analisis sistem rekomendasi akan berdasarkan atribut item dari masing-masing buku. Sistem rekomendasi dengan pendekatan content-based recommendation dan collaborative filtering recommendation memiliki kelebihan dan kekurangannya masing-masing.
[1] L. Tahmidaten and W. Krismanto, "Permasalahan Budaya Membaca di Indonesia (Studi Pustaka Tentang Problematika & Solusinya)", Scholaria: Jurnal Pedidikan dan Kebudayaan, vol. 10, no, 1, pp. 22-23, Jan. 2020, doi: 10.24246/j.js.2020.v10.i1.p22-33, Retrieved from: https://ejournal.uksw.edu/scholaria/article/view/2656.
[2] F. Rahim, Pengajaran Membaca di Sekolah Dasar, Jakarta: Sinar Grafika, 2008.
[3] Picodi, "Pembelian Buku di Indonesia (dan di seluruh Dunia)", Picodi.com, 2019, Retrieved from: https://www.picodi.com/id/mencari-penawaran/pembelian-buku-di-indonesia-dan-di-seluruh-dunia.
[4] "Apakah kamu lebih suka baca buku di situs Wattpad atau toko buku offline?", Quora, Retrieved from: https://id.quora.com/Apakah-kamu-lebih-suka-baca-buku-di-situs-Wattpad-atau-toko-buku-offline.
[5] scikit-learn, "sklearn.feature_extraction.text.TfidfVectorizer", Retrieved from: https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html.
[6] L. Ramadhan, "TF-IDF Simplified, A short introduction to TF-IDF vectorizer", Towards Data Science, 2021, Retrieved from: https://towardsdatascience.com/tf-idf-simplified-aba19d5f5530.
[7] ScienceDirect, "Cosine Similarity", Retrieved from: https://www.sciencedirect.com/topics/computer-science/cosine-similarity.
[8] A. Ajitsaria, "Build a Recommendation Engine With Collaborative Filtering", Real Python, 2019, Retrieved from: https://realpython.com/build-recommendation-engine-collaborative-filtering.