Membaca buku adalah kunci penting untuk meningkatkan literasi dan pengetahuan, namun di Indonesia, minat baca masih sangat rendah, dengan indeks hanya sekitar 0,001 menurut UNESCO. Salah satu tantangan utamanya adalah kesulitan menemukan buku yang sesuai dengan preferensi individu karena banyaknya pilihan yang tersedia. Dataset goodbooks-10k dari Kaggle, yang mencakup 10.000 buku beserta rating dan ulasan pengguna, digunakan untuk membangun sistem rekomendasi berbasis machine learning. Sistem ini menggunakan metode Content-Based dan Collaborative Filtering untuk membantu pembaca menemukan buku yang relevan dan menarik, sehingga diharapkan dapat mendorong peningkatan minat baca dan literasi. Dengan menggunakan model rekomendasi yang tepat, diharapkan dapat mempermudah pembaca dalam menemukan buku yang sesuai dengan minat mereka, menjadikan proses pencarian lebih cepat dan efisien, serta memberikan kontribusi positif terhadap budaya membaca di masyarakat.
Proyek ini bertujuan untuk membangun sistem rekomendasi buku yang dapat meningkatkan minat baca dengan menyediakan rekomendasi buku yang sesuai dengan preferensi dan kebutuhan pembaca.
- Bagaimana cara membangun sistem rekomendasi buku berdasarkan kriteria pembaca menggunakan Content-Based Filtering?
- Bagaimana cara membangun sistem rekomendasi buku yang disukai berdasarkan rating menggunakan Collaborative Filtering?
- Menyediakan rekomendasi buku yang sesuai dengan kriteria pembaca atau buku serupa menggunakan Content-Based Filtering.
- Menyediakan rekomendasi buku yang belum dibaca atau mungkin disukai pembaca menggunakan Collaborative Filtering.
- Content-Based Filtering:
- Metode: Sistem akan menggunakan teknik Term Frequency-Inverse Document Frequency (TF-IDF) dan cosine similarity untuk mengukur kemiripan antara deskripsi buku, genre, dan metadata lainnya.
- Output: Sistem ini akan merekomendasikan top 5 buku yang memiliki kemiripan konten paling tinggi dengan buku yang diinput oleh pengguna.
- Detail Rekomendasi: Buku-buku yang direkomendasikan akan memiliki skor kemiripan minimal 0.7 pada skala 0 hingga 1, yang menunjukkan bahwa buku-buku tersebut memiliki konten yang sangat relevan dengan preferensi pembaca.
- Collaborative Filtering:
- Metode: Menggunakan model embedding seperti RecommenderNet yang diimplementasikan dengan Keras, sistem ini akan memprediksi buku yang akan disukai pengguna berdasarkan pola rating pengguna lain yang memiliki preferensi serupa. Output: Sistem akan merekomendasikan top 10 buku yang memiliki rating tinggi yang belum pernah dibaca oleh pengguna.
- Detail Rekomendasi: Buku yang direkomendasikan memiliki rating rata-rata minimal 4.0 dari skala 5 berdasarkan ulasan pengguna di dataset. Buku-buku ini juga akan diprioritaskan jika telah menerima lebih dari 50 ulasan, untuk memastikan bahwa rekomendasi didasarkan pada data yang cukup signifikan dan representatif.
- Kriteria Nilai Tinggi: “Rating tinggi” didefinisikan sebagai buku dengan skor 4.0 atau lebih, yang menandakan bahwa buku tersebut sangat direkomendasikan oleh mayoritas pengguna lain dan dianggap berkualitas tinggi.
Solusi ini dirancang untuk memberikan rekomendasi buku yang relevan dan berkualitas tinggi, sehingga dapat membantu pembaca menemukan buku yang sesuai dengan preferensi mereka dengan lebih mudah dan cepat. Dengan meningkatkan kualitas rekomendasi, diharapkan pembaca akan lebih termotivasi untuk membaca lebih banyak buku, yang pada akhirnya dapat berkontribusi pada peningkatan minat baca dan literasi di masyarakat.
Dataset yang digunakan diambil dari situs Kaggle yang berjudul "goodbooks-10k". Dataset ini berisi 5 file dengan ekstensi csv, yaitu:
- 'genre.csv'
- Metadata :
- goodreads_book_id: ID buku Goodreads.
- tag_id: ID tag (genre).
- count: Jumlah buku yang terkait dengan tag tertentu.
- Konten: File ini mencakup data tag (label) untuk buku-buku, yang memungkinkan klasifikasi berdasarkan genre atau tema tertentu.
- Analisis:
- Jumlah tag unik: 34.252
- Tag paling populer digunakan untuk buku dengan genre fiksi dan non-fiksi.
- 'books.csv'
- Metadata :
- id: ID unik untuk setiap baris data.
- book_id: ID unik untuk buku.
- best_book_id: ID buku terbaik (jika ada).
- work_id: ID karya terkait buku.
- books_count: Jumlah edisi buku tertentu.
- isbn: Nomor ISBN buku.
- isbn13: Nomor ISBN-13 buku.
- authors: Nama penulis buku.
- original_publication_year: Tahun terbitnya buku.
- original_title: Judul asli buku.
- title: Judul buku.
- language_code: Kode bahasa buku.
- average_rating: Rating rata-rata buku.
- ratings_count: Jumlah rating yang diberikan untuk buku.
- work_ratings_count: Jumlah rating yang diterima oleh karya.
- work_text_reviews_count: Jumlah ulasan teks yang diterima oleh karya.
- ratings_1, ratings_2, ratings_3, ratings_4, ratings_5: Jumlah rating dengan nilai tertentu.
- Konten: File ini berisi informasi mendetail tentang 10.000 buku, termasuk ID buku, penulis, judul, dan tahun terbit.
- Analisis:
- Jumlah buku unik: 10.000
- Jumlah penulis unik: 4.664
- Distribusi tahun terbit menunjukkan mayoritas buku berasal dari periode setelah tahun 2000.
- Penulis yang memiliki buku paling banyak ialah John Grisham, hal ini memberikan insight tentang produktivitas penulis.
- Mayoritas buku memiliki rating tinggi, sehingga distribusi condong ke kanan.
Insight:
- Genre yang paling populer memberikan gambaran tentang preferensi umum pembaca.
- Tag populer seperti 'fiction', 'fantasy', dan 'young-adult' dapat digunakan untuk menyegmentasikan pembaca berdasarkan minat genre.
- 'ratings.csv'
-
Metadata :
- book_id: ID buku yang diberi rating.
- user_id: ID pengguna yang memberi rating.
- rating: Nilai rating yang diberikan oleh pengguna untuk buku tertentu.
-
Konten: File ini berisi 5.973.270 entri rating yang diberikan oleh pengguna untuk berbagai buku.
-
Analisis:
- Jumlah pengguna unik: 53.424
- Distribusi rating dari 1 hingga 5, dengan mayoritas rating berada pada skala 4 dan 5 (Gambar 1).
Gambar 1: Distribusi rating buku dari pengguna, menunjukkan sebagian besar buku mendapatkan rating tinggi.
** Insight:**
- Distribusi rating yang cenderung tinggi menunjukkan banyak pengguna memberikan rating positif.
- Pola rating ini dapat membantu dalam menyusun rekomendasi yang lebih akurat berdasarkan preferensi pengguna.
- 'jenis_genre.csv'
- Metadata :
- book_id: ID buku yang diberi rating.
- user_id: ID pengguna yang memberi rating.
- rating: Nilai rating yang diberikan oleh pengguna untuk buku tertentu.
- Konten: File ini berisi pemetaan antara ID tag dan nama tag yang digunakan untuk buku-buku.
- Analisis:
- Jumlah jenis genre atau tag buku: 34.252
- Beberapa tag seperti 'fiction', 'fantasy', dan 'young-adult' adalah yang paling sering digunakan.
- Users.csv:
- Metadata :
- user_id: ID unik untuk setiap pengguna.
- book_id: ID buku yang telah dilihat atau diinteraksi oleh pengguna.
- Konten: File ini berisi daftar buku yang ditandai pengguna untuk dibaca.
- Analisis:
- Jumlah pengguna unik: 48.871
- Distribusi menunjukkan bahwa banyak pengguna memiliki daftar buku yang ingin mereka baca, yang dapat digunakan untuk memperkirakan minat baca.
Langkah-langkah persiapan data meliputi:
1. Mengatasi Missing Value:
- Deskripsi: Pengecekan dan penghapusan data kosong dilakukan untuk memastikan integritas dataset.
- Metode: Digunakan metode isnull().sum() untuk menghitung jumlah nilai kosong dan dropna() untuk menghapusnya.
- Alasan: Menghapus data kosong penting untuk menghindari bias atau error pada model. Data yang lengkap dan konsisten membantu dalam meningkatkan akurasi prediksi.
Tabel Missing Value:
Fitur | Jumlah Missing Values |
---|---|
book_id | 0 |
user_id | 0 |
rating | 0 |
authors | 88.860.317 |
title | 88.860.317 |
original_publication_year | 88.870.317 |
Insight : Kolom book_id, user_id, dan rating tidak memiliki missing values, yang menunjukkan bahwa data utama terkait identifikasi buku, pengguna, dan rating diberikan secara lengkap. Ini penting karena data ini menjadi dasar dalam membangun sistem rekomendasi.
2. Encoding Data: Deskripsi: Proses mengubah fitur kategorikal menjadi format numerik agar bisa digunakan oleh algoritma pembelajaran mesin. Teknik yang Digunakan:
- One Hot Encoding:
- Digunakan untuk mengubah fitur kategorikal seperti genre buku menjadi format biner.
- Kegunaan: Menyediakan representasi yang tidak memiliki urutan atau hierarki, yang penting untuk fitur seperti genre buku.
- Label Encoding:
- Digunakan untuk mengubah fitur kategorikal seperti penulis menjadi label numerik.
- Kegunaan: Menyediakan cara sederhana dan cepat untuk mengkonversi fitur kategorikal menjadi numerik.
- Drop Dummy:
- Digunakan untuk mengurangi redundansi setelah One Hot Encoding dengan menghapus satu kolom dummy.
- Kegunaan: Mencegah masalah collinearity dalam model regresi atau klasifikasi.
Alasan: Encoding fitur kategorikal menjadi numerik sangat penting agar dapat digunakan oleh algoritma pembelajaran mesin, yang hanya bisa bekerja dengan data numerik. One Hot Encoding dipilih untuk fitur tanpa urutan (seperti genre), sementara Label Encoding digunakan untuk fitur dengan jumlah kategori yang banyak (seperti penulis).
- Pembagian Data
- Deskripsi: Membagi dataset menjadi data pelatihan (training) dan pengujian (testing) untuk memvalidasi model. Metode: Menggunakan train_test_split dengan rasio 80:20 untuk membagi data.
- Alasan: Membagi data menjadi bagian training dan testing penting untuk mengevaluasi performa model dengan data yang belum pernah dilihat sebelumnya, sehingga memberikan indikasi yang lebih baik tentang bagaimana model akan bekerja pada data yang baru.
Dalam proyek ini, digunakan dua pendekatan utama untuk membangun sistem rekomendasi buku: Content-Based Filtering dan Collaborative Filtering. Kedua metode ini dipilih untuk memberikan rekomendasi yang lebih akurat dan personal kepada pengguna.
1. Content-Based Filtering Deskripsi: Content-Based Filtering adalah teknik rekomendasi yang mendasarkan rekomendasi pada kesamaan antara konten dari item yang berbeda. Metode ini menggunakan informasi fitur dari item untuk menemukan item yang serupa dengan preferensi pengguna sebelumnya.
Algoritma yang Digunakan: Pendekatan ini menggunakan algoritma TF-IDF (Term Frequency-Inverse Document Frequency) untuk mengubah teks (misalnya, deskripsi buku, genre) menjadi vektor numerik. Setelah itu, dihitung kesamaan antara buku menggunakan cosine similarity untuk menemukan buku yang paling mirip dengan buku yang sudah disukai atau dilihat oleh pengguna.
Cara Kerja:
- TF-IDF Vectorization: Mengubah teks (misalnya, deskripsi buku) menjadi representasi numerik yang menangkap relevansi kata dalam konteks koleksi dokumen (buku).
- Cosine Similarity: Menghitung kesamaan antara vektor buku berdasarkan sudut antara vektor. Nilai cosine similarity berkisar antara 0 dan 1, di mana 1 menunjukkan kesamaan sempurna.
Alasan Pemilihan:
- Relevansi Kontekstual: TF-IDF cocok untuk menangkap konteks dan relevansi kata dalam deskripsi buku, sehingga bisa memberikan rekomendasi buku yang relevan berdasarkan isi kontennya.
- Efektif untuk Data Teks: Pendekatan ini sangat baik dalam menangani data teks seperti deskripsi buku, genre, dan lainnya.
- Tidak Memerlukan Data Pengguna Lain: Content-Based Filtering tidak memerlukan data dari pengguna lain, sehingga cocok untuk memberikan rekomendasi awal untuk pengguna baru.
Top 5 Rekomendasi Buku (Contoh):
Berikut adalah tabel hasil rekomendasi buku berdasarkan buku yang dicari ("The Door Into Summer") dengan menggunakan Content-Based Filtering
Judul Buku | Penulis |
---|---|
Time Enough for Love | Robert A. Heinlein |
Stranger in a Strange Land | Robert A. Heinlein |
Job: A Comedy of Justice | Robert A. Heinlein |
Mrs. Frisby and the Rats of NIMH (Rats of NIMH #1) | Robert C. O'Brien |
Shadow Divers | Robert Kurson |
Insight: Tiga dari lima buku yang direkomendasikan ditulis oleh Robert A. Heinlein, yang juga penulis dari buku yang dicari, "The Door Into Summer". Ini menunjukkan bahwa sistem rekomendasi cenderung merekomendasikan buku-buku lain dari penulis yang sama, dengan begini pembaca yang menyukai satu karya dari seorang penulis kemungkinan besar akan menikmati karya-karya lainnya dari penulis tersebut. Robert A. Heinlein dikenal dengan genre fiksi ilmiah (science fiction). Buku-buku seperti "Time Enough for Love", "Stranger in a Strange Land", dan "Job: A Comedy of Justice" semua berada dalam genre yang sama.
2. Collaborative Filtering Deskripsi: Collaborative Filtering adalah teknik yang menggunakan informasi dari banyak pengguna untuk memberikan rekomendasi. Metode ini berfokus pada pola preferensi di antara pengguna untuk merekomendasikan item yang mungkin disukai pengguna lain dengan preferensi yang sama.
Algoritma yang Digunakan: Menggunakan algoritma embedding yang diterapkan dalam class RecommenderNet dari Keras. Algoritma ini mempelajari representasi numerik (embedding) dari pengguna dan buku sehingga bisa memprediksi kesukaan pengguna terhadap buku tertentu berdasarkan pola preferensi pengguna lainnya.
Cara Kerja:
- Embedding Layer: Mempelajari representasi numerik untuk pengguna dan buku dalam dimensi rendah.
- Dot Product: Menghitung kecocokan antara pengguna dan buku berdasarkan dot product dari embedding mereka.
- Optimisasi: Menggunakan optimisasi backpropagation untuk meminimalkan kesalahan prediksi rating buku.
Alasan Pemilihan:
- Memanfaatkan Preferensi Pengguna Lain: Collaborative Filtering efektif dalam memanfaatkan data dari banyak pengguna untuk menemukan pola preferensi, sehingga bisa memberikan rekomendasi yang lebih personal.
- Menangani Skala Besar: Pendekatan ini mampu menangani data dalam skala besar dan memberikan rekomendasi yang relevan dengan memanfaatkan kesamaan pola preferensi.
- Cocok untuk Rating: Algoritma ini dirancang khusus untuk prediksi rating, sehingga cocok untuk memberikan rekomendasi buku dengan rating tinggi.
Judul Buku | Penulis |
---|---|
The Curious Incident of the Dog in the Night-Time | Mark Haddon |
A People's History of the United States | Howard Zinn |
The Adventures of Huckleberry Finn | Mark Twain, John Seelye, Guy Cardwell |
The Taste of Home Cookbook | Janet Briggs, Beth Wittlinger |
The Beautiful and Damned | F. Scott Fitzgerald |
Hard Times | Charles Dickens |
The Last Juror | John Grisham |
Still Life with Woodpecker | Tom Robbins |
Villa Incognito | Tom Robbins |
Love in the Time of Cholera | Gabriel García Márquez, Edith Grossman |
Metrik evaluasi yang digunakan dalam proyek ini adalah Root Mean Squared Error (RMSE), yang memberikan gambaran tentang seberapa baik model dalam memprediksi rating buku oleh pengguna. Nilai RMSE digunakan untuk mengukur tingkat akurasi prediksi model, di mana nilai yang lebih rendah menunjukkan prediksi yang lebih dekat dengan nilai observasi.
Gambar 2: Plot History RMSE
Insight:
- Penurunan RMSE: Nilai RMSE menurun seiring bertambahnya iterasi, menunjukkan peningkatan akurasi model selama pelatihan.
- Konvergensi Model: Setelah beberapa iterasi, nilai RMSE mendekati konstan, menandakan bahwa model mencapai konvergensi dan tidak banyak peningkatan lebih lanjut.
- Stabilitas: Stabilitas nilai RMSE di akhir pelatihan menunjukkan bahwa model belajar dengan baik tanpa tanda-tanda overfitting.
Interpretasi RMSE: Dalam konteks proyek ini, nilai RMSE sebesar 0.2133 menunjukkan performa yang baik dari model Collaborative Filtering. RMSE yang rendah menandakan bahwa model mampu memberikan prediksi rating yang mendekati nilai sebenarnya. Dengan demikian, hasil evaluasi menunjukkan bahwa model memiliki kemampuan yang baik dalam memprediksi preferensi pengguna terhadap buku. Hal ini sesuai dengan tujuan proyek untuk menyediakan rekomendasi buku yang sesuai dengan preferensi pengguna.
Untuk content-based filtering, metrik evaluasi yang digunakan adalah Precision. Precision mengukur proporsi rekomendasi yang relevan dari keseluruhan rekomendasi yang diberikan oleh sistem.
Gambar 2: Plot Precision-Recall Curve
Insight Precision:
- Relevansi Rekomendasi: Dengan menggunakan presisi sebesar 0.60, sistem content-based filtering memberikan rekomendasi buku yang sesuai dengan minat dan preferensi pengguna berdasarkan konten buku (seperti genre, penulis, dan kata kunci). Dalam contoh ini, dari lima rekomendasi buku yang diberikan, tiga buku pertama memiliki presisi 1, yang berarti mereka sepenuhnya sesuai dengan preferensi pengguna. Kemudian, dua rekomendasi terakhir memiliki presisi 7.5% dan 6% masing-masing, menunjukkan relevansi yang lebih rendah dengan preferensi pengguna. Ini menegaskan bahwa sistem berhasil mengidentifikasi dan merekomendasikan buku-buku yang relevan dalam beragam tingkat presisi.
- Kualitas Rekomendasi: Dengan menggunakan presisi, kita dapat memastikan bahwa rekomendasi yang diberikan tidak hanya banyak tetapi juga berkualitas tinggi dan relevan bagi pengguna. Dalam konteks ini, presisi 0.60 menunjukkan bahwa dari setiap lima rekomendasi buku yang diberikan, tiga di antaranya relevan dan berkualitas tinggi berdasarkan penulis yang sama atau hampir sama, yang menjadi dasar rekomendasi dari model content-based filtering ini. Ini menegaskan bahwa sistem ini cukup efisien dalam memahami dan memetakan preferensi pengguna ke dalam rekomendasi yang akurat.
- Kekuatan Content-Based Filtering: Dengan mencapai presisi sebesar 0.60, sistem ini mampu memberikan rekomendasi yang bermanfaat bagi pengguna, terutama bagi mereka yang tertarik untuk mengeksplorasi karya dari penulis yang sama atau genre yang mirip. Ini menunjukkan bahwa sistem ini bekerja dengan baik untuk menemukan buku-buku yang serupa berdasarkan fitur-fitur konten yang telah diidentifikasi sebelumnya. Presisi yang beragam pada berbagai rekomendasi juga menggambarkan kekuatan dan keterbatasan dari model content-based filtering ini dalam memberikan rekomendasi yang sesuai dengan preferensi pengguna.
Kesimpulan Evaluasi
- Collaborative Filtering: RMSE digunakan untuk mengukur akurasi prediksi rating, dengan hasil menunjukkan bahwa model memiliki kemampuan yang baik dalam memprediksi preferensi pengguna.
- Content-Based Filtering: Precision digunakan untuk mengevaluasi relevansi rekomendasi, memastikan bahwa rekomendasi yang diberikan sesuai dengan preferensi pengguna.
- Sistem rekomendasi buku menggunakan Content-Based Filtering berhasil memberikan rekomendasi buku berdasarkan penulis.
- Sistem rekomendasi buku menggunakan Collaborative Filtering berhasil memberikan rekomendasi buku berdasarkan rating tertinggi.
- Evaluasi model Collaborative Filtering dengan RMSE mencapai 0.2133.