Implementasi Hybrid (Content Based Dan Collaborative Filtering) Pada Sistem Rekomendasi Software Antivirus Dengan Multi-Criteria Rating
IMPLEMENTASI
HYBRID (CONTENT BASED
DAN
COLLABORATIVE
FILTERING)
PADA SISTEM REKOMENDASI
SOFTWARE ANTIVIRUS
DENGAN
MULTI-CRITERIA RATING
SKRIPSI
WILDAN AFIFI
091402043
PROGRAM STUDI S1 TEKNOLOGI INFORMASI
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
MEDAN
2014
(2)
IMPLEMENTASI HYBRID (CONTENT BASED DAN COLLABORATIVE
FILTERING) PADA SISTEM REKOMENDASI SOFTWARE ANTIVIRUS
DENGAN MULTI-CRITERIA RATING
SKRIPSI
Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah Sarjana Teknologi Informasi
WILDAN AFIFI 091402043
PROGRAM STUDI S1 TEKNOLOGI INFORMASI
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
MEDAN 2014
(3)
PERSETUJUAN
Judul : IMPLEMENTASI HYBRID (CONTENT BASED
DAN COLLABORATIVE FILTERING) PADA SISTEM REKOMENDASI SOFTWARE ANTIVIRUS DENGAN MULTI-CRITERIA RATING
Kategori : SKRIPSI
Nama : WILDAN AFIFI
Nomor Induk Mahasiswa : 091402043
Program Studi : SARJANA (S1) TEKNOLOGI INFORMASI
Departemen : TEKNOLOGI INFORMASI
Fakultas : ILMU KOMPUTER DAN TEKNOLOGI
INFORMASI (FASILKOMTI) UNIVERSITAS SUMATERA UTARA
Diluluskan di
Medan, Januari 2014 Komisi Pembimbing :
Pembimbing 1 Pembimbing 2
Dr. Erna Budhiarti Nababan, M.IT. Mhd. Fadly Syahputra, B.Sc., M.Sc.IT.
NIP. - NIP 19830129 200912 1 003
Diketahui/Disetujui oleh
Program Studi S1 Teknologi Informasi Ketua,
Prof. Dr. Opim Salim Sitompul, M.Sc. NIP 19610817 198701 1 001
(4)
PERNYATAAN
IMPLEMENTASI HYBRID (CONTENT BASED DAN COLLABORATIVE FILTERING) PADA SISTEM REKOMENDASI SOFTWARE ANTIVIRUS
DENGAN MULTI-CRITERIA RATING SKRIPSI
Saya mengakui bahwa skripsi ini adalah hasil karya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.
Medan, Januari 2014
Wildan Afifi 091402043
(5)
UCAPAN TERIMA KASIH
Puji dan syukur penulis panjatkan kehadirat Allah SWT yang Maha Pengasih dan Maha Penyayang, yang telah memberikan rahmat dan hidayah-Nya sehingga penulis dapat menyelesaikan skripsi ini sebagai syarat untuk memperoleh gelar Sarjana Teknologi Informasi, Program Studi S1 Teknologi Informasi Universitas Sumatera Utara.
Penyelesaian skripsi ini tidak terlepas dari bantuan dari berbagai pihak, untuk itu, penulis ingin mengucapkan terima kasih yang sebesar-besarnya kepada:
1. Dekan dan Pembantu Dekan Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.
2. Bapak Ketua dan Sekretaris Program Studi Teknologi Informasi, Prof. Dr. Opim Salim Sitompul, M.Sc. dan Drs. Sawaluddin, M.IT.
3. Ibu Dr. Erna Budhiarti Nababan, M.IT selaku pembimbing satu dan Bapak Mohammad Fadly Syahputra, B.Sc., M.Sc.IT. selaku pembimbing dua yang telah banyak meluangkan waktu dan pemikirannya, motivasi, kritik dan saran kepada penulis.
4. Ucapan terima kasih juga ditujukan kepada Bapak Dedi Arisandy, S.T., M.Kom., dan Bapak Dani Gunawan, S.T., M.T. yang telah bersedia menjadi dosen pembanding, serta semua dosen serta pegawai di Program Studi S1 Teknologi Informasi.
5. Ucapan terimakasih yang sangat besar penulis ucapkan kepada keluarga penulis yang telah memberikan dukungan baik materil dan spiritual. Ayahanda Alm. Ir. H. Arif Wisaksono dan Ibunda Hj. Nur Hidayati yang telah membesarkan penulis dengan kasih sayang yang tak terhingga. Dan juga kepada adik penulis, Alfian Alim dan Affan Abdillah, yang selalu menjadi sumber semangat dan inspirasi di dalam penulisan skripsi ini.
6. Terima kasih juga penulis ucapkan kepada teman-teman, Satria, Aang, Mulki, Ari, Hasmi, Robert, Bagus, Rozy, Fithrah, Gilbert, Alvin, Ranap. Teman-teman badminton untuk melepaskan penat, Salman, Dhimas, Yogi, Santana, Iqbal, Bang Franheit, dan Bang Billy.
Akhir kata, penulis ucapkan terimakasih kepada semua pihak yang telah membantu menyelesaian skripsi ini yang tidak bisa penulis sebutkan satu persatu. Semoga Allah SWT membalas kebaikan kalian semua, dan semoga skripsi yang penulis buat dapat bermanfaat lebih banyak daripada biaya dan usaha yang penulis keluarkan di dalam pembuatan skripsi ini.
(6)
ABSTRAK
Berbagai sumber penyedia informasi mengenai software antivirus memiliki ratusan bahkan ribuan jumlah software antivirus yang mereka tawarkan. Sulit bagi pengguna untuk menemukan software antivirus sesuai dengan yang ia inginkan. Oleh karena itu, dibutuhkan sebuah alat bantu yang dapat memberikan alternatif dan rekomendasi kepada pengguna sesuai dengan preferensi pengguna. Sistem rekomendasi merupakan solusi dari permasalahan tersebut. Sistem rekomendasi diharapkan dapat membantu pengguna untuk menemukan software antivirus yang ia inginkan. Berdasarkan penelitian sebelumnya, sistem rekomendasi dengan metode hybrid (content based dan collaborative filtering) mampu menghasilkan rekomendasi yang bagus dan handal. Di sisi lain, berbagai teknologi sistem rekomendasi sedang gencar dikembangkan. Salah satu teknologi yang sedang gencar dikembangkan tersebut adalah sistem rekomendasi dengan multi-criteria rating. Sistem rekomendasi dengan multi-criteria rating menggunakan lebih dari satu kriteria rating sebagai basis dalam menentukan rekomendasi yang sesuai untuk pengguna. Di dalam penelitian ini, penulis akan membahas mengenai penggunaan hybrid (content based dan collaborative filtering) pada sistem rekomendasi software antivirus dengan multi-criteria rating. Hasil dari penelitian ini adalah sebuah sistem rekomendasi software antivirus yang mampu memberikan rekomendasi software antivirus yang sesuai kepada pengguna.
Kata kunci : sistem rekomendasi, multi-criteria rating, perangkat lunak antivirus, hybrid, content based, collaborative filtering.
(7)
THE IMPLEMENTATION OF HYBRID (CONTENT BASED AND COLLABRATIVE FILTERING) IN ANTIVIRUS SOFTWARE RECOMMENDATION SYSTEM USING MULTI-CRITERIA RATING
ABSTRACT
Various sources of information about antivirus software have hundreds or even thousands of number of antivirus software that they offer . It is difficult for users to find antivirus software in accordance with what they need . Therefore , a tool that can provide alternatives and recommendations to users is expected. Recommendation system is the solution to this problem. Recommendation system is expected to help users to find antivirus software matching with what he wants. According to the previous researchs, hybrid recommender system (content based and collaborative filtering) can provide good and reliable recommendation. At the same time, various technologies of this recommendation system are being intensively developed. One of that technologies that are being rapidly developed is multi-criteria rating recommendation system. Multi-criteria rating recommendation system use more than one rating criteria. In this study, the author will discuss the implementation of hybrid (content based and collaborative filtering) in antivirus software recommendation system using multi-criteria rating.The result of this research is an antivirus software recommender system that can provide appropriate recommendation to the user. Keywords: recommendation system, multi-criteria rating, antivirussoftware, hybrid, content based, collaborative filtering.
(8)
DAFTAR ISI
PERSETUJUAN ii
PERNYATAAN iii
UCAPAN TERIMA KASIH iv
ABSTRAK v
ABSTRACT vi
DAFTAR ISI vii
DAFTAR TABEL ix
DAFTAR GAMBAR x
BAB 1 PENDAHULUAN 1
1.1. Latar Belakang 1
1.2. Rumusan Masalah 2
1.3. Batasan Masalah 2
1.4. Tujuan Penelitian 3
1.5. Manfaat Penelitian 3
1.6. Metodologi Penelitian 3
1.7. Sistematika Penulisan 4
BAB 2 LANDASAN TEORI 6
2.1. Sistem Rekomendasi 6
2.2. Sistem Rekomendasi Content Based 7
2.3. Sistem Rekomendasi Collaborative Filtering 9
2.4. Sistem Rekomendasi Hybrid 11
2.4.1. Penggabungan Linear (Linear Combination) 11
2.4.2. Penggabungan secara Sekuensial (Sequential Combination) 12 2.4.3. Penggabungan secara Item-based Clustering Hybrid Method (ICHM)12 2.5. Sistem Rekomendasi dengan Multi-Criteria Rating 13 2.6. Proses Pengambilan Keputusan pada Pemilihan Software Antivirus 15
2.7. Bahasa Pemrograman PHP 16
2.8. Database 17
2.9. Data Flow Diagram (DFD) 18
2.10. Unified Modelling Language (UML 18
2.11. Penelitian Terdahulu 19
2.12. Perbedaan dengan Penelitian Terdahulu 20
BAB 3 ANALISIS DAN PERANCANGAN 21
3.1. Data Yang Digunakan 21
3.2. Use Case Diagram 21
3.3. Activity Diagram 23
3.3.1. Activity Diagram Register 23
3.3.2. Activity Diagram Login 24
3.3.3. Activity Diagram Halaman Utama 25
3.3.4. Activity Diagram Halaman Rekomendasi 26
(9)
3.3.6. Activity Diagram Logout 27 3.3.7. Activity Diagram Tambah Produk Antivirus 28 3.3.8. Activity Diagram Edit Produk Antivirus 29 3.3.9. Activity Diagram Lihat Produk Antivirus 30
3.3.10 Activity Diagram Beri Rating 31
3.4. Flowchart 32
3.4.1. Flowchart Keseluruhan Rekomendasi 32
3.4.2. Flowchart Cosine Based Similiarity (Collaborative Filtering) 37 3.4.3. Flowchart Weighted Sum (Collaborative Filtering) 39 3.4.4. Flowchart Perhitungan Bobot Feature (Content Based) 40 3.4.5. Flowchart Perhitungan Prediksi Rating (Content Based) 42
3.4.6. Flowchart Hybrid (Linear Combination) 43
3.4.7. Flowchart Penggabungan Kriteria (Fungsi Agregasi) 43
3.5. Perancangan Sistem 45
3.5.1. Kebutuhan Perangkat Lunak 45
3.5.2. Perancangan Antar Muka Perangkat Lunak 45
3.6. Perancangan Database 51
3.6.1. Perancangan Database 51
3.6.2. Relasi Antar Tabel 58
BAB 4 IMPLEMENTASI DAN PENGUJIAN SISTEM 59
4.1. Implementasi Sistem 59
4.2. Implementasi Perancangan Antarmuka 60
4.2.1. Halaman Login 60
4.2.2. Halaman Registrasi 60
4.2.3. Halaman Tutorial 61
4.2.4. Halaman Home 61
4.2.5. Halaman Rekomendasi 63
4.2.6. Halaman Spesifikasi Produk 65
4.2.7. Halaman Edit Produk 66
4.2.8. Halaman Tambah Produk 67
4.3. Pengujian Sistem 67
4.3.1. Rencana Pengujian Sistem 67
4.3.2. Hasil Pengujian Sistem 68
4.4 Pengujian Data 71
4.4.4. Persiapan Pengujian Data 72
4.4.2. Perhitungan Content Based 73
4.4.3. Perhitungan Collaborative Filtering 75
4.4.3. Perhitungan Secara Hybrid 77
4.4.5. Penggabungan Kriteria Rating 78
BAB 5 KESIMPULAN DAN SARAN 79
5.1. Kesimpulan 79
5.2. Saran 79
DAFTAR PUSTAKA 81
(10)
DAFTAR TABEL
Tabel 2.1 Tabel Item Feature 7
Tabel 2.2 Matrix User x Item pada Sistem Rekomendasi Collaborative Filtering 9
Tabel 2.3 Matrix User x Item pada Sistem Rekomendasi Multi-criteria Rating 14
Tabel 2.4 Pembagian Deteksi Virus 15
Tabel 2.5 Penelitian Terdahulu 20
Tabel 3.1 Matrix rating User x Item Sistem Rekomendasi Multi Criteria Rating 35
Tabel 3.2 Tabel Item Feature pada Sistem Rekomendasi Multi-criteria Rating 35
Tabel 3.3 Matrix User x Item Untuk Kriteria Rating Pertama 36
Tabel 3.4 Tabel Item Feature Pengguna 1 Untuk Kriteria Rating Pertama 36
Tabel 3.5 Matrix User x Item Untuk Kriteria Rating Pertama 38
Tabel 3.6 Tabel Item Feature Pengguna 1 untuk Kriteria Rating Pertama 41
Tabel 3.7 Bobot Masing-Masing Kriteria Software Antivirus 44
Tabel 4.1 Rencana Pengujian 68
Tabel 4.2 Hasil Pengujian 68
Tabel 4.3 Hasil Pengujian (Lanjutan) 69
Tabel 4.4 Hasil Pengujian (Lanjutan) 70
Tabel 4.5 Hasil Pengujian (Lanjutan) 71
Tabel 4.6 Antivirus yang Sudah Pernah Diberi Rating 72
Tabel 4.7 Antivirus yang akan Diprediksi Ratingnya 73
Tabel 4.8 yang Sudah Pernah Diberi Rating (sederhana) 73
Tabel 4.9 Antivirus yang akan Diprediksi Ratingnya (sederhana) 73
Tabel 4.10 Item Feature 114 utk kriteria rating pertama 74
Tabel 4.11 Hasil Perhitungan Bobot dengan Cara Manual 74
(11)
DAFTAR GAMBAR
Gambar 2.1 Linear Combination 12
Gambar 2.2 Sequential Combination 12
Gambar 2.3 Item-based Clustring Hybrid Method 13
Gambar 3.1 Use Case Diagram 22
Gambar 3.2 Activity Diagram Register 23
Gambar 3.3 Activity Diagram Login 24
Gambar 3.4 Activity Diagram Halaman Utama 25
Gambar 3.5 Activity Diagram Halaman Rekomendasi 26
Gambar 3.6 Activity Diagram Halaman Tutorial 27
Gambar 3.7 Activity Diagram Logout 27
Gambar 3.8 Activity Diagram Tambah Produk Antivirus 28
Gambar 3.9 Activity Diagram Edit Produk Antivirus 29
Gambar 3.10 Activity Diagram Lihat Produk Antivirus 30
Gambar 3.11 Activity Diagram Beri Rating 31
Gambar 3.12 Flowchart Rekomendasi Keseluruhan 32
Gambar 3.13 Flowchart Rekomendasi Keseluruhan (Lanjutan) 33
Gambar 3.14 Flowchart Cosine Based Similiarity 37
Gambar 3.15Flowchart Weighted Sum 39
Gambar 3.16 Flowchart Perhitungan Weight 40
Gambar 3.17 Flowchart Perhitungan Prediksi Rating (Content Based) 42
Gambar 3.18 Flowchart Hybrid Linear Combination 43
Gambar 3.19 Flowchart Fungsi Agregasi 44
Gambar 3.20 Rancangan Form Registrasi 45
Gambar 3.21 Rancangan Form Login 46
Gambar 3.22 Rancangan Halaman Utama 47
Gambar 3.23 Rancangan Halaman Tambah Produk 48
Gambar 3.24 Rancangan Halaman Lihat Produk 49
Gambar 3.25 Rancangan Halaman Penjelasan Rekomendasi 50
Gambar 3.26 Rancangan Tabel user 51
Gambar 3.27 Rancangan Tabel rating 52
Gambar 3.28 Rancangan Tabel product 53
Gambar 3.29 Rancangan Tabel brands 55
Gambar 3.30 Rancangan Tabel features 55
Gambar 3.31 Rancangan Tabel product_feature 56
Gambar 3.32 Rancangan Tabel os 56
Gambar 3.33 Rancangan Tabel osver 57
Gambar 3.34 Rancangan Tabel product_platform 57
Gambar 3.35 Rancangan Relasi Antar Tabel 58
Gambar 4.1 Halaman Login 60
Gambar 4.2 Halaman Registrasi 60
Gambar 4.3 Halaman Tutorial 61
Gambar 4.4 Halaman Home 62
(12)
Gambar 4.6 Halaman Rekomendasi 64
Gambar 4.7 Detail Rekomendasi 64
Gambar 4.8 Halaman Spesifikasi Produk 65
Gambar 4.9 Halaman Edit Produk 66
Gambar 4.10 Halaman Tambah Produk 67
Gambar 4.11 Perhitungan Bobot dengan Menggunakan Sistem 74
Gambar 4.12 Perhitungan Prediksi Content Based dengan Menggunakan Sistem 75
Gambar 4.13 Perhitungan Kemiripan Pengguna pada Sistem Rekomendasi 76
Gambar 4.14 Prediksi Rating Collaborative pada Sistem Rekomendasi Antivirus 76
Gambar 4.15 Hasil Perhitungan Hybrid oleh Sistem Rekomendasi Antivirus 77
(13)
ABSTRAK
Berbagai sumber penyedia informasi mengenai software antivirus memiliki ratusan bahkan ribuan jumlah software antivirus yang mereka tawarkan. Sulit bagi pengguna untuk menemukan software antivirus sesuai dengan yang ia inginkan. Oleh karena itu, dibutuhkan sebuah alat bantu yang dapat memberikan alternatif dan rekomendasi kepada pengguna sesuai dengan preferensi pengguna. Sistem rekomendasi merupakan solusi dari permasalahan tersebut. Sistem rekomendasi diharapkan dapat membantu pengguna untuk menemukan software antivirus yang ia inginkan. Berdasarkan penelitian sebelumnya, sistem rekomendasi dengan metode hybrid (content based dan collaborative filtering) mampu menghasilkan rekomendasi yang bagus dan handal. Di sisi lain, berbagai teknologi sistem rekomendasi sedang gencar dikembangkan. Salah satu teknologi yang sedang gencar dikembangkan tersebut adalah sistem rekomendasi dengan multi-criteria rating. Sistem rekomendasi dengan multi-criteria rating menggunakan lebih dari satu kriteria rating sebagai basis dalam menentukan rekomendasi yang sesuai untuk pengguna. Di dalam penelitian ini, penulis akan membahas mengenai penggunaan hybrid (content based dan collaborative filtering) pada sistem rekomendasi software antivirus dengan multi-criteria rating. Hasil dari penelitian ini adalah sebuah sistem rekomendasi software antivirus yang mampu memberikan rekomendasi software antivirus yang sesuai kepada pengguna.
Kata kunci : sistem rekomendasi, multi-criteria rating, perangkat lunak antivirus, hybrid, content based, collaborative filtering.
(14)
THE IMPLEMENTATION OF HYBRID (CONTENT BASED AND COLLABRATIVE FILTERING) IN ANTIVIRUS SOFTWARE RECOMMENDATION SYSTEM USING MULTI-CRITERIA RATING
ABSTRACT
Various sources of information about antivirus software have hundreds or even thousands of number of antivirus software that they offer . It is difficult for users to find antivirus software in accordance with what they need . Therefore , a tool that can provide alternatives and recommendations to users is expected. Recommendation system is the solution to this problem. Recommendation system is expected to help users to find antivirus software matching with what he wants. According to the previous researchs, hybrid recommender system (content based and collaborative filtering) can provide good and reliable recommendation. At the same time, various technologies of this recommendation system are being intensively developed. One of that technologies that are being rapidly developed is multi-criteria rating recommendation system. Multi-criteria rating recommendation system use more than one rating criteria. In this study, the author will discuss the implementation of hybrid (content based and collaborative filtering) in antivirus software recommendation system using multi-criteria rating.The result of this research is an antivirus software recommender system that can provide appropriate recommendation to the user. Keywords: recommendation system, multi-criteria rating, antivirussoftware, hybrid, content based, collaborative filtering.
(15)
BAB 1 PENDAHULUAN
1.1. Latar Belakang
Sebuah website penyedia informasi mengenai software antivirus memiliki ratusan bahkan ribuan jumlah antivirus yang mereka tawarkan. Sulit bagi pengunjung website untuk mencari antivirus yang tepat untuk mereka beli. Pengguna dihadapkan dengan banyaknya pilihan antivirus yang ada, sehingga pengguna kesulitan dalam menemukan antivirus yang ia butuhkan. Oleh karena itu, dibutuhkan sebuah sistem rekomendasi software antivirus yang mampu membantu mereka dengan memberikan rekomendasi yang tepat untuk menyelesaikan permasalahan tersebut.
Sistem rekomendasi merupakan sebuah perangkat lunak atau teknik yang menyediakan saran atau rekomendasi item yang akan berguna bagi pengguna (Ricci et al 2011). Rekomendasi yang diberikan berhubungan dengan proses pengambilan keputusan, seperti film apa yang akan ditonton, musik apa yang akan didengar, atau berita apa yang akan dibaca. Sebuah website terkenal, Amazon.com, menggunakan sistem rekomendasi untuk membangun toko online personal untuk setiap pengunjung.
Sistem Rekomendasi dapat diklasifikasikan menjadi tiga macam kategori berdasarkan pendekatan mereka terhadap perekomendasian: content-based, collaborative, dan hybrid approaches (Balabanovic dan Shoham, 1997) . Content based dan collaborative filtering memiliki kelebihan dan kekurangannya tersendiri, oleh karena itu dibangunlah sebuah metode baru, yaitu hybrid yang menggabungkan kedua metode tersebut sehingga diharapkan mampu menutupi kelemahan masing-masing metode.
Beberapa penelitian yang pernah dilakukan untuk menyelesaikan masalah sistem rekomendasi, diantaranya : Sistem Rekomendasi Content Based dengan
(16)
menggunakan Fitur Set Berbeda (Uluyagmur, 2012), Hybrid dengan metode Linear Combination (Claypool, 1999), Metode Hybrid Nearest Neighbour (Hayati, 2011), Sistem Rekomendasi dengan Multi-criteria Rating (Adomavicius, 2007).
Di dalam penelitian ini, penulis ingin mengimplementasikan metode hybrid (content based dan collaborative filtering) pada sistem rekomendasi software antivirus dengan multi-criteria rating. Metode hybrid yang diteliti adalah penggabungan linear antara metode content based dengan collaborative filtering. Rating adalah alat bagi pengguna untuk berinteraksi dengan sistem, sehingga sistem mampu mempelajari perilaku pengguna. Penggunaan multi-criteria rating diharapkan dapat memberikan hasil rekomendasi yang lebih akurat dibandingkan dengan single-criteria rating karena informasi mengenai sebuah item yang lebih lengkap (Adomavicious dan Kwon, 2007).
1.2. Rumusan Masalah
Berdasarkan penjelasan pada latar belakang, maka rumusan masalah dalam penulisan tugas akhir ini adalah bagaimana memberikan rekomendasi software antivirus kepada pengguna.
1.3. Batasan Masalah
Agar pembahasan dari penulisan ini terarah dan terhindar dari perluasan masalah, maka penulis membatasi masalah tersebut sebagai berikut:
1. Menggunakan metode hybrid (content based dan collaborative filtering) dengan kombinasi linear.
2. Menggunakan multi-criteria rating sebagai alat bagi pengguna untuk menunjukkan ketertarikan terhadap suatu software antivirus. Kriteria yang akan digunakan dalam pemberian rating adalah performance, detection, updates, dan technical support.
3. Pembangunan software fokus kepada bagaimana sistem memberikan rekomendasi. 4. Fitur Aplikasi dirancang dengan menggunakan bahasa pemrograman PHP dan
(17)
1.4. Tujuan Penelitian
Adapun tujuan dari penelitian ini adalah mengaplikasikan metode hybrid (content based dan collaborative filtering) pada sistem rekomendasi dengan multi-criteria rating.
1.5. Manfaat Penelitian
Penelitian ini diharapkan dapat memberikan manfaat bagi penulis, pembaca dan para peneliti pemula, sebagai berikut:
1. Menambah pengetahuan baru tentang multi-criteria rating recommender system. 2. Menambah pengetahuan baru tentang metode hybrid linear combination (content
based dan collaborative filtering).
3. Dapat menjadi bahan rujukan untuk penelitian selanjutnya.
1.6. Metodologi Penelitian
Penulis akan merancang dengan tahapan-tahapan metodologi penelitian sebagai berikut:
1. Studi Literatur
Pada tahap studi literatur, penulis mengumpulkan referensi-referensi yang menyulur tentang permasalahan diatas. Tahapan ini ditujukan untuk mengetahui apa yang akan dikerjakan, apa yang sudah dikerjakan oleh peneliti lain, dan bagaimana mereka menyelesaikannya, kemudian seberapa jauh pengembangan terhadap penggunaan multi criteria rating dan hybrid serta seberapa jauh yang dapat dilakukan untuk memperbaiki penelitian para peneliti lain tersebut.
2. Pengumpulan Data
Pada tahap pengumpulan data, dilakukan pengumpulan data yang mendukung dalam penyelesaian masalah yang diteliti secara sistematis.
(18)
3. Analisa dan Perancangan Sistem
Pada tahapan ini, penulis akan melakukan analisa terhadap kumpulan data yang telah dilakukan pada tahapan sebelumnya, dalam penyelesaian suatu masalah sehingga dapat merancang sebuah sistem yang akan diimplementasikan nantinya. 4. Implementasi Sistem
Pada tahap pengimplementasian sistem, penulis melakukan pengimplementasian metode hybrid (content based dan collaborative filtering) pada Sistem Rekomendasi dengan Multi-criteria rating berdasarkan pada analisa dan rancangan sebelumnya. Implementasi meliputi pembuatan sistem dalam menyelesaikan masalah yang diteliti.
5. Pengujian Sistem
Pada tahapan ini, penulis melakukan pengujian terhadap sistem yang telah dirancang untuk mengetahui kehandalan sistem tersebut dan untuk mengetahui apakah telah sesuai dengan yang diharapkan dalam penelitian ini.
6. Dokumentasi Sistem
Pada tahap dokumentasi sistem ini, penulis menyusun laporan terhadap sistem yang telah dibuat.
1.7. Sistematika Penulisan
Penulisan skripsi ini terdiri dari lima bab dengan masing-masing bab secara singkat dijelaskan sebagai berikut:
Bab I Pendahuluan
Bab ini berisi berisikan latar belakang, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metodologi penelitian dan sistematika penulisan.
(19)
Bab II Tinjauan Pustaka
Pada bab tinjauan pustaka menguraikan landasan teori, penelitian terdahulu, kerangka pikir dan hipotesis yang diperoleh dari acuan yang mendasari dalam melakukan kegiatan penelitian pada tugas akhir ini. Bab III Analisis dan Perancangan Sistem
Pada bab ini berisikan paparan analisis terhadap permasalahan dan penyelesaian persoalan terhadap metode hybrid (content based dan collaborative filtering) pada sistem rekomendasi dengan multi-criteria rating serta identifikasi kebutuhan perancangan sistem.
Bab IV Hasil dan Pembahasan
Pada bab ini berisi implementasi perancangan sistem dari hasil analisis dan perancangan yang sudah dibuat, serta menguji sistem untuk menemukan kelebihan dan kekurangan pada sistem rekomendasi yang dibuat.
Bab V Kesimpulan dan Saran
Pada bab ini berisikan kesimpulan yang didapatkan terhadap hasil penelitian skripsi dan saran untuk pengembangan lebih lanjut tentang topik terkait yang dibahas pada skripsi.
(20)
BAB 2
LANDASAN TEORI
2.1. Sistem Rekomendasi
Sistem rekomendasi merupakan sebuah perangkat lunak yang bertujuan untuk membantu pengguna 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, dan lainnya (Ricci et al, 2011).
Sistem rekomendasi pribadi (personalized recommender system) harus mengenal terlebih dahulu setiap pengguna yang ada. Setiap sistem rekomendasi harus membangun dan memelihara user model atau user profile yang berisi ketertarikan pengguna (Jannach et al, 2010). Sebagai contoh, sistem rekomendasi di website Amazon menyimpan setiap transaksi pembelian pelanggan, komentar pelanggan, dan review / rating yang diberikan oleh pelanggan terhadap suatu produk.
Terdapat dua buah pendekatan yang dapat dilakukan untuk membentuk user profile, yaitu pendekatan implicit dan explicit.
Pendekatan implicit, artinya, sistem menyimpan dan mempelajari perilaku pengguna di dalam sistem untuk membangun profil pengguna. Perilaku pengguna dapat berupa likes/dislikes, ratings, dan lain sebagainya terhadap beberapa item. Sementara pendekatan explicit, yaitu dengan menanyakan kepada pengguna secara langsung deskripsi item yang bagaimana yang ia sukai/minati.
(21)
Berbagai metode telah ditemukan untuk menyediakan rekomendasi yang handal. Berdasarkan metode rekomendasi yang sering digunakan, sistem rekomendasi dibagi dalam tiga klasifikasi yaitu: content-based recommendation, collaborative-filtering recommendation,dan hybrid recommendation.
2.2. Sistem Rekomendasi Content Based
Sistem rekomendasi berbasis konten (Content-based Recommendation System) menggunakan ketersediaan konten (sering juga disebut dengan fitur, atribut atau karakteristik) sebuah item sebagai basis dalam pemberian rekomendasi (Ricci et al, 2011). Sebagai contoh, sebuah film mempunyai konten seperti genre, author, tahun rilis, dan lain-lain, atau sebuah file dokumen memiliki konten berupa tulisan yang ada di dalamnya.
Sistem rekomendasi berbasis konten mencoba untuk melakukan pecocokan (matching) antara profil pengguna (user profile) dengan konten item (item content).
Misalnya, seorang pengguna telah memberi rating kepada 5 buah item
1, 2, 3, 4, 5 yang memiliki empat buah fitur 1, 2, 3, 4, 5. Angka 1 menandakan
bahwa item tersebut memiliki atribut yang bersangkutan, sedangkan angka 0 menunjukkan bahwa item tersebut tidak memiliki atribut tersebut.
Tabel 2.1 Tabel Item Feature
Fitur Fitur Fitur Fitur rating
Item 1 1 1 1 4
Item 1 0 1 1 3
Item 1 0 0 0 2
Item 1 0 1 1 3
Item 1 1 0 1 ?
Untuk menghitung bobot dari masing-masing atribut dapat dengan menggunakan rumus berikut (Uluyagmur et al, 2012).
, = 1
� �� , ( , )
(22)
Dimana :
, merupakan bobot yang dimiliki oleh pengguna u terhadap fitur .
� merupakan satu set item yang telah dirating oleh pengguna u.
( , ) merupakan nilai kehadiran (angka 1 atau 0) sebuah fitur di dalam sebuah item.
( , ) merupakan rating yang diberikan pengguna u terhadap item i.
Sedangkan untuk menghitung prediksi rating yang akan diberikan seorang pengguna terhadap sebuah item dapat menggunakan formula berikut ini (Uluyagmur et al, 2012).
�′ , = 1
� � � ( , )
(2.2)
Dimana :
�′ , merupakan prediksi rating pengguna u terhadap item i.
� merupakan fitur yang muncul di dalam item i.
Sistem rekomendasi berbasis konten memiliki beberapa kelebihan, yaitu :
Sistem rekomendasi berbasis konten dapat menjelaskan bagaimana hasil rekomendasi didapatkan.
Sistem rekomendasi berbasis konten dapat merekomendasikan item-item yang bahkan belum pernah di-rate oleh siapapun.
Namun, sistem rekomendasi berbasis konten juga memiliki beberapa kelemahan, yaitu :
Sistem rekomendasi berbasis konten tidak memiliki kemampuan untuk dapat memeberikan hasil rekomendasi yang tidak terduga (Serendipity Problem).
Sistem rekomendasi berbasis konten memerlukan sebuah profil user yang berisikan ketertarikan dan minat pengguna. Bagi pengguna baru yang belum pernah melakukan aktivitas apapun dan tidak memiliki profil user yang cukup, sistem rekomendasi tidak dapat memberikan rekomendasi yang handal kepadanya (Cold Start Problem).
(23)
2.3. Sistem Rekomendasi Collaborative Filtering
Ide utama dalam sistem rekomendasi collaborative filtering adalah untuk memanfaatkan opini pengguna lain yang ada untuk memprediksi item yang mungkin akan disukai/diminati oleh seorang pengguna (Ricci et al, 2011).
Kualitas rekomendasi yang diberikan dengan menggunakan metode ini sangat bergantung dari opini pengguna lain (neighbor) terhadap suatu item. Belakangan diketahui bahwa melakukan reduksi neighbor (yaitu dengan memotong neighbor sehingga hanya beberapa pengguna yang memiliki kesamaan / similiarity tertinggi sajalah yang akan digunakan dalam perhitungan) mampu meningkatkan kualitas rekomendasi yang diberikan (Adomavicious dan Kwon, 2007).
Sistem rekomendasi collaborative filtering beroperasi di dalam sebuah ruang dua dimensi User x Item. Rating yang dapat diberikan oleh seorang pengguna terhadap sebuah item dapat direpresentasikan sebagai R (bilangan bulat tidak negatif atau bilangan real dengan jarak tertentu), dan sistem rekomendasi mencoba untuk memprediksi rating yang akan diberikan seorang user untuk sebuah item yang belum pernah ia beri rating sebelumnya.
Misalnya, terdapat lima pengguna 1, 2, 3, . . 5 dan lima item 1, 2, 3, . . 5.
Sebuah sistem rekomendasi ingin memprediksi berapa rating yang akan diberikan oleh 1 kepada 5.
Tabel 2.2 Matrix User x Item pada Sistem Rekomendasi Collaborative Filtering
Item Item Item Item Item
User 5 7 5 7 ?
User 5 7 5 7 9
User 5 7 5 7 9
User 6 6 6 6 5
User 6 6 6 6 5
Terdapat sebuah cara yang sering digunakan dalam menghitung / memprediksi rating pengguna u terhadap item i dengan mengkalkulasikan rata-rata rating pengguna lain (neighbor) (Adomavicious dan Kwon, 2007), yaitu rumus weighted sum:
(24)
�′ , = 1
( , ′)
′��( ) ,
′ ∗ �( ′, ) ′∈�( )
(2.3)
Dimana:
�′( , )adalah prediksi rating pengguna u terhadap item i.
�( ′, )adalah rating penggunau’ (pengguna selain u) terhadap item i.
( , ′) adalah kemiripan antara pengguna dengan ′.
N(u) adalah satu set pengguna lain yang mirip dengan pengguna u.
Cosine-based Similiarity adalah cara terbaik untuk menghitung kemiripan dua pengguna (Adomavicious dan Kwon, 2007). Cosine-based similiarity dapat dikalkulasikan dengan formula sebagai berikut :
, ′ = � , �(
′, ) ∈�( , ′)
�( , )2
∈�( , ′) ∈�( , ′)�( ′, )2
(2.4)
Dimana:
, ′ adalah kemiripan antara pengguna dengan ′.
�( , ′) adalah satu set item yang telah di-rating oleh kedua pengguna dengan
′.
Sistem rekomendasi collaborative filtering memiliki beberapa kelebihan, diantaranya adalah :
Dapat bekerja di dalam keadaan dimana konten sulit dianalisis sekalipun.
Memiliki kemampuan untuk menghasilkan rekomendasi yang tak terduga.
Sistem rekomendasi collaborative filtering memiliki beberapa kekurangan, diantaranya adalah :
Jika terdapat item baru di dalam sistem tersebut, maka sistem tidak dapat merekomendasikan item tersebut sampai pengguna lain berminat pada item tersebut. (First Rater Problem)
Hasil rekomendasi tidak selamanya handal. Terdapat kemungkinan adanya sebuah pengguna yang hanya memiliki sedikit neighbor dengan tingkat kesamaan (similiarty) yang kecil. (Grey Sheep Problem)
(25)
Hasil rekomendasi yang tidak handal yang dikarenakan matrix rating yang jarang. (Sparsity Problem)
2.4. Sistem Rekomendasi Hybrid
Masing-masing teknik sistem rekomendasi memiliki kelebihan dan kelemahannya tersendiri. Karenanya, sistem rekomendasi hybrid yang menggabungkan kekuatan dari model dan algoritma yang berbeda untuk mengatasi masalah-masalah yang telah disebutkan di atas menjadi target penelitian yang sedang marak dikembangkan (Jannach et al, 2011).
Terdapat beberapa cara penggabungan yang dapat dilakukan dalam metode hybrid yaitu :
2.4.1. Penggabungan Linear (Linear Combination)
Penggabungan ini menggabungkan hasil perhitungan beberapa teknik rekomendasi secara linear. Penggabungan ini menghitung prediksi rating secara terpisah terlebih dahulu, kemudian hasil dari masing-masing metode tersebut digabungkan menjadi satu. Claypool et al (1999) menggunakan rumus weighted average untuk menggabungkan hasil tersebut.
� = ( 1�1+ 2�2+ . . � )/( 1+ 2+. . n) (2.5)
Dimana :
� merupakan prediksi rating hybrid
merupakan bobot prediksi rating dengan teknik/metode ke-n .
� merupakan prediksi rating dengan teknik / metode ke-n
Gambar 2.1 merupakan contoh penggambaran dari penggabungan secara linear antara teknik collaborative filtering dengan content based.
(26)
Gambar 2.1 Linear Combination
2.4.2. Penggabungan secara Sekuensial (Sequential Combination)
Penggabungan ini melakukan perhitungan pada salah satu metode terlebih dahulu (misalnya content based) , kemudian hasil dari perhitungan tersebut dihitung dengan metode berikutnya (misalnya collaborative filtering) (Hayati, 2011). Penggabungan ini digambarkan pada gambar 2.2 berikut.
Gambar 2.2 Sequential Combination
2.4.3. Penggabungan secara Item-based Clustering Hybrid Method (ICHM)
Penggabungan ini mengintegrasikan informasi item dan rating pengguna untuk menghitung kemiripan item-item (Hayati, 2011). Penggabungan ini digambarkan pada gambar 2.3.
User Profile Collaborative
Filtering Content Based
Filtering
Combination Filtering
Rating Matrix
User Profile
Collaborative Filtering
Content Based Filtering
Combination Filtering
(27)
Gambar 2.3 Item-based Clustring Hybrid Method
2.5. Sistem Rekomendasi dengan Multi-Criteria Rating
Sistem rekomendasi dengan multi-criteria rating memperluas single-criteria rating, dengan menunjukkan preferensi subjektif seorang pengguna terhadap beberapa kriteria dari sebuah item (Adomavicious dan Kwon, 2007). Sebagai contoh, sebuah sistem rekomendasi film mengizinkan seorang pengguna untuk menilai bukan hanya berdasarkan tingkat kepuasan keseluruhan sebuah film, tetapi juga tingkat kepuasan berdasarkan beberapa kriteria film, seperti visual effetcs, story, atau acting.
Beberapa contoh sistem rekomendasi multi-criteria rating yang sudah ada, yaitu : Zagat’s Guide yang menyediakan tiga kriteria untuk rating restoran (food, décor, dan service), Buy.com yang menyediakan beberapa kriteria untuk rating elektronik (display size, performance, battery life, dan cost), dan Yahoo! Movies yang menunjukkan rating setiap pengguna untuk keempat kriteria (story, action, direction, dan visual).
Untuk mempermudah pemahaman sistem rekomendasi multi-criteria rating tersebut, maka perhatikan contoh berikut :
+ Collaborative
Filtering Group
Rating
Item Rating
Item group vector
Item Content Clustering
Group Rater
Combination Filtering
(28)
Tabel 2.3 Matrix User x Item pada Sistem Rekomendasi Multi-criteria Rating
Item Item Item Item Item
User 52,2,8,8 75,5,9,9 52,2,8,8 75,5,9,9 ?
User 58,8,2,2 79,9,5,5 58,8,2,2 79,9,5,5 9
User 58,8,2,2 79,9,5,5 58,8,2,2 79,9,5,5 9
User 63,3,9,9 64,4,8,8 63,3,9,9 64,4,8,8 5
User 63,3,9,9 64,4,8,8 63,3,9,9 64,4,8,8 5
Sebuah sistem rekomendasi ingin memprediksi rating yang akan diberikan seorang pengguna 1 terhadap item 5. Pada tabel 2.3, secara sekilas, terlihat bahwa u2 dan u3 adalah yang terdekat dengan u1. Tetapi, sebenarnya u4 dan u5 lah yang
paling mirip dengan u1 (lihat multi-criteria rating-nya).
Terdapat dua penyelesaian permasalahan sistem rekomendasi dengan multi-criteria rating, yaitu similiarity based approach dan aggregation function based approach (Adomavicius dan Kwon, 2007). Jannach (2012) kemudian, dengan penelitiannya, menyatakan bahwa aggregation function based approach pada sistem rekomendasi multi-criteria rating dapat menghasilkan rekomendasi yang lebih unggul dibandingkan dengan metode lainnya.
Alasan dibalik munculnya pendekatan fungsi agregasi adalah asumsi bahwa multi-criteria rating adalah representasi dari ketertarikan pengguna untuk masing-masing kriteria pada sebuah item (Adomavicius dan Kwon, 2007). Oleh karena itu, rating keseluruhan (untuk sebuah item), bukanlah sebuah rating yang independent jika dibandingkan dengan rating kriteria lainnya, melainkan sebuah fungsi agregasi f dari masing-masing kriteria rating.
= ( 1 . . ) (2.6)
Dimana :
adalah rating keseluruhan untuk satu item
(29)
Terdapat beberapa cara untuk membangun fungsi agregasi tersebut. Cara yang pertama adalah dengan mendefinisikan sendiri fungsi aggregasi f tersebut dengan mengandalkan ahli di dalam bidangnya (domain expertise), atau dengan cara yang lebih sederhana, yaitu fungsi rata-rata dari kriteria rating yang ada (Jannach et al, 2012).
� = ( 1�1+ 2�2+ . . � )/( 1+ 2+. . n) (2.7)
Dimana :
� merupakan prediksi rating akhir (gabungan beberapa kriteria)
merupakan bobot prediksi rating kriteria ke-n .
� merupakan prediksi rating kriteria ke-n
Cara yang lebih canggih (dan lebih menjanjikan) adalah dengan menggunakan teknik statistik atau machine learning untuk mengetahui hubungan antara rating keseluruhan dengan rating untuk masing-masing kriteria.
2.6. Proses Pengambilan Keputusan pada Pemilihan Software Antivirus
Pengguna komputer pribadi maupun staf IT yang bertanggung jawab atas keamanan data di sebuah perusahaan harus mampu melakukan review dan perbandingan sebelum melakukan pengambilan keputusan untuk menggunakan sebuah produk software antivirus tertentu.
Pengguna harus mengetahui kriteria apa saja yang pokok yang harus dimiliki oleh sebuah software antivirus. Kriteria yang harus dimiliki oleh sebuah software antivirus (Castelli, 2001) antara lain adalah:
Detection, hal yang paling diinginkan oleh seorang pengguna terhadap sebuah antivirus adalah menangkap virus. Hal yang menjadi bahan perhatian adalah seberapa banyak virus yang mempu dikenali oleh sebuah antivirus, atau yang biasa disebut dengan detection rate.
Tabel 2.4 Pembagian Deteksi Virus
Virus terdeteksi Virus tidak terdeteksi Benar Virus True Positive False Negative Bukan Virus False Positive True Negative
(30)
Tabel 2.4 menjelaskan pembagian dari jenis deteksi virus. Sebagai contoh, ketika antivirus mengatakan bahwa sebuah file merupakan sebuah virus, dan file tersebut memang benar merupakan virus, berarti deteksi yang diberikan adalah True Positive. Ketika sebuah antivirus mengatakan sebuah file merupakan virus, padahal file tersebut bukan virus, maka deteksi tersebut adalah False Positive.
Technology, hal kedua yang paling penting adalah teknologi apa saja yang dipakai oleh antivirus tersebut. Beberapa teknologi yang popular dan sedang dikembangkan adalah : Real Time Protection, On-Demand Access, E-mail protection, Trojan Protection, Parental Control, Internet Security, dan lain-lain.
Maintenance, hal yang tidak kalah pentingnya adalah bagaimana vendor antivirus menjaga kualitas produk antivirus yang mereka keluarkan, dan seberapa sering update definisi virus yang mereka berikan.
Performance, banyak software antivirus yang memakan resource komputer terlalu tinggi sehingga memperlambat proses lain yang sedang berjalan. Bagi komputer di perusahaan besar, maupun komputer server, performance merupakan kriteria yang cukup penting untuk dipertimbangkan.
Technical Support, sebuah vendor antivirus yang baik menyediakan bantuan online bagi para pelanggan. Bantuan yang diberikan dapat dibagi menjadi beberapa level sesuai dengan kebutuhan dari pelanggan itu sendiri.
2.7. Bahasa Pemrograman PHP
Menurut Sibero (2011), PHP (Hypertext Preprocessor) adalah pemrograman interpreter yaitu proses penerjemahan dari kode sumber menjadi kode mesin yang dimengerti komputer pada saat baris kode dijalankan secara langsung. PHP pada awalnya ditulis menggunakan bahasa PERL (Perl Script), kemudian ditulis ulang dengan menggunakan bahasa C CGI-BIN (Common Gateway Interface-Binnary) yang bertujuan agar halaman website dapat mendukung formulir dan penyimpanan data. PHP adalah bahasa pemrograman Server Side Programming, memungkinkan sebuah website yang dibangun bersifat dinamis (Sibero, 2011).
(31)
2.8. Database
Database adalah koleksi data item yang saling terkait terkelola sebagai satu unit. Beberapa defenisi lain tentang database yaitu sebagai berikut:
Suatu pengorganisasian sekumpulan data yang saling berhubungan sehingga memudahkan aktivitas untuk memperoleh informasi (Sutanta, 2004).
Database merupakan data yang saling terhubung dan deskripsi dari data yang dirancang untuk kebutuhan organisasi (McLeod dan Schell, 2004).
Sedangkan menurut Date, database adalah record yang terkomputerisasi yang bertujuan menyediakan informasi ketika dibutuhkan (Kadir, 2003).
Penerapan database dalam sistem informasi disebut database system. Dari teori-teori tersebut dapat disimpulkan bahwa database adalah sekumpulan data yang terorganisasi dan saling terhubung untuk menyediakan informasi yang diperlukan.
Basis data (database), atau sering pula dieja basis data, adalah kumpulan informasi yang disimpan didalam komputer secara sistematik sehingga dapat diperiksa menggunakan suatu program komputer untuk memperoleh informasi dari basis data tersebut. Perangkat lunak yang digunakan untuk mengelola dan memanggil kueri (query) basis data disebut sistem manajemen basis data (Database Management System, DBMS) (Sutanta, 2004).
Sistem basis data (database system) didefinisikan sebagai sekumpulan subsistem yang terdiri atas basis data dengan para pemakai yang menggunakan basis data secara bersama-sama, personal-personal yang merancang dan mengelola basis data, teknik- teknik untuk merancang dan mengelola basis data, serta sistem komputer untuk mendukungnya (Kadir, 2003). Database system adalah sistem penyimpanan informasi yang terorganisasi dengan suatu cara sehingga memudahkan untuk proses pengolahan data (McLeod dan Schell, 2004).
DBMS adalah sebuah sistem perangkat lunak yang mengizinkan pengguna untuk mendefinisikan, membuat, memelihara, dan mengatur akses ke database. Sedangkan menurut McLeod dan Schell (2004), DBMS adalah aplikasi perangkat
(32)
lunak yang menyimpan struktur database, hubungan antardata dalam database, serta berbagai formulir laporan yang berkaitan dengan database tersebut.
2.9. Data Flow Diagram (DFD)
Dengan adanya konsep pemrograman terstruktur di dalam pembangunan software, developer dimudahkan dalam membagi-bagi fungsi, prosedur, dan modul program yang dibangun. Dalam konsep pemrograman terstruktur dikenal metode DFD (Data Flow Diagram). DFD adalah sebuah metode yang digunakan untuk merepresentasikan sebuah sistem atau perangkat lunak pada beberapa level detail. DFD lebih sesuai untuk memodelkan fungsi-fungsi dan prosedur-prosedur pada pemrograman sistem yang terstruktur (Structural Programming) (Rosa et al, 2011).
2.10. Unified Modelling Language (UML)
Untuk membantu dalam pengembangan perangkat lunak dikenal istilah pemodelan. Salah satu pemodelan yang saat ini paling banyak digunakan oleh pengembang perangkat lunak adalah UML (Unified Modelling Language). UML adalah standar bahasa yang sering digunakan dalam bidang industri untuk mendefinisikan requirement (kebutuhan), membuat analisis dan desain, serta menggambarkan arsitektur dalam pemrograman berorientasi objek.
Ada beberapa hal yang dimaksud dalam kompleksitas pada perangkat lunak (Rosa et al, 2011):
1. Kompleksitas domain atau permasalahan perangkat lunak 2. Kesulitas mengelola proses pengembangan perangkat lunak 3. Kemungkinan fleksibilitas perubahan perangkat lunak
4. Permasalahan karakteristik bagian-bagian perangkat lunak secara diskrit
UML terbagi atas 3 (tiga) kategori, yaitu diagram struktur (structure diagram), diagram kelakuan sistem (behaviour diagram), dan diagram interaksi (interaction diagram)(Rosa, et al. 2011).
(33)
2.11. Penelitian Terdahulu
Sistem rekomendasi telah ada semenjak awal tahun 1990. Berbagai penelitian telah dilakukan untuk menyempurnakan, menggabungkan, dan bahkan menemukan teknik rekomendasi baru untuk mengatasi permasalahan di dalam sistem rekomendasi yang terus berkembang.
Penulis menggunakan penelitian yang telah dibuat sebelumnya sebagai rujukan maupun pertimbangan algoritma dan metode yang tepat untuk digunakan di dalam permasalahan penelitian ini. Penulis menggunakan beberapa metode baru yang sedang berkembang. Beberapa penelitian terdahulu di bidang sistem rekomendasi yang penulis gunakan, diantaranya :
Hayati (2012) menggunakan metode hybrid (content based dan collaborative filtering) dengan algoritma k-Nearest Neighbor pada sistem rekomendasi pariwisata. Hayati menggunakan kombinasi sekuensial untuk menggabungkan kedua metode tersebut.
Uluyagmur et al (2012) telah menggunakan metode content based dengan menggunakan fitur set yang berbeda (different feature set) di dalam sistem rekomendasi film. Uluyagmur et al membangun profil pengguna, yang berupa bobot terhadap masing-masing attribut yang ada, untuk mengukur ketertarikan pengguna terhadap masing-masing attribut di dalam item.
Claypool et al (1999) menggunakan teknik linear combination untuk menggabungkan teknik content based dengan collaborative filtering di dalam sistem rekomendasi berita online.
Adomavicius dan Kwon (2007) melakukan penelitian di bidang sistem rekomendasi dengan multi-criteria rating. Adomavicius mengatakan bahwa terdapat dua buah solusi permasalahan sistem rekomendasi dengan multi-criteria rating, yaitu similiarity based approach dan aggregation function based approach.
Jannach et al (2012) melakukan penelitian berupa perbandingan antara beberapa metode penyelesaian sistem rekomendasi dengan multi-criteria rating. Aggregation function based approach merupakan salah satu metode yang berhasil diimplementasikan dan mampu menghasilkan rekomendasi yang lebih akurat dibandingkan dengan metode lainnya.
(34)
Tabel 2.5 Penelitian Terdahulu
Peneliti Metode Kasus Tahun Penelitian
Hayati Hybrid (Content Based
dan Collaborative)
Sistem Rekomendasi Pariwisata
2012 Uluyagmur et al Content Based
(Different Feature Set)
Sistem Rekomendasi Film
2012 Claypool et al Hybrid (Content Based
dan Collaborative Filtering) dengan Linear Combination Sistem Rekomendasi Berita Online 1999 Adomavicius dan Kwon
Teknik agregasi dan similiarity
Sistem Rekomendasi dengan Multi-criteria Rating
2007
Jannach et al Berbagai teknik (untuk membandingkan beberapa teknik) Sistem Rekomendasi dengan Multi-criteria Rating 2012
2.12. Perbedaan dengan Penelitian Terdahulu
Hayati (2012) menggunakan metode hybrid (content based dan collaborative filtering) dengan menggunakan algoritma k-Nearest Neighbor. Hayati menggunakan kombinasi sekuensial untuk menggabungkan antara content based dengan collaborative filtering. Hayati (2012) menggunakan cara explicit untuk membangun profil pengguna (user profile), yaitu dengan menyediakan formulir preferensi agar pengguna dapat mendeskripsikan secara langsung tujuan wisata bagaimana yang ia inginkan.
Claypool et al (2012) menggunakan metode content based pada sistem rekomendasi dengan fitur set berbeda. Sistem rekomendasi yang dibangun olehnya mempelajari preferensi setiap pengguna yang ada (user profile) berdasarkan histori lihat (watch history) pengguna. Kemudian, dengan menggunakan user profile tersebut, sistem rekomendasi menghitung prediksi seberapa besar ketertarikan pengguna terhadap semua film yang belum pernah ia lihat sebelumnya.
Di dalam penelitian ini, peneliti menggunakan metode hybrid (content based dan collaborative filtering) pada sistem rekomendasi dengan multi-criteria rating. Berbeda dengan Hayati (2012), penulis menggunakan kombinasi linear untuk menggabungkan kedua metode tersebut. Selain itu, peneliti menggunakan cara implicit untuk membangun profil pengguna (user profile), yaitu dengan mempelajari rating yang diberikan pengguna terhadap beberapa produk software antivirus. Multi-criteria rating penulis terapkan untuk menghasilkan rekomendasi yang lebih handal.
(35)
BAB 3
ANALISIS DAN PERANCANGAN
Bab ini akan membahas tentang data yang digunakan, Use Case Diagram untuk melihat semua interaksi pengguna terhadap sistem, Data Flow Diagram (DFD) yang merupakan diagram yang menunjukkan aliran data di dalam sistem, flowchart algoritma yang digunakan di dalam sistem rekomendasi multi-criteria rating dengan menggunakan metode Hybrid (Content Based and Collaborative Filtering), perancangan database, dan perancangan antarmuka pemakai (user interface).
3.1. Data Yang Digunakan
Data yang digunakan untuk membangun Sistem Rekomendasi Software Antivirus berasal dari berbagai website (www.amazon.com, cnet, av-comparatives, pc-magazine dan berbagai datasheets) yang berjumlah lebih dari 100 buah produk.
Selain itu, sistem ini juga menggunakan data pengguna sebanyak 100 buah pengguna. Setiap produk memiliki empat buah kriteria untuk diberi rating. Jumlah rating yang terdapat di dalam sistem berjumlah 4000 buah rating.
3.2. Use Case Diagram
Use Case Diagram adalah representasi dari interaksi pengguna dengan sistem yang bertujuan untuk menunjukkan kepada pengguna aktivitas apa saja yang dapat dilakukan di dalam sebuah sistem. Gambar 3.1 berikut merupakan Use Case Diagram dari Sistem Rekomendasi Software Antivirus.
(36)
Anggota
Register
Login
Lihat Produk Tambah Produk
Halaman Utama
Halaman Rekomendasi
<<include>> <<extend>>
Beri Rating <<include>>
Administrator
Edit Produk <<extend>> Halaman Tutorial
<<extend>>
<<extend>>
<<extend>>
Logout <<include>>
Gambar 3.1 Use Case Diagram
Dari gambar 3.1, terdapat dua aktor yang dapat menggunakan sistem ini, yaitu anggota dan administrator. Gambar tersebut juga menjelaskan relasi beberapa use case yang ada. Berikut ini akan dijelaskan masing-masing use case tersebut :
Register, yaitu mendaftarkan diri sebagai anggota.
Login, yelakukan verifikasi pengguna sebelum menggunakan sistem.
Halaman Utama, yaitu mengunjungi halaman utama sistem rekomendasi software antivirus. Halaman ini menampilkan list antivirus, rekomendasi, dan menu utama.
Halaman Tutorial, yaitu mengunjungi halaman tutorial sistem rekomendasi software antivirus. Halaman ini berisi informasi mengenai tutorial penggunaan sistem tersebut.
Halaman Rekomendasi, yaitu mengunjungi halaman rekomendasi yang menampilkan prediksi rating untuk seluruh item beserta metode dan penjabaran untuk perhitungannya.
Tambah Produk, yaitu mendaftarkan produk software antivirus baru.
Edit Produk, yaitu mengedit produk software antivirus baru.
Lihat Produk, yaitu melihat spesifikasi sebuah produk software antivirus. Beri Rating, yaitu memberi rating terhadap sebuah produk software antivirus. Logout, yaitu melakukan log out atau keluar dari sistem.
(37)
3.3. Activity Diagram
3.3.1. Activity Diagram Register
Interface Sistem
Pengguna
Masukkan username, password,
dan retype password pengecekan username di dlm database
Menampilkan pesan gagal, username sudah ada
Username sudah ada
simpan username dan password ke dalam database pengecekan password dan retype password
Username belum ada
Menampilkan pesan gagal, password tidak sama
Password sama
Password tidak sama
Menampilkan pesan berhasil register Menampilkan form registrasi Klik tombol register
Gambar 3.2 Activity Diagram Register
Gambar 3.2 menggambarkan aktivitas-aktivitas apa saja yang berlangsung ketika pengguna melakukan registrasi di dalam Sistem Rekomendasi Software Antivirus. Terdapat pengecekan terlebih dahulu apakah username yang diinputkan sudah pernah ada di dalam database dan pengecekan apakah password dan retype password yang diinputkan sama.
(38)
3.3.2. Activity Diagram Login
Interface Sistem
Pengguna
Masukkan username dan password pengecekan username di dlm database Menampilkan pesan gagal,
username tidak ditemukan
Username tidak ada
beralih ke halaman utama pengecekan password dengan
password database Username ada
Menampilkan pesan gagal, password salah
Password salah
Password benar
Menampilkan halaman utama Menampilkan Form login
session dimulai
Gambar 3.3 Activity Diagram Login
Dari Gambar 3.3 dapat dijelaskan bahwasanya sistem ini memiliki tiga proses utama, yaitu : register, login, dan mengelola produk. Mengelola produk membutuhkan status login sebagai validasi pengguna, sehingga hanya pengguna yang sudah login terlebih dahulu lah yang bisa mengakses mengelola produk.
(39)
3.3.3. Activity Diagram Halaman Utama
Interface Sistem
Pengguna
Seleksi semua antivirus dari dalam database
Menampilkan menu utama, list antivirus, dan rekomendasi
bangkitkan 10 antivirus untuk direkomendasikan dengan menggunakan
metode hybrid
seleksi 10 antivirus dengan rating tertinggi cek session
Tampilkan Halaman Login
Session ada Session tdk ada
Gambar 3.4 Activity Diagram Halaman Utama
Berdasarkan gambar 3.4, Terdapat sebuah pengecekan apakah session sudah dibuat ketika pengguna mengunjungi halaman tersebut. Oleh karena itu, hanya pengguna yang sudah memiliki session sajalah yang dapat mengakses halaman ini. Tujuannya adalah mencegah masuknya pengguna yang belum login.
Halaman Utama menampilkan menu utama, list antivirus, serta beberapa rekomendasi software antivirus yang diberikan kepada pengguna.
(40)
3.3.4. Activity Diagram Halaman Rekomendasi
Interface
Pengguna Sistem
Menampilkan prediksi rating, metode, untuk seluruh item
hitung prediksi rating seluruh antivirus dengan menggunakan metode hybrid
Klik salah satu perhitungan prediksi rating thdp antivirus
Menampilkan pop up detail perhitungan prediksi rating
cek session
Tampilkan Halaman Login
Session ada Session tdk ada
Gambar 3.5 Activity Diagram Halaman Rekomendasi
Gambar 3.5 menjelaskan aktivitas apa saja yang terjadi ketika pengguna mengunjungi halaman rekomendasi. Halaman rekomendasi adalah halaman untuk menampilkan prediksi rating untuk seluruh produk antivirus yang ada beserta penjelasannya.
(41)
3.3.5. Activity Diagram Halaman Tutorial
Interface
Pengguna Sistem
Menampilkan tutorial
cek session Tampilkan Halaman Login
Session ada Session tdk ada
Gambar 3.6 Activity Diagram Halaman Tutorial
Gambar 3.6 menjelaskan aktivitas apa saja yang terjadi ketika pengguna mengunjungi halaman tutorial. Halaman rekomendasi adalah halaman untuk menampilkan tutorial penggunaan sistem.
3.3.6. Activity Diagram Logout
Sistem
Pengguna Interface
cek session
Tampilkan Halaman Login
Session ada Session tdk ada
Hapus session
(42)
Gambar 3.7 menjelaskan bahwa sistem akan menghapus session ketika proses logout. Kemudian, pengguna akan diarahkan ke halaman login.
3.3.7. Activity Diagram Tambah Produk Antivirus
Interface Sistem
Pengguna
Menampilkan formulir tambah antivirus
Mengisi informasi mengenai antivirus insert antivirus ke dalam database
Pesan sukses menambahkan antivirus
cek session
Session ada Session tdk ada
Menampilkan halaman login
cek apakah level admin
Menampilkan halaman utama
admin Tdk admin
Gambar 3.8 Activity Diagram Tambah Produk Antivirus
Gambar 3.8 menjelaskan tentang proses penambahan produk antivirus baru. Sistem mengecek apakah pengguna adalah admin atau tidak. Hanya pengguna yang levelnya admin sajalah yang bisa menggunakan proses ini.
(43)
3.3.8. Activity Diagram Edit Produk Antivirus
Interface Sistem
Pengguna
Seleksi antivirus yang dipilih ke dlm database
Menampilkan formulir edit antivirus Pilih salah satu produk antivirus
Mengubah informasi mengenai antivirus update antivirus ke dalam database
Pesan sukses mengedit antivirus
cek session
Session ada Session tdk ada
Menampilkan halaman login
cek apakah level admin
Menampilkan halaman utama
admin Tdk admin
Gambar 3.9 Activity Diagram Edit Produk Antivirus
Gambar 3.9 menjelaskan tentang proses pengeditan produk antivirus. Sistem mengecek apakah pengguna adalah admin atau tidak. Hanya pengguna yang levelnya admin sajalah yang bisa menggunakan proses ini.
(44)
3.3.9. Activity Diagram Lihat Produk Antivirus
Interface
Pengguna Sistem
Seleksi antivirus yang dipilih dari database Menampilkan informasi mengenai
antivirus dan ratingnya Pilih salah satu produk antivirus
cek session
Session ada Session tdk ada
Menampilkan halaman login
Gambar 3.10 Activity Diagram Lihat Produk Antivirus
Gambar 3.10 menjelaskan proses melihat produk software antivirus tertentu. Tidak terdapat pengecekan apakah pengguna merupakan administrator atau tidak,sehingga pengguna biasapun dapat melakukan proses ini.
(45)
3.3.10 Activity Diagram Beri Rating
Interface
Pengguna Sistem
Seleksi antivirus yang dipilih dari database Menampilkan informasi mengenai
antivirus dan ratingnya Beri rating terhadap produk
antivirus untuk keempat kriteria rating
pengecekan apakah ia sdh memberi rating thd antivirus tsb
insert rating ke dalam database
update rating ke dalam database Sudah pernah Belum pernah
Pesan sukses memberikan rating Pilih salah satu produk antivirus
cek session
Session ada Session tdk ada
Menampilkan halaman login
Gambar 3.11 Activity Diagram Beri Rating
Gambar 3.11 menjelaskan bahwa terdapat dua kemungkinan dalampemberian rating, yaitu ketika pengguna belum memberikan rating terhadap antivirus terpilih,atau pengguna sudah pernah memberikan rating terhadap antivirus tersebut. Ketika pengguna belum pernah memberikan rating, sistem akan melakukan penyisipan (insert) ke dalam database, sedangkan ketika pengguna sudah memberikan rating terhadap item tersebut,maka sistem akan melakukan perubahan (update).
(46)
3.4. Flowchart
Terdapat beberapa flowchart yang ada di dalam Sistem Rekomendasi Software Antivirus. Flowchart tersebut antara lain adalah :
3.4.1. Flowchart Keseluruhan Rekomendasi
start
count(R(u))>2
while(i=semua item yg blm dirating oleh user
login) sim1 = array() sim2 = array() sim3 = array() sim4 = array() r1 = array() r2 = array() r3 = array() r4 = array() while(u’=semua user selain user
login) M1 = array() M2 = array() M3 = array() M4 = array() If(!empty(R(u’,i)))
while(j=semua item yg sdh dirating oleh
user login)
M1[u][j] = R1(u,j) M1[u’][j] = R1(u’,j) M2[u][j] = R2(u,j) M2[u’][j] = R2(u’,j) M3[u][j] = R3(u,j) M3[u’][j] = R3(u’,j) M4[u][j] = R4(u,j) M4[u’][j] = R4(u’,j) no yes no yes no yes yes no
If(!empty(R(u’,j))) yes
no no
yes u = user yg login
R = rating R1 = rating kriteria pertama
R2 = rating kriteria kedua R3 = rating kriteria ketiga R4 = rating kriteria keempat
w = get_weight_cb() ovr_pred = array()
A
Menyimpan rating untuk keperluan perhitungan
similiarity
(metode collaborative filtering) Perhitungan bobot (metode
content based)
(47)
If(!empty(sim1))
ovr_pred[u][i] = (3*pred1[u][i] + 2*pred2[u][i] + 2*pred3[u][i] + pred4[u][i] ) /8
End
pred1[u][i] = (pred1[u][i] + get_prediction_cf(sim1, r1, i))/2 pred2[u][i] = (pred2[u][i] + get_prediction_cf(sim2, r2, i))/2 pred3[u][i] = (pred3[u][i] + get_prediction_cf(sim3, r3, i))/2 pred4[u][i] = (pred4[u][i] + get_prediction_cf(sim4, r4, i))/2
sim1[u][u’] = get_similiarity_cf(M1[u], M1[u’]) sim2[u][u’] = get_similiarity_cf(M2[u], M2[u’]) sim3[u][u’] = get_similiarity_cf(M3[u], M3[u’]) sim4[u][u’] = get_similiarity_cf(M4[u], M4[u’])
If(!empty(M1))
pred1[u][i] = get_prediction_cb(w[1], i) pred2[u][i] = get_prediction_cb(w[2], i) pred3[u][i] = get_prediction_cb(w[3], i) pred4[u][i] = get_prediction_cb(w[4], i)
yes no
yes no
return ovr_ped r1[i] = R1(u’,i) r2[i] = R2(u’,i) r3[i] = R3(u’,i) r4[i] = R4(u’,i)
A
Perhitungan similiarity antar pengguna (Collaborative
Filtering)
Perhitungan prediksi rating (Content Based)
Perhitungan prediksi rating (Collaborative Filtering) dan perhitungan prediksi rating Hybrid (Linear Combination) Perhitungan prediksi rating gabungan keempat kriteria
rating
sort(ovr_pred)
Gambar 3.13 Flowchart Rekomendasi Keseluruhan (Lanjutan)
Sistem rekomendasi membutuhkan user profile sebagai acuan bagi sistem rekomendasi dalam memberikan hasil rekomendasi. Salah satu cara membangun user profile adalah dengan menyimpan dan menganalisa histori pemberian rating seorang pengguna terhadap beberapa produk. Rating tersebut berfungsi sebagai alat untuk menunjukkan tingkat kepuasan pengguna terhadap beberapa produk.
Berikut merupakan penjelasan dari flowchart rekomendasi hybrid (content based dan collaborative filtering) dalam sistem rekomendasi multi-criteria rating. 1. Rekomendasi diberikan kepada pengguna target (pengguna yang login) yang
(48)
bermutu rating yang diberikan oleh pengguna, semakin bagus pula rekomendasi yang diberikan oleh sistem.
2. Kemudian, sistem akan membangun user profile (bobot masing-masing attribut di dalam produk) (2.1).
3. Proses rekomendasi dilanjutkan dengan menyeleksi semua produk yang belum pernah ia beri rating sebelumnya.
4. Untuk setiap produk tersebut, kumpulkan neighbor dengan cara menghitung kemiripan dengan seluruh pengguna lain yang ada dengan menggunakan rumus Cosine Based Similiarity (2.4).
5. Hitung prediksi rating pengguna target terhadap produk dengan menggunakan rumus (2.2) (content based).
6. Jika neighbor didapat, sistem akan menghitung prediksi rating pengguna target terhadap produk dengan menggunakan persamaan weighted sum (2.3).
7. Kemudian, hitung prediksi hybrid, yaitu kombinasi linear dari perhitungan content based dengan perhitungan collaborative filtering (2.5).
8. Kemudian, hitung prediksi keseluruhan, yaitu penggunaan fungsi agregasi (2.7) terhadap perhitungan prediksi masing-masing kriteria rating.
9. Kemudian ulangi lagi langkah tersebut (langkah 3) untuk meprediksi rating produk selanjutnya sampai prediksi rating untuk seluruh item didapatkan.
10.Setelah prediksi rating untuk seluruh item didapat, selanjutnya adalah mengurutkan nilai prediksi tersebut dari besar ke kecil.
11.Selesai.
Berbeda dengan sistem rekomendasi dengan satu rating (Single-criteria Rating Recommendation), pada sistem rekomendasi dengan banyak rating (Multi-criteria Rating Recommendation), pada saat proses perhitungan, perhitungan dihitung menjadi per-kriteria. Sehingga jika terdapat n buah kriteria, maka sistem harus menghitung sebanyak n kali lipat lebih banyak daripada sistem rekomendasi dengan single-criteria rating.
Sebagai contoh, seorang pengguna 1, setelah memberi rating terhadap 4 buah produk, 1, 2, 3, 4, memiliki matrix rating user x item dan sebuah item feature sebagaimana dijelaskan pada tabel 3.1 dan tabel 3.2.
(49)
Tabel 3.1 Matrix rating User x Item Pada Sistem Rekomendasi Multi Criteria Rating
1 2 3 4 5
1 4,3,3,4 3,3,4,4 2,3,3,2 3,3,4,4 ?,?,?,?
2 3,3,4,4 3,3,4,4 2,1,3,3 3,3,4,3 4,4,4,4
3 2,3,2,2 4,4,4,4 4,3,4,3 2,3,2,1 3,2,3,3
4 3,1,1,3 3,3,1,2 2,3,4,4 2,3,3,1 2,2,3,3
5 5,4,5,4 2,3,4,4 3,3,4,3 3,3,4,4 4,4,3,5
Tabel 3.1 merupakan contoh matrix rating user x item pada sistem rekomendasi Multi Criteria Rating. Pengguna 1 adalah pengguna target yang akan dihitung berapa prediksi ratingnya terhadap item 5. Matrix Rating tersebut akan digunakan untuk menghitung similiarity antar pengguna dan perhitungan prediksi di dalam metode collaborative filtering.
Tabel 3.2 Tabel Item Feature pada Sistem Rekomendasi Multi-criteria Rating
1 2 3 4 1, 2, 3, 4
1 1 1 1 1 4,3,3,4
2 1 0 1 1 3,3,4,4
3 1 0 0 0 2,3,3,2
4 1 0 1 1 3,3,4,4
5 1 1 0 1 ?,?,?,?
Tabel 3.2 merupakan contoh item feature yang dimiliki pengguna 1. Item feature tersebut mendeskripsikan fitur apa saja yang dimiliki oleh sebuah item yang sudah pernah dirating olehnya. Fitur 1, 2, . . mewakili fitur apa saja yang dimiliki
oleh sebuah produk. Item feature seorang pengguna digunakan untuk menghitung bobot masing masing fitur yang akan digunakan pada saat penghitungan prediksi dengan content based recommendation.
Untuk memudahkan penyelesaian persoalan sistem rekomendasi multi-criteria rating, matrix user x item dan item feature tersebut harus dipecah menjadi per-kriteria. Matrix rating user x item untuk kriteria rating pertama dan item feature untuk kriteria rating pertama digambarkan dalam tabel 3.3 dan tabel 3.4.
(50)
Tabel 3.3 Matrix User x Item Untuk Kriteria Rating Pertama
1 2 3 4 5
1 4 3 2 3 ?
2 3 3 2 3 4
3 2 4 4 2 3
4 3 3 2 2 2
5 5 2 3 3 4
Tabel 3.4 Tabel Item Feature Pengguna 1 Untuk Kriteria Rating Pertama
1 2 3 4 1
1 1 1 1 1 4
2 1 0 1 1 3
3 1 0 0 0 2
4 1 0 1 1 3
5 1 1 0 1 ?
Setelah berhasil menghitung prediksi rating masing-masing kriteria, gabungkan hasil prediksi untuk masing-masing kriteria tersebut dengan menggunakan fungsi agregasi (2.6) untuk mendapatkan prediksi keseluruhan untuk satu produk.
(1)
LAMPIRAN : Listing Program
1.
Fungsi Rekomendasi Keseluruhan
function hybrid() {
$overall_prediction = array(); $weight = array();
$string_id = array();
// cek apakah user target sudah pernah memberi rating sebelumnya $query_rating_user = mysql_query("SELECT * FROM rating WHERE user_id = '".$_SESSION["user_id"]."'") or die(mysql_error());
if(mysql_num_rows($query_rating_user)>=2) {
// hitung masing-masing weight untuk perhitungan di dlm content based recommendation
$weight = get_weight_cb();
$i = 0;
// seleksi semua item ( kecuali yang pernah dirate oleh user target (yang login))
$query_semua_item = mysql_query("SELECT * FROM product WHERE product_id NOT IN (SELECT product_id FROM rating WHERE user_id =
'".$_SESSION["user_id"]."') ORDER BY product_id DESC") or die(mysql_error()); while($hasil_semua_item = mysql_fetch_array($query_semua_item)) {
//echo
"<hr><b>".$hasil_semua_item["product_id"]."</b><br>"; $similiarity1 = array(); $similiarity2 = array(); $similiarity3 = array(); $similiarity4 = array();
$r1 = array(); $r2 = array(); $r3 = array(); $r4 = array();
// seleksi semua user di dalam database (kecuali user target (yang login))
$query_semua_user = mysql_query("SELECT * FROM user WHERE user_id != '".$_SESSION["user_id"]."'") or die(mysql_error());
while($hasil_semua_user = mysql_fetch_array($query_semua_user))
{
$m1 = array(); $m2 = array(); $m3 = array(); $m4 = array();
// cek apakah user lain sudah pernah merate item yang belum pernah dirate oleh user target (user yg login)
$query_rating_semua_user_item_target = mysql_query("SELECT * FROM rating WHERE user_id =
'".$hasil_semua_user["user_id"]."' AND product_id =
'".$hasil_semua_item["product_id"]."'") or die(mysql_error());
if(mysql_num_rows($query_rating_semua_user_item_target)) {
$hasil_rating_semua_user_item_target = mysql_fetch_array($query_rating_semua_user_item_target);
// cek apakah user lain sudah pernah merate item yang sudah pernah dirate oleh user target
$query_rating_user = mysql_query("SELECT * FROM rating WHERE user_id = '".$_SESSION["user_id"]."'") or
die(mysql_error());
while($rating_user = mysql_fetch_array($query_rating_user))
(2)
{
$query_rating_semua_user = mysql_query("SELECT * FROM rating WHERE user_id =
'".$hasil_semua_user["user_id"]."' AND product_id = '".$rating_user["product_id"]."'") or die(mysql_error());
if(mysql_num_rows($query_rating_semua_user)) {
$hasil_rating_semua_user = mysql_fetch_array($query_rating_semua_user);
// matrix M user x item (rating item yg sama-sama dirating oleh kedua user)
$m1[$_SESSION["user_id"]][$rating_user["product_id"]] = ($rating_user["1_rating"]);
$m2[$_SESSION["user_id"]][$rating_user["product_id"]] = ($rating_user["2_rating"]);
$m3[$_SESSION["user_id"]][$rating_user["product_id"]] = ($rating_user["3_rating"]);
$m4[$_SESSION["user_id"]][$rating_user["product_id"]] = ($rating_user["4_rating"]);
$m1[$hasil_semua_user["user_id"]][$rating_user["product_id"]] = ($hasil_rating_semua_user["1_rating"]);
$m2[$hasil_semua_user["user_id"]][$rating_user["product_id"]] = ($hasil_rating_semua_user["2_rating"]);
$m3[$hasil_semua_user["user_id"]][$rating_user["product_id"]] = ($hasil_rating_semua_user["3_rating"]);
$m4[$hasil_semua_user["user_id"]][$rating_user["product_id"]] = ($hasil_rating_semua_user["4_rating"]);
} }
// rating user lain terhadap item target
$r1[$hasil_semua_user["user_id"]][$hasil_semua_item["product_id"]] = $hasil_rating_semua_user_item_target["1_rating"];
$r2[$hasil_semua_user["user_id"]][$hasil_semua_item["product_id"]] = $hasil_rating_semua_user_item_target["2_rating"];
$r3[$hasil_semua_user["user_id"]][$hasil_semua_item["product_id"]] = $hasil_rating_semua_user_item_target["3_rating"];
$r4[$hasil_semua_user["user_id"]][$hasil_semua_item["product_id"]] = $hasil_rating_semua_user_item_target["4_rating"];
if(!empty($m1)) {
// hitung nilai similiarity antara user target, dengan user lain tersebut
$similiarity1[$_SESSION["user_id"]][$hasil_semua_user["user_id"]] = get_similiarity_cf($m1[$_SESSION["user_id"]],
$m1[$hasil_semua_user["user_id"]]);
$similiarity2[$_SESSION["user_id"]][$hasil_semua_user["user_id"]] = get_similiarity_cf($m2[$_SESSION["user_id"]],
$m2[$hasil_semua_user["user_id"]]);
$similiarity3[$_SESSION["user_id"]][$hasil_semua_user["user_id"]] = get_similiarity_cf($m3[$_SESSION["user_id"]],
$m3[$hasil_semua_user["user_id"]]);
$similiarity4[$_SESSION["user_id"]][$hasil_semua_user["user_id"]] = get_similiarity_cf($m4[$_SESSION["user_id"]],
(3)
} }
}
// content based
$prediction1_cb = get_prediction_cb($weight["1_rating"], $hasil_semua_item["product_id"]);
$prediction2_cb = get_prediction_cb($weight["2_rating"], $hasil_semua_item["product_id"]);
$prediction3_cb = get_prediction_cb($weight["3_rating"], $hasil_semua_item["product_id"]);
$prediction4_cb = get_prediction_cb($weight["4_rating"], $hasil_semua_item["product_id"]);
$overall_prediction[$i]["rec"] = "content based";
$prediction1 = $prediction1_cb; $prediction2 = $prediction2_cb; $prediction3 = $prediction3_cb; $prediction4 = $prediction4_cb;
// collaborative
if(!empty($similiarity1)) {
// hitung prediksi $prediction1_cf =
get_prediction_cf($similiarity1[$_SESSION["user_id"]], $r1, $hasil_semua_item["product_id"]);
$prediction2_cf =
get_prediction_cf($similiarity2[$_SESSION["user_id"]], $r2, $hasil_semua_item["product_id"]);
$prediction3_cf =
get_prediction_cf($similiarity3[$_SESSION["user_id"]], $r3, $hasil_semua_item["product_id"]);
$prediction4_cf =
get_prediction_cf($similiarity4[$_SESSION["user_id"]], $r4, $hasil_semua_item["product_id"]);
// hybrid
$prediction1 = ($prediction1_cf + $prediction1_cb)/2;
$prediction2 = ($prediction2_cf + $prediction2_cb)/2;
$prediction3 = ($prediction3_cf + $prediction3_cb)/2;
$prediction4 = ($prediction4_cf + $prediction4_cb)/2;
$overall_prediction[$i]["rec"] = "hybrid"; }
// aggregation function
// using simple linear : weighted sum $w1 = 3;
$w2 = 2; $w3 = 2; $w4 = 1;
$agr_pred = ($w1*$prediction1 + $w2*$prediction2 + $w3*$prediction3 + $w4*$prediction4) / ($w1+$w2+$w3+$w4);
// menyimpan sebagai keluaran
$overall_prediction[$i]["weight_ft"] = $weight; $overall_prediction[$i]["fb"]["pred1"] =
$prediction1_cb;
$overall_prediction[$i]["fb"]["pred2"] = $prediction2_cb;
$overall_prediction[$i]["fb"]["pred3"] = $prediction3_cb;
$overall_prediction[$i]["fb"]["pred4"] = $prediction4_cb;
$overall_prediction[$i]["sim"]["1"] = $similiarity1[$_SESSION["user_id"]];
(4)
$overall_prediction[$i]["sim"]["2"] = $similiarity2[$_SESSION["user_id"]];
$overall_prediction[$i]["sim"]["3"] = $similiarity3[$_SESSION["user_id"]];
$overall_prediction[$i]["sim"]["4"] = $similiarity4[$_SESSION["user_id"]];
$overall_prediction[$i]["cf"]["pred1"] = $prediction1_cf;
$overall_prediction[$i]["cf"]["pred2"] = $prediction2_cf;
$overall_prediction[$i]["cf"]["pred3"] = $prediction3_cf;
$overall_prediction[$i]["cf"]["pred4"] = $prediction4_cf;
$overall_prediction[$i]["ovr"]["pred1"] = $prediction1; $overall_prediction[$i]["ovr"]["pred2"] = $prediction2; $overall_prediction[$i]["ovr"]["pred3"] = $prediction3; $overall_prediction[$i]["ovr"]["pred4"] = $prediction4;
$overall_prediction[$i]["w1"] = $w1; $overall_prediction[$i]["w2"] = $w2; $overall_prediction[$i]["w3"] = $w3; $overall_prediction[$i]["w4"] = $w4;
$overall_prediction[$i]["rating"] = $agr_pred;
$overall_prediction[$i]["item_id"] = $hasil_semua_item["product_id"];
$i++; }
}
if(!empty($overall_prediction)) {
foreach($overall_prediction as $i => $a) {
$rating[$i] = $overall_prediction[$i]["rating"]; }
array_multisort($rating, SORT_DESC, $overall_prediction); return $overall_prediction;
}
return 0; }
2.
Fungsi Menghitung Prediksi Rating (Content Based)
// function get prediction for content basedfunction get_prediction_cb($weight, $product_id) {
$pred = 0; $jlh = 0;
$query_feature = mysql_query("SELECT * FROM features"); while($data_feature = mysql_fetch_array($query_feature)) {
$query_pengecekan = mysql_query("SELECT * FROM product_feature WHERE product_id = '".$product_id."' AND feature_id =
'".$data_feature["feature_id"]."'") or die(mysql_error()); if(mysql_num_rows($query_pengecekan)==1) {
$pred += $weight[$data_feature["feature_id"]]; $jlh++;
} }
$pred /= $jlh;
return $pred; }
(5)
// function get weight for content based function get_weight_cb()
{
$weight = array(); $jlh = array();
$query_feature = mysql_query("SELECT * FROM features"); while($data_feature = mysql_fetch_array($query_feature)) {
$ada = false;
$query = mysql_query("SELECT * FROM rating WHERE user_id = '".$_SESSION["user_id"]."'") or die(mysql_error());
while($data = mysql_fetch_array($query)) {
$query_pengecekan_feature = mysql_query("SELECT * FROM product_feature WHERE product_id = '".$data["product_id"]."' AND feature_id = '".$data_feature["feature_id"]."'") or die(mysql_error());
if(mysql_num_rows($query_pengecekan_feature)==1) {
$weight["1_rating"][$data_feature["feature_id"]] += $data["1_rating"];
$weight["2_rating"][$data_feature["feature_id"]] += $data["2_rating"];
$weight["3_rating"][$data_feature["feature_id"]] += $data["3_rating"];
$weight["4_rating"][$data_feature["feature_id"]] += $data["4_rating"];
$ada = true; }
$jlh[$data_feature["feature_id"]]++;
}
if(!$ada) {
$weight["1_rating"][$data_feature["feature_id"]] = 0; $weight["2_rating"][$data_feature["feature_id"]] = 0; $weight["3_rating"][$data_feature["feature_id"]] = 0; $weight["4_rating"][$data_feature["feature_id"]] = 0; $jlh[$data_feature["feature_id"]] = 0;
}
}
$query_feature = mysql_query("SELECT * FROM features") or die(mysql_error());
while($data_feature = mysql_fetch_array($query_feature)) {
if($jlh[$data_feature["feature_id"]]!=0) {
$weight["1_rating"][$data_feature["feature_id"]] /= $jlh[$data_feature["feature_id"]];
$weight["2_rating"][$data_feature["feature_id"]] /= $jlh[$data_feature["feature_id"]];
$weight["3_rating"][$data_feature["feature_id"]] /= $jlh[$data_feature["feature_id"]];
$weight["4_rating"][$data_feature["feature_id"]] /= $jlh[$data_feature["feature_id"]];
} }
return $weight; }
4.
Fungsi Menghitung Prediksi Rating (Collaborative Filtering)
// weighted sum to predict ratingfunction get_prediction_cf($sim, $r, $i) {
$prediction = 0; $var1 = 0; $var2 = 0;
// calculate prediction
foreach($sim as $user_id2 => $a) {
(6)
$var1 += $sim[$user_id2]*$r[$user_id2][$i]; $var2 += $sim[$user_id2];
}
$prediction = ($var1/$var2);
return $prediction; }
5.
Fungsi Menghitung Kemiripan (Collaborative Filtering)
// cosine based similiarityfunction get_similiarity_cf($rating_user1, $rating_user2) {
$similiarity = 0; $var1 = 0;
$var2 = 0; $var3 = 0;
// calculate similiarity
foreach($rating_user1 as $item => $b) {
$var1 += $rating_user1[$item]*$rating_user2[$item]; $var2 += pow($rating_user1[$item], 2);
$var3 += pow($rating_user2[$item], 2); }
$similiarity = $var1 / (sqrt($var2*$var3));
return $similiarity; }