Anda di halaman 1dari 197

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

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

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

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

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.

1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

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

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

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

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

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.

6
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

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

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

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 𝑅𝑣,𝑖 × 𝑠𝑖𝑚(𝑢,𝑣)
𝑃(𝑢,𝑖) = ∑𝑛
…………….. (2.3)
𝑖=1 | 𝑠𝑖𝑚 (𝑢,𝑣 ) |

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 𝑅𝑢,𝑗 × 𝑠𝑖𝑚(𝑖,𝑗)
𝑃(𝑢,𝑖) = ∑𝑛
……………..(2.4)
𝑖=1 | 𝑠𝑖𝑚 (𝑖,𝑗 ) |

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

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

15
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

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

21
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


NOT NULL,
1. Movie_ID int 11
PRIMARY KEY
2. Title varchar 255
3. Release_Date date

4.2.3.2. Table Genre

No. Atribut Type Length Constraint


NOT NULL,
1. Genre_ID int 11
PRIMARY KEY
2. Name varchar 255

4.2.3.3. Table Movie_Similarity

No. Atribut Type


Length Constraint
NOT NULL,
PRIMARY
1. Movie_Similarity_ID int 11
KEY, AUTO
INCREMENT
NOT NULL,
2. Movie_ID_1 int 11 FOREIGN
KEY
NOT NULL,
3. Movie_ID_1 int 11 FOREIGN
KEY
4. Movie_Similarity_Value double NOT NULL

4.2.3.4. Table Genre_Movie

No. Atribut Type Length Constraint


NOT NULL,
1. ID int 11
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


NOT NULL,
1. Occupation_ID int 11
PRIMARY KEY
2. Name varchar 255

4.2.3.6. Table User

No. Atribut Type Length Constraint


NOT NULL,
1. User_ID int 11
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


NOT NULL,
User_Similari PRIMARY
1. int 11
ty_ID KEY, AUTO
INCREMENT
NOT NULL,
2. User_ID_1 int 11 FOREIGN
KEY
NOT NULL,
3. User_ID_1 int 11 FOREIGN
KEY
User_Similari
4. double NOT NULL
ty_Value

4.2.3.8. Table Rating

No. Atribut Type Length Constraint


NOT NULL,
1. ID int 11
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


NOT NULL,
1. ID_Testing int 11
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


NOT NULL,
PRIMARY
1. Prediction_ID int 11
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
UserBased.java
2. Menghitung similarity
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 :
5+1+2+2
Rata-rata rating John = = 2.5
4
1+5+2+5+5
Rata-rata rating Lucy = =
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

−10
PC(John, Lucy) =
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
= 2
0.51450

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
=3
4

Rata-rata rating untuk film Forrest Gump =


2+5+5
=4
3
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
= 3
0.948683298

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 :

| 3−2 |
MAE untuk prediksi metode user-based CF = 1
=1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

68

| 3−3 |
MAE untuk prediksi metode item-based CF = 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 Hasil_prediksi_item_base.jsp
- - topN : selectbox
- method_type : hidden
+ - cari : button
+ get PredictionControl

User_base.jsp
- userID : text
- cari : button Pencarian.jsp
- user1 : text - title : text
- user2 : text - tampil : button
- cari : button - genreID : selectbox
- hitungSimilaritas : button - tampil : button
+ get UserBasedControl + get MovieControl

Item_base.jsp Daftar_rating.jsp
- movieID : text - userID : number
- cari : button - jenisRating : radiobutton
- movie1 : text - tampil : button
- movie2 : text - movieID : number
- cari : button - jenisRating : radiobutton
- hitungSimilaritas : button - tampil : button
+ get ItemBasedControl + get RatingControl

Hasil_prediksi_user_base.jsp
- topN : selectbox
- method_type : hidden
- cari : button
+ get PredictionControl
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

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>

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
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

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
)

84
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
UserBased.java
2. Menghitung similarity
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
MAE Lama Waktu Running
Neighbor (Top-N)
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 0.802709142 2.815 detik (Gambar 5.35)
condition)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

134

Perbandingan Uji MAE Pada Metode User-


based CF
0.83
0.82
0.81
MAE

0.8
0.79
0.78
10 30 50 70 100 All
Neighbor
Jumlah Maksimal Neighbor

User-based CF

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
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


MAE Lama Waktu Running
(Top-N)
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
0.794503596 1.586 detik (Gambar 5.39)
(all neighbor with condition)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

137

Perbandingan Uji MAE Pada Metode Item-


based CF
0.84
0.82
MAE

0.8
0.78
0.76
10 30 50 70 100 All
Neighbor
Jumlah Maksimal Neighbor

Item-based CF

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
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

Perbandingan Uji MAE Pada Kedua Metode


0.835
0.83
0.825
0.82
0.815
MAE

0.81
0.805
0.8
0.795
0.79
10 30 50 70 100 All
Neighbor
Jumlah Maksimal Neighbor

User-based CF Item-based CF

Gambar 5.74 Grafik garis hasil MAE terhadap jumlah maksimal neighbor
pada kedua metode
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

140

Perbandingan Lama Waktu Running Pada


Kedua Metode
3000
Lama Waktu Running (detik)

2500

2000

1500

1000

500

0
10 30 50 70 100 All
Neighbor
Jumlah Maksimal Neighbor

User-based CF Item-based CF

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
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

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.

145
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
Administrator
Business Actor
:
Use case ini mendeskripsikan administrator yang akan
Description : 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”

Actor Action System Response


Step 1 : Klik tombol “Hitung
Similaritas”
Step 2 : Melakukan perhitungan
Typical perhitungan similaritas antar
Course of seluruh user yang terdapat di
Events : 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
Administrator
Business Actor
:
Use case ini mendeskripsikan administrator yang ingin melihat
Description : 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”.

Actor Action System Response


Step 1 : Klik menu “Similaritas
Typical User”
Course of Step 2 : Menampilkan table nilai
Events : 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
Administrator
Business Actor
:
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”

Actor Action System Response


Step 1 : Pilih menu metode
user-based CF
Typical
Step 2 : Menampilkan pesan
Course of
dialog untuk memilih jumlah
Events :
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
Administrator
Business Actor
:
Use case ini mendeskripsikan administrator yang akan
Description : 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”

Actor Action System Response


Step 1 : Klik tombol “Hitung
Similaritas”
Step 2 : Melakukan perhitungan
Typical perhitungan similaritas antar
Course of seluruh movie yang terdapat di
Events : 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
Administrator
Business Actor
:
Use case ini mendeskripsikan administrator yang ingin melihat
Description : 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”.

Actor Action System Response


Step 1 : Klik menu “Similaritas
Typical Movie”
Course of Step 2 : Menampilkan table nilai
Events : 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
Administrator
Business Actor
:
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”

Actor Action System Response


Step 1 : Pilih menu metode
item-based CF
Step 2 : Menampilkan pesan
dialog untuk memilih jumlah
neighbor dalam mendapatkan
Typical hasil prediksi rating
Course of
Events : 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
Administrator
Business Actor
: Use case ini mendeskripsikan administrator yang ingin melakukan
Description : pencarian movie tertentu pada sistem

Precondition : -

Actor Action System Response


Typical Step 1 : Pilih menu “Pencarian”
Course of
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
Administrator
Business Actor
: Use case ini mendeskripsikan administrator yang ingin melihat
Description : rating yang telah diberikan user tertentu atau rating yang dimiliki
oleh movie tertentu pada data training yang terdapat di basis data

Precondition : -

Actor Action System Response


Step 1 : Pilih menu “Daftar
Rating”
Step 2 : Menampilkan form
untuk melihat daftar rating
berdasarkan user atau movie
Typical
Course of Step 3 : Mengisi kata kunci
Events : 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

5.548957440000001
Nilai similaritas / PC(1, 2) ➔ ➔ 0.31775824766587973
17.462827419147544

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) 21.04410188405518
➔ ➔
+ |0.4445662744442587| 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.075145956429741 (dibulatkan menjadi 1.08)
1
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

Rating terhadap Rating terhadap


No. User ID
film 1 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

8.967311999999998
Nilai similaritas / PC(1, 6) ➔ ➔ 0.5319997848589287
16.855856440577085

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) 21.94153422269458
➔ ➔
+ |0.5216086389400081| 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 |
= 0.5021308827558606 (dibulatkan menjadi
1

0.5)

Anda mungkin juga menyukai