5
b. Penentuan profil minat dan perilaku pengguna. c. Tingkat kesesuain rekomendasi dengan yang diharapkan oleh pengguna. 5. Pemeliharaan (Support) Tahap ini tidak dilakukan dalam penelitian ini.
kelompok cluster yang sama. Halaman rekomendasi tampak seperti pada Gambar 2.
HASIL DAN PEMBAHASAN Rancangan Arsitektur Sebelum sistem ini dijalankan, informasiinformasi yang berkaitan dengan koleksi wallpaper dikumpulkan untuk membentuk index database. Setelah itu, browsing interface akan membantu penguna melihat isi koleksi wallpaper dan informasi-informasi yang berkaitan dengan wallpaper tersebut berdasarkan kategori wallpaper. Seperti yang tampak pada Gambar 1.
Gambar 2 Halaman rekomendasi koleksi wallpaper. Arsitektur sistem rekomendasi dapat dilihat pada Gambar 3.
user
Recommendation Provider
Index Database
Gambar 1 Halaman koleksi wallpaper. Jika pengguna mengunduh sebuah koleksi wallpaper, sistem akan mencatat dan menyampaikan kategori dan identitas wallpaper tersebut ke dalam profile manager. Di dalam profile manager, sistem akan menentukan profil minat dan profil perilaku setiap pengguna berdasarkan data transaksi koleksi yang telah diunduh oleh pengguna. Pada User Cluster, akan dibentuk matriks vektor pengguna berdasarkan profil pengguna. Kemudian setiap pengguna akan dikelompokkan berdasarkan jarak masingmasing matriks vektor yang telah terbentuk sebelumnya dengan menggunakan jarak Euclidean. Setiap kali pengguna meminta (request) rekomendasi, recommendation provider akan menampilkan rekomendasi koleksi-koleksi wallpaper yang belum pernah diunduh oleh pengguna tersebut dan berasal dari koleksikoleksi wallpaper yang pernah diunduh pengguna-pengguna lain yang memiliki profil minat dan profil perilaku yang sama di dalam
User Cluster
Gambar 3 Arsitektur sistem rekomendasi (Yong 2001). Pembuatan Algoritma Sesuai dengan arsitektur yang telah ditentukan, maka sistem rekomendasi akan dibagi menjadi satu sistem utama dan empat fungsi sistem. 1. Sistem utama Seperti yang tampak pada kode sumber di bawah, pada sistem utama pengguna yang baru akan dibuatkan tabel minat dan perilaku. Kemudian semua koleksi wallpaper akan ditampilkan berdasarkan kategori. Jika pengguna mengunduh sebuah koleksi wallpaper, maka identitas pengguna, identitas wallpaper dan kategori wallpaper akan dicatat pada tabel transaksi. Jika pengguna meminta rekomendasi, maka sistem akan menjalankan fungsi recommendation. Jika pengguna keluar dari sistem (logout), maka sistem akan menjalankan fungsi input_interest_behavior, fungsi create_vector dan fungsi cluster_vector.
6
1) 2) 3) 4) 5) 6) 7) 8)
9) 10) 11) 12) 13) 14) 15) 16) 17)
Login user=ui; if user=new user then create table interest(user u); create table behavior(user u); end show wallpaper order by kategories if user downloads a wallpaper then input id wallpaper,category wallpaper, id user to transaction table; end if user requests recommendation then recommendation(user ui); end if user logout then input_interest_behavior(user ui); create_vector(user ui); cluster_vector(); end
2. Fungsi sistem Terdapat empat fungsi sistem dijalankan di dalam sistem utama, yaitu:
yang
a.
Fungsi input_interest_behavior Pada fungsi ini seperti yang tampak pada kode sumber di bawah, sistem akan menentukan profil minat dan profil perilaku pengguna berdasarkan kategori koleksi-koleksi wallpaper yang telah diunduh oleh pengguna sebelumnya. 1) forall transaction where user=ui do 2) 3)
4)
5)
6) 7)
8) 9) 10) 11)
12)
13)
14) 15)
forall category in transaction where user= ui do input first appearance category to field first in interest table; input last appeareance category to field last in interest table; input number of appeareance category for each transaction to count in interest table; if(count>γ) then support interest= count/(Number of Transactionsfirst+1); end end forall 2-set category in transaction where user= ui do input first appearance 2set category to field first in behavior tabel; input last appeareance 2set category to field last in behavior table; input number of appeareance 2-set category for each transaction to count in behavior table; if (count>γ) then support behavior= count/(number of transactions-
first+1 16) end 17) end 18) end
Untuk menjelaskan kode sumber di atas, akan dicontohkan suatu transaksi yang dilakukan oleh seorang pengguna seperti yang tampak pada Tabel 2. Tabel 2 Tabel transaksi id transaksi 1 1 1 2 2 2 2 3 3 3 4 4 4
id wallpaper 12 15 13 14 15 16 17 20 40 38 23 33 31
category A C E B C E F D E F B C D
id user 1 1 1 1 1 1 1 1 1 1 1 1 1
Tabel transaksi di atas memiliki empat field, yaitu id transaksi, id wallpaper, category dan id user. id transaksi merupakan identitas transaksi selama pengguna login, id wallpaper adalah identitas wallpaper yang diunduh, category adalah kategori wallpaper yang diunduh, serta id user adalah identitas pengguna yang mengunduh wallpaper. Fungsi input_interest_behavior akan mengisi tabel interest dan tabel behavior dari data yang ada pada Tabel 2 yang merupakan tabel transaksi. Tabel 3 Tabel interest Category A B C D E F
First 1 2 1 3 1 2
last 1 4 4 4 3 3
count 1 2 3 2 3 2
Support N/A 67% 75% 100% 75% 67%
Tabel interest di atas memiliki lima field, yaitu category, first, last, count dan support. category merupakan kategori wallpaper yang muncul pada transaksi, first adalah transaksi di mana kategori pertama kali muncul, last adalah transaksi di mana kategori terakhir kali muncul, count adalah jumlah transaksi di mana kategori muncul, serta support adalah nilai support terhadap kategori. Pada fungsi ini terdapat threshold minimal count (dilambangkan γ) yang akan menyaring kategori-kategori yang nilai kemunculannya di bawah nilai threshold γ. Kategori-kategori
7
yang nilai kemunculannya di atas nilai threshold γ (sebagai contoh, nilai γ=1) yang akan dihitung nilai support dengan menggunakan persamaan 2. Hal ini juga berlaku untuk profil perilaku, fungsi ini akan mengisi tabel behavior berdasarkan informasi yang ada pada Tabel 2. Tabel 4 Tabel behavior 2-category set [A,C] [A,E] [B,C] [B,D] [B,E] [B,F] [C,D] [C,E] [C,F] [D,E] [D,F] [E,F]
first 1 1 2 4 2 2 4 1 2 3 3 2
last 1 1 4 4 2 2 4 2 2 3 3 3
Count 1 1 2 1 1 1 1 2 1 1 1 2
Support N/A N/A 67% N/A N/A N/A N/A 50% N/A N/A N/A 67%
Tabel behavior memiliki lima field, yaitu 2-category set, first, last, count dan support. 2-category set merupakan himpunan
dua kategori (2-category set) wallpaper yang muncul pada transaksi, first adalah transaksi di mana 2-category set pertama kali muncul, last adalah transaksi di mana 2-category set terakhir kali muncul, count adalah jumlah transaksi di mana 2-category set muncul, serta support adalah nilai support terhadap 2category set. Pada Tabel 4 juga dilakukan penyaringan nilai kemunculan 2-category set terhadap nilai γ (sebagai contoh, nilai γ=1). 2-category set di atas nilai γ yang akan dihitung nilai support dengan menggunakan persamaan 4. Kemudian profil minat ditentukan dengan mencari nilai support yang nilainya lebih besar dari nilai threshold α, seperti yang digunakan dalam persamaan 1 (sebagai contoh, nilai α=70%) maka profil minat={C,D,E}. Pada profil perilaku ditentukan dengan mencari support yang nilainya lebih besar dari nilai threshold β, seperti yang digunakan di dalam persamaan 3 (sebagai contoh, nilai β=40%) maka profil perilaku={[B,C], [C,E],[E,F]}. b.
Fungsi create_vector Pada fungsi create_vector sistem akan membentuk matriks vektor pengguna berdasarkan profil minat dan profil perilaku yang sudah terbentuk dari tabel interest dan tabel behavior. 1) Forall 2-set category where support behavior>β do 2) forall category do 3) a_kat=category
4) 5) 6) 7) 8) 9) 10) 11) 12) 13) 14) 15) 16) 17)
end z=0; a=0; n=0; vector=NULL; for(x=0;x
Seperti disebutkan sebelumnya, bahwa fungsi ini akan membentuk matriks vektor perilaku pengguna berdasarkan profil perlaku pengguna. Sebagai contoh, jika profil minat={C,D,E} dan profil perilaku={[B,C], [C,E] ,[E,F]} maka proses pembentuk matriks dapat dilihat pada Gambar 4
A {C , D , E } {[B, C], [C, E], [E, F]}
B C D E F
A
B
C
D
E
F
0
0
0
0
0
0
0
1
0
0
0
1
0
1
0
1
0
0
1
1 0
Gambar 4 Proses pembentukan matriks vektor. Seperti yang tampak pada Gambar 4, maka akan diperoleh vektor matriks pengguna: 0000000100010100110. c.
Fungsi cluster_vector Pada fungsi ini, sistem akan mengelompokkan setiap pengguna berdasarkan jarak masing-masing matriks vektor pengguna. 1) M=0; 2) forall user in user table user do 3) get user[m]; 4) get vektor_user[m]; 5) m++; 6) end 7) user_centroid[0]=user[0]; 8) vector_centroid[0]=vector_user[0]; 9) user_iteration=1; 10) sum_cluster=1; 11) id_cluster=sum_cluster; 12) k=1; 13) for(i=1;i<sum_cluster;i++)do 14) distance= euclid_distance (vector_centroid,vector_user[i]);
8
15) if(distance>δ)then 16) sum_cluster++; 17) id_cluster++; 18) user_centroid [id_cluster]= user[i]; 19) vector_centroid [id_cluster]= vector_user[i]; 20) user_is_in=id_cluster; 21) end 22) else 23) user_is_in=shortest euclid distance(vector_centroid, vector_user[i]); 24) vector_centroid [id_cluster]= average_point(cluster[id_cluster]); 25) user_is_in=id_cluster; 26) end 27) End
Pada fungsi ini terdapat nilai untuk jarak minimal matriks vektor (dilambangkan dengan δ). Pada saat fungsi dijalankan pengguna dengan id yang paling kecil yang menjadi centriod culster dari cluster yang baru terbentuk. Pengguna seterusnya akan diperiksa jarak terpendeknya menggunakan jarak Euclidean dengan setiap cluster yang sudah terbentuk sebelumnya. Jika jarak terpendek ≤ nilai δ, maka matriks vektor masuk ke dalam cluster yang memiliki jarak terkecil dan centroid cluster berubah berdasarkan matriks vektor yang baru di dalam cluster. Dalam hal ini penentuan nilai centroid cluster menggunakan metode Unweighted pair-group centroid. Kemudian jika jarak terpendek > nilai δ, maka membentuk cluster baru dan matriks vektor tersebut menjadi centroid cluster. d. Fungsi recommendation Pada fungsi ini, sistem akan menghasilkan rekomendasi koleksi-koleksi wallpaper yang belum pernah diunduh oleh pengguna, berdasarkan koleksi-koleski wallpaper yang telah diunduh oleh pengguna yang lain yang memiliki profil minat dan profil perilaku yang sama pada kelompok cluster yang sama. 1) forall users in the same cluster do 2) forall user which has the same interest do 3) select id wallpaper which has not been download; 4) input into interest recommendation; 5) end 6) forall user which has the same behavior do 7) select id wallpaper which has not been download; 8) input into behavior recommendation; 9) end 10) end
Analisis Kompleksitas Waktu Algoritma
Untuk sistem utama, bisa dikatakan bahwa kompleksitas waktunya adalah O(n), karena pada baris ke-2 terjadi perulangan untuk menampilkan koleksi wallpaper. Pada sistem utama terjadi pemanggilan beberapa fungsi. Yaitu pada baris 10 terjadi pemanggilan fungsi recommendation, baris 14 terjadi pemanggilan fungsi input_interest_behavior, baris 15 terjadi pemanggilan fungsi create_vector, serta pada baris 16 terjadi pemanggilan fungsi cluster_vector. Fungsi recommendation memiliki kompleksitas waktu O(2n2). Karena pada perulangan baris 1, terdapat perulangan pada baris 2 dan 6. fungsi input_interest_behavior memiliki kompleksitas waktu O(2n2). Karena pada perulangan baris 1, terdapat perulangan pada baris 2 dan 10. Untuk fungsi create_vektor, karena pada sistem ini hanya ada sepuluh kategori maka pada baris pertama hanya ada 10x9=90 kemungkinan. Pada baris 8 dan 9 terjadi perulangan berkalang 2 sebanyak 10 kali, maka waktu kompleksitasnya 90x100=9000. Karena waktu kompleksitasnya selalu tetap dan bisa dikatakan nilai skalarnya kecil, maka fungsi ini memiliki kompleksitas waktu O(1). Fungsi cluster_vector, memiliki kompleksitas waktu O(n2). Karena pada perulangan baris 1, terdapat perulangan pada baris 13. Dengan demikian secara keseluruhan sistem rekomendasi ini memiliki kompleksitas waktu algoritma O(2n2). Implementasi Sistem Dalam mengembangkan sistem ini digunakan perangkat lunak dan perangkat keras sebagai berikut: perangkat lunak: a. Sistem Operasi Windows XP Professional SP2 b. XAMPP 1.5.5 c. Web Server Apache 2.2.3 d. Bahasa Pemrograman PHP 5.2.0 e. DBMS MySQL 5.0.2 f. Web Browser Mozilla Firefox 2.0.0.2 dan Microsoft Internet Explorer 6.0.29 dengan perangkat keras PC: a. Prosesor Intel Pentium D 2,80Ghz b. Memori 1024MB DDR II RAM c. Harddisk 160 GB d. VGA GeCube ATI Radeon X1650 512MB DDR II e. Monitor 17” resolusi 1280x1024 f. Mouse dan Keyboard
9
Rancangan Pengujian Pengujian sistem rekomendasi ini dilakukan secara langsung oleh pengguna awam. Dalam percobaan ini, sebanyak 517 koleksi wallpaper dikumpulkan dan dikelompokkan menjadi sepuluh kategori. Seperti yang tampak pada Tabel 5, kategori games memiliki jumlah koleksi terbanyak, yaitu 12,57% dari keseluruhan jumlah koleksi. Sedangkan kategori photo manipulated memliki koleksi yang paling sedikit, yaitu 8,12%. Tabel 5 Koleksi wallpaper Kategori
Jumlah Koleksi
%
Hasil Pengujian Setelah mencatat koleksi wallpaper yang telah diunduh oleh pengguna selama masa percobaan, didapat hasil seperti yang tampak di dalam Tabel 6. Tabel 6 Jumlah koleksi wallpaper yang diunduh Kategori
%
Jumlah yang diunduh
3D
74
7.42
abstract
95
9.53
fantasy
90
9.03
fractals
95
9.53
games
49
4.91
9.48
landscape
155
15.55
49
9.48
minimalistic
114
11.43
67
12.96
fractals
47
9.09
games
65
12.57
landscape
46
8.90
minimalistic
50
9.67
PC/ Mac
49
9.48
photo manipulated
42
8.12
53
10.25
517
100
3D
49
abstract fantasy
vector TOTAL
Sistem ini diujikan kepada tujuh individu pengguna. Jika pengguna tersebut login, maka pengguna dapat melakukan proses browsing koleksi yang ada di dalam sistem berdasarkan kategori. Setiap kali pengguna mengunduh koleksi wallpaper, sistem rekomendasi akan mencatat informasi-informasi yang diperlukan untuk menghitung dan menentukan profil pengguna. Pengguna juga dapat meminta rekomendasi dari sistem. Berdasarkan wallpaper yang direkomendasikan, pengguna harus secara eksplisit menilai rekomendasi tersebut. Ada dua nilai yang digunakan untuk menilai rekomendasi yang diberikan, yaitu sesuai (hit) dan tidak sesuai (miss). Sesuai dengan tanggapan yang dikumpulkan dari hasil percobaan, ada nilai ukur yang digunakan untuk mengevaluasi metode yang digunakan dalam sistem ini. Ng dan Nb masing-masing adalah lambang untuk jumlah respon baik dan respon buruk. Dalam hal ini N adalah jumlah total rekomendasi, sehingga didefinisikan bahwa hit ratio dan miss ratio, sebagai berikut: Hit Ratio= Ng dan Miss Ratio = Nb ..........(6) N N
PC/ Mac photo manipulated vektor TOTAL
57
5.72
196
19.66
72
7.22
997
100
Seperti yang terlihat pada Tabel 6, total koleksi yang diunduh selama pengujian adalah sebanyak 997 koleksi. Di mana koleksi dari kategori photo manipulated adalah koleksi yang paling banyak diunduh, yaitu 19.66% dari jumlah koleksi yang diunduh. Sedangkan kategori games adalah kategori yang paling sedikit diunduh, yaitu 4.91%. Untuk setiap kategori yang ada dalam profil minat dan 2-set category di dalam profil perilaku maka yang akan diproses adalah yang nilai kemunculannya harus lebih besar dari nilai γ, di mana nilai γ=1. Berdasarkan pengujian dan percobaan beberapa kali sebelumnya, didapat nilai threshold untuk α sebesar 0.26 dan β sebesar 0.14. Dari data transaksi yang mencatat koleksi wallpaper yang diunduh, dilakukan proses perhitungan dan penentuan matriks vektor masing-masing pengguna berdasarkan profil perilaku. Dalam percobaan ini dilakukan percobaan dengan nilai threshold δ yang berbeda-beda, masing-masing 0.75, 1.6, 2.8 dan 3.8. Di dalam Tabel 7 ditunjukkan hasil pengelompokan berdasarkan nilai threshold δ. Di dalam tabel ini pengguna dilambangkan dengan id_user seperti 2, 3 dan seterusnya. Cluster yang terbentuk dilambangkan dengan C0, C1 dan seterusnya.
10
Tabel 7 Hasil proses clustering dengan menggunakan nilai δ yang berbeda Cluster C0 C1 C2 C3 C4 C5 C6
δ =0.75 2
δ =1.6 2, 4
δ =2.8 2, 4, 8
3 4 5 6 7 8
3 5 6 7 8
3 5 6 7
δ =3.8 2, 3, 5, 6, 8 4 7
Dari Tabel 7 dapat dilihat pada saat nilai δ sebesar 0.75 terdapat tujuh cluster. Kemudian, nilai δ dinaikan menjadi 1.6 maka cluster yang terbentuk berkurang satu dan menjadi enam cluster. Ketika nilai δ dinaikkan menjadi 2.8, ada cluster yang bergabung dengan cluster yang lain (sebagai contoh, id_user 4 bergabung dengan cluster C0). Ketika nilai δ dinaikkan lagi menjadi 3.8, beberapa cluster kembali menggabungkan diri dengan cluster yang lain sehingga jumlah cluster berkurang dua menjadi 3 cluster. Secara umum, dengan semakin besar nilai δ maka semakin banyak anggota yang ada di dalam cluster dan membuat semakin sedikit cluster yang terbentuk. Dalam percobaan dilakukan juga pengamatan terhadap rekomendasi yang diminta oleh pengguna. Jika pengguna meminta rekomendasi, maka sistem akan memberikan rekomendasi wallpaper berdasarkan minat dan perilaku, serta berdasarkan cluster pengguna yang sama. Sebelum wallpaper hasil rekomendasi dapat diunduh oleh pengguna, maka sistem akan menanyakan apakah hasil yang direkomendasikan sesuai dengan keinginan pengguna. Jika sesuai, maka hasil rekomendasi dianggap sebagai hit, sebaliknya jika hasil rekomendasi tidak sesuai dengan keinginan pengguna dianggap sebagai miss. Tabel 8 Tabel hit rasio berdasarkan nilai δ id user 2
δ =1.6 (%)
δ=2 (%)
72.22
100.00
86.96
100.00
3 4
δ=3.6 (%) 66.67 35.29
5
38.00
6
75.00
7 8
100.00
100.00
Pada Tabel 8 ditampilkan perbandingan hit ratio berdasarkan nilai-nilai δ yang diujikan dalam percobaan. Pada tabel nilai yang ada
memang tidak terlihat pola yang jelas, ini dikarenakan pengguna diberi kebebasan untuk meminta dan menilai rekomendasi. Jika dilihat pada Tabel 8 ada beberapa hit ratio yang nilainya kosong, hal ini dapat terjadi karena: a. Pengguna tidak meminta rekomendasi. b. Pengguna meminta rekomendasi, namun tidak ada yang direkomendasikan. Karena pengguna sudah mengunduh koleksi wallpaper yang akan direkomendasikan. c. Pengguna meminta rekomendasi, namun tidak ada yang direkomendasikan. Karena di dalam cluster pengguna hanya sendirian.
KESIMPULAN DAN SARAN Kesimpulan Sistem rekomendasi dikembangkan untuk mempermudah pengguna dalam menjelajahi (browsing) situs web untuk mencari informasi dan isi sesuai dengan keinginan pengguna. Dengan cara menentukan profil minat (interest profile) dan profil perilaku (behavior profile) pengguna yang diperoleh dari data tabel transaksi pengguna. Sistem ini dapat memberikan rekomendasi berdasarkan koleksi yang pernah diunduh oleh pengguna lain yang memiliki profil minat dan profil perilaku yang sama di dalam kelompok cluster yang sama. Nilai-nilai threshold yang ada di dalam sistem (α, β, δ, γ) mempengaruhi penentuan profil minat dan perilaku pengguna serta rekomendasi yang dihasilkan. Saran Di dalam penelitian ini masih ada yang dapat diteliti dan dikembangkan, antara lain: a. Pengembangan sistem untuk profil perilaku N-category set, (N>2). Di dalam penelitian ini, digunakan 2-set category untuk menentukan profil perilaku pengguna. Dengan N-category set yang bernilai N>2, memungkinkan perolehan profil pengguna pengguna yang lebih kompleks, yang dapat memberikan gambaran yang lebih detail terhadap perilaku pengguna. Untuk itu diperlukan algoritma yang efisien dan efektif untuk melakukan data mining terhadap profil perilaku N-category set di mana N>2. b. Seperti dikatakan sebelumnya, nilai-nilai threshold yang ada di dalam sistem (α, β, δ, γ) sangat mempengaruhi penentuan profil pengguna serta dalam proses penentuan rekomendasi. Di dalam penelitian ini, nilainilai tersebut diperoleh dengan ‘trial and error’. Perlu ada penelitian dan pengembangan lebih lanjut untuk menentukan nilai-nilai threshold agar lebih