PERBANDINGAN SISTEM REKOMENDASI FILM METODE USER-
BASED DAN ITEM-BASED COLLABORATIVE FILTERING
SKRIPSI
Diajukan Untuk Memenuhi Salah Satu Syarat
Guna Memperoleh Gelar Sarjana Komputer
Pada Progam Studi Teknik Informatika
Oleh :
Imam Dwicahya
14 5314 111
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2018
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
COMPARISON OF THE FILM RECOMMENDER SYSTEM BETWEEN
USER-BASED AND ITEM-BASED COLLABORATIVE FILTERING
METHODS
THESIS
Present as Partial Fulfillment of Requirement
To Obtain the Sarjana Komputer Degree
In Informatics Engineering Study Program
By :
Imam Dwicahya
14 5314 111
INFORMATICS ENGINEERING STUDY PROGRAM
FACULTIY OF SCIENSE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2018
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
iii
HALAMAN PERSETUJUAN
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
iv
HALAMAN PENGESAHAN
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
v
HALAMAN PERSEMBAHAN
“ Just do the best. Let God do the rest. “
Tugas akhir ini saya persembahkan kepada :
Allah SWT
Ibu dan Ayah tercinta
Keluarga terkasih
Teman-teman seperjuangan Teknik Informatika 2014
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vi
PERNYATAAN KEASLIAN KARYA
Saya menyatakan dengan sesungguhnya bahwa skripsi yang saya tulis ini tidak
memuat karya atau bagian orang lain, kecuali yang telah disebutkan dalam kutipan
daftar pustaka sebagaimana layaknya karya ilmiah.
Yogyakarta, 24 Juli 2018
Penulis,
Imam Dwicahya
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vii
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI
Yang bertanda tangan di bawah ini, saya mahasiswa Universitas Sanata Dharma :
Nama : Imam Dwicahya
NIM : 14 5314 111
Demi pengembangan ilmu pengetahuan, saya memberikan kepada Perpustakaan
Universitas Sanata Dharma karya ilmiah saya yang berjudul :
PERBANDINGAN SISTEM REKOMENDASI FILM METODE USER-
BASED DAN ITEM-BASED COLLABORATIVE FILTERING
Beserta perangkat yang diperlukan (bila ada). Dengan demikian saya memberikan
kepada Perpustakaan Universitas Sanata Dharma hak untuk menyimpan,
mengalihkan dalam bentuk media lain untuk kepentingan akademis tanpa perlu
meminta ijin dari saya maupun memberikan royalti kepada saya selama tetap
mencantumkan nama saya sebagai penulis.
Demikian pernyataan ini saya buat dengan sebenarnya
Dibuat di Yogyakarta
Pada tanggal 24 Juli 2018
Yang menyatakan,
Imam Dwicahya
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
viii
ABSTRAK
Sistem rekomendasi adalah sistem yang mampu memberikan rekomendasi
item-item yang mungkin disukai oleh pengguna. Metode Collaborative Filtering
merupakan salah satu metode pada sistem rekomendasi. Metode ini memanfaatkan
penilaian pengguna lain berupa rating atau umpan balik lain untuk memprediksi
item yang mungkin diminati. Collaborative filtering (CF) memiliki 2 metode umum
yaitu user-based CF dan item-based CF.
Dalam tugas akhir ini, penulis melakukan penelitian terhadap keakuratan
dari metode user-based CF dan item-based CF untuk mengetahui metode yang
lebih baik diantara keduanya. Skenario pengujian adalah dengan mengubah-ubah
jumlah maksimal neighbor untuk mendapatkan nilai prediksi. Perhitungan
similaritas antar pengguna atau antar item dilakukan dengan menggunakan
perhitungan Pearson Correlation. Kesalahan dari hasil prediksi rating terhadap
rating sesungguhnya dihitung dengan menggunakan perhitungan Mean Absolute
Error (MAE). Data set yang penulis gunakan adalah data set dari MovieLens.org
berupa 100.000 rating yang diberikan oleh pengguna terhadap film. Data tersebut
dibagi menjadi data training dan testing.
Hasil akhir pengujian menunjukkan bahwa metode item-based CF lebih
akurat dalam hal memberikan rekomendasi dibanding metode user-based CF. Hal
itu dibuktikan dengan hasil uji MAE pada kedua metode, dari 6 skenario pengujian,
metode item-based CF mengungguli pembandingnya sebanyak 5 skenario. Metode
item-based CF memberikan prediksi rating paling baik pada jumlah maksimal
neighbor 100 dengan nilai MAE sebesar 0.793895061, sedangkan user-based CF
pada jumlah maksimal neighbor 70 dengan nilai MAE sebesar 0.800633522.
Kata kunci : Collaborative Filtering; Item-based Collaborative Filtering;
Neighbor; Pearson Correlation; Sistem Rekomendasi; User-based Collaborative
Filtering;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ix
ABSTRACT
The recommender system is a system that capable of provided
recommendations for items that users may liked. Collaborative Filtering (CF)
method is one of the methods of recommendation system. The users provided
recommendations by utilized other user ratings in the form of ratings or similar
feedbacks to predict items that may be liked or desirable. The Collaborative
Filtering has two general methods, named user-based CF and item-based CF. The
researcher investigated the accuracy of these two methods, then compared the
accuracies of the two methods. The testing scenario was varying the maximum
number of neighbors in getting predicted values.
The researcher calculated the similarity between users or between items by
using Pearson Correlation calculations. The error of the prediction was calculated
by using Mean Absolute Error (MAE) calculation. The researcher used 100.000
rating data sets from Movilens.org. The data set were divided into training and
testing data. The result shows that item-based CF method is more accurate in terms
of providing recommendations than user-based CF method. It was showed by the
MAE of both methods. Out of 6 testing scenarios, the item-based CF method
outperforms the comparison in 5 scenarios. The item-based CF method provides
the best rating prediction on the maximum number of neighbor 100 with MAE value
of 0.793895061, while the user-based CF on the maximum number of neighbor 70
with the MAE value of 0.800633522.
Keywords: Collaborative Filtering; Item-based Collaborative Filtering; Neighbor;
Pearson Correlation; Recommendation System; User-based Collaborative Filtering;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
x
KATA PENGANTAR
Alhamdulillahirabbil’alamin, puji syukur atas segala limpahan nikmat dan
karunia Allah SWT, Tuhan yang Maha Kuasa. Hanya dengan petunjuk, rahmat dan
ridho-Nya, sehingga penulis dapat menyelesaikan tugas akhir dengan judul
“PERBANDINGAN SISTEM REKOMENDASI FILM METODE USER-
BASED DAN ITEM-BASED COLLABORATIVE FILTERING”.
Ucapan terima kasih yang besar dan penghargaan yang tinggi penulis
sampaikan kepada yang terhormat Ibu P. H. Prima Rosa, S.Si., M.Sc. selaku
pembimbing pertama dan Bapak Robertus Adi Nugroho, S.T., M.Eng. selaku
pembimbing kedua, yang dengan penuh perhatian, dan kesabaran selalu
meluangkan waktu, memberikan pengarahan serta semangat dalam pengerjaan
tugas akhir ini.
Penulis sadar, adapun dalam proses pengerjaan tugas akhir ini sampai
dengan selesai, tidak terlepas dari dukungan, bantuan, dan doa dari berbagai pihak.
Oleh karena itu, pada kesempatan ini penulis ingin mengucapkan terima kasih yang
tulus kepada :
1. Kedua orang tua penulis, Ayah dan Ibu yang sangat memberikan
dukungan penuh dan doa restu, juga motivasi yang begitu dibutuhkan
oleh penulis.
2. Bapak Sudi Mungkasi, S. Si., M.Mat., Ph.D. selaku Dekan Fakultas
Sains dan Teknologi Universitas Sanata Dharma.
3. Ibu Dr. Anastasia Rita Widiarti, S.Si., M.Kom. selaku Ketua Program
Studi Teknik Informatika Universitas Sanata Dharma.
4. Bapak Henricus Agung Hernawan, S.T., M.Kom. selaku Dosen
Pembimbing Akademik.
5. Seluruh dosen Teknik Informatika Universitas Sanata Dharma yang
telah memberikan ilmu, mengajarkan pengetahuan dan pengalaman
berharga selama proses perkuliahan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xi
6. Sahabat-sahabat penulis, antara lain :
- Lae Babat yang tidak henti-hentinya menyemangati penulis untuk
terus berjuang mengejar ketertinggalan.
- Dik Sin yang memotivasi penulis dan memberikan suntikan
semangat yang ekstra.
- Keluarga Ipul yang selalu ada dan mendorong penulis untuk maju
dan tidak menyerah dengan keadaan.
- Kecambah Squad 2017 yang selalu ada berbagi kebahagiaan di sela-
sela tekanan akhir semester.
- Sekelik brother stone yang selalu menanyakan kabar dan memberi
dukungan dari luar Yogyakarta.
7. Teman-teman seperjuangan Teknik Informatika 2014 yang
menyemangati satu sama lain, berjuang selama proses perkuliahan dan
memberikan pengalaman serta kesan yang tidak akan terlupakan.
Penulis berharap penelitian ini dapat berguna dan membantu bagi pembaca.
Penulis menyadari bahwa tugas akhir ini tidak sepenuhnya sempurna, oleh karena
itu penulis mengharapkan kritik dan saran agar penelitian ini dapat berkembang dan
menjadi penelitian yang lebih baik untuk ke depan.
Yogyakarta, 24 Juli 2018
Penulis,
Imam Dwicahya
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xii
DAFTAR ISI
HALAMAN PERSETUJUAN ............................................................................... iv
HALAMAN PENGESAHAN ................................................................................ iv
HALAMAN PERSEMBAHAN ............................................................................. v
PERNYATAAN KEASLIAN KARYA ................................................................ vi
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI................................ vii
ABSTRAK ........................................................................................................... viii
ABSTRACT ........................................................................................................... ix
KATA PENGANTAR ............................................................................................ x
DAFTAR ISI ......................................................................................................... xii
DAFTAR GAMBAR ........................................................................................... xvi
DAFTAR TABLE ............................................................................................... xxii
DAFTAR RUMUS ............................................................................................ xxiii
DAFTAR QUERY ............................................................................................. xxiv
BAB I PENDAHULUAN ....................................................................................... 1
1.1. Latar Belakang ............................................................................................. 1
1.2. Rumusan Masalah ........................................................................................ 3
1.3. Batasan Masalah........................................................................................... 3
1.4. Tujuan Penelitian ......................................................................................... 4
1.5. Manfaat Penelitian ....................................................................................... 4
1.6. Sistematika Penulisan .................................................................................. 4
BAB II LANDASAN TEORI ................................................................................. 6
2.1. Sistem Rekomendasi .................................................................................... 6
2.2. Collaborative Filtering ................................................................................ 7
2.3.1. User-based Collaborative Filtering ................................................... 9
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiii
2.3.2. Item-based Collaborative Filtering.................................................... 9
2.3.3. Alur Penerapan Metode Collaborative Filtering sampai Prediksi
Rating 10
2.3. Pearson Correlation .................................................................................. 11
2.4. Perhitungan Prediksi .................................................................................. 12
2.5. Mean Absolute Error (MAE) ..................................................................... 13
2.6. MovieLens .................................................................................................. 14
BAB III METODOLOGI PENELITIAN.............................................................. 15
3.1. Alur Penelitian ........................................................................................... 15
3.2. Penjelasan Tahap Penelitian ....................................................................... 16
3.2.1. Penelitian Pendahulan ...................................................................... 16
3.2.1.1. Identifikasi Masalah .................................................................... 16
3.2.1.2. Penetapan Tujuan dan Manfaat Penelitian .................................. 16
3.2.2. Studi Pustaka .................................................................................... 16
3.2.3. Pengambilan Data ............................................................................ 16
3.2.4. Perancangan dan Implementasi Sistem ............................................ 18
3.2.5. Pengujian Sistem .............................................................................. 18
3.2.6. Analisa Hasil .................................................................................... 19
3.2.7. Kesimpulan dan Saran...................................................................... 19
3.3. Spesifkasi Software dan Hardware ............................................................ 20
BAB IV PERANCANGAN PERANGKAT LUNAK .......................................... 21
4.1. Perancangan Umum ................................................................................... 21
4.1.1. Diagram Use Case............................................................................ 21
4.1.2. Narasi Use Case ............................................................................... 22
4.2. Perancangan Input ...................................................................................... 22
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiv
4.2.1. Model Konseptual (ER Diagram) .................................................... 23
4.2.2. Model Logikal (Relasi) .................................................................... 24
4.2.3. Model Fisikal ................................................................................... 25
4.3. Perancangan Proses .................................................................................... 27
4.3.1. Algoritma Setiap Blok Proses .......................................................... 32
4.3.2. Contoh Perhitungan Metode ............................................................ 58
4.3.2.1. Metode User-based CF ............................................................... 58
4.3.2.2. Metode Item-based CF ................................................................ 62
4.3.2.3. Perhitungan MAE ....................................................................... 67
4.3.3. Diagram Kelas Disain ...................................................................... 69
4.3.3.1. Kelas View .................................................................................. 70
4.3.3.2. Kelas Control .............................................................................. 71
4.3.3.3. Kelas Model ................................................................................ 72
4.4. Perancangan Output ................................................................................... 76
4.4.1. Halaman Utama ................................................................................ 77
4.4.2. Halaman User-based ........................................................................ 78
4.4.3. Halaman Item-based......................................................................... 79
4.4.4. Halaman Hasil Prediksi .................................................................... 81
4.4.5. Halaman Pencarian........................................................................... 82
4.4.6. Halaman Daftar Rating .................................................................... 83
BAB V IMPLEMENTASI DAN ANALISA HASIL ........................................... 84
5.1. Implementasi Input..................................................................................... 84
5.2. Implementasi Proses................................................................................... 89
5.2.1. Blok Proses pada Kelas .................................................................... 89
5.2.2. Implementasi Blok Proses dalam Koding ........................................ 90
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xv
5.3. Implementasi Output ................................................................................ 119
5.3.1. Halaman Utama .............................................................................. 119
5.3.2. Halaman User-based ...................................................................... 119
5.3.3. Halaman Item-based....................................................................... 123
5.3.4. Halaman Hasil Prediksi .................................................................. 125
5.3.5. Halaman Pencarian......................................................................... 129
5.3.6. Halaman Daftar Rating .................................................................. 131
5.4. Analisis Hasil dan Pembahasan ............................................................... 133
5.4.1. Hasil Uji Validasi Program ............................................................ 133
5.4.2. Hasil Uji MAE Pada Metode User-based CF ................................ 133
5.4.3. Hasil Uji MAE Pada Metode Item-based CF ................................ 136
5.4.4. Perbadingan Metode User-based CF dan Item-based CF ............. 139
BAB VI PENUTUP ............................................................................................ 145
6.1. Kesimpulan .............................................................................................. 145
6.2. Saran ......................................................................................................... 146
DAFTAR PUSTAKA ......................................................................................... 147
LAMPIRAN 1 : Narasi Use Case ....................................................................... 150
LAMPIRAN 2 : Hasil Uji Validasi Program ...................................................... 157
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xvi
DAFTAR GAMBAR
Gambar 2.1 Konsep Collaborative Filtering (Hakim, 2010). .................................. 7
Gambar 2.2 Matriks preferensi rating dari pengguna kepada item (McDonald,
2015) ........................................................................................................................ 8
Gambar 2.3 Konsep user-based filltering (Marafi, 2014)........................................ 9
Gambar 2.4 Konsep item-based filltering (Marafi, 2014)...................................... 10
Gambar 2.5 Alur penerapan Collaborative Filtering (Richi and Saphira, 2011) .. 10
Gambar 3.1 Diagram Alur Penelitian..................................................................... 15
Gambar 4.1 Diagram Use Case .............................................................................. 21
Gambar 4.2 Contoh data set pada table ratings ...................................................... 22
Gambar 4.3 Rancangan ER Diagram pada sistem ................................................. 23
Gambar 4.4 Model logikal dari rancangan basis data pada sistem ........................ 24
Gambar 4.5 Flowchart diagram tentang perancangan proses ................................ 28
Gambar 4.6 Diagram kelas disain .......................................................................... 69
Gambar 4.7 Halaman utama yang terdapat pada sistem ........................................ 77
Gambar 4.8 Halaman user-based ........................................................................... 78
Gambar 4.9 Halaman user-based ........................................................................... 79
Gambar 4.10 Halaman item-based ......................................................................... 79
Gambar 4.11 Halaman item-based ......................................................................... 80
Gambar 4.12 Halaman hasil prediksi ..................................................................... 81
Gambar 4.13 Halaman pencarian ........................................................................... 82
Gambar 4.14 Perbedaan informasi pada halaman daftar rating ............................. 83
Gambar 5.2 Source code method getUserById(int) ............................................... 91
Gambar 5.3 Source code method inputDataRatingTesting(Rating) ....................... 91
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xvii
Gambar 5.4 Source code method pilihDataTesting() ............................................. 92
Gambar 5.5 Source code method main() ................................................................ 92
Gambar 5.6 Lama running pemilihan data testing ................................................. 93
Gambar 5.7 Result query untuk validasi rating pengguna ..................................... 94
Gambar 5.8 Result query untuk validasi rating film .............................................. 95
Gambar 5.9 Ilustrasi data testing tidak memiliki neighbor pada metode user-based
CF ........................................................................................................................... 97
Gambar 5.10 Ilustrasi data testing tidak memiliki neighbor pada metode item-based
CF ........................................................................................................................... 97
Gambar 5.11 Total data dari table rating_testing ................................................. 100
Gambar 5.12 Source code method getUserRating(String) ................................... 101
Gambar 5.13 Source code method getAvg(String) .............................................. 101
Gambar 5.14 Source code method getBagianAtas(List<Rating>, List<Rating>,
Double, Double) ................................................................................................... 102
Gambar 5.15 Source code method getBagianBawah(List<Rating>, List<Rating>,
Double, Double) ................................................................................................... 102
Gambar 5.16 Source code method similaritasPearsonCorrealtion(String, String)
.............................................................................................................................. 103
Gambar 5.17 Source code method inputUserSimilarity(UserBased) ................... 103
Gambar 5.18 Source code method main() ............................................................ 104
Gambar 5.19 Lama running perhitungan similaritas antara pengguna ................ 104
Gambar 5.20 Total data dari table user_similarity ............................................... 105
Gambar 5.21 Source code method getItemRating(String) ................................... 106
Gambar 5.22 Source code method getAvg(String) .............................................. 106
Gambar 5.23 Source code method getBagianAtas(List<Rating>, List<Rating>,
Double, Double) ................................................................................................... 106
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xviii
Gambar 5.24 Source code method getBagianBawah(List<Rating>, List<Rating>,
Double, Double) ................................................................................................... 107
Gambar 5.25 Source code method similaritasPearsonCorrealtion(String, String)
.............................................................................................................................. 107
Gambar 5.26 Source code method inputMovieSimilarity(UserBased) ................ 108
Gambar 5.27 Source code method main() ............................................................ 108
Gambar 5.28 Lama running perhitungan similaritas antara pengguna ................ 109
Gambar 5.29 Total data dari table movie_similarity ........................................... 109
Gambar 5.30 Source code method getRatingTesting() ........................................ 110
Gambar 5.31 Source code method inputPrediction(Prediction) ........................... 111
Gambar 5.32 Source code method getRatingAndUserSimilaritySort(String, String)
.............................................................................................................................. 111
Gambar 5.33 Source code method hasilPrediksiUserBased1(Rating, int) ........... 112
Gambar 5.34 Source code method main() ............................................................ 113
Gambar 5.35 Lama waktu running hitung prediksi user-based CF .................... 113
Gambar 5.36 Source code method getRatingAndMovieSimilaritySort(String,
String) ................................................................................................................... 114
Gambar 5.37 Source code method hasilPrediksiItemBased1(Rating, int) ........... 115
Gambar 5.38 Source code method main() ............................................................ 116
Gambar 5.39 Lama waktu running hitung prediksi item-based CF .................... 116
Gambar 5.40 Total data pada table prediction ..................................................... 117
Gambar 5.41 Source code method showPrediction(String, String) ..................... 118
Gambar 5.42 Halaman Utama .............................................................................. 119
Gambar 5.43 Halaman User-based ...................................................................... 119
Gambar 5.44 Pop-up untuk konfirmasi perhitungan similaritas antara pengguna
.............................................................................................................................. 120
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xix
Gambar 5.45 Pop-up untuk melakukan pencarian nilai similaritas ..................... 121
Gambar 5.46 Hasil pencarian nilai similaritas 1 pengguna dengan pengguna lainnya
.............................................................................................................................. 121
Gambar 5.47 Hasil pencarian nilai similaritas antara 2 pengguna ....................... 122
Gambar 5.48 Halaman Item-based ....................................................................... 123
Gambar 5.49 Pop-up untuk konfirmasi perhitungan similaritas antar semua film
.............................................................................................................................. 124
Gambar 5.50 Pop-up untuk melakukan pencarian nilai similaritas ..................... 124
Gambar 5.51 Hasil pencarian nilai similaritas pengguna dengan user_id tertentu
dengan pengguna lainnya ..................................................................................... 124
Gambar 5.52 Hasil pencarian nilai similaritas antara 2 pengguna secara spesifik
.............................................................................................................................. 125
Gambar 5.53 Halaman Hasil Prediksi untuk metode user-based CF .................. 125
Gambar 5.54 Pop-up untuk menampilkan nilai prediksi ..................................... 126
Gambar 5.55 Halaman tampilan hasil prediksi .................................................... 126
Gambar 5.56 Halaman Hasil Prediksi untuk metode item-based CF .................. 127
Gambar 5.57 Pop-up untuk menampilkan nilai prediksi ..................................... 127
Gambar 5.58 Halaman tampilan hasil prediksi .................................................... 128
Gambar 5.59 Halaman Pencarian ......................................................................... 129
Gambar 5.60 Pencarian film berdasarkan genre film........................................... 129
Gambar 5.61 Pencarian film berdasarkan judul film ........................................... 130
Gambar 5.62 Halaman Daftar Rating................................................................... 131
Gambar 5.63 Pop-up untuk menampilkan semua data training ........................... 131
Gambar 5.64 Pop-up untuk menampilkan semua data testing ............................. 132
Gambar 5.65 Format layout halaman yang menampilkan data rating ................. 132
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xx
Gambar 5.66 Grafik garis hasil MAE terhadap jumlah maksimal neighbor pada
metode user-based CF ......................................................................................... 134
Gambar 5.67 Source code pada method main() di kelas Prediction.java yang sudah
dimodifikasi pada hasil prediksi metode user-based CF ..................................... 135
Gambar 5.68 Data testing nilai MAE di atas 2, maksimal neighbor = 10 ........... 136
Gambar 5.69 Data testing nilai MAE di atas 2, maksimal neighbor = 70 ........... 136
Gambar 5.70 Grafik garis hasil MAE terhadap jumlah maksimal neighbor pada
metode item-based CF ......................................................................................... 137
Gambar 5.71 Source code pada method main() di kelas Prediction.java yang sudah
dimodifikasi pada hasil prediksi metode item-based CF ..................................... 138
Gambar 5.72 Data testing nilai MAE di atas 2, maksimal neighbor = 10 ........... 139
Gambar 5.73 Data testing nilai MAE di atas 2, maksimal neighbor = 70 ........... 139
Gambar 5.74 Grafik garis hasil MAE terhadap jumlah maksimal neighbor pada
kedua metode ....................................................................................................... 139
Gambar 5.75 Grafik garis lama waktu running terhadap jumlah maksimal neighbor
pada kedua metode ............................................................................................... 140
Gambar 5.76 Menampilkan data testing yang memiliki nilai MAE lebih dari 2 . 141
Gambar 5.77 Menampilkan data neighbor dari pengguna 166 ............................ 142
Gambar 5.78 Menampilkan interseksi rating antara pengguna 166 dan pengguna
456 ........................................................................................................................ 144
Gambar 5.79 Hasil eksekusi query rata-rata rating pengguna 1 (kiri) dan penguna
2 (kanan)............................................................................................................... 158
Gambar 5.80 Eksekusi query mencari interseksi rating pengguna 1 dan 2 ......... 158
Gambar 5.81 Skenario pencarian nilai similaritas antara pengguna 1 dan 2 ....... 161
Gambar 5.82 Hasil pencarian skenario ................................................................ 161
Gambar 5.83 Sampel data testing......................................................................... 162
Gambar 5.84 Rating dan nilai similaritas 10 neighbor ........................................ 163
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xxi
Gambar 5.85 Prediksi rating untuk ID testing 10 ................................................ 165
Gambar 5.86 Hasil eksekusi query rata-rata rating film 1 (kiri) dan film 6 (kanan)
.............................................................................................................................. 166
Gambar 5.87 Eksekusi query mencari interseksi rating pengguna 1 dan 2 ......... 167
Gambar 5.88 Skenario pencarian nilai similaritas antara film 1 dan 6 ................ 170
Gambar 5.89 Hasil pencarian skenario ................................................................ 170
Gambar 5.90 Rating dan nilai similaritas 10 neighbor ........................................ 172
Gambar 5.91 Prediksi rating untuk ID testing 10 ................................................ 173
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xxii
DAFTAR TABLE
Table 3.1 Matrix user-item pada data set. .............................................................. 17
Table 3.2 Record yang terdapat di basis data yang memuat informasi tentang data
set matrix user-item. ............................................................................................... 18
Table 4.1 Rancangan implementasi blok proses pada kelas .java ......................... 28
Table 4.2 Sampel data rating untuk contoh perhitungan metode user-based CF .. 58
Table 4.3 Interseksi rating antara John dan Lucy .................................................. 59
Table 4.4 Matrix user similarity dari hasil perhitungan similaritas antar pengguna.
................................................................................................................................ 60
Table 4.5 Sampel data testing pada metode user-based CF .................................. 60
Table 4.6 Sampel data rating untuk contoh perhitungan metode item-based CF .. 63
Table 4.7 Interseksi rating antara The Matrix dan Forrest Gump ......................... 63
Table 4.8 Matrix movie similarity dari hasil perhitungan similaritas antar film. ... 64
Table 4.9 sampel data testing pada metode item-based CF ................................... 65
Table 5.1 Implementasi Blok Proses pada Kelas Java ........................................... 90
Table 5.2 Hasil MAE dari skenario mengubah batas jumlah maksimal neighbor
metode user-based CF ......................................................................................... 133
Table 5.3 Hasil MAE dari skenario mengubah batas jumlah maksimal neighbor
metode item-based CF ......................................................................................... 136
Table 5.4 Interseksi rating antara pengguna 1 dan 2 ............................................ 159
Table 5.5 Interseksi rating antara film 1 dan 6..................................................... 168
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xxiii
DAFTAR RUMUS
Rumus Pearson Correlation Metode User-based CF (2.1) ..................................... 11
Rumus Pearson Correlation Metode Item-based CF (2.2) ..................................... 12
Rumus perhitungan prediksi metode user-based CF (2.3) ..................................... 13
Rumus perhitungan prediksi metode item-based CF (2.4) .................................... 13
Rumus MAE (2.5) .................................................................................................. 14
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xxiv
DAFTAR QUERY
Query 5.1 Menampilkan pengguna yang tidak me-rating film.............................. 94
Query 5.2 Menampilkan film yang tidak di-rating pengguna ............................... 95
Query 5.3 Insert data ke table ratings .................................................................... 96
Query 5.4 Hapus data dari table ratings_testing .................................................... 96
Query 5.5 Insert 12 data ke table ratings ............................................................... 98
Query 5.6 Hapus 12 data dari table ratings_testing ............................................... 99
Query 5.7 Menampilkan prediksi dengan MAE di atas 2 .................................... 142
Query 5.8 Menampilkan neighbor pengguna 166................................................ 143
Query 5.9 Menampilkan interseksi rating pengguna 166 dan 456 ...................... 143
Query 5.10 Mengambil nilai rata-rata .................................................................. 157
Query 5.11 Mengambil interseksi rating pengguna 1 dan 2 ................................ 158
Query 5.12 Menampil neighbor pengguna 6 yang memenuhi syarat perhitungan
prediksi ................................................................................................................. 163
Query 5.13 Mengambil nilai rata-rata .................................................................. 166
Query 5.14 Mengambil interseksi rating film 1 dan 6 ......................................... 167
Query 5.15 Menampil neighbor film 86 yang memenuhi syarat perhitungan
prediksi ................................................................................................................. 171
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
1
BAB I PENDAHULUAN
1.1. Latar Belakang
Secara perlahan komunikasi telah mengalami banyak perubahan di
berbagai teknologi dari yang awalnya hanya sebuah lembar pengumuman,
hingga menjadi berita online, dari berupa fotografi, berubah menjadi video
bergerak di televisi, sampai akhirnya pada era digital ini, semua media
informasi tersebut bisa diakses melalui internet (Lister, 2009). Mulai
bergesernya landasan berfikir serta kebutuhan manusia dari informasi yang
berbentuk fisik menjadi informasi dalam bentuk digital merupakan suatu hal
yang merepresentasikan era digital. Internet menyediakan sumber informasi
berupa data digital dengan kemudahan akses dari berbagai perangkat
teknologi informasi dan komunikasi secara cerdas, cepat, praktis dan
terintegrasi.
Banyaknya informasi serta konten yang ada di internet
menyebabkan sebuah tumpukan informasi yang sangat besar. Hal itu
memunculkan tantangan bagi manusia di era ini untuk menemukan
informasi yang ingin dicari dalam tumpukan informasi tersebut. Search
engine adalah istilah untuk mesin pencari yang mampu menjawab tantangan
zaman itu. Namun seiring waktu berjalan, mesin rekomendasi muncul
sebagai jawaban lebih atas mesin pencari. Sistem rekomendasi adalah
sistem yang bertanggung jawab atas mesin rekomendasi. Sistem ini mampu
mengidentifikasi serta memberikan konten yang berpotensi besar untuk
dipilih atau digunakan oleh pengguna berdasarkan penyaringan, pemilahan
item dan informasi yang mengambil preferensi dari perilaku maupun
riwayat pengguna (user) (Asanov, 2015).
Dua pendekatan yang umum digunakan pada sistem rekomendasi
adalah Content-based Filtering dan Collaborative Filtering (Adomavicius
dan Tuzhilin, 2005). Pendekatan Content-based Filtering memiliki
keterbatasan ketika seorang user meminta rekomendasi suatu item yang
memiliki jenis konten yang berbeda dengan item yang sudah pernah dipilih.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2
Pendekatan ini hanya mengandalkan riwayat item yang pernah di-rating,
sehingga item yang direkomendasi bersifat monoton. Kekurangan yang
terdapat pada pendekatan Content-based Filtering memunculkan
pendekatan Collaborative Filtering untuk menyempurnakan kekurangan
tersebut. Pendekatan ini memanfaatkan opini atau penilaian pengguna lain
berupa rating atau feedback lain yang ada untuk memprediksi item yang
mungkin akan disukai/diminati oleh seorang pengguna. Namun pendekatan
ini memiliki kelemahan di saat suatu item yang baru masuk dan sama sekali
belum ada yang memberi rating, item tersebut tidak akan pernah
direkomendasikan ke user mana pun.
Pendekatan Collaborative Filtering memiliki dua metode yaitu
User-based Collaborative Filtering (CF) serta Item-based Collaborative
Filtering (CF). Metode user-based CF mengasumsikan bahwa untuk
mencari sesuatu yang akan digemari oleh pengguna A, maka harus mencari
pengguna lain dengan kecenderungan yang sama. Pengguna lain yang
memiliki ketertarikan akan sesuatu yang sama dengan pengguna A disebut
dengan neighbors. Sementara metode item-based CF menampung segala
item yang telah disukai oleh pengguna A terlebih dahulu dan kemudian
menelusuri item lain yang akan disukai oleh pengguna A. Perbedaan user-
based CF dan item-based CF terletak pada titik awal dalam mencari
rekomendasi dan jenis neighbor-nya. (Arvid dkk, 2016), (Lops dkk, 2011),
(Sarwar dkk, 2001).
Belum adanya penetapan jumlah neighbor dalam menentukan
prediksi rating dari pengguna (Dewanto & Wibowo, 2015) membuat
penulis ingin mengetahui berapakah jumlah neighbor yang baik pada data
set yang penulis gunakan yaitu data set dari MovieLens.org. Pada penelitian
ini penulis menerapkan pendekatan Collaborative Filtering dengan metode
user-based CF serta item-based CF. Kedua metode akan dibandingkan hasil
prediksi rating-nya terhadap rating real yang ada di data testing yang
dibentuk dari data set. Perbandingan kedua metode adalah berdasarkan
jumlah maksimal neighbor dari pengguna (user) dan item terhadap nilai
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3
kesalahan predikisi. Nilai kesalahan prediksi dihitung dengan menggunakan
perhitungan Mean Absolute Error (MAE).
Item yang menjadi objek rekomendasi adalah film dari data set
MovieLens.org yang telah di-rating oleh user. MovieLens.org merupakan
merupakan data set terbuka untuk pengembangan dan penelitian bidang
sistem rekomendasi yang dikelola dan dijalankan oleh GroupLens, sebuah
laboratorium penelitian di University of Minnesota (https://movielens.org/).
Metode pengukuran neighbors terdekat yang digunakan nantinya adalah
Pearson-Correlation untuk mencari neighbors dengan kemiripan dan
kecenderungan yang sama terhadap user tertentu.
1.2. Rumusan Masalah
1. Bagaimana menerapkan metode user-based CF dan item-based CF pada
sistem rekomendasi film?
2. Bagaimana pengaruh jumlah maksimal neighbor terhadap akurasi
metode user-based CF dan item-based CF pada sistem rekomendasi
film?
1.3. Batasan Masalah
Agar penelitian ini lebih terarah, maka perlu adanya batasan
penelitian. Adapun batasan tersebut adalah :
1. Data set yang digunakan diambil dari situs open datasets pada
MovieLens.org.
2. Pengujian mesin dilakukan di localhost tidak pada web service berbayar.
3. Metode yang digunakan pada sistem rekomendasi metode user-based
CF dan item-based CF dengan perhitungan similaritas Pearson
Correlation.
4. Penentuan parameter jumlah maksimal neighbor untuk perhitungan
prediksi adalah 10, 30, 50, 70, 100, dan semua neighbor dengan kondisi
yang ditetapkan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4
1.4. Tujuan Penelitian
1. Menerapkan sistem rekomendasi film dengan menggunakan metode
user-based CF dan item-based CF.
2. Mengetahui bagaimana keakuratan metode user-based CF dan item-
based CF dalam memberikan hasil rekomendasi film yang baik dengan
jumlah maksimal neighbor sebagai aspek yang mempengaruhi
perbandingan keduanya.
1.5. Manfaat Penelitian
Dalam penelitian ini diharapkan dapat memberikan manfaat,
diantaranya adalah sebagai berikut :
1. Bagi GroupLens dan peneliti bidang sistem rekomendasi :
Hasil yang diperoleh dari penelitian dapat digunakan untuk menjadi
bahan pengembangan alat untuk eksplorasi data dan rekomendasi
kepada user yang diharapakan mampu meningkatkan kualitas
rekomendasi.
2. Bagi penulis :
Penulis dapat mengimplementasikan ilmu yang diperoleh dari
perkuliahan di Universitas Sanata Dharma dan dapat dijadikan sebagai
pengalaman baru. Dalam hal ini adalah ilmu tentang mata kuliah sistem
rekomendasi.
1.6. Sistematika Penulisan
1. BAB I : PENDAHULUAN
Bab ini berisi latar belakang, rumusan masalah, batasan masalah, tujuan
penelitian, manfaat penelitian dan sistematika penulisan.
2. BAB II : LANDASAN TEORI
Bab ini akan menjelaskan mengenai teori yang berkaitan dengan judul
atau masalah pada tugas akhir.
3. BAB III : METODOLOGI PENELITIAN
Bab ini berisi mengenai data, spesifikasi alat dan tahapan penelitian.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5
4. BAB IV : PERANCANGAN PERANGKAT LUNAK
Bab ini berisi langkah-langkah mengenai perancangan awal dan
perancangan perangkat lunak pada mesin rekomendasi yang akan
dibuat.
5. BAB V : IMPLEMENTASI DAN ANALISA HASIL
Bab ini akan menjelaskan mengenai implementasi proses pengujian
sistem dan analisis dari hasil pengujian tersebut.
6. BAB VI : PENUTUP
Bab ini berisi tentang kesimpulan dari pembuatan sistem dan saran
untuk pengembang kedepan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
6
BAB II LANDASAN TEORI
Pada bab ini akan dipaparkan teori serta informasi-informasi yang telah
diperoleh penulis untuk menyokong pengerjaan tugas akhir dan juga akan
dijelaskan mengenai pengertian dan metode yang akan digunakan oleh penulis.
2.1. Sistem Rekomendasi
Sistem rekomendasi adalah sistem yang dirancang dengan tujuan untuk
membantu pengguna untuk mendapatkan hal yang mereka mungkin sukai,
dengan cara memberikan rekomendasi kepada pengguna ketika pengguna
dihadapkan dengan jumlah informasi yang besar. Rekomendasi yang
diberikan diharapkan dapat membantu pengguna dalam proses
pengambilan keputusan, seperti barang apa yang akan dibeli, buku apa
yang akan dibaca, atau musik apa yang akan didengar, film apa yang akan
ditonton, dan lainnya (Ricci dan Saphira, 2011).
Cara pencarian item yang akan direkomendasikan kepada penguna dapat
dilakukan berdasarkan kemiripan, baik berupa kemiripan suatu item
dengan item lainnya berdasarkan konten atau kemiripan selera suatu
pengguna dengan pengguna lain berdasarkan rating yang diberikan pada
item.
Pada pertengahan 1990 banyak riset tentang sistem rekomendasi untuk
menemukan pendekatan-pendekatan baru dalam mengatasi masalah yang
muncul karena membanjirnya informasi di Internet (Adomavicius dan
Tuzhilin, 2005). Pendekatan sistem rekomendasi yang paling umum
digunakan pada sistem rekomendasi adalah pendekatan Content-based
Filtering dan Collaborative Filtering (Ricci dan Saphira, 2011). Kedua
pendekatan tersebut memiliki kelebihan dan kekurangan masing-masing
dalam merekomendasikan item kepada pengguna, seperti pada pendekatan
Content-based yang merekomendasikan item hanya berdasarkan riwayat
pengguna, sehingga hasil rekomendasian cenderung monoton, sedangkan
Collaborative Filtering memiliki masalah ketika terdapat suatu item baru.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
7
Namun keduanya memiliki keunggulan pada kasus-kasus tertentu yang
bersangkutan pada masalah efisiensi waktu, keakuratan prediksi rating, dll.
2.2. Collaborative Filtering
Metode ini membuat rekomendasi kepada pengguna aktif berdasarkan item
yang disukai oleh pengguna lain yang memiliki selera serupa dengannya.
Kemiripan selera antara pengguna aktif dengan pengguna lainnya dapat
dilihat dari tingkah laku pengguna, seperti riwayat preferensi rating yang
telah diberikan kepada beberapa item. Pemberian rekomendasi dilakukan
dengan harapan bahwa item yang direkomendasikan sesuai dengan
kesukaan pengguna aktif. Berikut adalah ilustrasi dari Collaborative
Filtering pada gambar 2.1.
Gambar 2.1 Konsep Collaborative Filtering (Hakim, 2010).
Dari Gambar 2.1 terlihat konsep dari Collaborative Filtering dalam
merekomendasikan suatu item kepada pengguna. Untuk melihat item film
yang kemungkinan disukai oleh pengguna A, maka sistem harus mencari
pengguna lain yang memiliki selera yang sama dengan pengguna A. Dilihat
dari riwayat rating-nya, pengguna B adalah pengguna yang memiliki selera
yang sama dengan pengguna A. Oleh karena itu, film yang disukai oleh
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
8
pengguna B yang belum ditonton oleh pengguna A, akan
direkomendasikan kepada pengguna A. Film tersebut adalah film “Captain
America”, maka “Captain America” akan direkomendasikan kepada
pengguna A, dengan harapan film tersebut sesuai dengan kesukaan
pengguna A.
Rating yang telah diberikan oleh pengguna kepada item-item akan
disimpan dalam matriks preferensi rating. Contoh dari matriks preferensi
rating tersebut ada pada gambar 2.2.
Gambar 2.2 Matriks preferensi rating dari pengguna kepada item
(McDonald, 2015)
Walaupun dalam beberapa riset Collaborative Filtering terbukti dapat
menutupi beberapa kekurangan pendekatan Content-based, namun
pendekatan ini memiliki beberapa kekurangan, antara lain (Adomavicius
dan Tuzhilin, 2005) (Li dan Kim, 2003) (Vozalis dan Margaritis, 2003):
1. Cold-start problem
Pendekatan Collaborative Filtering melakukan prediksi berdasarkan
rating yang diberikan pengguna pada item, akan menjadi masalah
ketika suatu item baru masuk ke dalam sistem dan belum di-rating
sama sekali oleh pengguna. Akibatnya item tersebut tidak akan pernah
direkomendasikan kepada pengguna.
2. Sparsity
Untuk ukuran data yang besar, banyak item yang baru sedikit di-rating
oleh pengguna, akibatnya item tersebut memiliki nilai prediksi yang
relatif tidak akurat dan menghasilkan rekomendasi yang buruk.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
9
Terdapat dua jenis pendekatan yang digunakan dalam Collaborative
filtering yaitu user-based CF dan item-based CF.
2.3.1. User-based Collaborative Filtering
User-based CF bekerja berdasarkan asumsi bahwa setiap pengguna
merupakan bagian dari kelompok yang memiliki kesamaan dengan
pengguna lainnya (Pantreath, 2015). Untuk mencari sesuatu yang akan
digemari oleh pengguna A, maka harus mencari pengguna lain yang
memiliki kegemaran yang sama dengan penggua A. Ilustrasi metode
user-based CF dalam memberikan rekomendasi dapat dilihat pada
gambar 2.3 berikut.
Gambar 2.3 Konsep user-based filltering (Marafi, 2014).
2.3.2. Item-based Collaborative Filtering
Item-based CF berasumsi bahwa jika mayoritas pengguna memberi
penilaian beberapa item secara serupa, pengguna aktif yang ditargetkan
juga akan memberi penilaian terhadap item-item tersebut secara serupa
pula (Pantreath, 2015). Metode ini bekerja berdasarkan asumsi bahwa
kedua item yang di-rating dengan pola yang sama oleh beberapa
pengguna, maka kedua item ini memiliki kemiripan yang besar tanpa
memikirkan kemiripan tersebut berdasarkan konten yang dimilikinya.
Ilustrasi metode item-based CF dalam memberikan rekomendasi dapat
dilihat pada gambar 2.4 berikut.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
10
Gambar 2.4 Konsep item-based filltering (Marafi, 2014).
2.3.3. Alur Penerapan Metode Collaborative Filtering sampai Prediksi
Rating
Pada penerapannya, metode Collaborative Filtering digunakan untuk
memberikan hasil prediksi rating baik dengan pendekatan user-based
CF ataupun dengan item-based CF. Berikut adalah langkah metode
Collaborative Filtering pada gambar 2.5 :
Gambar 2.5 Alur penerapan Collaborative Filtering (Richi and
Saphira, 2011)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
11
Langkah pertama dilakukan dengan perhitungan similaritas antar
pengguna / item menggunakan metode perhitungan Pearson
Correlation. Lalu selanjutnya adalah penentuan jumlah neighbor yang
ditentukan oleh penulis dan menjadi penelitian kali ini (Dewanto &
Wibowo, 2015). Perhitungan prediksi rating adalah proses akhir dari
metode Collaborative Filtering.
2.3. Pearson Correlation
Salah satu cara untuk menghitung kemiripan diantara para pengguna itu
sendiri ataupun antar item yang telah di-rating oleh pengguna adalah
dengan menggunakan metode perhitungan similaritas Pearson
Correlation.
Metode perhitungan Pearson Correlation menghitung nilai kemiripan
(similaritas) berdasarkan korelasi antara kedua himpunan bilangan objek.
Korelasi adalah sebuah teknik pengukuran yang menentukan seberapa
dekat / mirip relasi antar dua himpunan bilangan yang berbeda. Korelasi
tersebut dapat dihitung dengan syarat himpunan bilangan antar kedua objek
harus memiliki urutan yang tetap dan berpasangan satu dengan lainnya.
Hasil pengukuran dapat berupa relasi positif ataupun relasi negatif. Relasi
positif menunjukkan bahwa kedua himpunan memiliki kecenderungan
kenaikan atau penambahan nilai yang sejajar. Sedangkan relasi negatif
menunjukkan kedua himpunan memiliki kecenderungan penurunan atau
pengurangan nilai yang sejajar (Arvid dkk, 2016). Berikut rumus (2.1)
untuk mengetahui nilai kemiripan antar pengguna.
……………..(2.1)
Dimana :
o adalah nilai kemiripan (similarity) antara pengguna u dan
pengguna v dengan perhitungan Pearson Correlation
o dan adalah rating pengguna u dan v pada item i
o dan adalah rata-rata rating pengguna u dan v
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
12
Sementara untuk mengetahui nilai kemiripan item yang telah di-rating oleh
pengguna, rumus Pearson Correlation-nya seperti dalam rumus berikut
(2.2)
……………..(2.2)
Dimana :
o PC(i,j) adalah nilai kemiripan (similarity) antara item i dan item j
dengan perhitungan Pearson Correlation
o dan adalah rating pengguna u pada item i dan item j
o dan adalah rata-rata rating pada item i dan j
Nilai kemiripan memiliki rentang antara 1 sampai dengan -1. Jika nilai
kemiripan bernilai 0 maka kedua objek tidak memiliki relasi sama sekali.
Jika nilai di atas 0 dapat diartikan kedua objek memiliki penambahan nilai
yang sejajar atau ada kecenderungan mirip. Beda halnya ketika nilai di
bawah 0, hal ini terjadi akibat adanya objek yang mengalami penambahan
nilai namun objek lainnya mengalami penurunan nilai, dalam arti keduanya
saling bertolak belakang dan disimpulkan bahwa kedua objek benar-benar
lebih ke arah tidak mirip sama sekali. Nilai similaritas dari 0 – 1
merepresentasikan bahwa similaritas tersebut memiliki kemiripan paling
kuat berdasarkan korelasinya dan mampu memberikan prediksi yang lebih
terpercaya (Ricci dan Saphira, 2011).
2.4. Perhitungan Prediksi
Perhitungan prediksi digunakan untuk melihat kemungkinan nilai rating
yang akan diberikan pengguna terhadap item tertentu. Perhitungan prediksi
ini dilaksanakan sebagai langkah akhir dari pendekatan Collaborative
Filtering dalam memberikan hasil prediksi rating. Setelah nilai similaritas
antar pengguna ataupun item sudah didapatkan, langkah selanjutnya ialah
menentukan banyaknya neighbor dalam penentuan nilai prediksi. Salah
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
13
satu metode perhitungan prediksi rating ialah metode weighted sum baik
untuk prediksi pada metode user-based CF maupun item-based CF (Ricci
dan Saphira, 2011).
Rumus weighted sum untuk menghitung prediksi pada metode user-based
CF adalah seperti rumus (2.3) berikut :
𝑃(𝑢,𝑖) = ∑ 𝑅𝑣,𝑖 × 𝑠𝑖𝑚(𝑢,𝑣)𝑛
𝑖=1
∑ | 𝑠𝑖𝑚(𝑢,𝑣) |𝑛𝑖=1
…………….. (2.3)
Dimana :
o 𝑃(𝑢,𝑖) adalah prediksi rating pada item i untuk user u
o n adalah jumlah neighbor (tetangga)
o 𝑅𝑣,𝑖 adalah rating yang diberikan user v kepada item i
o 𝑠𝑖𝑚(𝑢, 𝑣) adalah nilai similarity antara user u dengan user v
Sementara rumus weighted sum untuk prediksi metode item-based CF
adalah seperti rumus (2.4) berikut :
𝑃(𝑢,𝑖) = ∑ 𝑅𝑢,𝑗 × 𝑠𝑖𝑚(𝑖,𝑗)𝑛
𝑖=1
∑ | 𝑠𝑖𝑚(𝑖,𝑗) |𝑛𝑖=1
……………..(2.4)
Dimana :
o 𝑃(𝑢,𝑖) adalah prediksi rating pada item i untuk user u
o n adalah jumlah neighbor (tetangga)
o 𝑅𝑢,𝑗 adalah rating yang diberikan user u kepada item j
o 𝑠𝑖𝑚(𝑖, 𝑗) adalah nilai similarity antara item i dengan item j
2.5. Mean Absolute Error (MAE)
MAE adalah formula untuk menghitung tingkat akurasi berdasarkan besar
error hasil prediksi rating dari sistem terhadap rating sebenarnya yang user
berikan terhadap suatu item (Herlocker, 2001) (Vozalis dan Margaritis,
2003).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
14
MAE diperoleh dengan menghitung error absolut dari N pasang rating asli
dan prediksi, kemudian menghitung rata-rata, seperti pada rumus (2.5).
……………….(2.5)
Dimana :
o MAE adalah nilai besarnya error dari hasil prediksi rating.
o adalah rating yang diprediksi.
o adalah rating yang sebenarnya.
o N adalah banyak pasang rating asli dan prediksi.
Hasil MAE yang menghasilkan angka mendekati 0, menunjukkan bahwa
prediksi dari sebuah perhitungan metode memiliki keakuratan lebih baik
karena nilai kesalahannya hamper 0 atau tidak ada.
2.6. MovieLens
Movielens adalah situs rekomendasi film personal yang disusun
berdasarkan rating yang diberikan pengguna terhadap sebuah film.
MovieLens dijalankan oleh GroupLens, sebuah laboratorium penelitian di
University of Minnesota (https://movielens.org/). Dengan menggunakan
MovieLens, pengguna turut membantu GroupLens mengembangkan alat
dan eksperimental baru untuk eksplorasi data dan rekomendasi. MovieLens
tidak komersial, dan bebas dari laba. Movielens menerbitkan data set-nya
secara cuma-cuma untuk pengembangan dan penelitian bildang sistem
rekomendasi. Penelitian terpublikasi yang terdeksi menggunakan data set
dari Movielens diindex dan dijadikan referensi bagi grup riset grouplens
dan masyarakat yang tertarik pada pengembangan dan penelitian sistem
rekomendasi (https://movielens.org/).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
15
BAB III METODOLOGI PENELITIAN
Berikut penjelasan urutan langkah dalam penelitian yang dilakukan penulis
serta cara mengambil dan menganalisis data yang digunakan dalam penelitian,
sehingga dapat memberikan gambaran bagaimana menerapkan metode user-based
CF dan item-based CF yang kemudian akan dibandingkan hasil prediksinya :
3.1. Alur Penelitian
Alur penelitian yang digunakan dalam penelitian ini terdiri dari 7 tahap
yang digambarkan pada gambar 3.1
Gambar 3.1 Diagram Alur Penelitian
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
16
3.2. Penjelasan Tahap Penelitian
Berikut adalah penjelasan untuk setiap tahap yang ada pada gambar 3.1
tentang diagram alur penelitian :
3.2.1. Penelitian Pendahulan
Pada tahap ini, penulis melakukan observasi langsung atas
beberapa kasus yang mungkin dijadikan objek penelitian, lalu
mencari dan mempertimbangkan permasalahan pada suatu
bidang ilmu yang bisa dijadikan penelitian. Pada tahap ini
penulis melakukan langkah-langkah berikut :
3.2.1.1. Identifikasi Masalah
Ketika telah menentukan bidang ilmu sistem
rekomendasi sebagai bidang ilmu yang akan diteliti
dan diimplementasikan, penulis melakukan
observasi untuk mencari permasalahan pada bidang
ilmu terkait.
3.2.1.2. Penetapan Tujuan dan Manfaat Penelitian
Pada tahapan ini, penulis menentukan tujuan apa
yang ingin dicapai pada penelitian, serta manfaat
yang dapat dirasakan bagi penulis sendiri maupun
pihak dari bidang ilmu terkait.
3.2.2. Studi Pustaka
Mencari sumber-sumber referensi dengan permasalahan yang
diambil melalui buku-buku atau sumber terkait yang valid
seperti jurnal dan thesis. Selain itu data pendukung juga didapat
dari internet.
3.2.3. Pengambilan Data
Data set diambil dari Movielens.org sebuah lembaga riset yang
memfokuskan kajian tentang mesin rekomendasi
(https://movielens.org/). Data set yang dipilih adalah Movielens
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
17
yaitu riwayat transaksi rental film online. Data ini terdiri dari 943
user, 1682 item (film), 100.000 rating, serta info konten item
berupa genre. Nilai rating yang terdapat pada data set adalah 1,
2, 3, 4, dan 5. Dari 100.000 rating. Untuk mempermudah proses
komputasi, Tiap user memiliki minimal 20 rating item yang
dapat digunakan sebagai data history untuk menghitung prediksi
dan menghasilkan rekomendasi. Sebagian besar pola user
memberi rating tersebar dari 1 hingga 5 sehingga
menggambarkan preferensi user terhadap item.
Data set yang diambil adalah berupa matrix user-item yang
terbentuk dari aktivitas user yang telah memberikan rating
terhadap film. Aktivitas itulah yang disimpan dan dikelola oleh
MovieLens seperti pada table 3.1.
Table 3.1 Matrix user-item pada data set.
Penggunaan metode Collaborative Filtering adalah untuk
memprediksi kolom rating yang masih kosong (kolom merah)
pada table 3.1.
Matrix user-item akan direpresentasikan kedalam data record
pada table di basis data yang dibangun. Table 3.2 menunjukkan
data record yang disimpan dari informasi yang terdapat di matrix
user-item
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
18
Table 3.2 Record yang terdapat di basis data yang memuat
informasi tentang data set matrix user-item.
User ID Movie ID Rating
1 (John) 1 (the matrix) 5
1 (John) 2 (titanic) 1
2 (Lucy) 1 (the matrix) 1
2 (Lucy) 2 (titanic) 5
3 (Eric) 1 (the matrix) 2
3 (Eric) 3 (die hard) 3
Data set berupa 100.000 rating film akan dibagi menjadi data
training dan data testing untuk melakukan penelitian.
3.2.4. Perancangan dan Implementasi Sistem
Dengan data-data yang ada, penulis mencoba untuk membangun
sistem menggunakan arsitektur client-server berbasis web
dengan bahasa jsp. Pada tahap ini juga penulis melakukan
perancangan terhadap basis data film dari data set
MovieLens.org, serta melakukan perancangan sistem baik
didalamnya memuat tentang perancangan proses untuk
menerapkan metode user-based CF dan item-based CF dalam
sistem.
3.2.5. Pengujian Sistem
Pengujian sistem adalah dengan cara menguji dan mencocokkan
hasil perhitungan metode-metode yang diterapkan pada sistem
dengan perhitungan manual yang dilakukan penulis pada
beberapa sampel perhitungan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
19
3.2.6. Analisa Hasil
Ditahap ini penulis menganalisa hasil yang sudah didapatkan
berdasarkan tahap pengujian dalam bentuk grafik garis. Analisa
hasil implementasi sistem berupa perbandingan hasil prediksi
pada kedua metode yang digunakan pada sistem yang dibangun,
sehingga dapat diketahui metode mana yang lebih baik dalam
memberikan prediksi rating yang akurat.
Analisa hasil dilakukan terhadap sistem dengan skenario yaitu
pengaruh jumlah neighbor terhadap prediksi rating. Tujuan
pengujian ini adalah untuk mengetahui pengaruh jumlah
maksimal neighbor di masing-masing metode pada prediksi
rating. Jumlah maksimal neighbor yang diuji adalah 10, 30, 50,
70, 100 dan semua neighbor dengan kondisi :
1. Untuk item-based CF ; Neighbor (film) tersebut telah di-
rating seperti film yang akan dihitung prediksi rating-nya.
2. Untuk user-based CF ; Neighbor (user) tersebut telah me-
rating film yang akan diprediksi nilai rating-nya.
3. Nilai similaritas antara item / user yang akan diprediksi
rating dengan neighbor-nya adalah diatas 0.
Keseluruhan hasil prediksi dihitung nilai MAE nya terhadap
nilai rating aktual (sebenarnya).
3.2.7. Kesimpulan dan Saran
Menarik kesimpulan dari keefektifan metode yang digunakan
pada pembangunan sistem sehingga dapat mewujudkan tujuan
dan manfaat yang ingin dicapai pada penelitian serta
menyampaikan saran di dokumen penelitian seputar topik atau
kesalahan yang bisa diangkat untuk dijadikan penelitian (jika
ada), sehingga peneliti lain bisa melanjutkan penelitian yang
sudah didapat.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
20
3.3. Spesifkasi Software dan Hardware
Spesifikasi software dan hardware yang di gunakan dalam
pengimplementasian sistem ini adalah :
3.3.1. Software
1. Sistem operasi yang di gunakan adalah Microsoft Windows
10 64 – bit.
2. Bahasa pemograman yang di gunakan adalah jsp (java)
dengan aplikasi Netbeans.
3. Web server yang digunakan adalah Apache Tomcat pada
aplikasi XAMPP.
4. Database yang akan di gunakan adalah MySQL.
3.3.2. Hardware
Terdapat 2 perangkat keras yang digunakan penulis dalam
melakukan penelitian, berikut spesifikasinya :
1. Processor yang di gunakan yaitu :
a. Intel® 𝐶𝑜𝑟𝑒𝑇𝑀 i7–6700HQ CPU @ 3,40GHz (8 CPUs),
~3,4 GHz.
b. Intel® 𝐶𝑜𝑟𝑒𝑇𝑀 i7–6700HQ CPU @ 2,60GHz (8 CPUs),
~2,6 GHz.
2. Memori (RAM) pada kedua perangkat keras yang di
gunakan yaitu 8.00 GB.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
21
BAB IV PERANCANGAN PERANGKAT LUNAK
Berikut penjelasan mengenai perancangan awal dan perancangan perangkat
lunak berorientasi objek pada sistem rekomendasi yang akan dibuat.
4.1. Perancangan Umum
Bentuk sistem rekomendasi yang dibangun menggunakan arsitektur
client-server berbasis web. Sistem website yang dibangun akan
digunakan oleh administrator yang adalah aktor. Sistem akan
melakukan perhitungan similaritas antar user maupun antar item, serta
menghitung nilai prediksi rating yang akan diberikan user terhadap fim
tertentu pada data testing yang terletak pada sisi server. Aplikasi antar
muka (GUI) memberikan action kepada administrator untuk
mengetahui nilai prediksi rating.
4.1.1. Diagram Use Case
Terdapat 8 aksi yang dapat dilakukan aktor dalam
menggunakan sitem yang dibangun. Berikut adalah diagram
use case yang menggambarkan aksi-aksi tersebut pada
gambar 4.1.
Gambar 4.1 Diagram Use Case
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
22
4.1.2. Narasi Use Case
Narasi use case berisikan tentang serangkaian langkah-
langkah yang dilakukan oleh aktor (administrator) terhadap
sistem dan proses yang berjalan pada sistem berupa reaksi
sistem terhadap aktor pada setiap use case-nya. Narasi use
case terlampir pada lampiran 1.
4.2. Perancangan Input
Data set bersumber dari Movielens.org yang merupakan sebuah data set
terbuka untuk penelitian di bidang sistem rekomendasi. Data set tersebut
tersimpan dalam file dengan format .sql yang diambil dari
https://github.com/ankane/movielens.sql yang merujuk kepada website
Movielens.org. Berikut adalah rincian data yang terdapat pada data set
tersebut :
1. Data pengguna (user) sebanyak 943 dalam table user.
2. Data film (movie) sebanyak 1.682 dalam table movies.
3. Data rating oleh pengguna kepada film sebanyak 100.000, jangka
rating yang diberikan adalah 1 – 5 dalam table ratings.
4. Data genre sebanyak 18 dalam table genres.
5. Data genre dari film-film sebanyak 2.891 dalam table
genres_movies.
6. Data profesi dari pengguna sebanyak 21 dalam table occupations.
Gambar 4.2 Contoh data set pada table ratings
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
23
Pada gambar 4.2 memperlihatkan contoh data set yang penulis gunakan
untuk penelitain. Gambar 4.2 adalah record yang tersimpan dalam table
ratings.
Data set tersebut nantinya akan disimpan dalam basis data pada aplikasi
MySQL dimana perancangan basis data-nya akan disesuaikan dengan
kebutuhan perangkat lunak yang akan dibangun. Berikut perancangan
basis data pada penelitian ini :
4.2.1. Model Konseptual (ER Diagram)
Berikut adalah rancangan konsep basis data tergambarkan
dalam ER Diagram pada gambar 4.3.
Gambar 4.3 Rancangan ER Diagram pada sistem
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
24
4.2.2. Model Logikal (Relasi)
Berikut adalah model logikal dari rancangan konsep ER
Diagram pada gambar 4.4 di bawah ini.
Gambar 4.4 Model logikal dari rancangan basis data pada
sistem
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
25
4.2.3. Model Fisikal
Berikut adalah model fisikal dari masing-masing table.
4.2.3.1. Table Movie
No. Atribut Type Length Constraint
1. Movie_ID int 11 NOT NULL,
PRIMARY KEY
2. Title varchar 255
3. Release_Date date
4.2.3.2. Table Genre
No. Atribut Type Length Constraint
1. Genre_ID int 11 NOT NULL,
PRIMARY KEY
2. Name varchar 255
4.2.3.3. Table Movie_Similarity
No. Atribut Type Length Constraint
1. Movie_Similarity_ID int 11
NOT NULL,
PRIMARY
KEY, AUTO
INCREMENT
2. Movie_ID_1 int 11
NOT NULL,
FOREIGN
KEY
3. Movie_ID_1 int 11
NOT NULL,
FOREIGN
KEY
4. Movie_Similarity_Value double NOT NULL
4.2.3.4. Table Genre_Movie
No. Atribut Type Length Constraint
1. ID int 11 NOT NULL,
PRIMARY KEY
2. Movie_ID int 11 FOREIGN KEY
3. Genre_ID Int 11 FOREIGN KEY
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
26
4.2.3.5. Table Occupation
No. Atribut Type Length Constraint
1. Occupation_ID int 11 NOT NULL,
PRIMARY KEY
2. Name varchar 255
4.2.3.6. Table User
No. Atribut Type Length Constraint
1. User_ID int 11 NOT NULL,
PRIMARY KEY
2. Age int 11
3. Gender char 1
4. Occupation_ID int 11 FOREIGN KEY
5. Zip_Code varchar 255
4.2.3.7. Table User_Similarity
No. Atribut Type Length Constraint
1. User_Similari
ty_ID int 11
NOT NULL,
PRIMARY
KEY, AUTO
INCREMENT
2. User_ID_1 int 11
NOT NULL,
FOREIGN
KEY
3. User_ID_1 int 11
NOT NULL,
FOREIGN
KEY
4. User_Similari
ty_Value double NOT NULL
4.2.3.8. Table Rating
No. Atribut Type Length Constraint
1. ID int 11 NOT NULL,
PRIMARY KEY
2. User_ID int 11 FOREIGN KEY
3. Movie_ID int 11 FOREIGN KEY
4. Rating int 11
5. Rated_At timestamp NOT NULL
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
27
4.2.3.9. Table Rating_Testing
No. Atribut Type Length Constraint
1. ID_Testing int 11 NOT NULL,
PRIMARY KEY
2. User_ID int 11 FOREIGN KEY
3. Movie_ID int 11 FOREIGN KEY
4. Rating int 11
5. Rated_At timestamp NOT NULL
4.2.3.10. Table Prediction
No. Atribut Type Length Constraint
1. Prediction_ID int 11
NOT NULL,
PRIMARY
KEY, AUTO
INCREMENT
2. ID_Testing int 11 FOREIGN KEY
3. Top_N int 11
4. Prediction_Value double
5. Method_Type varchar 1 NOT NULL
4.3. Perancangan Proses
Pada bagian ini akan dijelaskan tentang diagram flowchart umum dari
perangkat lunak beserta setiap proses yang berjalan Proses untuk
mendapatkan hasil prediksi dengan kedua metode yaitu user-based CF
dan item-based CF memiliki beberapa tahap, yakni sebagai berikut :
1. Menyimpan data set yang berupa file berextensi .sql ke dalam basis
data.
2. Proses memilih data testing pada data rating.
3. Proses menghitung similarity antar pengguna untuk metode user-
based CF; antar film untuk metode item-based CF.
4. Proses memprediksi rating pada data testing.
5. Proses menghitung nilai kesalahan dari hasil prediksi dengan MAE.
Proses umum dari perangkat lunak digambarkan dengan diagram
flowchart pada gambar 4.5
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
28
Gambar 4.5 Flowchart diagram tentang perancangan proses
Implementasi blok proses yang terdapat pada diagram flowchart
membutuhkan 5 kelas pada file projek perangkat lunak. Blok proses
tersebut diterapkan pada kelas-kelas program berikut yang tertera pada
table 4.1 di bawah ini :
Table 4.1 Rancangan implementasi blok proses pada kelas .java
No. Nama Blok Proses Kelas.java
1. Memilih data testing Rating.java
2. Menghitung similarity UserBased.java
ItemBased.java
3. Memprediksi rating Prediction.java
4. Menghitung MAE MAE.java
Berikut adalah atribut-atribut beserta method-method yang terdapat
pada setiap kelasnya untuk menjalankan blok proses.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
29
Rating.java
- ratingId : string
- movieId: string
- movieTitle : string
- userId : string
- rating : Double
- rateAt : string
- conn : Connection
+ Rating() <<konstruktor>>
+ Rating(Connection) <<konstruktor>>
+ getKoneksi() : static Rating
+ getRatingId() : String
+ setRatingId(String) : void
+ getMovieId() : String
+ setMovieId(String) : void
+ getMovieTitle() : String
+ setMovieTitle(String) : void
+ getUserId() : String
+ setUserId(String) : void
+ getRating() : Double
+ setRating(Double) : void
+ getRateAt() : String
+ setRateAt(String) : void
+ getTotalUserRated() : int
+ getUserById(int) : List<Rating>
+ inputDataRatingTesting(Rating) : void
+ pilihDataTesting() : void
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
30
UserBased.java
- userSimilarityId : string
- userID_1: string
- userID_2 : string
- similarityValue : Double
- conn : Connection
+ UserBased() <<konstruktor>>
+ UserBased(Connection) <<konstruktor>>
+ getKoneksi() : static UserBased
+ getUserSimilarityId() : String
+ setUserSimilarityId(String) : void
+ getUserID_1() : String
+ setUserID_1(String) : void
+ getUserID_2() : String
+ setUserID_2(String) : void
+ getSimilarityValue() : Double
+ setSimilarityValue(Double) : void
+ getUserRating(String) : List<Rating>
+ getAvg(String) : Double
+ getBagianAtas(List<Rating>, List<Rating>, Double, Double) : Double
+ getBagianBawah(List<Rating>, List<Rating>, Double, Double) :
Double
+ similaritasPearsonCorrelation(Sting, String) : Double
+ inputUserSimilarity(UserBase) : void
ItemBased.java
- movieSimilarityId : string
- movieID_1: string
- movieID_2 : string
- similarityValue : Double
- conn : Connection
+ ItemBased() <<konstruktor>>
+ ItemBased(Connection) <<konstruktor>>
+ getKoneksi() : static ItemBased
+ getMovieSimilarityId() : String
+ setMovieSimilarityId(String) : void
+ getMovieID_1() : String
+ setMovieID_1(String) : void
+ getMovieID_2() : String
+ setMovieID_2(String) : void
+ getSimilarityValue() : Double
+ setSimilarityValue(Double) : void
+ getItemRating(String) : List<Rating>
+ getAvg(String) : Double
+ getBagianAtas(List<Rating>, List<Rating>, Double, Double) : Double
+ getBagianBawah(List<Rating>, List<Rating>, Double, Double) :
Double
+ similaritasPearsonCorrelation(Sting, String) : Double
+ inputMovieSimilarity(ItemBased) : void
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
31
Prediction.java
- predictionID : string
- ratingId: string
- topN : int
- predictionValue : Double
- methodType : String
- objek1 : String
- objek2 : String
- rating : double
- similarityValue : double
- conn : Connection + Prediction() <<konstruktor>>
+ Prediction(Connection) <<konstruktor>>
+ getKoneksi() : static Prediction
+ getPredictionID() : String
+ setPredictionID (String) : void
+ getRatingId() : String
+ setRatingId(String) : void
+ getTopN() : int
+ setTopN(String) : void
+ getPredictionValue() : Double
+ setPredictionValue(Double) : void
+ getMethodType() : String
+ setMethodType(String) : void
+ getObjek1() : String
+ setObjek1(String) : void
+ getObjek2() : String
+ setObjek2(String) : void
+ getSimilarityValue() : Double
+ setSimilarityValue(Double) : void
+ getRatingTesting() : List<Rating>
+ getRatingAndUserSimilaritySort(String, String) : List<Prediction>
+ hasilPrediksiUserBased(Rating, int) : double
+ getRatingAndMovieSimilaritySort (String, String) : List<Prediction>
+ hasilPrediksiItemBased(Rating, int) : double
+ inputPrediction(Prediction) : void
MAE.java
- MAE : Double
- listPrediksi : List<Prediction>
- conn : Connection + MAE() <<konstruktor>>
+ MAE(Connection) <<konstruktor>>
+ getKoneksi() : static MAE
+ getMAE() : double
+ setMAE(double) : void
+ getListPrediksi() : List<Prediction>
+ setListPrediksi(List<Prediction>) : void
+ showPrediction(String, Stirng) : MAE
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
32
4.3.1. Algoritma Setiap Blok Proses
Masing-masing blok proses yang terdapat pada gambar 4.5
memiliki algoritma tersendiri, berikut adalah perancangan
algoritma pada setiap blok proses :
1. Memilih Data Testing :
Setiap pengguna, akan diambil 5 data rating-nya untuk
dijadikan data testing. Total pengguna yang tersimpan
di basis data adalah 943 orang. Jadi data testing akan
berjumlah 943 x 5 = 4715 data testing.
Blok proses “Memilih Data Testing” ini diterapkan pada
kelas Rating.java. Terdapat 4 method yang dijalankan
untuk menerapkan blok proses ini. Berikut adalah
penjabaran algoritma dari 4 method tersebut :
➢ Method getTotalUserRated()
Digunakan untuk mengetahui total pengguna yang telah
melakukan pemberian rating.
1. Bangun koneksi ke basis data MySQL.
2. Deklarasi query untuk melakukan perintah
select total jumlah rating oleh masing-masing
pengguna dengan fungsi GROUP BY
pengguna pada table rating.
3. Eksekusi query.
4. Deklarasi variable integer bernama
totalUser.
5. Lakukan perulangan selama result dari
eksekusi query masih ada :
a. Hitung total baris pada result dengan
mendeklarasi totalUser++.
6. Tutup koneksi dari basis data.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
33
7. Kembalikan variable totalUser sebagai nilai
return method.
➢ Method getUserById(int)
Digunakan untuk menampung semua riwayat rating
yang pernah diberikan oleh pengguna.
1. Membaca parameter int pada method sebagai
user_id.
2. Bangun koneksi ke basis data MySQL.
3. Deklarasi query untuk melakukan perintah
select semua data riwayat rating yang pernah
diberikan oleh pengguna dengan user_id
sesuai parameter dari table rating.
4. Eksekusi query.
5. Deklarasi objek ArrayList rating dari kelas
model Rating dengan nama listRatingusers.
6. Lakukan perulangan selama result dari
eksekusi query masih ada :
a. Deklarasi objek dari kelas Rating.
b. Simpan semua data result query pada
objek tersebut.
c. Tambahkan objek dari kelas Rating
tersebut ke dalam objek ArrayList
rating.
7. Tutup koneksi dari basis data.
8. Kembalikan objek ArrayList listRatingusers
sebagai nilai return method.
➢ Method inputDataRatingTesting(Rating)
Digunakan untuk menginputkan data rating training ke
dalam table rating testing.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
34
1. Membaca parameter objek kelas Rating pada
method.
2. Bangun koneksi ke basis data MySQL.
3. Deklarasi query untuk input data ke table
rating_testing sesuai dengan isi variable yang
dibawa dari objek Rating.
4. Eksekusi query.
5. Deklarasi query untuk menghapus data rating
pada table rating yang telah dimasukkan ke
dalam table rating_testing.
6. Eksekusi query.
7. Tutup koneksi dari basis data.
➢ Method pilihDataTesting()
Digunakan untuk menjalankan proses pemilihan dan
penginputan data rating training ke rating testing secara
keseluruhan.
1. Panggil method getTotalUserRated() lalu
tampung nilai return ke dalam variable
integer totalUserRated.
2. Lakukan perulangan sebanyak
totalUserRated :
a. Panggil method getUserByID(int) lalu
tampung nilai return ke dalam objek
ArrayList dari kelas Rating.
b. Lakukan perulangan sebanyak 5 kali :
i. Panggil method
inputDataRatingTesting(Rating) dan
isikan parameter method tersebut
dengan objek Rating dari ArrayList
kelas Rating.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
35
2. Menghitung Similarity
Perhitungan similaritas memiliki langkah yang berbeda
pada masing-masing metodenya, terutama untuk istilah
neighbor. Pada metode user-based CF, istilah neighbor
merujuk kepada pengguna dengan pengguna lainnya.
Sedangkan pada metode item-based CF adalah film
dengan film lainnya. Blok proses ini diterapkan pada
kelas UserBased.java dan ItemBased.java. Terdapat 6
method yang dijalankan untuk menerapkan blok proses
pada masing-masing kelasnya. Berikut adalah
penjabaran algoritma dari 6 method dari kedua kelas
tersebut :
Method-method pada kelas UserBased.java :
➢ Method getUserRating(String)
Digunakan untuk menampung semua riwayat rating
yang pernah diberikan oleh pengguna tertentu.
1. Membaca parameter String pada method
sebagai user_id.
2. Bangun koneksi ke basis data MySQL.
3. Deklarasi query untuk melakukan perintah
select semua data riwayat rating yang pernah
diberikan oleh pengguna dengan user_id
sesuai parameter dari table rating.
4. Eksekusi query.
5. Deklarasi objek ArrayList rating dari kelas
model Rating dengan nama ratingUser.
6. Lakukan perulangan selama result dari
eksekusi query masih ada :
a. Deklarasi objek dari kelas Rating.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
36
b. Simpan semua data result query pada
objek tersebut.
c. Tambahkan objek dari kelas Rating
tersebut ke dalam objek ArrayList
rating.
7. Tutup koneksi dari basis data.
8. Kembalikan objek ArrayList ratingUser
sebagai nilai return method.
➢ Method getAvg(String)
Digunakan untuk mendapatkan nilai rata-rata dari
semua rating yang telah diberikan oleh pengguna.
1. Membaca parameter String pada method
sebagai user_id.
2. Bangun koneksi ke basis data MySQL.
3. Deklarasi query untuk melakukan perintah
select nilai rata-rata dari keseluruhan rating
berdasarkan pengguna user_id dari table
rating.
4. Eksekusi query.
5. Deklarasi variable double dengan nama avg.
6. Lakukan perulangan selama result dari
eksekusi query masih ada :
a. Tampung nilai rata-rata dalam
variable avg.
7. Tutup koneksi dari basis data.
8. Kembalikan variable avg sebagai nilai return
method.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
37
➢ Method getBagianAtas(List<Rating>,
List<Rating>, Double, Double)
Pada rumus 2.1 adalah rumus yang membagi pembilang
dengan penyebut dengan rumus yang tertera. Penulis
memisahkan perhitungan pembilang dan perhitungan
penyebut dalam dua method pada kelas UserBased.java.
Method ini digunakan untuk menghitung bagian
pembilang.
1. Membaca parameter 2 objek ArrayList dari
kelas Rating yang masing-masing
menampung data rating dari pengguna
tertentu terhadap film tertentu, dan juga
membaca 2 parameter Double yang masing-
masing merupakan nilai rata-rata dari
himpunan nilai rating oleh 2 pengguna pada
method.
2. Deklarasi variable bertipe double bernama
perkalianUser dan totalPerkalianUser.
3. Lakukan perulangan sebanyak jumlah index
ArrayList nilai rating pengguna 1 :
a. Lakukan perulangan sebanyak jumlah
index ArrayList nilai rating pengguna
2 :
i. Cek interseksi rating antara 2
pengguna. Jika kedua pengguna
me-rating film yang sama :
• Lakukan pengurangan antara
nilai rating dengan rata-rata
nilai rating untuk masing-
masing kedua pengguna.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
38
• Lakukan perkalian antara 2
hasil pengurangan tersebut.
Hasil perkalian disimpan
dalam variable
perkalianUser.
• totalPerkalianUser =
totalPerkalianUser +
perkalianUser;
4. Kembalikan variable totalPerkalianUser
sebagai nilai return method.
➢ Method getBagianBawah(List<Rating>,
List<Rating>, Double, Double)
Method ini digunakan untuk menghitung bagian
penyebut dari rumus 2.1.
1. Membaca parameter 2 objek ArrayList dari
kelas Rating yang masing-masing
menampung data rating dari pengguna
tertentu terhadap film tertentu, dan juga
membaca 2 parameter Double yang masing-
masing merupakan nilai rata-rata dari
himpunan nilai rating oleh 2 pengguna pada
method.
2. Deklarasi variable bertipe double bernama :
a. ratingMinAvg1
b. totalRatingMinAvg1
c. ratingMinAvg2
d. totalRatingMinAvg2
e. perkalianPangkat
f. akarPerkalianJumlahRatingMinA
vg
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
39
3. Lakukan perulangan sebanyak jumlah index
ArrayList nilai rating pengguna 1 :
a. Lakukan perulangan sebanyak jumlah
index ArrayList nilai rating pengguna
2 :
i. Cek interseksi rating antara 2
pengguna. Jika kedua pengguna
me-rating film yang sama :
• Lakukan pengurangan antara
nilai rating dengan rata-rata
nilai rating pengguna 1
kemudian dikuadratkan. Lalu
tampung hasil kuadrat tersebut
dalam variable
ratingMinAvg1.
• totalRatingMinAvg1 =
totalRatingMinAvg1 +
ratingMinAvg1;
• Lakukan pengurangan antara
nilai rating dengan rata-rata
nilai rating pengguna 2
kemudian dikuadratkan. Lalu
tampung hasil kuadrat tersebut
dalam variable
ratingMinAvg2.
• totalRatingMinAvg2 =
totalRatingMinAvg2 +
ratingMinAvg2;
4. Lakukan perkalian antara variable
totalRatingMinAvg1 dan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
40
totalRatingMinAvg2. Lalu tampung
hasilnya di variable perkalianPangkat.
5. Lakukan fungsi akar dari variable
perkalianPangkat. Lalu tampung di
akarPerkalianJumlahRatingMinAvg
6. Kembalikan
akarPerkalianJumlahRatingMinAvg
sebagai nilai return method.
➢ Method similaritasPearsonCorrelation(String,
String)
Digunakan untuk menghitung nilai similaritas antara 2
pengguna dengan menggunakan rumus 2.1.
1. Membaca parameter pada method, yaitu 2
String yang masing-masing merupakan
user_id dari 2 pengguna yang berbeda.
2. Deklarasi variable bertipe double bernama
hasilSimilaritas, avg1 dan avg2.
3. Cek apakah parameter String user_id 1 sama
dengan user_id 2.
a. Jika sama : isikan variable
hasilSimilaritas = 1.
b. Jika tidak sama :
i. Deklarasi objek ArrayList dari
kelas Rating bernama user1
untuk menampung himpunan
riwayat rating user_id 1
(pengguna 1). Panggil method
getUserRating(String) dan
tampung nilai return-nya
dalam objek user1.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
41
ii. Deklarasi objek ArrayList dari
kelas Rating bernama user2
untuk menampung himpunan
riwayat rating user_id 2
(pengguna 2). Panggil method
getUserRating(String) dan
tampung nilai return-nya
dalam objek user2.
iii. Panggil method
getAvg(String) untuk
mengetahui rata-rata nilai
rating dari kedua himpunan
rating pengguna. Lalu
tampung nilai return method
pada variable avg1 dan avg2.
iv. Panggil method
getBagianAtas() dan
getBagianBawah() lalu
tampung nilai return
keduanya pada masing-
masing variable double.
v. Isikan variable
hasilSimilaritas =
bagianAtas / bagianBawah.
vi. Cek apakah hasil variable
hasilSimilaritas adalah NaN.
Jika hasilnya adalah NaN
maka ubah hasilSimilaritas =
0.
4. Kembalikan hasilSimilaritas sebagai nilai
return method.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
42
➢ Method inputUserSimilarity(UserBased)
Digunakan untuk menginputkan nilai kemiripan
(similaritas) antara 2 pengguna ke dalam table
user_similarity.
1. Membaca parameter objek kelas UserBased
pada method.
2. Bangun koneksi ke basis data MySQL.
3. Deklarasi query untuk input data ke table
user_similarity sesuai dengan isi variable
yang dibawa dari objek UserBased.
4. Eksekusi query.
5. Tutup koneksi dari basis data.
Method-method pada kelas ItemBased.java :
➢ Method getItemRating(String)
Digunakan untuk menampung semua nilai rating yang
dimiliki oleh film tertentu.
1. Membaca parameter String pada method
sebagai movie_id.
2. Bangun koneksi ke basis data MySQL.
3. Deklarasi query untuk melakukan perintah
select semua data rating yang dimiliki oleh
film tertentu berdasarkan movie_id sesuai
parameter dari table rating.
4. Eksekusi query.
5. Deklarasi objek ArrayList rating dari kelas
model Rating dengan nama ratingItem.
6. Lakukan perulangan selama result dari
eksekusi query masih ada :
a. Deklarasi objek dari kelas Rating.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
43
b. Simpan semua data result query pada
objek tersebut.
c. Tambahkan objek dari kelas Rating
tersebut ke dalam objek ArrayList
rating.
7. Tutup koneksi dari basis data.
8. Kembalikan objek ArrayList ratingItem
sebagai nilai return method.
➢ Method getAvg(String)
Digunakan untuk mendapatkan nilai rata-rata dari
semua nilai rating yang dimiliki film.
1. Membaca parameter String pada method
sebagai movie_id.
2. Bangun koneksi ke basis data MySQL.
3. Deklarasi query untuk melakukan perintah
select nilai rata-rata dari keseluruhan rating
berdasarkan pengguna movie_id dari table
rating.
4. Eksekusi query.
5. Deklarasi variable double dengan nama avg.
6. Lakukan perulangan selama result dari
eksekusi query masih ada :
a. Tampung nilai rata-rata dalam
variable avg.
7. Tutup koneksi dari basis data.
8. Kembalikan variable avg sebagai nilai return
method.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
44
➢ Method getBagianAtas(List<Rating>,
List<Rating>, Double, Double)
Method ini digunakan untuk menghitung bagian
pembilang pada rumus perhitungan similaritas Pearson
Correlation.
1. Membaca parameter 2 objek ArrayList dari
kelas Rating yang masing-masing
menampung data rating yang dimiliki oleh
film tertentu dari semua pengguna yang telah
me-rating nya, dan juga membaca 2
parameter Double yang masing-masing
merupakan nilai rata-rata dari himpunan nilai
rating 2 film pada method.
2. Deklarasi variable bertipe double bernama
perkalianItem dan totalPerkalianItem.
3. Lakukan perulangan sebanyak jumlah index
ArrayList nilai rating film 1 :
a. Lakukan perulangan sebanyak jumlah
index ArrayList nilai rating film 2 :
i. Cek interseksi rating antara 2
film. Jika kedua pengguna film di-
rating oleh pengguna yang sama :
• Lakukan pengurangan antara
nilai rating dengan rata-rata
nilai rating untuk masing-
masing kedua film.
• Lakukan perkalian antara 2
hasil pengurangan tersebut.
Hasil perkalian disimpan
dalam variable
perkalianItem.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
45
• totalPerkalianItem=
totalPerkalianItem+
perkalianItem;
4. Kembalikan variable totalPerkalianItem
sebagai nilai return method.
➢ Method getBagianBawah(List<Rating>,
List<Rating>, Double, Double)
Method ini digunakan untuk menghitung bagian
penyebut dari rumus 2.1.
1. Membaca parameter 2 objek ArrayList dari
kelas Rating yang masing-masing
menampung data rating yang dimiliki oleh
film tertentu dari semua pengguna yang telah
me-rating nya, dan juga membaca 2
parameter Double yang masing-masing
merupakan nilai rata-rata dari himpunan nilai
rating 2 film pada method.
2. Deklarasi variable bertipe double bernama :
a. ratingMinAvg1
b. totalRatingMinAvg1
c. ratingMinAvg2
d. totalRatingMinAvg2
e. perkalianPangkat
f. akarPerkalianJumlahRatingMinA
vg
7. Lakukan perulangan sebanyak jumlah index
ArrayList nilai rating film 1 :
a. Lakukan perulangan sebanyak jumlah
index ArrayList nilai rating film 2 :
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
46
i. Cek interseksi rating antara 2
film. Jika kedua film di-rating
oleh pengguna yang sama :
• Lakukan pengurangan antara
nilai rating dengan rata-rata
nilai rating film 1 kemudian
dikuadratkan. Lalu tampung
hasil kuadrat tersebut dalam
variable ratingMinAvg1.
• totalRatingMinAvg1 =
totalRatingMinAvg1 +
ratingMinAvg1;
• Lakukan pengurangan antara
nilai rating dengan rata-rata
nilai rating film 2 kemudian
dikuadratkan. Lalu tampung
hasil kuadrat tersebut dalam
variable ratingMinAvg2.
• totalRatingMinAvg2 =
totalRatingMinAvg2 +
ratingMinAvg2;
8. Lakukan perkalian antara variable
totalRatingMinAvg1 dan
totalRatingMinAvg2. Lalu tampung
hasilnya di variable perkalianPangkat.
9. Lakukan fungsi akar dari variable
perkalianPangkat. Lalu tampung di
akarPerkalianJumlahRatingMinAvg
10. Kembalikan
akarPerkalianJumlahRatingMinAvg
sebagai nilai return method.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
47
➢ Method similaritasPearsonCorrelation(String,
String)
Digunakan untuk menghitung nilai similaritas antara 2
film dengan menggunakan rumus 2.1.
1. Membaca parameter pada method, yaitu 2
String yang masing-masing merupakan
movie_id dari 2 film yang berbeda.
2. Deklarasi variable bertipe double bernama
hasilSimilaritas, avg1 dan avg2.
3. Cek apakah parameter String movie_id 1
sama dengan movie_id 2.
a. Jika sama : isikan variable
hasilSimilaritas = 1.
b. Jika tidak sama :
i. Deklarasi objek ArrayList dari
kelas Rating bernama movie1
untuk menampung himpunan
rating yang dimiliki oleh
movie_id 1 (film 1). Panggil
method getItemRating(String)
dan tampung nilai return-nya
dalam objek movie1.
ii. Deklarasi objek ArrayList dari
kelas Rating bernama movie2
untuk menampung himpunan
riwayat rating yang dimiliki
oleh movie_id 2 (film 2).
Panggil method
getItemRating(String) dan
tampung nilai return-nya
dalam objek movie2.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
48
iii. Panggil method
getAvg(String) untuk
mengetahui rata-rata nilai
rating dari kedua himpunan
rating film. Lalu tampung
nilai return method pada
variable avg1 dan avg2.
iv. Panggil method
getBagianAtas() dan
getBagianBawah() lalu
tampung nilai return
keduanya pada masing-
masing variable double.
v. Isikan variable
hasilSimilaritas =
bagianAtas / bagianBawah.
vi. Cek apakah hasil variable
hasilSimilaritas adalah NaN.
Jika hasilnya adalah NaN
maka ubah hasilSimilaritas =
0.
5. Kembalikan hasilSimilaritas sebagai nilai
return method.
➢ Method inputMovieSimilarity(ItemBased)
Digunakan untuk menginputkan nilai kemiripan
(similaritas) antara 2 film ke dalam table
movie_similarity.
1. Membaca parameter objek kelas ItemBased
pada method.
2. Bangun koneksi ke basis data MySQL.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
49
3. Deklarasi query untuk input data ke table
movie_similarity sesuai dengan isi variable
yang dibawa dari objek ItemBased.
4. Eksekusi query.
5. Tutup koneksi dari basis data.
3. Memprediksi Rating
Sama halnya pada perhitungan similaritas, perhitungan
prediksi juga memiliki langkah yang berbeda pada
masing-masing metodenya. Metode user-based CF
menggunakan rating dari pengguna lain dan nilai
similaritas antar pengguna dalam memprediksi sebuah
rating dari data testing. Sedangkan item-based CF
menggunakan rating pada film lain dan nilai similaritas
antar film dalam memprediksi sebuah rating. Blok
proses ini diterapkan pada kelas Prediction.java.
Terdapat 6 method yang dijalankan untuk menerapkan
blok proses ini. Berikut adalah penjabaran algoritma
dari 6 method tersebut :
➢ Method getRatingTesting()
Digunakan untuk mengambil semua data rating testing
yang akan diprediksi.
1. Bangun koneksi ke basis data MySQL.
2. Deklarasi query untuk melakukan perintah
select all data dari table rating_testing
3. Eksekusi query.
4. Deklarasi objek ArrayList dari kelas Rating.
5. Lakukan perulangan selama data result query
masih ada :
a. Deklarasi objek kelas Rating
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
50
b. Tampung data result query ke dalam
objek tersebut.
c. Tambahkan objek Rating tersebut ke
dalam objek ArrayList Rating.
6. Tutup koneksi dari basis data.
7. Kembalikan objek ArrayList dari kelas
Rating sebagai nilai return method.
Method inputPrediction(Prediction)
Digunakan untuk menginputkan nilai prediksi terhadap
rating real pada data testing ke dalam table prediction.
1. Membaca parameter objek kelas Prediction
pada method.
2. Bangun koneksi ke basis data MySQL.
3. Deklarasi query untuk input data ke table
prediction sesuai dengan isi variable yang
dibawa dari objek Prediction.
4. Eksekusi query.
5. Tutup koneksi dari basis data.
➢ Method getRatingAndUserSimilaritySort(String,
String)
Digunakan untuk menampung semua data rating dari
pengguna lain yang ber-interseksi dengan pengguna 1
dan nilai similaritas antara pengguna 1 dengan
pengguna 2.
1. Baca 2 parameter String sebagai user_id dan
movie_id.
2. Bangun koneksi ke basis data MySQL.
3. Deklarasi query untuk melakukan perintah
select nilai similaritas pengguna lain yang
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
51
bernilai di atas 0, terhadap pengguna dengan
user_id tertentu dan telah me-rating film
dengan movie_id tertentu yang akan
diprediksi nilai rating-nya.
4. Eksekusi query.
5. Deklarasi objek ArrayList dari kelas
Prediction bernama otherUserRatingSort.
6. Lakukan perulangan selama data result query
masih ada :
a. Deklarasi objek Prediction.
b. Tampung semua data result ke dalam
objek tersebut.
c. Deklarasi query untuk mengambil
nilai rating yang diberikan oleh
pengguna lain kepada film dengan
movie_id tertentu.
d. Eksekusi query.
e. Tampung result query ke dalam objek
Prediction yang sudah dideklarasi
diawal.
f. Tambahkan objek Prediction tersebut
ke dalam objek ArrayList dari kelas
Prediction.
7. Tutup koneksi.
8. Kembalikan objek ArrayList Prediction
sebagai nilai return dari method.
➢ Method hasilPrediksiUserBased(Rating, int)
Digunakan untuk menghitung nilai prediksi rating
dengan menggunakan metode user-based CF dengan
jumlah maksimal neighbor yang ditentukan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
52
1. Baca parameter objek Rating yang berisi data
testing sebuah record dan integer yang adalah
nilai top-N (batas jumlah maksimal neighbor)
pada method.
2. Deklarasi objek ArrayList dari kelas
Prediction dengan nama
otherUserRatingSort lalu isikan objek
dengan nilai return method
getRatingAndUserSimilaritySort(String,
String).
3. Terapkan rumus 2.3 dalam perhitungan
prediksi. Deklarasikan variable double
berikut ini :
a. RatingXUserSimilarityValue
b. totalRatingXUserSimilarityValue
c. totalUserSimilarityValue
d. prediction
4. Lakukan perulangan sebanyak parameter
integer top-N :
a. Lakukan perkalian antara nilai rating
dengan nilai similaritas pengguna
pada data testing dengan pengguna
lainnya. Simpan hasil perkalian ke
dalam variable
RatingXUserSimilarityValue.
b. totalRatingXUserSimilarityValue
= totalRatingXUserSimilarityValue +
RatingXUserSimilarityValue;
c. totalUserSimilarityValue =
totalUserSimilarityValue +
similarityValue;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
53
5. Isikan variable prediction =
totalRatingXUserSimilarityValue /
totalUserSimilarityValue;
6. Deklarasi objek kelas Prediction dengan
nama p. Simpan data ID_testing, jumlah
maksimal neighbor (top-N), nilai hasil
prediksi, dan jenis metode ke dalam objek.
7. Panggil method inputPrediction(Prediction)
lalu isikan parameternya dengan objek p.
8. Kembalikan prediction sebagai nilai return
dari method.
➢ Method getRatingAndMovieSimilaritySort
(String, String)
Digunakan untuk menampung semua data rating yang
dimiliki oleh film lain yang ber-interseksi dengan film
1 dan nilai similaritas antara film 1 dengan film 2.
1. Baca 2 parameter String sebagai user_id dan
movie_id.
2. Bangun koneksi ke basis data MySQL.
3. Deklarasi query untuk melakukan perintah
select nilai similaritas film lain yang bernilai
di atas 0, terhadap film dengan movie_id
tertentu dan film tersebut telah di-rating oleh
pengguna dengan user_id tertentu yang akan
diprediksi nilai rating-nya.
4. Eksekusi query.
5. Deklarasi objek ArrayList dari kelas
Prediction bernama otherMovieRatingSort.
6. Lakukan perulangan selama data result query
masih ada :
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
54
a. Deklarasi objek Prediction.
b. Tampung semua data result ke dalam
objek tersebut.
c. Deklarasi query untuk mengambil
nilai rating yang dimiliki film lain
oleh pengguna dengan user_id
tertentu.
d. Eksekusi query.
e. Tampung result query ke dalam objek
Prediction yang sudah dideklarasi
diawal.
f. Tambahkan objek Prediction tersebut
ke dalam objek ArrayList dari kelas
Prediction.
7. Tutup koneksi.
8. Kembalikan objek ArrayList Prediction
sebagai nilai return dari method.
➢ Method hasilPrediksiItemBased(Rating, int)
Digunakan untuk menghitung nilai prediksi rating
dengan menggunakan metode item-based CF dengan
jumlah maksimal neighbor yang ditentukan.
1. Baca parameter objek Rating yang berisi data
testing sebuah record dan integer yang adalah
nilai top-N (batas jumlah maksimal neighbor)
pada method.
2. Deklarasi objek ArrayList dari kelas
Prediction dengan nama
otherMovieRatingSort lalu isikan objek
dengan nilai return method
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
55
getRatingAndMovieSimilaritySort(String,
String).
3. Terapkan rumus 2.5 dalam perhitungan
prediksi. Deklarasikan variable double
berikut ini :
a. RatingXMovieSimilarityValue
b. totalRatingXMoveSimilarityValue
c. totalMovieSimilarityValue
d. prediction
4. Lakukan perulangan sebanyak parameter
integer top-N :
a. Lakukan perkalian antara nilai rating
dengan nilai similaritas pengguna
pada data testing dengan pengguna
lainnya. Simpan hasil perkalian ke
dalam variable
RatingXMovieSimilarityValue.
b. totalRatingXMoveSimilarityValue
= totalRatingXMoveSimilarityValue
+ RatingXMovieSimilarityValue;
c. totalMovieSimilarityValue =
totalMovieSimilarityValue +
similarityValue;
5. Isikan variable prediction =
totalRatingXMovieSimilarityValue /
totalMovieSimilarityValue;
6. Deklarasi objek kelas Prediction dengan
nama p. Simpan data ID_testing, jumlah
maksimal neighbor (top-N), nilai hasil
prediksi, dan jenis metode ke dalam objek.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
56
7. Panggil method inputPrediction(Prediction)
lalu isikan parameternya dengan objek p.
8. Kembalikan prediction sebagai nilai return
dari method.
4. Menghitung MAE
Blok proses ini diterapkan pada kelas MAE.java.
Terdapat 1 method yang dijalankan untuk menerapkan
blok proses. Berikut adalah penjabaran algoritmanya :
➢ Method showPrediction(String, String)
Digunakan untuk menampung data rating prediksi dari
data testing serta mendapatkan nilai kesalahan atas
perhitungan metode (MAE).
1. Baca parameter jumlah maksimal neighbor
dan tipe metode.
2. Bangun koneksi ke basis data MySQL.
3. Deklarasi query untuk mengambil semua data
yang memiliki jumlah maksimal neighbor
(top-N) dan jenis metode (user/item-based)
sesuai dengan parameter.
4. Eksekusi query.
5. Deklarasi objek ArrayList dari kelas
Prediction bernama predictionList.
6. Deklarasi variable double bernama
bantuMAE.
7. Lakukan perulangan selama result query
masih ada :
a. Deklarasi objek kelas Prediction.
b. Simpan data hasil eksekusi query ke
dalam objek tersebut.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
57
c. Tambahkan objek tersebut ke dalam
ArrayList predictionList.
d. Tampung total nilai absolut dari
pengurangan rating asli dikurangi
prediksi. Dengan rumus :
bantuMAE = bantuMAE +
Math.abs(p.getRating() -
p.getPredictionValue());
8. Deklarasi variable double bernama MAE.
Isikan MAE = bantuMAE /
predictionList.size();
9. Deklarasi objek dari kelas MAE bernama
predictionListWithMAE.
10. Simpan objek ArrayList bernama
predictionList dan variable MAE dalam
predictionListWithMAE.
11. Kembalikan predictionListWithMAE
sebagai nilai return dari method.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
58
4.3.2. Contoh Perhitungan Metode
Penulis menjabarkan tentang penerapan perhitungan
metode pada beberapa sampel data yang digunakan untuk
contoh perhitungan. Contoh perhitungan dibagi dalam 2 sub
bagian, yaitu bagian perhitungan metode user-based CF
dan metode item-based CF.
4.3.2.1. Metode User-based CF
Perhitungan pertama yang dilakukan adalah
perhitungan untuk mengetahui nilai similaritas antar
pengguna berdasarkan cara pengguna tersebut me-
rating film.
Pada table 3.1, penulis akan menghitung nilai
similaritas antara kedua pengguna yaitu John dan
Lucy.
Penulis tidak melibatkan 1 data rating yaitu rating
Diane terhadap Forrest Gump dalam perhitungan
similaritas. Data tersebut dijadikan sebagai data testing
untuk kebutuhan perhitungan prediksi.
1. Langkah pertama yang dilakukan adalah
mengambil semua data film yang telah John dan
Lucy rating. Data rating keduanya dapat dilihat
pada table 4.2 berikut.
Table 4.2 Sampel data rating untuk contoh perhitungan
metode user-based CF
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
59
2. Lalu dengan perhitungan similaritas Pearson
Correlation sesuai dengan rumus 2.1, penulis
mencari nilai similaritas diantara keduanya (John
& Lucy) :
a. Hitung rata-rata rating :
Rata-rata rating John = 5+1+2+2
4 = 2.5
Rata-rata rating Lucy = 1+5+2+5+5
5 =
3.6
b. Ambil semua interseksi rating antara John
dan Lucy. Interseksi antara keduanya dapat
dilihat pada table 4.3 :
Table 4.3 Interseksi rating antara John dan
Lucy
Diketahui hanya ada 4 film yang sudah di-
rating oleh keduanya (interseksi).
c. Lalu mulai lakukan perhitungan similaritas
menggunakan Pearson Correlation :
PC(John, Lucy) =
(5 − 2.5)(1 − 3.6) + (1 − 2.5)(5 − 3.6) + (2 − 2.5)(5 − 3.6) + (2 − 2.5)(5 − 3.6)
√(5 − 2.5)2 + (1 − 2.5)2 + (2 − 2.5)2 + (2 − 2.5)2 √(1 − 3.6)2 + (5 − 3.6)2 + (5 − 3.6)2 + (5 − 3.6)2
PC(John, Lucy) = −10
10.66583
PC(John, Lucy) = -0.93757
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
60
Didapatkan nilai similaritas antara John
dan Lucy sebesar -0.93757. Dengan
langkah perhitungan yang sama, hal
tersebut dilakukan untuk menghitung nilai
similaritas antara 1 pengguna dengan
pengguna lainnya, sehingga menghasilkan
sebuah matix user similarity seperti pada
table 4.4 berikut.
Table 4.4 Matrix user similarity dari hasil perhitungan similaritas antar pengguna.
Perhitungan Prediksi pada Metode User-based CF
Tahap ini adalah tahap akhir dari metode, yang mana
hasil prediksi rating akan dibandingkan dengan rating
asli dari sebuah data.
Skenario perhitungan prediksi adalah sebagai berikut :
1. Pada table 3.1 penulis mengasumsikan bahwa
rating Diane terhadap Forrest Gump belum
pernah dilakukan, sehingga data tersebut
dijadikan sebuah data testing.
Table 4.5 Sampel data testing pada metode user-
based CF
?
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
61
Diketahui pada table 4.5 bahwa rating yang telah
diberikan Diane dianggap belum pernah
dilakukan. Pada kenyataannya rating yang telah
diberikan Diane terhadap film Forrest Gump
adalah 3.
1. Lalu menentukan jumlah maksimal neighbor
untuk menghitung hasil prediksi. Pada contoh ini
penulis menetapkan 2 neighbor untuk dilibatkan
dalam perhitungan prediksi.
2. Kemudian menetapkan beberapa kondisi untuk
melakukan perhitungan prediksi, diantaranya
adalah :
a. Neighbor lain telah me-rating film yang akan
diprediksi nilai rating nya. Dalam hal ini
semua neighbor telah memenuhi kondisi
pertama karena semua neighbor telah me-
rating film Forrest Gump.
b. Similaritas antara Diane dengan neighbor-
nya adalah bernilai di atas 0. Pada table 4.4
dapat dilihat bahwa hanya ada 1 neighbor
yang memiliki similaitas di atas 0 yaitu John.
Secara otomatis hanya ada 1 neighbor yang
boleh dilibatkan dalam perhitungan prediksi
yaitu John, dengan similaritas terhadap Diane
sebesar 0.51450.
3. Lalu mulai lakukan perhitungan prediksi dengan
menggunakan Weighted Sum sesuai dengan
rumus 2.3 :
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
62
Prediksi Diane terhadap Forrest Gump ➔
2∗0.51450
0.51450 = 2
Jadi hasil perhitungan prediksi pada rating Diane
terhadap film Forrest Gump dengan
menggunakan metode user-based CF adalah 2,
sementara rating aslinya adalah 3. Selisih inilah
yang nantinya akan dihitung besar nilai
kesalahannya dengan menggunakan MAE.
4.3.2.2. Metode Item-based CF
Sama halnya pada metode user-based CF, perhitungan
pertama yang juga dilakukan adalah menghitung nilai
similaritas, namun pada metode ini yang dihitung
similaritasnya adalah antar film berdasarkan cara film
tersebut di-rating oleh sekumpulan pengguna.
Pada table 3.1, penulis akan menghitung nilai
similaritas antara kedua film yaitu The Matrix dan
Forrest Gump.
Penulis tidak melibatkan 1 data rating yaitu rating
Diane terhadap Forrest Gump dalam perhitungan
similaritas. Data tersebut dijadikan sebagai data testing
untuk kebutuhan perhitungan prediksi.
1. Langkah pertama yang dilakukan adalah
mengambil semua data rating yang telah diberikan
oleh semua pengguna pada film The Matrix dan
Forrest Gump. Data rating yang dimiliki
keduanya dapat dilihat pada table 4.6 berikut :
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
63
Table 4.6 Sampel data rating untuk contoh
perhitungan metode item-based CF
2. Lalu dengan perhitungan similaritas Pearson
Correlation sesuai dengan rumus 2.2, penulis
mencari nilai similaritas diantara kedua film (The
Matrix & Forrest Gump) :
a. Hitung rata-rata rating yang telah dimiliki
film :
Rata-rata rating untuk film The Matrix =
5+1+2+4
4 = 3
Rata-rata rating untuk film Forrest Gump =
2+5+5
3 = 4
b. Ambil semua interseksi rating antara The
Matrix dan Forrest Gump :
Table 4.7 Interseksi rating antara The
Matrix dan Forrest Gump
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
64
Diketahui hanya ada 3 pengguna (John,
Lucy dan Eric) yang sudah memberikan
rating kepada kedua film (interseksi).
c. Lalu mulai lakukan perhitungan similaritas
menggunakan Pearson Correlation
PC(The Matrix, Forrest Gump) =
(5 − 3)(2 − 4) + (1 − 3)(5 − 4) + (2 − 3)(5 − 4)
√(5 − 3)2 + (1 − 3)2 + (2 − 3)2 √(2 − 4)2 + (5 − 4)2 + (5 − 4)2
PC(The Matrix, Forrest Gump) =
−7
7.348469228
PC(The Matrix, Forrest Gump) = -
0.952579344
Didapatkan nilai similaritas antara The
Matrix dan Forrest Gump sebesar -
0.952579344. Dengan langkah perhitungan
yang sama, hal tersebut dilakukan untuk
menghitung nilai similaritas antara 1 film
dengan film lainnya, sehingga
menghasilkan sebuah matix movie
similarity seperti pada table 4.8 berikut.
Table 4.8 Matrix movie similarity dari hasil perhitungan similaritas antar film.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
65
Perhitungan Prediksi pada Metode Item-based CF
Tahap ini adalah tahap akhir dari metode, yang mana
hasil prediksi rating akan dibandingkan dengan rating
asli dari sebuah data.
Skenario perhitungan prediksi adalah sebagai berikut :
1. Pada table 3.1 penulis mengasumsikan bahwa
rating Diane terhadap Forrest Gump belum
pernah dilakukan, sehingga data tersebut
dijadikan sebuah data testing
Table 4.9 sampel data testing pada metode item-
based CF
Diketahui pada table 4.9 bahwa rating yang telah
diberikan Diane dianggap belum pernah
dilakukan. Pada kenyataannya rating yang telah
diberikan Diane terhadap film Forrest Gump
adalah 3.
2. Lalu menentukan jumlah maksimal neighbor
untuk menghitung hasil prediksi. Pada contoh ini
penulis menetapkan 2 neighbor untuk dilibatkan
dalam perhitungan prediksi.
3. Kemudian menetapkan beberapa kondisi untuk
melakukan perhitungan prediksi, diantaranya
adalah :
?
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
66
a. Neighbor lain telah di-rating oleh Diane.
Dalam hal ini hanya terdapat 3 neighbor yang
telah memenuhi kondisi pertama. Namun
neighbor yaitu film Wall-E belum pernah di-
rating oleh Diane.
b. Similaritas antara Forrest Gump dengan
neighbor-nya adalah bernilai di atas 0. Pada
table 4.8 dapat dilihat bahwa hanya ada 2
neighbor yang memiliki similaitas di atas 0
yaitu Titanic dan Wall-E. Namun Wall-E
tidak memenuhi kondisi pertama, secara
otomatis hanya ada 1 neighbor yang boleh
dilibatkan dalam perhitungan prediksi yaitu
Titanic, dengan similaritas terhadap Forrest
Gump sebesar 0.948683298.
4. Lalu mulai lakukan perhitungan prediksi dengan
menggunakan Weighted Sum sesuai dengan
rumus 2.4 :
Prediksi Diane terhadap Forrest Gump ➔
3∗0.948683298
0.948683298 = 3
Jadi hasil perhitungan prediksi pada rating Diane
terhadap film Forrest Gump dengan
menggunakan metode item-based CF adalah 3,
dan rating aslinya adalah 3. Selisih inilah yang
nantinya akan dihitung besar nilai kesalahannya
dengan menggunakan MAE.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
67
4.3.2.3. Perhitungan MAE
Pada contoh perhitungan masing-masing metode pada
sub bagian 4.3.2.1 tentang metode user-based CF dan
bagian 4.3.2.2 tentang metode item-based, diketahui
bahwa kedua metode berhasil memberikan prediksi
rating terhadap sebuah rating seorang pengguna
terhadap film tertentu yang diasumsikan sebagai data
testing.
Berikut adalah hasil yang diketahui dari sub bagian
tersebut :
1. Data testing adalah rating dari seorang pengguna
bernama Diane yang telah me-rating film Forrest
Gump sebesar 3.
2. Metode user-based CF memberikan prediksi rating
sebesar 2.
3. Metode item-based CF memprediksi sebesar 3.
Untuk membuktikan dan mengetahui metode manakah
yang lebih akurat, dilakukan uji MAE dimana hasil uji
akan menunjukkan besar kesalahan dari prediksi
terhadap rating asli. Apabila hasil uji MAE semakin
mendekati angka 0, maka prediksi dari metode
tersebutlah yang memiliki keakuratan lebih baik
karena hampir tidak ada nilai kesalahannya.
Perhitungan MAE menggunakan rumus sesuai dengan
rumus 2.5 :
MAE untuk prediksi metode user-based CF = | 3−2 |
1
= 1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
68
MAE untuk prediksi metode item-based CF = | 3−3 |
1
= 0
Dari hasil perhitungan MAE pada data testing,
diketahui bahwa metode user-based CF memiliki nilai
kesalahan sebesar 1, dimana nilai kesalahan tersebut
lebih besar dibanding perhitungan MAE pada metode
item-based CF yaitu 0.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
69
4.3.3. Diagram Kelas Disain
Pada gambar 4.6, dijabarkan diagram kelas disain yang
dirancang untuk menggambarkan hubungan antar kelas
pada perangkat lunak / sistem aplikasi website.
Gambar 4.6 Diagram kelas disain
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
70
4.3.3.1. Kelas View
Terdapat 7 kelas view yang akan menjadi antarmuka
sistem kepada aktor. Berikut adalah detail dari kelas
view yang terdapat pada diagram kelas disain :
Beranda.jsp
-
+
User_base.jsp
- userID : text
- cari : button
- user1 : text
- user2 : text
- cari : button
- hitungSimilaritas : button
+ get UserBasedControl
Item_base.jsp
- movieID : text
- cari : button
- movie1 : text
- movie2 : text
- cari : button
- hitungSimilaritas : button
+ get ItemBasedControl
Hasil_prediksi_user_base.jsp
- topN : selectbox
- method_type : hidden
- cari : button
+ get PredictionControl
Hasil_prediksi_item_base.jsp
- topN : selectbox
- method_type : hidden
- cari : button
+ get PredictionControl
Pencarian.jsp
- title : text
- tampil : button
- genreID : selectbox
- tampil : button
+ get MovieControl
Daftar_rating.jsp
- userID : number
- jenisRating : radiobutton
- tampil : button
- movieID : number
- jenisRating : radiobutton
- tampil : button
+ get RatingControl
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
71
4.3.3.2. Kelas Control
Berikut adalah detail dari kelas control yang terdapat
pada diagram kelas disain, terdapat 5 kelas control.
UserBasedControl.java
-
+ processRequest(HttpServletRequest, HttpServletResponse) : protected
void
+ doGet(HttpServletRequest, HttpServletResponse) : protected void
+ doPost(HttpServletRequest, HttpServletResponse) : protected void
ItemBasedControl.java
-
+ processRequest(HttpServletRequest, HttpServletResponse) : protected
void
+ doGet(HttpServletRequest, HttpServletResponse) : protected void
+ doPost(HttpServletRequest, HttpServletResponse) : protected void
PredictionControl.java
-
+ processRequest(HttpServletRequest, HttpServletResponse) : protected
void
+ doGet(HttpServletRequest, HttpServletResponse) : protected void
+ doPost(HttpServletRequest, HttpServletResponse) : protected void
MovieControl.java
-
+ processRequest(HttpServletRequest, HttpServletResponse) : protected
void
+ doGet(HttpServletRequest, HttpServletResponse) : protected void
+ doPost(HttpServletRequest, HttpServletResponse) : protected void
RatingControl.java
-
+ processRequest(HttpServletRequest, HttpServletResponse) : protected
void
+ doGet(HttpServletRequest, HttpServletResponse) : protected void
+ doPost(HttpServletRequest, HttpServletResponse) : protected void
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
72
4.3.3.3. Kelas Model
Berikut adalah detail dari kelas model yang terdapat
pada diagram kelas disain, terdapat 9 kelas model.
Koneksi.java
- url : string
- user : string
- pass : string
- conn : Connection
+ Koneksi() <<konstruktor>>
+ getKoneksiDB() : static Connection
+ close() : void
Genre.java
- genreId : string
- genreName : string
- conn : Connection
+ Genre() <<konstruktor>>
+ Genre(Connection) <<konstruktor>>
+ getKoneksi() : static Genre
+ getGenreId() : String
+ setGenreId(String) : void
+ getGenreName() : String
+ setGenreName(String) : void
+ getAllGenre() : List<Genre>
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
73
User.java
- userId : string
- age : string
- gender : string
- occupation : string
- zipcode : string
- conn : Connection
+ User() <<konstruktor>>
+ User(Connection) <<konstruktor>>
+ getKoneksi() : static User
+ getUserId() : String
+ setUserId(String) : void
+ getAge() : String
+ setAge(String) : void
+ getGender() : String
+ setGender(String) : void
+ getOccupation() : String
+ setOccupation(String) : void
+ getZipCode() : String
+ setZipCode(String) : void
Movie.java
- movieId : string
- movieTitle : string
- movieGenre : List<String>
- releaseDate : string
- conn : Connection
+ Movie() <<konstruktor>>
+ Movie(Connection) <<konstruktor>>
+ getKoneksi() : static Movie
+ getMovieId() : String
+ setMovieId(String) : void
+ getMovieTitle() : String
+ setMovieTitle(String) : void
+ getMovieGenre() : List<String>
+ setMovieGenre(List<String>) : void
+ getReleaseDate() : String
+ setReleaseDate(String) : void
+ getAllMovie () : List<Movie>
+ getMovieByGenre(String) : List<Movie>
+ getMovieByTitle (String) : List<Movie>
+ getGenre (String) : List<String>
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
74
ItemBased.java
- movieSimilarityId : string
- movieID_1: string
- movieID_2 : string
- similarityValue : Double
- conn : Connection + ItemBased() <<konstruktor>>
+ ItemBased(Connection) <<konstruktor>>
+ getKoneksi() : static ItemBased
+ getMovieSimilarityId() : String
+ setMovieSimilarityId(String) : void
+ getMovieID_1() : String
+ setMovieID_1(String) : void
+ getMovieID_2() : String
+ setMovieID_2(String) : void
+ getSimilarityValue() : Double
+ setSimilarityValue(Double) : void
+ getItemRating(String) : List<Rating>
+ getAvg(String) : Double
+ getBagianAtas(List<Rating>, List<Rating>, Double, Double) : Double
+ getBagianBawah(List<Rating>, List<Rating>, Double, Double) : Double
+ similaritasPearsonCorrelation(Sting, String) : Double
+ inputMovieSimilarity(ItemBased) : void
+ getMovieSimilarityOneMovie(String) : List<ItemBased>
+ getMovieSimilarityTwoMovies(String, String) : List<ItemBased>
UserBased.java
- userSimilarityId : string
- userID_1: string
- userID_2 : string
- similarityValue : Double
- conn : Connection
+ UserBased() <<konstruktor>>
+ UserBased(Connection) <<konstruktor>>
+ getKoneksi() : static UserBased
+ getUserSimilarityId() : String
+ setUserSimilarityId(String) : void
+ getUserID_1() : String
+ setUserID_1(String) : void
+ getUserID_2() : String
+ setUserID_2(String) : void
+ getSimilarityValue() : Double
+ setSimilarityValue(Double) : void
+ getUserRating(String) : List<Rating>
+ getAvg(String) : Double
+ getBagianAtas(List<Rating>, List<Rating>, Double, Double) : Double
+ getBagianBawah(List<Rating>, List<Rating>, Double, Double) :
Double
+ similaritasPearsonCorrelation(Sting, String) : Double
+ inputUserSimilarity(UserBase) : void
+ getMovieSimilarityOneUser(String) : List<ItemBased>
+ getMovieSimilarityTwoUsers(String, String) : List<ItemBased>
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
75
Prediction.java
- predictionID : string
- ratingId: string
- topN : int
- predictionValue : Double
- methodType : String
- objek1 : String
- objek2 : String
- rating : double
- similarityValue : double
- conn : Connection + Prediction() <<konstruktor>>
+ Prediction(Connection) <<konstruktor>>
+ getKoneksi() : static Prediction
+ getPredictionID() : String
+ setPredictionID (String) : void
+ getRatingId() : String
+ setRatingId(String) : void
+ getTopN() : int
+ setTopN(String) : void
+ getPredictionValue() : Double
+ setPredictionValue(Double) : void
+ getMethodType() : String
+ setMethodType(String) : void
+ getObjek1() : String
+ setObjek1(String) : void
+ getObjek2() : String
+ setObjek2(String) : void
+ getSimilarityValue() : Double
+ setSimilarityValue(Double) : void
+ getRatingTesting() : List<Rating>
+ getRatingAndUserSimilaritySort(String, String) : List<Prediction>
+ hasilPrediksiUserBased(Rating, int) : double
+ getRatingAndMovieSimilaritySort (String, String) : List<Prediction>
+ hasilPrediksiItemBased(Rating, int) : double
+ inputPrediction(Prediction) : void
MAE.java
- MAE : Double
- listPrediksi : List<Prediction>
- conn : Connection + MAE() <<konstruktor>>
+ MAE(Connection) <<konstruktor>>
+ getKoneksi() : static MAE
+ getMAE() : double
+ setMAE(double) : void
+ getListPrediksi() : List<Prediction>
+ setListPrediksi(List<Prediction>) : void
+ showPrediction(String, Stirng) : MAE
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
76
Rating.java
- ratingId : string
- movieId: string
- movieTitle : string
- userId : string
- rating : Double
- rateAt : string
- conn : Connection
+ Rating() <<konstruktor>>
+ Rating(Connection) <<konstruktor>>
+ getKoneksi() : static Rating
+ getRatingId() : String
+ setRatingId(String) : void
+ getMovieId() : String
+ setMovieId(String) : void
+ getMovieTitle() : String
+ setMovieTitle(String) : void
+ getUserId() : String
+ setUserId(String) : void
+ getRating() : Double
+ setRating(Double) : void
+ getRateAt() : String
+ setRateAt(String) : void
+ getAllRating() : List<Rating>
+ getRatingByUser(String) : List<Rating>
+ getRatingByMovie(String) : List<Rating>
+ getTotalUserRated() : int
+ getUserById(int) : List<Rating>
+ inputDataRatingTesting(Rating) : void
+ pilihDataTesting() : void
4.4. Perancangan Output
Pada perangkat lunak atau sistem berbasis website yang akan dibangun
dengan menggunakan bahasa jsp dan basis data MySQL, output yang
dihasilkan berupa :
1. Tampilan nilai similaritas antar pengguna maupun antar item
(movie).
2. Tampilan hasil prediksi dari data testing.
3. Nilai kesalahan / error dari hasil prediksi terhadap rating asli dengan
MAE
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
77
Berikut adalah desain antarmuka / grapichal user interface (GUI) yang
terdapat pada sistem, dengan tujuan membantu administrator untuk
menggunakan sistem yang dibangun, baik berupa penggunaan fitur
maupun melihat data serta hasil perhitungan algoritma pada metode-
metode yang digunakan.
4.4.1. Halaman Utama
Halaman ini adalah halaman yang pertama kali akan
ditampilkan kepada aktor, sehingga aktor dapat melakukan
aksi yang terdapat pada sistem website dari halaman ini.
Rancangan halaman utama ini dapat dilihat pada gambar 4.7
berikut.
Gambar 4.7 Halaman utama yang terdapat pada sistem
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
78
4.4.2. Halaman User-based
Halaman ini adalah halaman yang digunakan untuk
menghitung dan menampilkan nilai similaritas antar
pengguna. Rancangan halaman ini dapat dilihat pada gambar
4.8 berikut.
Gambar 4.8 Halaman user-based
Gambar 4.8 menampilkan tampilan website dimana belum
terdapat informasi pada table similaritas antar pengguna
karena administrator belum klik tombol “Hitung Similaritas”.
Sementara pada gambar 4.9 adalah halaman yang sudah
terdapat informasi similaritas antar pengguna.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
79
Gambar 4.9 Halaman user-based
4.4.3. Halaman Item-based
Gambar 4.10 Halaman item-based
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
80
Gambar 4.11 Halaman item-based
Gambar 4.10 menampilkan tampilan website dimana belum
terdapat informasi pada table similaritas antar film karena
administrator belum klik tombol “Hitung Similaritas”.
Sementara pada gambar 4.11 adalah halaman yang sudah
terdapat informasi similaritas antar film.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
81
4.4.4. Halaman Hasil Prediksi
Halaman ini adalah halaman yang menampilkan total
kesalahan (nilai MAE) serta detail rating sebenarnya dan
hasil prediksi rating oleh perhitungan metode. Rancangan
halaman ini dapat dilihat pada gambar 4.12.
Gambar 4.12 Halaman hasil prediksi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
82
4.4.5. Halaman Pencarian
Berikut adalah rancangan halaman pencarian film seperti
pada gambar 4.13. halaman ini menampilkan hasil pencarian
berdasarkan kategori genre move atau berdasarkan kata
kunci judul film.
Gambar 4.13 Halaman pencarian
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
83
4.4.6. Halaman Daftar Rating
Gambar 4.14 Perbedaan informasi pada halaman daftar rating
Pada gambar 4.14 dapat dilihat perbedaan antara daftar
rating yang telah diberikan oleh pengguna (gambar 4.14
bagian atas) dan daftar rating yang dimiliki oleh film
(gambar 4.14 bagian bawah).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
84
BAB V IMPLEMENTASI DAN ANALISA HASIL
Berikut dijabarkan tentang implementasi yang dilakukan penulis dalam
penelitiannya. Langkah-langkah mengenai penerapan dari perancangan awal.
5.1. Implementasi Input
Pada bagian ini penulis melakukan proses create table pada basisdata
dengan struktur table-table dalam DBMS sebagai berikut :
5.1.1. Table Movie
CREATE TABLE `movies` (
`movie_id` int(11) NOT NULL,
`title` varchar(255) DEFAULT NULL,
`release_date` date DEFAULT NULL
)
ALTER TABLE `movies` ADD PRIMARY KEY
(`movie_id`);
5.1.2. Table Genre
CREATE TABLE `genres` (
`genre_id` int(11) NOT NULL,
`name` varchar(255) DEFAULT NULL
)
ALTER TABLE `genres` ADD PRIMARY KEY
(`genre_id`);
5.1.3. Table Movie_Similarity
CREATE TABLE `movie_similarity` (
`movie_similarity_id` int(11) NOT NULL,
`movie_id_1` int(11) NOT NULL,
`movie_id_2` int(11) NOT NULL,
`movie_similarity_value` double NOT NULL
)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
85
ALTER TABLE `movie_similarity` ADD PRIMARY
KEY (`movie_similarity_id`), ADD KEY
`MS_to_M_1` (`movie_id_1`), ADD KEY
`MS_to_M_2` (`movie_id_2`);
ALTER TABLE `movie_similarity` MODIFY
`movie_similarity_id` int(11) NOT NULL
AUTO_INCREMENT;
ALTER TABLE `movie_similarity` ADD
CONSTRAINT `MS_to_M_1` FOREIGN KEY
(`movie_id_1`) REFERENCES `movies` (`movie_id`),
ADD CONSTRAINT `MS_to_M_2` FOREIGN KEY
(`movie_id_2`) REFERENCES `movies` (`movie_id`);
5.1.4. Table Genre_Movie
CREATE TABLE `genres_movies` (
`id` int(11) NOT NULL,
`movie_id` int(11) DEFAULT NULL,
`genre_id` int(11) DEFAULT NULL
)
ALTER TABLE `genres_movies` ADD PRIMARY
KEY (`id`), ADD KEY `genre_id` (`genre_id`), ADD
KEY `movie_id` (`movie_id`);
ALTER TABLE `genres_movies`
ADD CONSTRAINT `genres_movies_ibfk_1`
FOREIGN KEY (`genre_id`) REFERENCES `genres`
(`genre_id`),
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
86
ADD CONSTRAINT `genres_movies_ibfk_2`
FOREIGN KEY (`movie_id`) REFERENCES `movies`
(`movie_id`);
5.1.5. Table Occupation
CREATE TABLE `occupations` (
`occupation_id` int(11) NOT NULL,
`name` varchar(255) DEFAULT NULL
)
ALTER TABLE `occupations` ADD PRIMARY KEY
(`occupation_id`);
5.1.6. Table User
CREATE TABLE `users` (
`user_id` int(11) NOT NULL,
`age` int(11) DEFAULT NULL,
`gender` char(1) DEFAULT NULL,
`occupation_id` int(11) DEFAULT NULL,
`zip_code` varchar(255) DEFAULT NULL
)
ALTER TABLE `users` ADD PRIMARY KEY
(`user_id`), ADD KEY `occupation_id`
(`occupation_id`);
ALTER TABLE `users` ADD CONSTRAINT
`users_ibfk_1` FOREIGN KEY (`occupation_id`)
REFERENCES `occupations` (`occupation_id`);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
87
5.1.7. Table User_Similarity
CREATE TABLE `user_similarity` (
`user_similarity_id` int(11) NOT NULL,
`user_id_1` int(11) NOT NULL,
`user_id_2` int(11) NOT NULL,
`user_similarity_value` double NOT NULL
)
ALTER TABLE `user_similarity` ADD PRIMARY
KEY (`user_similarity_id`), ADD KEY `US_to_U_1`
(`user_id_1`), ADD KEY `US_to_U_2` (`user_id_2`);
ALTER TABLE `user_similarity` MODIFY
`user_similarity_id` int(11) NOT NULL
AUTO_INCREMENT;
ALTER TABLE `user_similarity` ADD
CONSTRAINT `US_to_U_1` FOREIGN KEY
(`user_id_1`) REFERENCES `users` (`user_id`),
ADD CONSTRAINT `US_to_U_2` FOREIGN KEY
(`user_id_2`) REFERENCES `users` (`user_id`);
5.1.8. Table Rating
CREATE TABLE `ratings` (
`id` int(11) NOT NULL,
`user_id` int(11) DEFAULT NULL,
`movie_id` int(11) DEFAULT NULL,
`rating` int(11) DEFAULT NULL,
`rated_at` timestamp NOT NULL DEFAULT
CURRENT_TIMESTAMP ON UPDATE
CURRENT_TIMESTAMP
)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
88
ALTER TABLE ̀ ratings` ADD PRIMARY KEY (`id`),
ADD KEY `movie_id` (`movie_id`), ADD KEY
`user_id` (`user_id`);
ALTER TABLE `ratings` ADD CONSTRAINT
`ratings_ibfk_1` FOREIGN KEY (`movie_id`)
REFERENCES `movies` (`movie_id`),
ADD CONSTRAINT ̀ ratings_ibfk_2` FOREIGN KEY
(`user_id`) REFERENCES `users` (`user_id`);
5.1.9. Table Rating_Testing
CREATE TABLE `ratings_testing` (
`id_testing` int(11) NOT NULL,
`user_id` int(11) DEFAULT NULL,
`movie_id` int(11) DEFAULT NULL,
`rating` int(11) DEFAULT NULL,
`rated_at` timestamp NOT NULL DEFAULT
CURRENT_TIMESTAMP ON UPDATE
CURRENT_TIMESTAMP
)
ALTER TABLE `ratings_testing` ADD PRIMARY
KEY (`id_testing`), ADD KEY `testing_to_movie`
(`movie_id`), ADD KEY `testing_to_user` (`user_id`);
ALTER TABLE `ratings_testing` ADD
CONSTRAINT `testing_to_movie` FOREIGN KEY
(`movie_id`) REFERENCES `movies` (`movie_id`),
ADD CONSTRAINT `testing_to_user` FOREIGN
KEY (`user_id`) REFERENCES `users` (`user_id`);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
89
5.1.10. Table Prediction
CREATE TABLE `prediction` (
`prediction_id` int(11) NOT NULL,
`id_testing` int(11) DEFAULT NULL,
`top_n` int(11) DEFAULT NULL,
`prediction_value` double DEFAULT NULL,
`method_type` varchar(1) NOT NULL
)
ALTER TABLE `prediction` ADD PRIMARY KEY
(`prediction_id`), ADD KEY
`prediction_to_rating_testing` (`id_testing`);
ALTER TABLE `prediction` MODIFY `prediction_id`
int(11) NOT NULL AUTO_INCREMENT;
ALTER TABLE `prediction` ADD CONSTRAINT
`prediction_to_rating_testing` FOREIGN KEY
(`id_testing`) REFERENCES `ratings_testing`
(`id_testing`);
5.2. Implementasi Proses
Bagian ini menjelaskan tentang penerapan dari perancangan yang
telah dibuat pada bab sebelumnya. Perancangan berupa algoritma dari
masing-masing blok proses yang dimuat pada gambar flowchart
diagram yaitu pada gambar 4.4
5.2.1. Blok Proses pada Kelas
Penjelasan tentang implementasi blok proses yang telah
dirancang pada diagram flowchart pada gambar 4.4 tersebut
akan dijabarkan dalam table 5.1 berikut.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
90
Table 5.1 Implementasi Blok Proses pada Kelas Java
No. Nama Blok Proses Kelas Java
1. Memilih data testing Rating.java
2. Menghitung similarity UserBased.java
ItemBased.java
3. Memprediksi rating Prediction.java
4. Menghitung MAE MAE.java
5.2.2. Implementasi Blok Proses dalam Koding
1. Memilih data testing
Berikut adalah source code yang ada pada kelas
Rating.java untuk implementasi blok proses “Memilih
data testing”. Dapat dilihat pada gambar 5.1 sampai
dengan gambar 5.4 berikut.
Gambar 5.1 Source code method getTotalUserRated()
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
91
Gambar 5.2 Source code method getUserById(int)
Gambar 5.3 Source code method inputDataRatingTesting(Rating)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
92
Gambar 5.4 Source code method pilihDataTesting()
Setelah semua method dibuat (gambar 5.1 sampai 5.4),
penulis melakukan running program untuk memilih data
testing pada method public static main di kelas
Rating.java seperti pada gambar 5.5.
Gambar 5.5 Source code method main()
Proses running untuk pemilihan data testing berlangsung
selama 8 menit 41 detik. Program berhasil memilih 4715
data rating untuk dijadikan data testing dalam skenario
perhitungan prediksi. Lama waktu running dapat dilihat
pada gambar 5.6 berikut.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
93
Gambar 5.6 Lama running pemilihan data testing
Langkah selanjutnya adalah memastikan bahwa tidak
ada pengguna yang tidak me-rating dan/atau tidak ada
film yang tidak di-rating pada data training di table
ratings. Jika hal itu terjadi maka pengguna atau film
tersebut tidak dapat dihitung nilai similaritasnya karena
belum pernah me-rating atau di-rating sama sekali.
Untuk memastikannya, diperlukan query select pada
basis data dengan statement seperti pada query 5.1
berikut.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
94
SELECT * FROM `users` WHERE user_id NOT IN
(select movie_id from ratings)
Query 5.1 Menampilkan pengguna yang tidak me-
rating film
Statement pada query 5.1 digunakan untuk mengecek
apakah ada pengguna yang tidak me-rating film sama
sekali setelah dilakukan proses pemilihan data testing.
Gambar 5.7 Result query untuk validasi rating pengguna
Pada gambar 5.7 terbukti bahwa tidak ada pengguna
yang tidak me-rating film.
Statement selanjutnya adalah statement untuk untuk
mengecek apakah terdapat film yang tidak pernah di-
rating sama sekali oleh pengguna manapun. Berikut
adalah statement nya pada query 5.2.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
95
SELECT * FROM `movies` WHERE movie_id NOT
IN (select movie_id from ratings)
Query 5.2 Menampilkan film yang tidak di-rating
pengguna
Gambar 5.8 Result query untuk validasi rating film
Pada gambar 5.8 diketahui bahwa terdapat 2 data film
yang menjadi tidak pernah di-rating sama sekali oleh
pengguna setelah dilakukannya pemilihan data testing.
Untuk menghindari kesalahan metode maka kedua data
film ini akan diinputkan kembali ke table ratings dan
dijadikan data training. Berikut adalah statement query
untuk insert kedua data testing (query 5.3) kembali ke
table ratings dan juga statement query untuk
menghapusnya dari data testing (query 5.4).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
96
INSERT INTO `ratings`(`id`, `user_id`, `movie_id`,
`rating`, `rated_at`) VALUES (12431, 405, 1582, 1,
'1998-01-23 01:44:30');
INSERT INTO `ratings`(`id`, `user_id`, `movie_id`,
`rating`, `rated_at`) VALUES (47867 , 675 , 1653 , 5 ,
'1998-03-09 16:31:53');
Query 5.3 Insert data ke table ratings
DELETE from ratings_testing where id_testing =
12431 or id_testing = 47867;
Query 5.4 Hapus data dari table ratings_testing
Dengan begitu, maka tidak terjadi kondisi dimana
terdapat pengguna yang belum pernah me-rating film
atau film yang tidak pernah di-rating oleh pengguna
sama sekali.
Dalam proses pengimplementasian blok proses ini,
penulis menemukan masalah dimana terdapat beberapa
data testing yang tidak memiliki neighbor sama sekali,
sehingga perhitungan prediksi menghasilkan nilai NaN
yang tidak dapat dikalkulasikan untuk perhitungan
MAE. Berikut adalah ilustrasi dimana data testing tidak
memiliki neighbor sama sekali.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
97
Gambar 5.9 Ilustrasi data testing tidak memiliki
neighbor pada metode user-based CF
Gambar 5.10 Ilustrasi data testing tidak memiliki
neighbor pada metode item-based CF
Pada gambar 5.9 diketahui bahwa data testing adalah
rating yang sudah diberikan Joko terhadap film A.
Namun pada kondisi ilustrasi tersebut, film A belum
pernah di-rating oleh pengguna manapun selain Joko,
dimana rating dari pengguna lain tersebutlah yang
diperlukan oleh metode user-based CF untuk
menghitung nilai prediksi. Oleh karena itu data testing
tersebut tidak dapat dihitung prediksinya.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
98
Sedangkan pada gambar 5.10 diketahui bahwa data
testing adalah rating yang sudah diberikan Joko kepada
film C. Namun Joko hanya pernah memberikan rating
terhadap satu film saja yaitu film C. Sedangkan metode
item-based CF memerlukan rating terhadap film lain
dari Joko untuk menghitung prediksi dari data testing.
Oleh karena perihal itu, penulis memutuskan untuk tidak
menjadikan data tersebut sebagai data testing, data
tersebut berjumlah 12 data, dan ke-12 nya akan
diinputkan kembali ke table ratings untuk dijadikan data
training.
Statement query untuk insert 12 data testing kembali ke
table ratings dapat dilihat pada query 5.5. Statement
query untuk menghapus 12 data tersebut dari data testing
dapat dilihat pada query 5.6.
INSERT INTO `ratings`(`id`, `user_id`, `movie_id`,
`rating`, `rated_at`) VALUES
(674, 5, 439, 1, '1997-11-06 11:27:03'),
(3426, 2, 314, 1, '1998-03-03 18:54:45'),
(8990, 358, 1529, 3, '1998-03-30 06:53:04'),
(9640, 358, 643, 3, '1998-03-30 07:01:31'),
(18968, 448, 1294, 1, '1998-04-06 11:26:01'),
(23045, 489, 1293, 5, '1998-04-01 08:03:43'),
(26401, 519, 1617, 5, '1997-12-27 11:15:02'),
(41252, 609, 314, 1, '1998-02-07 15:59:01'),
(45304, 713, 1656, 2, '1998-03-02 15:41:25'),
(55184, 762, 1662, 1, '1997-11-05 00:42:04'),
(55373, 828, 1646, 4, '1998-04-21 12:15:24'),
(58055, 851, 987, 1, '1997-10-01 11:30:01');
Query 5.5 Insert 12 data ke table ratings
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
99
DELETE from ratings_testing where id_testing = 674;
DELETE from ratings_testing where id_testing =
3426;
DELETE from ratings_testing where id_testing =
8990;
DELETE from ratings_testing where id_testing =
9640;
DELETE from ratings_testing where id_testing =
18968;
DELETE from ratings_testing where id_testing =
23045;
DELETE from ratings_testing where id_testing =
26401;
DELETE from ratings_testing where id_testing =
41252;
DELETE from ratings_testing where id_testing =
45304;
DELETE from ratings_testing where id_testing =
55184;
DELETE from ratings_testing where id_testing =
55373;
DELETE from ratings_testing where id_testing =
58055;
Query 5.6 Hapus 12 data dari table ratings_testing
Setelah statement query tersebut dijalankan, maka total
data testing pada table rating_testing menjadi 4701 data
seperti yang ditunjukkan gambar 5.11 berikut.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
100
Gambar 5.11 Total data dari table rating_testing
2. Menghitung similarity
Penulis akan membagi implementasi dari blok proses
“Menghitung similarity” dalam 2 bagian. Bagian
pertama adalah penerapan perhitungan similaritas di
kelas Userbased.java dan bagian kedua adalah pada kelas
ItemBased.java.
➢ Metode user-based CF
Berikut adalah source code yang ada pada kelas
UserBased.java untuk implementasi blok proses
“Menghitung similarity”. Implementasi penulis dalam
koding untuk blok proses ini dapat dilihat pada gambar
5.12 sampai dengan gambar 5.17.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
101
Gambar 5.12 Source code method getUserRating(String)
Gambar 5.13 Source code method getAvg(String)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
102
Gambar 5.14 Source code method getBagianAtas(List<Rating>,
List<Rating>, Double, Double)
Gambar 5.15 Source code method getBagianBawah(List<Rating>,
List<Rating>, Double, Double)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
103
Gambar 5.16 Source code method
similaritasPearsonCorrealtion(String, String)
Gambar 5.17 Source code method inputUserSimilarity(UserBased)
Setelah semua method dibuat, penulis melakukan
running program untuk menghitung semua nilai
similaritas antar pengguna satu dengan pengguna
lainnya pada method main() di kelas UserBased.java
(gambar 5.18). Langkah yang sama pada method main()
juga dilakukan pada kelas UserBasedControl.java yang
menghubungkan antara kelas View dengan kelas
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
104
Model. Berikut adalah running program untuk
menghitung similaritas antar 943 pengguna. Total data
similaritas antar pengguna adalah 889.249 data.
Gambar 5.18 Source code method main()
Proses perhitungan similaritas tersebut memakan waktu
selama lebih dari 24 jam. Detail lama waktu running
terdapat pada gambar 5.19 berikut.
Gambar 5.19 Lama running perhitungan similaritas
antara pengguna
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
105
Setelah running program selesai, maka penulis
melakukan pengecekan terhadap jumlah data yang saat
ini tersimpan di table user_similarity.
Gambar 5.20 Total data dari table user_similarity
Total data nilai similaritas antar pengguna telah berhasil
disimpan semuanya ke dalam table user_similarity,
dengan total data sebanyak 889.249 baris (record).
Total data dapat dilihat pada gambar 5.20.
➢ Metode item-based CF
Berikut adalah source code yang ada pada kelas
ItemBased.java untuk implementasi blok proses
“Menghitung similarity”. Implementasi penulis dalam
koding untuk blok proses ini dapat dilihat pada gambar
5.21 sampai dengan gambar 5.26.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
106
Gambar 5.21 Source code method
getItemRating(String)
Gambar 5.22 Source code method getAvg(String)
Gambar 5.23 Source code method
getBagianAtas(List<Rating>, List<Rating>, Double, Double)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
107
Gambar 5.24 Source code method getBagianBawah(List<Rating>,
List<Rating>, Double, Double)
Gambar 5.25 Source code method
similaritasPearsonCorrealtion(String, String)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
108
Gambar 5.26 Source code method inputMovieSimilarity(UserBased)
Sama seperti metode user-based CF di kelas
UserBased.java, penulis juga melakukan running
program untuk menghitung semua nilai similaritas antar
film satu dengan film lainnya pada method main() di
kelas ItemBased.java (gambar 5.27). Langkah yang
sama pada method main() juga dilakukan pada kelas
ItemBasedControl.java yang menghubungkan antara
kelas View dengan kelas Model. Berikut adalah running
program untuk menghitung similaritas antar 1682 film.
Total data similaritas antar pengguna adalah 2.829.124
data.
Gambar 5.27 Source code method main()
Proses perhitungan similaritas tersebut memakan waktu
selama lebih dari 48 jam. Detail lama waktu running
terdapat pada gambar 5.28 berikut.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
109
Gambar 5.28 Lama running perhitungan similaritas
antara pengguna
Setelah running program selesai, maka penulis
melakukan pengecekan terhadap jumlah data yang saat
ini tersimpan di table movie_similarity.
Gambar 5.29 Total data dari table movie_similarity
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
110
Total data nilai similaritas antar film telah berhasil
disimpan semuanya ke dalam table movie_similarity,
dengan total data sebanyak 2.829.124 baris (record).
Total data dapat dilihat pada gambar 5.29.
3. Memprediksi rating
Berikut adalah source code yang ada pada kelas
Prediction.java untuk implementasi blok proses
“Memprediksi rating”.
Implementasi koding untuk mengambil semua data
testing dapat dilihat pada gambar 5.30. sedangakan
gambar 5.31 adalah implementasi koding untuk
menyimpan hasil perhitungan prediksi ke table
prediction.
Gambar 5.30 Source code method getRatingTesting()
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
111
Gambar 5.31 Source code method inputPrediction(Prediction)
Implementasi koding untuk memprediksi rating dengan
metode user-based CF dapat dilihat pada gambar 5.32
sampai dengan gambar 5.34.
Gambar 5.32 Source code method
getRatingAndUserSimilaritySort(String, String)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
112
Gambar 5.33 Source code method hasilPrediksiUserBased1(Rating, int)
Setelah method menghitung hasil prediksi untuk metode
user-based CF berhasil dibuat, maka langkah
selanjutnya adalah running program untuk menghitung
hasil prediksi dari semua data testing dengan jumlah
maksimal neighbor yaitu 10, 30, 50, 70, 100 dan semua
neighbor yang memenuhi syarat sesuai dengan kondisi
yang tertera pada sub bagian 4.3.2.1.. Berikut adalah
source code pada method main() untuk menghitung nilai
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
113
prediksi dengan metode user-based CF tertera pada
gambar 5.34.
Gambar 5.34 Source code method main()
Pada gambar 5.34 dapat kita lihat sebuah variable integer
bernama maxTopN. Variable ini digunakan untuk
mengubah-ubah nilai jumlah maksimal neighbor untuk
mendapatkan nilai prediksi dari metode user-based CF.
Berikut adalah gambar yang menunjukkan lawa waktu
running dari perhitungan prediksi dengan masing-
masing jumlah maksimal neighbor yang tercantum
dalam sub bab 1.3.
Gambar 5.35 Lama waktu running hitung prediksi user-based CF
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
114
Gambar 5.31 menunjukkan lama waktu running dengan
urutan gambar dari atas sampai bawah : jumlah neighbor
10, 30, 50, 70, 100, all neighbor.
Selanjutnya, implementasi koding untuk memprediksi
rating dengan metode user-based CF dapat dilihat pada
gambar 5.36 sampai dengan gambar 5.37.
Gambar 5.36 Source code method
getRatingAndMovieSimilaritySort(String, String)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
115
Gambar 5.37 Source code method hasilPrediksiItemBased1(Rating, int)
Setelah method menghitung hasil prediksi untuk metode
item-based CF berhasil dibuat, maka langkah
selanjutnya adalah running program untuk menghitung
hasil prediksi dari semua data testing dengan jumlah
maksimal neighbor yaitu 10, 30, 50, 70, 100 dan semua
neighbor yang memenuhi syarat sesuai dengan kondisi
yang tertera pada sub bagian 4.3.2.2.. Berikut adalah
source code pada method main() untuk menghitung nilai
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
116
prediksi dengan metode item-based CF tertera pada
gambar 5.38.
Gambar 5.38 Source code method main()
Pada gambar 5.38 dapat kita lihat sebuah variable integer
bernama maxTopN. Sama halnya dengan skenario nilai
prediksi dari metode user-based CF, skenario pada
metode item-based CF pun dilakukan dengan cara
menghitung prediksi dengan masing-masing jumlah
maksimal neighbor yang tercantum dalam sub bab 1.3..
Jumlah maksimal neighbor tersebut diisikan dalam
maxTopN.
Gambar 5.39 Lama waktu running hitung prediksi item-based CF
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
117
Gambar 5.39 menunjukkan lama waktu running dengan
urutan gambar dari atas sampai bawah : jumlah neighbor
10, 30, 50, 70, 100, all neighbor.
Semua nilai hasil prediksi telah tersimpan dalam table
prediction. Berikut adalah total data yang tersimpan
dalam table prediction yang memuat data testing, jumlah
maksimal neighbor, nilai prediksi, beserta jenis metode
yang digunakan untuk perhitungan prediksi. Terdapat
56.412 data yang tersimpan, dapat dilihat pada gambar
5.40.
Gambar 5.40 Total data pada table prediction
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
118
4. Menghitung MAE
Berikut adalah source code yang ada pada kelas
MAE.java untuk implementasi blok proses “Menghitung
MAE” pada gambar 5.41.
Gambar 5.41 Source code method showPrediction(String, String)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
119
5.3. Implementasi Output
5.3.1. Halaman Utama
Gambar 5.42 Halaman Utama
Halaman pada gambar 5.42 ini adalah halaman awal atau
halaman beranda saat aktor pertama kali membuka tampilan
website.
5.3.2. Halaman User-based
Gambar 5.43 Halaman User-based
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
120
Halaman pada gambar 5.43 adalah halaman yang bertugas
untuk menampilkan nilai similaritas yang dimiliki oleh 1
pengguna dengan pengguna lainnya. Terdapat beberapa fitur
yang dapat digunakan pada halaman ini, yaitu :
➢ Menghitung similaritas antar pengguna, terlihat
padaa gambar 5.44
➢ Melakukan pencarian nilai similaritas pengguna
dengan user_id tertentu dengan pengguna lainnya.
Dapat dilihat pada gambar 5.45.
➢ Melakukan pencarian nilai similaritas antara 2
pengguna secara spesifik. Dapat dilihat pada
gambar 5.45.
Gambar 5.44 Pop-up untuk konfirmasi perhitungan similaritas antara pengguna
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
121
Gambar 5.45 Pop-up untuk melakukan pencarian nilai similaritas
Gambar 5.46 Hasil pencarian nilai similaritas 1 pengguna dengan
pengguna lainnya
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
122
Gambar 5.47 Hasil pencarian nilai similaritas antara 2 pengguna
Halaman pada gambar 5.46 adalah halaman yang
menampilkan pencarian nilai similaritas pengguna dengan
user_id tertentu dengan pengguna lainnya. Sedangkan pada
gambar 5.47 menampilkan pencarian nilai similaritas antara
2 pengguna secara spesifik.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
123
5.3.3. Halaman Item-based
Gambar 5.48 Halaman Item-based
Sama halnya dengan User-based, halaman pada gambar 5.48
ini bertugas untuk menampilkan nilai similaritas yang
dimiliki oleh 1 film dengan film lainnya, serta mempunya
fitur yang sama dengan halaman User-based, yaitu :
➢ Menghitung similaritas antar film, terlihat padaa
gambar 5.49
➢ Melakukan pencarian nilai similaritas film dengan
movie_id tertentu dengan pengguna lainnya. Dapat
dilihat pada gambar 5.50.
➢ Melakukan pencarian nilai similaritas antara 2 film
secara spesifik. Dapat dilihat pada gambar 5.50.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
124
Gambar 5.49 Pop-up untuk konfirmasi perhitungan similaritas antar
semua film
Gambar 5.50 Pop-up untuk melakukan pencarian nilai similaritas
Gambar 5.51 Hasil pencarian nilai similaritas pengguna dengan user_id
tertentu dengan pengguna lainnya
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
125
Gambar 5.52 Hasil pencarian nilai similaritas antara 2 pengguna secara spesifik
Halaman pada gambar 5.51 adalah halaman yang
menampilkan pencarian nilai similaritas film dengan
movie_id tertentu dengan pengguna lainnya. Sedangkan
pada gambar 5.52 menampilkan pencarian nilai similaritas
antara 2 film secara spesifik.
5.3.4. Halaman Hasil Prediksi
Gambar 5.53 Halaman Hasil Prediksi untuk metode user-based CF
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
126
Gambar 5.54 Pop-up untuk menampilkan nilai prediksi
Gambar 5.55 Halaman tampilan hasil prediksi
Halaman pada gambar 5.53 adalah halaman awal untuk
melihat hasil perhitungan prediksi metode user-based CF.
Gambar 5.54 adalah pop-up untuk menampilkan nilai
prediksi berdasarkan jumlah maksimal neighbor tertentu
pada metode user-based CF. gambar 5.55 adalah halaman
tampilan untuk jumlah maksimal neighbor tertentu pada
metode user-based CF.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
127
Gambar 5.56 Halaman Hasil Prediksi untuk metode item-based CF
Gambar 5.57 Pop-up untuk menampilkan nilai prediksi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
128
Gambar 5.58 Halaman tampilan hasil prediksi
Halaman pada gambar 5.56 adalah halaman awal untuk
melihat hasil perhitungan prediksi metode item-based CF.
Gambar 5.57 adalah pop-up untuk menampilkan nilai
prediksi berdasarkan jumlah maksimal neighbor tertentu
pada metode item-based CF. gambar 5.58 adalah halaman
tampilan untuk jumlah maksimal neighbor tertentu pada
metode item-based CF.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
129
5.3.5. Halaman Pencarian
Gambar 5.59 Halaman Pencarian
Halaman ini digunakan untuk menampilkan data film yang
tersimpan di basis data (gambar 5.59). Tampilan data film
berupa nomor ID film, judul, jenis genre, dan tanggal rilis.
Gambar 5.60 Pencarian film berdasarkan genre film
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
130
Pada gambar 5.60 dapat dilihat tampilan pencarian film
berdasarkan genre film. Terdapat 18 jenis genre yang
tersimpan di table genre, diantaranya adalah : Action,
Adventure, Animation, Children's, Comedy, Crime,
Documentary, Drama, Fantasy, Film-Noir, Horror, Musical,
Mystery, Romance, Sci-Fi, Thriller, War, serta Western.
Gambar 5.61 di bawah ini menampilkan pencarian film
berdasarkan judul film.
Gambar 5.61 Pencarian film berdasarkan judul film
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
131
5.3.6. Halaman Daftar Rating
Gambar 5.62 Halaman Daftar Rating
Gambar 5.62 menampilkan halaman daftar rating yang
merupakan tampilan awal untuk melihat daftar rating
training maupun testing.
Pada halaman ini terdapat fitur untuk menampilkan daftar
semua rating yang terdapat di data training atau testing
(gambar 5.63 dan 5.64), serta terdapat juga fitur untuk
mencari data rating berdasarkan pengguna atau film pada
data training ataupun training (gambar 5.65).
Gambar 5.63 Pop-up untuk menampilkan semua data training
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
132
Gambar 5.64 Pop-up untuk menampilkan semua data testing
Gambar 5.65 Format layout halaman yang menampilkan data rating
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
133
5.4. Analisis Hasil dan Pembahasan
Pada bagian penelitian ini, ada beberapa pengujian yang dilakukan
untuk mencapai tujuan penelitian, diantaranya adalah pengujian
validasi program serta pengujian dan perbandingan hasil MAE dari
metode user-based CF dan item-based CF.
5.4.1. Hasil Uji Validasi Program
Uji validasi program adalah dengan cara membandingkan
hasil perhitungan manual data sampel terhadap hasil
perhitungan yang dikerjakan oleh sistem. Uji validasi
tersebut dapat dilihat pada lampiran 2.
5.4.2. Hasil Uji MAE Pada Metode User-based CF
Berikut adalah hasil uji MAE dan analisa pada metode user-
based CF dengan skenario mengganti batas jumlah
maksimal neighbor untuk perhitungan prediksi.
Table 5.2 Hasil MAE dari skenario mengubah batas jumlah maksimal
neighbor metode user-based CF
Jumlah Maksimal
Neighbor (Top-N) MAE Lama Waktu Running
10 0.826020531
1.922 detik (Gambar 5.35)
30 0.804927121 1.938 detik (Gambar 5.35)
50 0.802093284
1.978 detik (Gambar 5.35)
70 0.800633522
1.941 detik (Gambar 5.35)
100 0.801171485
2.017 detik (Gambar 5.35)
943
(all neighbor with
condition)
0.802709142
2.815 detik (Gambar 5.35)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
134
Gambar 5.66 Grafik garis hasil MAE terhadap jumlah maksimal neighbor
pada metode user-based CF
Berdasarkan nilai yang dimuat pada table 5.2 dan gambar
grafik garis 5.66, disimpulkan bahwa metode user-based CF
mampu memprediksi rating dengan nilai kesalahan dibawah
1 pada semua jumlah maksimal neighbor yang diujikan.
Nilai kesalahan terkecil terjadi pada jumlah maksimal
neighbor 70 dimana nilai MAE-nya sebesar 0.800633522.
Sementara nilai kesalahan terbesar terjadi saat jumlah
maksimal neighbor 10, dengan nilai MAE-nya sebesar
0.826020531.
Setelah dianalisa dengan menggunakan source code di
method main() pada kelas Prediction.java yang telah
dimodifikasi (gambar 5.67), diketahui hal ini terjadi karena
pada jumlah maksimal neighbor = 10, terdapat 262 dari
4.701 data testing yang memiliki nilai MAE di atas 2
(gambar 5.68). Sedangkan pada jumlah maksimal neighbor
0.78
0.79
0.8
0.81
0.82
0.83
10 30 50 70 100 All
Neighbor
MA
E
Jumlah Maksimal Neighbor
Perbandingan Uji MAE Pada Metode User-
based CF
User-based CF
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
135
= 70, terdapat 224 dari 4.701 data testing yang nilai MAE-
nya di atas 2 (gambar 5.69). Selisih data testing antar kedua
jumlah maksimal neighbor yang MAE-nya di atas 2 adalah
sebanyak 38 data.
Gambar 5.67 Source code pada method main() di kelas
Prediction.java yang sudah dimodifikasi pada hasil prediksi metode
user-based CF
Pada gambar 5.67 terdapat variable maxTopN yang
digunakan untuk mengganti jumlah maksimal neighbor.
Lalu pada fungsi perulangan, ditambahkan 1 fungsi
percabangan if yang melakukan pengecekan terhadap nilai
MAE dari masing-masing data testing yang bernilai di atas
2. Dapat dilihat pada gambar 5.68 Data testing dengan nilai
MAE di atas 2 pada jumlah maksimal neighbor = 10 adalah
262, sedangkan pada jumlah maksimal neighbor = 70 adalah
224 (gambar 5.69).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
136
Gambar 5.68 Data testing nilai MAE di atas 2, maksimal
neighbor = 10
Gambar 5.69 Data testing nilai MAE di atas 2, maksimal
neighbor = 70
5.4.3. Hasil Uji MAE Pada Metode Item-based CF
Berikut adalah hasil uji MAE dan analisa pada metode user-
based CF dengan skenario mengganti batas jumlah
maksimal neighbor untuk perhitungan prediksi.
Table 5.3 Hasil MAE dari skenario mengubah batas jumlah maksimal neighbor
metode item-based CF
Jumlah Maksimal Neighbor
(Top-N) MAE Lama Waktu Running
10 0.833880016 1.323 detik (Gambar 5.39)
30 0.800977548 1.347 detik (Gambar 5.39)
50 0.796545415 1.363 detik (Gambar 5.39)
70 0.794311284 1.407 detik (Gambar 5.39)
100 0.793895061 1.747 detik (Gambar 5.39)
1682
(all neighbor with condition) 0.794503596 1.586 detik (Gambar 5.39)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
137
Gambar 5.70 Grafik garis hasil MAE terhadap jumlah maksimal neighbor
pada metode item-based CF
Berdasarkan nilai yang dimuat pada table 5.3 dan gambar
grafik garis 5.70, disimpulkan bahwa metode item-based CF
mampu memprediksi rating dengan nilai kesalahan dibawah
1 pada semua jumlah maksimal neighbor yang diujikan.
Nilai kesalahan terkecil terjadi pada jumlah maksimal
neighbor 100 dimana nilai MAE-nya sebesar 0.793895061.
Sementara nilai kesalahan terbesar terjadi saat jumlah
maksimal neighbor 10, dengan nilai MAE-nya sebesar
0.833880016.
Setelah dianalisa dengan menggunakan source code di
method main() pada kelas Prediction.java yang telah
dimodifikasi (gambar 5.71), diketahui hal ini terjadi karena
pada jumlah maksimal neighbor = 10, terdapat 273 dari
4.701 data testing yang memiliki nilai MAE di atas 2
(gambar 5.72). Sedangkan pada jumlah maksimal neighbor
= 100, terdapat 223 dari 4.701 data testing yang nilai MAE-
nya di atas 2 (gambar 5.73). Selisih data testing antar kedua
0.76
0.78
0.8
0.82
0.84
10 30 50 70 100 All
Neighbor
MA
E
Jumlah Maksimal Neighbor
Perbandingan Uji MAE Pada Metode Item-
based CF
Item-based CF
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
138
jumlah maksimal neighbor yang MAE-nya di atas 2 adalah
sebanyak 38 data.
Gambar 5.71 Source code pada method main() di kelas
Prediction.java yang sudah dimodifikasi pada hasil prediksi
metode item-based CF
Pada gambar 5.71 terdapat variable maxTopN yang
digunakan untuk mengganti jumlah maksimal neighbor.
Lalu pada fungsi perulangan, ditambahkan 1 fungsi
percabangan if yang melakukan pengecekan terhadap nilai
MAE dari masing-masing data testing yang bernilai di atas
2. Dapat dilihat pada gambar 5.72 Data testing dengan nilai
MAE di atas 2 pada jumlah maksimal neighbor = 10 adalah
273, sedangkan pada jumlah maksimal neighbor = 70 adalah
223 (gambar 5.73)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
139
Gambar 5.72 Data testing nilai MAE di atas 2, maksimal
neighbor = 10
Gambar 5.73 Data testing nilai MAE di atas 2, maksimal
neighbor = 70
5.4.4. Perbadingan Metode User-based CF dan Item-based CF
Gambar 5.74 Grafik garis hasil MAE terhadap jumlah maksimal neighbor
pada kedua metode
0.79
0.795
0.8
0.805
0.81
0.815
0.82
0.825
0.83
0.835
10 30 50 70 100 All
Neighbor
MA
E
Jumlah Maksimal Neighbor
Perbandingan Uji MAE Pada Kedua Metode
User-based CF Item-based CF
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
140
Gambar 5.75 Grafik garis lama waktu running terhadap jumlah maksimal
neighbor pada kedua metode
Dari gambar 5.74 diketahui bahwa pengujian nilai MAE
dengan skenario mengganti-ganti jumlah maksimal neighbor
pada kedua metode, menunjukkan bahwa metode item-based
CF lebih unggul 5 dari 6 skenario dibanding metode user-
based. Sedangkan pada gambar 5.75, terbukti bahwa metode
item-based CF lebih ringan dalam hal komputasi karena
lama waktu running yang lebih sedikit dibanding metode
pembandingnya.
Metode user-based mengungguli metode item-based pada
skenario jumlah maksimal neighbor = 10 untuk uji MAE.
Hal ini terjadi karena pada metode user-based CF, jumlah
0
500
1000
1500
2000
2500
3000
10 30 50 70 100 All
Neighbor
Lam
a W
ak
tu R
un
nin
g (
det
ik)
Jumlah Maksimal Neighbor
Perbandingan Lama Waktu Running Pada
Kedua Metode
User-based CF Item-based CF
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
141
data testing yang nilai MAE-nya di atas 2 lebih sedikit
dibandingkan dengan metode item-based CF. Tentu hal ini
mempengaruhi nilai MAE keseluruhan dari 4.701 data
testing.
Nilai MAE yang besar disebabkan oleh melencengnya hasil
prediksi terhadap rating real. Dalam penelitian ini, penulis
menemukan salah satu faktor yang menyebabkan hal
tersebut terjadi. Faktor tersebut adalah jumlah interseksi
rating antara 2 objek (pengguna atau film) yang terlalu
sedikit. Faktor ini mempengaruhi perhitungan similaritas
antar 2 objek. Pada beberapa kasus, perhitungan kedua
metode memberikan hasil kemiripan atau similaritas yang
tinggi pada kedua objek hanya berdasarkan 2 atau bahkan 1
interseksi.
Berikut faktor tersebut dijelaskan pada gambar 5.76, gambar
5.77 dan gambar 5.78 di bawah ini.
Gambar 5.76 Menampilkan data testing yang memiliki nilai
MAE lebih dari 2
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
142
Pada gambar 5.76, penulis menjalankan query select pada
MySQL untuk menampilkan data testing mana saja yang
memiliki nilai kesalahan (MAE) lebih dari 2. Query tersebut
adalah sebagai berikut pada query 5.7 :
SELECT r.* FROM prediction p join ratings_testing r on
(p.id_testing = r.id_testing) WHERE ABS(r.rating -
p.prediction_value) > 2 group by p.id_testing
Query 5.7 Menampilkan prediksi dengan MAE di atas 2
Penulis mengambil sampel data testing pada baris pertama
untuk dilakukan penelusuran, yaitu data testing dengan ID =
5 yang memuat informasi bahwa pengguna 166 memberikan
rating kepada film 346 sebesar 1.
Gambar 5.77 Menampilkan data neighbor dari pengguna 166
Dari gambar 5.77, diketahui bahwa neighbor 466, 142, 768
dan 920 adalah pengguna yang memiliki nilai kemiripan
tinggi dengan pengguna 166. Itulah sebabnya pengguna-
pengguna tersebut dilibatkan dalam perhitungan prediksi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
143
terhadap rating yang akan diberikan pengguna 166 kepada
film 346.
Berikut adalah query untuk menampilkan neighbor tersebut
pada query 5.8.
SELECT * FROM user_similarity WHERE user_id_1 =
166 and user_similarity_value > 0 and user_id_2 IN
(select user_id from ratings where movie_id = 346) order
by user_similarity_value desc
Query 5.8 Menampilkan neighbor pengguna 166
Selanjutnya adalah pengecekan proses perhitungan
similaritas antara pengguna 166 dan pengguna 456 sehingga
menghasilkan nilai similaritas yang begitu tinggi di antara
keduanya. Hal ini dilakukan dengan running query untuk
menampilkan interseksi rating antara keduanya. Query
tersebut adalah sebagai berikut pada query 5.9 :
SELECT movie_id, rating FROM ratings WHERE
user_id = 166 and movie_id IN (SELECT movie_id
FROM ratings where user_id = 456);
Query 5.9 Menampilkan interseksi rating pengguna
166 dan 456
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
144
Berikut adalah hasil eksekusi tersebut pada gambar 5.78 :
Gambar 5.78 Menampilkan interseksi rating antara
pengguna 166 dan pengguna 456
Diketahui bahwa interseksi rating antar keduanya hanya
memberikan rating kepada 1 film saja yaitu film 286.
Interseksi yang begitu sedikit inilah yang akan menghasilkan
perhitungan similaritas yang kurang tepat, sehingga
mempengaruhi pula perhitungan prediksi terhadap data
testing.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
145
BAB VI PENUTUP
6.1. Kesimpulan
Berdasarkan penelitian yang sudah dikerjakan yaitu
penelitian tentang membandingkan metode user-based CF dan
metode item-based CF dalam memberikan rekomendasi yang lebih
baik pada data set yang berupa objek film. Penulis mendapatkan hasil
penelitian yang menghasilkan kesimpulan sebagai berikut :
1. Metode user-based CF dan metode item-based CF dapat
dipergunakan untuk memprediksi rating pengguna terhadap
film.
2. Metode user-based CF dan item-based CF berpotensi untuk
diterapkan pada sebuah website sistem rekomendasi film.
3. Metode item-based CF memiliki keakuratan yang lebih baik
dalam memberikan nilai prediksi. Hal itu dibuktikan dengan
pengujian nilai kesalahan prediksi terhadap rating real yaitu
pengujian nilai MAE. Dari 6 skenario pengujian, 5 diantaranya
menunjukkan bahwa metode item-based CF memiliki nilai
MAE yang lebih kecil dibanding metode user-based CF.
4. Dengan rentang nilai rating dari 1 sampai dengan 5, selisih nilai
MAE antara kedua metode tidak terlalu signifikan, yaitu hanya
sebesar 0,01 pada masing-masing prediksi terbaiknya. Metode
item-based CF memberikan prediksi paling baik pada jumlah
maksimal neighbor 100 dengan nilai MAE sebesar
0,793895061. Metode user-based CF memberikan prediksi
paling baik pada jumlah maksimal neighbor 70 dengan nilai
MAE sebesar 0,800633522. Pada jumlah maksimal neighbor 10,
kedua metode menghasilkan nilai MAE paling besar yaitu
0,826020531 untuk metode user-based CF, dan 0,833880016
untuk metode item-based CF.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
146
5. Komputasi pada metode item-based CF lebih ringan untuk
dijalankan dibanding metode user-based CF pada data set film
MovieLens.org.
6.2. Saran
Berdasarkan analisis pada penelitian yang sudah dikerjakan,
penulis menemukan sebuah hal yang dapat dikembangkan untuk
penelitian selanjutnya, yaitu dengan menambahkan kondisi
penyeleksian jumlah interseksi pada blok proses “memprediksi rating”
untuk memberikan nilai prediksi rating yang lebih baik.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
147
DAFTAR PUSTAKA
Adomavicius, Gediminas and Tuzhilin, Alexander. (2005). “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, vol. 17, no. 6.
Arvid, Theodorus., Setyohadi, Djoko Budiyanto., and Ernawati. (2016). “User-
Based Collaborative Filtering Dengan Memanfaatkan Pearson-Correlation
Untuk Mencari Neighbors Terdekat Dalam Sistem Rekomendasi”. (Online),
(http://e-journal.uajy.ac.id/8924/, diakses tanggal 05 Maret 2018)
Asanov, D. (2015). “Algorithms and Methods in Recommender Systems.,”
International Journal of Computer Applications, vol. 118, 2015.
Dewanto, Hafiz., and Wibowo, Agung Toto., (2015). “Analisis dan
Implementasi Prediksi Rating pada Memory-based Collaborative Filtering
dengan Menggunakan Smoothing”. e-Proceeding of Engineering : Vol.2,
No.3.
Hakim, A. N. (2010). “Sistem Rekomendasi Film Berbasis Web Menggunakan
Metode Item-Based Collaborative Filtering Berbasis K-Nearest Neighbor”
S1, Program Studi Ilmu Komputer, Universitas Pendidikan Indonesia,
Bandung.
Herlocker, Jonathan L. (2001). “Evaluating Collaborative Filtering
Recommender System”. 2001 ACM 1073-0516/01/0300-0034.
Leben, Micheal (2008). “Applying Item-based and User-based Collaborative
Filtering on the Netflix Data”. Hasso- Plattner-Institut Potsdam.
Li, Qing and Kim, Byeong Man. (2003). “Clustering Approach for Hybrid
Recommender System”. Proceedings of the IEEE/WIC International
Conference on Web Intelligence (WI’03).
Lister, Martin. et all. (2009). “New media: a critical introduction”. Routledge ,
New York, USA.
Lops, P., Gemmis, de M., Semeraro, G.. (2010). “Content-Based
Recommender Systems State of the Art and Trends”. DOI :
10.1007/978-0-387-85820-3_3
Marafi, S. (2014). Collaborative Filtering with R. (Online),
(http://www.salemmarafi.com/code/collaborative-filtering-r/, diakses 16
November 2017 11:35:12 WIB).
McDonald, C. (2015). Pararel and Iterative Processing for Machine Learning
Recommendation With Spark. (Online), (https://mapr.com/blog/parallel-
and-iterative-processing-machine-learning-recommendations-spark/,
diakses tanggal 16 November 2017 11:50:10 WIB).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
148
Pantreath, N. (2015). “Machine Learning with Spark”. Packt Publishing,
Birmingham, United Kingdom.
Prasetyo, Eko. 2014. “Data mining Mengolah Data menjadi Informasi
Menggunakan Matlab”. CV. ANDI OFFSET, Yogyakarta, Indonesia.
Ricci, L. R. F., and Shaphira, B. (2011). “Recommender Systems Handbook”.
Springer Science+Business Media, New York, USA.
Sarwar, B., Karypis, G., Konstan, J., Riedl, J. (2001). “Item-Based
Collaborative Filtering Recommendation Algorithms”. ACM 1-58113-
348-0/01/0005; GroupLens Research Group.
Vozalis, E. and Margaritis, K. G. (2003). “Analysis of Recommender Systems
Algorithms”. Elsevier Science Inc, New York, USA.
https://github.com/ankane/movielens.sql diakses pada 19 November 2017
22:00:15 WIB.
https://movielens.org/ diakses pada 19 November 2017 10:50:15 WIB.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
149
LAMPIRAN
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
150
LAMPIRAN 1 : Narasi Use Case
4.1.2. Narasi Use Case
4.1.2.1. Hitung Similaritas User
Use-Case Name : Hitung Similaritas User
Use-Case ID : SRF-01
Priority : High
Primary
Business Actor
:
Administrator
Description :
Use case ini mendeskripsikan administrator yang akan
menggunakan fitur perhitungan similaritas pada setiap user yang
ada di basis data, dengan perhitungan Peason Correlation pada
user-based CF.
Precondition : Administrator berada di halaman “User-based” pada menu
“Similaritas User”
Typical
Course of
Events :
Actor Action System Response
Step 1 : Klik tombol “Hitung
Similaritas”
Step 2 : Melakukan perhitungan
perhitungan similaritas antar
seluruh user yang terdapat di
basisdata
Step 3 : Menampilkan
pemberitahuan telah berhasil
melakukan perhitungan
Alternative : -
Postcondition : Administrator mendapatkan hasil perhitungan similaritas antar
user
4.1.2.2. Lihat Nilai Similaritas User
Use-Case Name : Lihat Nilai Similarita User
Use-Case ID : SRF-02
Priority : Medium
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
151
Primary
Business Actor
:
Administrator
Description :
Use case ini mendeskripsikan administrator yang ingin melihat
daftar nilai similaritas antar user yang sudah dihitung dengan
metode perhitungan similaritas Peason Correlation pada user-
based CF.
Precondition : Administrator berada di halaman “User-based”.
Typical
Course of
Events :
Actor Action System Response
Step 1 : Klik menu “Similaritas
User”
Step 2 : Menampilkan table nilai
kemiripan (similaritas) antar
seluruh user
Alternative : Jika nilai similaritas belum dihitung maka tampil pesan dialog lalu
administrator akan diarahkan pada fitur “Hitung Similaritas”
Postcondition : Administrator mengetahui nilai similaritas antar user
4.1.2.3. Hitung Prediksi Rating User-based
Use-Case Name : Hitung Prediksi Rating User-based
Use-Case ID : SRF-03
Priority : High
Primary
Business Actor
:
Administrator
Description : Use case ini mendeskripsikan administrator yang ingin mengetahui
hasil prediksi rating dari user yang merupakan data testing
Precondition : Administrator berada di halaman “Hasil Prediksi”
Typical
Course of
Events :
Actor Action System Response
Step 1 : Pilih menu metode
user-based CF
Step 2 : Menampilkan pesan
dialog untuk memilih jumlah
neighbor dalam mendapatkan
hasil prediksi rating
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
152
Step 3 : Memilih jumlah
neighbor
Step 4 : Menampilkan hasil
prediksi rating berdasarkan
jumlah neighbor yang dipilih
administrator
Alternative : Jika nilai similaritas belum dihitung maka tampil pesan dialog lalu
administrator akan diarahkan pada fitur “Hitung Similaritas” untuk
User-based
Postcondition : Administrator mendapatkan hasil perhitungan prediksi berdasarkan
jumlah neighbor yang sudah dipilih
4.1.2.4. Hitung Similaritas Movie
Use-Case Name : Hitung Similaritas Movie
Use-Case ID : SRF-04
Priority : High
Primary
Business Actor
:
Administrator
Description :
Use case ini mendeskripsikan administrator yang akan
menggunakan fitur perhitungan similaritas pada setiap item (movie)
yang ada di basis data, dengan perhitungan Peason Correlation
pada item-based CF.
Precondition : Administrator berada di halaman “Item-based” pada menu
“Similaritas Movie”
Typical
Course of
Events :
Actor Action System Response
Step 1 : Klik tombol “Hitung
Similaritas”
Step 2 : Melakukan perhitungan
perhitungan similaritas antar
seluruh movie yang terdapat di
basisdata
Step 3 : Menampilkan
pemberitahuan telah berhasil
melakukan perhitungan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
153
Alternative : -
Postcondition : Administrator mendapatkan hasil perhitungan similaritas antar
movie
4.1.2.5. Lihat Nilai Similaritas Movie
Use-Case Name : Lihat Nilai Similarita Movie
Use-Case ID : SRF-05
Priority : Medium
Primary
Business Actor
:
Administrator
Description :
Use case ini mendeskripsikan administrator yang ingin melihat
daftar nilai similaritas antar item (movie) yang sudah dihitung
dengan metode perhitungan similaritas Peason Correlation pada
item-based CF.
Precondition : Administrator berada di halaman “Item-based”.
Typical
Course of
Events :
Actor Action System Response
Step 1 : Klik menu “Similaritas
Movie”
Step 2 : Menampilkan table nilai
kemiripan (similaritas) antar
seluruh item (movie)
Alternative : Jika nilai similaritas belum dihitung maka tampil pesan dialog lalu
administrator akan diarahkan pada fitur “Hitung Similaritas”
Postcondition : Administrator mengetahui nilai similaritas antar movie
4.1.2.6. Hitung Prediksi Rating Item-based
Use-Case Name : Hitung Prediksi Rating Item-based
Use-Case ID : SRF-06
Priority : High
Primary
Business Actor
:
Administrator
Description : Use case ini mendeskripsikan administrator yang ingin mengetahui
hasil prediksi rating dari item (movie) yang merupakan data testing
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
154
Precondition : Administrator berada di halaman “Hasil Prediksi”
Typical
Course of
Events :
Actor Action System Response
Step 1 : Pilih menu metode
item-based CF
Step 2 : Menampilkan pesan
dialog untuk memilih jumlah
neighbor dalam mendapatkan
hasil prediksi rating
Step 3 : Memilih jumlah
neighbor
Step 4 : Menampilkan hasil
prediksi rating berdasarkan
jumlah neighbor yang dipilih
administrator
Alternative : Jika nilai similaritas belum dihitung maka tampil pesan dialog lalu
administrator akan diarahkan pada fitur “Hitung Similaritas” untuk
Item-based
Postcondition : Administrator mendapatkan hasil perhitungan prediksi
berdasarkan jumlah neighbor yang sudah dipilih
4.1.2.7. Cari Movie
Use-Case Name : Cari Movie
Use-Case ID : SRF-07
Priority : Medium
Primary
Business Actor
:
Administrator
Description :
Use case ini mendeskripsikan administrator yang ingin melakukan
pencarian movie tertentu pada sistem
Precondition : -
Typical
Course of
Actor Action System Response
Step 1 : Pilih menu “Pencarian”
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
155
Events : Step 2 : Menampilkan form
pencarian
Step 3 : Mengisi kata kunci
pencarian film berdasarkan
beberapa kategori (judul,
genre)
Step 4 : Melakukan pencarian
film yang sesuai kata kunci yang
diinputkan
Step 5 : Menampilkan hasil
pencarian film
Alternative : Jika film tidak ditemukan maka akan tampil pesan dialog
Postcondition : Administrator berhasil melakukan pencarian film.
4.1.2.8. Lihat Rating User
Use-Case Name : Lihat Rating User
Use-Case ID : SRF-08
Priority : Medium
Primary
Business Actor
:
Administrator
Description :
Use case ini mendeskripsikan administrator yang ingin melihat
rating yang telah diberikan user tertentu atau rating yang dimiliki
oleh movie tertentu pada data training yang terdapat di basis data
Precondition : -
Typical
Course of
Events :
Actor Action System Response
Step 1 : Pilih menu “Daftar
Rating”
Step 2 : Menampilkan form
untuk melihat daftar rating
berdasarkan user atau movie
Step 3 : Mengisi kata kunci
pencarian daftar rating
berdasarkan user atau movie.
Lalu klik tombol cari
Step 4 : Melakukan pencarian
daftar rating yang sesuai kata
kunci yang diinputkan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
156
Step 5 : Menampilkan hasil
daftar rating
Alternative : Jika daftar rating tidak ditemukan maka akan tampil pesan dialog
Postcondition : Administrator berhasil mendapatkan daftar rating yang terdapat di basis data.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
157
LAMPIRAN 2 : Hasil Uji Validasi Program
Lampiran ini menjabarkan tentang uji validasi program dengan cara
melakukan perbandingan antara hasil perhitungan manual dengan hasil perhitungan
yang dikerjakan oleh sistem aplikasi website.
Perhitungan Metode user-based CF :
1. Perhitungan similaritas
Langkah pertama yang dilakukan pada metode user-based CF adalah
melakukan perhitungan similaritas antara pengguna 1 dengan pengguna
lainnya dengan rumus 2.1.
Penulis mengambil sampel perhitungan similaritas antara pengguna 1
dan 2.
➢ Pertama-tama penulis melakukan eksekusi query untuk
mendapatkan nilai rata-rata dari semua rating yang telah diberikan
oleh pengguna 1 dan 2. Hal ini dilakukan untuk proses perhitungan
similaritas Pearson Correlation pada rumus 2.1. Berikut adalah
query tersebut pada query 5.10 :
SELECT avg(rating) FROM `ratings` WHERE user_id = 1
SELECT avg(rating) FROM `ratings` WHERE user_id = 2
Query 5.10 Mengambil nilai rata-rata
Dari hasil eksekusi query didapatkan nilai rata-rata rating pengguna
1 dan 2 sebesar 3.6067 dan 3.6552 termuat dalam gambar 5.79
berikut :
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
158
Gambar 5.79 Hasil eksekusi query rata-rata rating pengguna 1
(kiri) dan penguna 2 (kanan)
➢ Dari kedua data riwayat rating dari pengguna 1 dan 2, ditemukanlah
interseksi rating berupa himpunan data rating keduanya. Hal itu
diketahui dengan cara eksekusi query. Berikut adalah query tersebut
pada query 5.11 :
SELECT movie_id FROM `ratings` WHERE user_id = 1 and
movie_id IN (SELECT movie_id from ratings WHERE user_id =
2) ORDER by movie_id
Query 5.11 Mengambil interseksi rating pengguna 1 dan 2
Hasil eksekusi query dapat dilihat pada gambar 5.80 di bawah ini
Gambar 5.80 Eksekusi query mencari interseksi rating pengguna 1
dan 2
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
159
Diketahui dari gambar 5.80 bahwa terdapat 16 film yang telah di-
rating oleh keduanya. Rating terhadap ke-16 film tersebutlah yang
menjadi interseksi untuk selanjutnya dilakukan perhitungan
similaritas.
Berikut adalah table 5.4 yang menampilkan interseksi tersebut :
Table 5.4 Interseksi rating antara pengguna 1 dan 2
No. Movie ID Rating pengguna 1 Rating pengguna 2
1. 1 5 4
2. 10 3 2
3. 13 5 4
4. 14 5 4
5. 19 5 3
6. 25 4 4
7. 100 5 5
8. 111 5 4
9. 127 5 5
10. 237 2 4
11. 242 5 5
12. 255 2 4
13. 257 4 4
14. 258 5 3
15. 269 5 4
16. 272 3 5
Table 5.4 memuat informasi tentang 16 film yang sudah keduanya
berikan rating, serta nilai rating dari keduanya terhadapa 16 film
tersebut. Data inilah yang digunakan untuk menghitung nilai
similaritas antara keduanya dengan rumus 2.1 berikut :
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
160
Nilai similaritas / PC(1, 2) ➔
(5 − 3.6067)(4 − 3.6552) + (3 − 3.6067)(2 − 3.6552) + (5 − 3.6067)(4 − 3.6552) + (5 − 3.6067)(4 − 3.6552) + (5 − 3.6067)(3 − 3.6552)
√(5 − 3.6067)2 + (3 − 3.6067)2 + (5 − 3.6067)2 + (5 − 3.6067)2 + (5 − 3.6067)2 + (4 − 3.6067)2 + (5 − 3.6067)2 + (5 − 3.6067)2 + (5 − 3.6067)2 + (2 − 3.6067)2
(4 − 3.6067)(4 − 3.6552) + (5 − 3.6067)(5 − 3.6552) + (5 − 3.6067)(4 − 3.6552) + (5 − 3.6067)(5 − 3.6552) + (2 − 3.6067)(4 − 3.6552)
√+(5 − 3.6067)2 + (2 − 3.6067)2 + (4 − 3.6067)2 + (5 − 3.6067)2 + (5 − 3.6067)2 + (3 − 3.6067)2 × √(4 − 3.6552)2 + (2 − 3.6552)2 + (4 − 3.6552)2
(5 − 3.6067)(5 − 3.6552) + (2 − 3.6067)(4 − 3.6552) + (4 − 3.6067)(4 − 3.6552)
√+(4 − 3.6552)2(3 − 3.6552)2 + (4 − 3.6552)2 + (5 − 3.6552)2 + (4 − 3.6552)2 + (5 − 3.6552)2 + (4 − 3.6552)2
(5 − 3.6067)(3 − 3.6552) + (5 − 3.6067)(4 − 3.6552) + (3 − 3.6067)(4 − 3.6552)
√+(5 − 3.6552)2 + (4 − 3.6552)2 + (4 − 3.6552)2 + (3 − 3.6552)2 + (4 − 3.6552)2 + (5 − 3.6552)2
Nilai similaritas / PC(1, 2) ➔ 5.548957440000001
17.462827419147544 ➔ 0.31775824766587973
Perhitungan manual yang dilakukan untuk menghitung nilai similaritas antara pengguna 1 dan 2 adalah sebesar
0.31775824766587973, kemudian penulis akan mencocokkan hasil tersebut dengan hasil perhitungan yang dilakukan oleh sistem
website.
Skenario pencocokkan adalah dengan melakukan pencarian nilai similaritas di halaman User-based pada sistem (gambar 5.45)
untuk pengguna 1 dan 2. Penggambaran skenario dapat dilihat pada gambar 5.81 :
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
161
Gambar 5.81 Skenario pencarian nilai similaritas antara pengguna 1 dan 2
Gambar 5.82 Hasil pencarian skenario
Dapat dilihat pada gambar 5.81, kotak merah adalah kolom
pencarian nilai similaritas. Pada kolom tersebut diisikan pengguna 1
dan 2. Lalu pada gambar 5.82 diketahui bahwa hasil perhitungan
similaritas pada sistem adalah bernilai : 0.31775824766587973.
Hal ini membuktikan bahwa perhitungan manual dan perhitungan
pada sistem sudah tervalidasi sesuai dan benar.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
162
2. Perhitungan prediksi dari data testing
Pada skenario perhitungan prediksi ini, penulis memilih sampel yaitu
data testing dengan ID = 10. Data testing ini memuat informasi yaitu :
pengguna 6 telah me-rating film 86 sebesar 3. Informasi tersebut dapat
dilihat pada gambar 5.83 berikut :
Gambar 5.83 Sampel data testing
Pada gambar 5.83, kotak merah menunjukkan informasi yang dimiliki
oleh ID testing 10 untuk kemudian penulis akan melakukan perhitungan
prediksi rating pada data ini.
➢ Menentukan jumlah maksimal neighbor untuk melakukan
perhitungan prediksi adalah 10 neighbor. 10 neighbor tersebut
adalah 10 pengguna lain selain pengguna 6 yang telah me-rating
film 86, serta nilai similaritas di antara keduanya adalah di atas 0.
➢ Eksekusi query pada basis data MySQL untuk mendapatkan data
pengguna lain yang memiliki nilai similaritas paling tinggi serta
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
163
telah me-rating film 86. Berikut adalah query tersebut pada query
5.12 :
SELECT us.user_id_1 AS "PENGGUNA 1", us.user_id_2 AS
"PENGGUNA 2", r.rating AS "RATING PENGGUNA 2",
us.user_similarity_value AS "NILAI SIMILARITAS" FROM
user_similarity us JOIN ratings r on (us.user_id_2 = r.user_id)
WHERE user_id_1 = 6 and user_similarity_value > 0 and
user_id_2 IN (select user_id from ratings where movie_id = 86)
and movie_id = 86 order by user_similarity_value desc
Query 5.12 Menampil neighbor pengguna 6 yang memenuhi syarat
perhitungan prediksi
Hasil eksekusi query dapat dilihat pada gambar 5.84 berikut :
Gambar 5.84 Rating dan nilai similaritas 10 neighbor
Dari gambar 5.84, diketahui 10 neighbor dengan nilai similaritas
tinggi terhadap pengguna 6 dan juga telah me-rating film 86.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
164
➢ Mulai proses perhitungan prediksi sesuai rumus 2.3.
Prediksi rating terhadap ID testing 10 ➔
(5 ∗ 0.6847301712094216) + (5 ∗ 0.5738670800152608) + (3 ∗ 0.5361968577341616)
|0.6847301712094216| + |0.5738670800152608| + |0.5361968577341616|
+ (5 ∗ 0.5350274996778185) + (4 ∗ 0.4937421271751433) + (4 ∗ 0.4934875497613757)
+ |0.5350274996778185| + |0.4937421271751433| + |0.4934875497613757|
+ (5 ∗ 0.4910138041833631) + (2 ∗ 0.46087833210461404) + (5 ∗ 0.45050212291591035)
+ |0.4910138041833631| + |0.46087833210461404| + |0.45050212291591035|
+ (2∗0.4445662744442587)
+ |0.4445662744442587| ➔
21.04410188405518
5.164011819221328 ➔
4.075145956429741
Dari perhitungan manual yang dilakukan, diketahui hasil prediksi
untuk data testing dengan 10 adalah 4.075145956429741
dibulatkan menjadi 4.08.
Lalu penulis melakukan pengecekkan terhadap hasil perhitungan
sistem pada halaman Prediksi untuk user-based CF (gambar 5.55)
dengan skenario seperti pada gambar 5.85 :
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
165
Gambar 5.85 Prediksi rating untuk ID testing 10
Pada gambar 5.85, diketahui jumlah maksimal neighbor adalah 10.
Data testing dengan ID = 10 menunjukkan nilai prediksi yang sama
dengan perhitungan manual, yaitu 4.075145956429741. Hal ini
membuktikan bahwa perhitungan manual dan perhitungan pada
sistem sudah tervalidasi sesuai dan benar.
3. Perhitungan MAE
Pada uji coba perhitungan prediksi metode user-based CF, didapatkan
hasil prediksi untuk data testing ID = 10 adalah 4.075145956429741
sementara rating real adalah 3.
Nilai MAE sesuai rumus 2.5 dari sampel tersebut adalah :
| 4.075145956429741−3 |
1 = 1.075145956429741 (dibulatkan menjadi 1.08)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
166
Perhitungan Metode item-based CF :
1. Perhitungan similaritas
Langkah pertama yang dilakukan pada metode item-based CF adalah
melakukan perhitungan similaritas antara film 1 dengan film lainnya
dengan rumus 2.3.
Penulis mengambil sampel perhitungan similaritas antara film 1 dan 6.
➢ Pertama-tama penulis melakukan eksekusi query untuk
mendapatkan nilai rata-rata dari semua rating yang dimiliki oleh
film 1 dan 6. Hal ini dilakukan untuk proses perhitungan similaritas
Pearson Correlation pada rumus 2.3. Berikut adalah query tersebut
pada query 5.13 :
SELECT avg(rating) FROM `ratings` WHERE movie_id = 1
SELECT avg(rating) FROM `ratings` WHERE movie_id = 6
Query 5.13 Mengambil nilai rata-rata
Dari hasil eksekusi query didapatkan nilai rata-rata rating film 1 dan
6 sebesar 3.8804 dan 3.56 termuat dalam gambar 5.86 berikut :
Gambar 5.86 Hasil eksekusi query rata-rata rating film 1 (kiri) dan
film 6 (kanan)
➢ Dari kedua data rating yang dimiliki oleh film 1 dan 6, ditemukanlah
interseksi rating berupa himpunan data rating keduanya. Hal itu
diketahui dengan cara eksekusi query. Berikut adalah query tersebut
pada query 5.14 :
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
167
SELECT user_id FROM `ratings` WHERE movie_id = 1 and
user_id IN (SELECT user_id from ratings WHERE movie_id =
6) ORDER by user_id
Query 5.14 Mengambil interseksi rating film 1 dan 6
Hasil eksekusi query dapat dilihat pada gambar 5.87 di bawah ini
Gambar 5.87 Eksekusi query mencari interseksi rating pengguna 1
dan 2
Diketahui dari gambar 5.87 bahwa terdapat 13 pengguna yang telah
me-rating kedua film. Rating dari ke-13 pengguna tersebutlah yang
menjadi interseksi untuk selanjutnya dilakukan perhitungan
similaritas.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
168
Berikut adalah table 5.5 yang menampilkan interseksi tersebut :
Table 5.5 Interseksi rating antara film 1 dan 6
No. User ID Rating terhadap
film 1
Rating terhadap
film 6
1. 1 5 5
2. 18 5 5
3. 63 3 3
4. 79 4 4
5. 181 3 1
6. 198 4 2
7. 486 4 4
8. 537 2 2
9. 655 2 4
10. 773 3 3
11. 806 4 2
12. 870 5 4
13. 936 4 5
Table 5.5 memuat informasi tentang 13 pengguna yang telah
memberikan rating kepada kedua film, serta nilai rating dari ke-13
pengguna tersebut. Data inilah yang digunakan untuk menghitung
nilai similaritas antara keduanya dengan rumus 2.2 berikut :
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
169
Nilai similaritas / PC(1, 6) ➔
(5 − 3.8804)(5 − 3.56) + (5 − 3.8804)(5 − 3.56) + (3 − 3.8804)(3 − 3.56) + (4 − 3.8804)(4 − 3.56) + (3 − 3.8804)(1 − 3.56) + (4 − 3.8804)(2 − 3.56)
√(5 − 3.8804)2 + (5 − 3.8804)2 + (3 − 3.8804)2 + (4 − 3.8804)2 + (3 − 3.8804)2 + (4 − 3.8804)2 + (4 − 3.8804)2 + (2 − 3.8804)2 + (2 − 3.8804)2 + (3 − 3.8804)2
+(4 − 3.8804)(4 − 3.56) + (2 − 3.8804)(2 − 3.56) + (2 − 3.8804)(4 − 3.56) + (3 − 3.8804)(3 − 3.56) + (4 − 3.8804)(2 − 3.56) + (5 − 3.8804)(4 − 3.56)
√+(5 − 3.8804)2 + (5 − 3.8804)2 + (4 − 3.8804)2 × √(5 − 3.56)2 + (5 − 3.56)2 + (3 − 3.56)2 + (4 − 3.56)2 + (1 − 3.56)2 + (2 − 3.56)2 + (4 − 3.56)2 + (2 − 3.56)2
+(4 − 3.8804)(5 − 3.56)
√+(4 − 3.56)2 + (3 − 3.56)2 + (2 − 3.56)2 + (4 − 3.56)2 + (5 − 3.56)2
Nilai similaritas / PC(1, 6) ➔ 8.967311999999998
16.855856440577085 ➔ 0.5319997848589287
Perhitungan manual yang dilakukan untuk menghitung nilai similaritas antara film 1 dan 6 adalah sebesar 0.5319997848589287,
kemudian penulis akan mencocokkan hasil tersebut dengan hasil perhitungan yang dilakukan oleh sistem website.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
170
Skenario pencocokkan adalah dengan melakukan pencarian nilai
similaritas di halaman Item-based pada sistem (gambar 5.48) untuk
film 1 dan 6. Penggambaran skenario adalah pada gambar 5.88 :
Gambar 5.88 Skenario pencarian nilai similaritas antara film 1 dan 6
Gambar 5.89 Hasil pencarian skenario
Dapat dilihat pada gambar 5.88, kotak merah adalah kolom
pencarian nilai similaritas. Pada kolom tersebut diisikan film 1 dan
6. Lalu pada gambar 5.89 diketahui bahwa hasil perhitungan
similaritas pada sistem adalah bernilai : 0.5319997848589287.
Hal ini membuktikan bahwa perhitungan manual dan perhitungan
pada sistem sudah tervalidasi sesuai dan benar.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
171
2. Perhitungan prediksi dari data testing
Pada skenario perhitungan prediksi ini, penulis memilih sampel yaitu
data testing yang sama dengan skenario pada metode user-based CF,
dengan ID = 10. Data testing ini memuat informasi yaitu : pengguna 6
telah me-rating film 86 sebesar 3. Informasi data testing dapat dilihat
pada gambar 5.83
➢ Menentukan jumlah maksimal neighbor untuk melakukan
perhitungan prediksi adalah 10 neighbor. 10 neighbor tersebut
adalah 10 film lain selain film 86 yang telah di-rating oleh pengguna
6, serta nilai similaritas di antara keduanya adalah di atas 0.
➢ Eksekusi query pada basis data MySQL untuk mendapatkan data
film lain yang memiliki nilai similaritas paling tinggi dan di atas 0,
serta telah di-rating oleh pengguna 6. Berikut adalah query tersebut
pada query 5.15 :
SELECT ms.movie_id_1 AS "FILM 1", ms.movie_id_2 AS
"FILM 2", r.rating AS "RATING FILM 2",
ms.movie_similarity_value AS "NILAI SIMILARITAS" FROM
movie_similarity ms JOIN ratings r on (ms.movie_id_2 =
r.movie_id) WHERE movie_id_1 = 86 and
movie_similarity_value > 0 and movie_id_2 IN (select movie_id
from ratings where user_id = 6) and user_id = 6 order by
movie_similarity_value desc
Query 5.15 Menampil neighbor film 86 yang memenuhi syarat
perhitungan prediksi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
172
Hasil eksekusi query dapat dilihat pada gambar 5.90 berikut :
Gambar 5.90 Rating dan nilai similaritas 10 neighbor
Dari gambar 5.90, diketahui 10 neighbor dengan nilai similaritas
tinggi terhadap film 86 dan juga telah di-rating oleh pengguna 6.
➢ Mulai proses perhitungan prediksi sesuai rumus 2.4.
Prediksi rating terhadap ID testing 10 ➔
(4 ∗ 0.8010880803458422) + (3 ∗ 0.734971065845592) + (4 ∗ 0.7131492914937259)
|0.8010880803458422| + |0.734971065845592| + |0.7131492914937259|
+ (3 ∗ 0.6937302630252686) + (4 ∗ 0.5927894285830685) + (1 ∗ 0.5635153212495143)
+ |0.6937302630252686| + |0.5927894285830685| + |0.5635153212495143|
+ (4 ∗ 0.5607360373776571) + (4 ∗ 0.5554578494659848) + (4 ∗ 0.5281494025018356)
+ |0.5635153212495143| + |0.5554578494659848| + |0.5281494025018356|
+ (4 ∗ 0.5216086389400081)
+ |0.5216086389400081| ➔
21.94153422269458
6.265195378828497 ➔
3.5021308827558606
Dari perhitungan manual yang dilakukan, diketahui hasil prediksi
untuk data testing dengan 10 adalah 3.5021308827558606
dibulatkan menjadi 3.5.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
173
Lalu penulis melakukan pengecekkan terhadap hasil perhitungan
sistem pada halaman Prediksi untuk item-based CF (gambar 5.58)
dengan skenario seperti pada gambar 5.91 :
Gambar 5.91 Prediksi rating untuk ID testing 10
Pada gambar 5.91, diketahui jumlah maksimal neighbor adalah 10.
Data testing dengan ID = 10 menunjukkan nilai prediksi yang sama
dengan perhitungan manual, yaitu 3.5021308827558606. Hal ini
membuktikan bahwa perhitungan manual dan perhitungan pada
sistem sudah tervalidasi sesuai dan benar.
3. Perhitungan MAE
Pada uji coba perhitungan prediksi metode item-based CF, didapatkan
hasil prediksi untuk data testing ID = 10 adalah 3.5021308827558606
sementara rating real adalah 3.
Nilai MAE sesuai rumus 2.5 dari sampel tersebut adalah :
| 3.5021308827558606−3 |
1 = 0.5021308827558606 (dibulatkan menjadi
0.5)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI