Rancang Bangun Aplikasi Pengumpulan Pembeli Potensial Terhadap Barang Grosir Fashion Dengan Algoritma Jaccard Index Martien Dermawan Tanama Universitas Ciputra UC Town, Citraland Surabaya 60219 mdermawan@student.ciputra.ac.id Alfon Wicaksi Universitas Ciputra UC Town, Citraland Surabaya 60219 awicaksi@ciputra.ac.id ABSTRAK Ada gap antara pembeli ritel dan pedagang grosir, dimana pedagang grosir mengkhususkan diri untuk melayani pembelian barang dalam jumlah besar agar mendapatkan harga lebih murah, sedangkan pembeli ritel biasanya hanya membeli barang dalam jumlah kecil sesuai kebutuhannya saja. Misalnya produk fashion. Penelitian ini mengusulkan solusi untuk gap tersebut, yaitu dengan menggunakan algoritma Jaccard Index untuk menemukan kemiripan pembeli berdasarkan jumlah sub kategori, sejumlah pembeli ritel potensial dengan kebutuhan barang yang sama akan dapat dikumpulkan untuk dapat membeli barang dari pedagang grosir dalam jumlah besar. Kata kunci: Sistem rekomendasi, jaccard index, pembeli potensial, grosir 1. PENDAHULUAN Perdagangan grosir memungkinkan pembeli mendapatkan harga murah namun mensyaratkan pembelian dengan jumlah minimum tertentu. Padahal tidak semua orang membutuhkan barang, misalnya barang fashion seperti baju, tas, dan sepatu, dalam jumlah yang banyak, sedangkan batas minimum pembelian grosir bisa enam, dua belas, atau bahkan lebih, tergantung dari kebijakan pedagang. Para calon pembeli yang tetap ingin mendapatkan harga yang murah harus bergabung dengan pembeli lain, dengan target barang yang sama, untuk dapat membeli secara grosir. Namun ada kendala, bagaimana pembeli dengan target barang yang sama atau mirip tersebut dapat saling menemukan dan bergabung dalam transaksi pembelian. Pemilihan fokus pada produk fashion didasarkan dari hasil survei di kalangan remaja seperti dikutip oleh Setyanti (November 2011) yang mengatakan bahwa produk fashion merupakan salah satu produk yang paling dicari dalam bisnis online shop. Masalah yang diangkat dalam penelitian ini adalah cara merancang dan membangun aplikasi yang dapat menemukan dan mengumpulkan pembeli potensial terhadap barang grosir fashion, dengan lingkup: 1) Aplikasi dibuat untuk merekomendasikan user, bukan item, dan hanya sampai menyusun pembeli 25 TIM
potensial, tidak mencakup penjualan, transaksi, ataupun pengiriman. 2) Aplikasi akan memberikan rekomendasi selama ditemukan hasil dengan nilai di atas nol. 3) Isu keamanan sistem di luar pengerjaan tugas akhir ini. 4) Dalam pengerjaan tugas akhir ini, pengujian algoritma akan menggunakan data dummy. Tujuan yang ingin dicapai penelitian ini adalah membuat aplikasi, Fashsale, yang memiliki fungsi menemukan dan merekomendasikan sesama pembeli dengan minat produk yang sama terhadap barang grosir fashion tertentu menggunakan algoritma Jaccard Index. 2. DASAR TEORI 2.1. Perdagangan Perdagangan adalah semua tindakan yang tujuannya menyampaikan barang untuk tujuan hidup sehari-hari, prosesnya berlangsung dari produsen sampai kepada konsumen. Perdagangan dibedakan menjadi dua yaitu perdagangan besar yang kita sebut sebagai grosir, maupun perdagangan kecil yang kita sebut sebagai ritel atau pengecer. Grosir adalah jenis perdagangan dengan cara membeli produk dari perusahaan pembuat produk atau produsen lain dalam jumlah yang besar dan menjualnya kembali ke perusahaan ritel. Karena perusahaan grosir mengambil langsung dari produsen dalam jumlah yang banyak maka pedagang grosir akan mendapatkan harga yang lebih murah. Ritel adalah jenis perdagangan yang dilakukan dalam partai kecil, dimana peritel biasanya membeli barang dari pedagang grosir lalu menjualnya kembali kepada konsumen akhir. 2.2. Jaccard Index Algoritma Jaccard Index yang dikenal juga dengan Jaccard Similarity Coefficient adalah algoritma yang digunakan untuk membandingkan kesamaan antara dua set sampel. Jaccard Index memiliki nilai output antara nol sampai dengan satu dimana apabila nilai output semakin mendekati angka nol berarti semakin tidak ada kesamaan antara kedua set sampel, dan apabila semakin mendekati angka satu berarti semakin banyak kesamaan antara kedua set sampel. Menurut Ullman (2011) algoritma Jaccard Index dapat menemukan kemiripan kebiasaan membeli dari user. Fashsale akan memanfaatkan algoritma tersebut untuk menemukan kemiripan sub kategori isi wishlist dari user sehingga dapat memberikan rekomendasi pembeli potensial. Jaccard Index: Berikut adalah formula algoritma J(A,B) =!!!! 26 TIM
A = Set A / User A B = Set B / User B = Intersect = Union Cara kerja algoritma Jaccard Index ini adalah dengan membagi jumlah intersect antara kedua user dengan jumlah union antara kedua user. J = M!! M!" + M!" + M!! M!! merupakan jumlah dari atribut dimana A dan B memiliki nilai nol M!" merupakan jumlah dari atribut dimana A memiliki nilai satu dan B memiliki nilai nol M!" merupakan jumlah dari atribut dimana A memiliki nilai nol dan B memiliki nilai satu Berikut adalah pseudocode dari algoritma Jaccard Index: /* ALGORITMA Jaccard Index(userA, userb) Fungsi : Mencari pembeli potensial yang memiliki kesukaan yang sama berdasarkan history wishlist Input : sub category dari history wishlist Variabel yang digunakan : wishlist usera dan userb dengan tipe // data array. Output : Nilai kesamaan antara 0(tidak mirip) sampai 1(mirip) */ 1. intersect = 0 2. union = 0 3. UNTUK n=1 sampai jumlah array wishlist usera 4. JIKA array wishlist usera[n] ada di array wishlist userb 5. JIKA jumlah wishlist usera < userb 6. intersect += jumlah wishlist usera 7. union += jumlah wishlist userb 8. JIKA TIDAK 9. intersect += jumlah wishlist userb 10. union += jumlah wishlist usera 11. JIKA TIDAK 12. union += jumlah wishlist usera 13. SELESAI 14. 15. UNTUK n=1 sampai jumlah array wishlist userb 16. JIKA array wishlist userb[n] tidak ada di array wishlist usera 17. union += jumlah wishlist userb 18. SELESAI 19. 20. Nilai kemiripan = intersect / union 3. PERANCANGAN SISTEM 3.1. Penyusunan Rekomendasi Proses penyusunan rekomendasi terdiri dari empat tahap, mulai pengambilan data user wishlist dari dalam database, perhitungan nilai kesamaan menggunakan algoritma Jaccard Index, memperbaharui tabel Jaccard Index, sampai menampilkan rekomendasi pembeli potensial user. 3.1.1. Mengambil isi wishlist pengguna kepada Wishlist adalah daftar item barang yang ingin dibeli oleh pengguna (pembeli ritel). Isi dari daftar inilah yang akan dijadikan patokan pencarian kesamaan dengan pengguna lain. Setiap item barang akan dikelompokkan ke dalam suatu kategori untuk memudahkan pencarian kemiripan antar pengguna. 3.1.2. Menghitung nilai kesamaan Daftar barang yang sudah dikelompokkan akan saling dibandingkan antar pengguna dengan menggunakan algoritma Jaccard Index untuk menghitung nilai kesamaannya. Cara kerja penghitungan diilustrasikan oleh kode berikut: 1 function getsimiliarity($usera, $userb) { 2 $match = 0; 3 $diff = 0; 4 //untuk mencari sub category yang ada di user A sama atau tidak dengan user B 5 for ($index = 0; $index < sizeof($array_wishlist_a_name); $index++) { 6 //jika arraya[i] ada di dalam arrayb 7 if (in_array($array_wishlist_a_name[$index], $array_wishlist_b_name)) { 8 //jika quantity yang ada di arraya lebih kecil sama dengan quantity di userb 27 TIM
9 if ($array_wishlist_a_qty[$array_wishlist_a_name[$index]] <= 10$array_wishlist_b_qty[$array_wishlist_a_name[$index]]) { 11 $match += $array_wishlist_a_qty[$array_wishlist_a_name[$index]]; 12 $diff += $array_wishlist_a_qty[$array_wishlist_a_name[$index]] + 13$array_wishlist_b_qty[$array_wishlist_a_name[$index]] 14$array_wishlist_a_qty[$array_wishlist_a_name[$index]]; 15 } else { 16 //jika tidak sama maka 17 $match += $array_wishlist_b_qty[$array_wishlist_a_name[$index]]; 18 $diff += $array_wishlist_a_qty[$array_wishlist_a_name[$index]] + 19$array_wishlist_b_qty[$array_wishlist_a_name[$index]] 20$array_wishlist_b_qty[$array_wishlist_a_name[$index]]; 21 } 22 } else { 23 //jika tidak ada kesamaan dari wishlist usera[i] dengan userb 24 $diff += $array_wishlist_a_qty[$array_wishlist_a_name[$index]]; 25 } 26 } 27 //untuk mencari sub category yang ada di user B tetapi tidak ada di user A 28 for ($index = 0; $index < sizeof($array_wishlist_b_name); $index++) { 29 if (!in_array($array_wishlist_b_name[$index], $array_wishlist_a_name)) { 30 $diff += $array_wishlist_b_qty[$array_wishlist_b_name[$index]]; 31 } 32 } 33 return $match / $diff; 34} 3.2. Diagram Database Hubungan antara entitas data yang tercakup dalam aplikasi ini digambarkan melalui diagram pada Gambar 3.1, yang sekaligus mengilustrasikan desain skema database. 3.1.3. Memperbarui tabel jaccard Nilai hasil kalkulasi setiap pasangan daftar barang akan dicatat dan dikumpulkan dalam tabel khusus, table jaccard, yang berisi informasi kemiripan dari seluruh wishlist pengguna. 3.1.4. Memberikan rekomendasi Rekomendasi yang diberikan sistem adalah sesama pengguna yang memiliki kemiripan wishlist, yang didasarkan dari nilai index jaccard yang sudah dihitung terdahulu. Pemilihan pengguna yang direkomendasi di dapatkan dari attribut id_user teratas pada tabel jaccard setelah diurutkan secara descending. Gambar 1. Diagram Database 3.3. Sitemap Struktur website Fashsale digambarkan melalui peta situs (sitemap), Gambar 3.2, yang terdiri dari halaman register, login, logout, buy item, item list, sell item, new selling, selling list, message, compose, inbox, outbox, wishlist. Gambar 2. Sitemap 28 TIM
3.4. Arsitektur Sistem Arsitektur sistem, Gambar 3.3, mengilustrasikan struktur aplikasi Fashsale. Modul utama adalah modul rekomendasi yang menggunakan algoritma Jaccard Index. Fashsale didukung oleh database engine MySQL, server web Apache, dan dibangun dengan PHP. Tabel 1. Data ujicoba User No Wishlist (Quantity) 1 A(1), B(2), F(1), G(3) 2 A(2), C(2) 3 B(2), F(3), G(1), H(1), I(1) 4 A(1), B(1), C(2), D(1) 5 C(2), D(1), E(2), F(1) 6 F(3), G(2), H(1), J(1) 7 A(1), B(2), D(1), G(3) 8 A(2), C(2), J(1) 9 A(1), F(2), G(3), J(1) 10 G(1), H(1), I(1), J(1) Gambar 3. Arsitektur sistem 4. PENGUJIAN 4.1. Tujuan pengujian Pengujian dilakukan untuk membuktikan bahwa calon pembeli potensial yang direkomendasikan memiliki tingkat kesamaan isi wishlist lebih tinggi daripada user lain yang tidak direkomendasikan. 4.2. Data pengujian Data yang digunakan dalam pengujian adalah data rekayasa (dummy) namun representatif untuk kasus ini. Tabel 1 menunjukan data dummy yang digunakan untuk melakukan pengujian aplikasi, berupa sepuluh user dengan rata-rata isi wishlist kurang dari sepuluh kategori (Tabel 2) dengan sebaran acak. Kategorisasi tersebut didasarkan pada manfaat kegunaan, karena perilaku konsumen akan membeli barang sesuai dengan manfaat yang dibutuhkan (Ma ruf, 2005). Tabel 2. Kategorisasi barang Kategori Nama Deskripsi A Top Pakaian atas B Bottom Pakaian bawah C Dress Pakaian terusan, dipakai untuk pesta D Hat Pelindung kepala E Accessory Hiasan tangan (gelang), kuping (anting) F Underwear Pakaian dalam G Bag Tempat menyimpan barang H Make- up Alat untuk mempercantik wajah I Shoes Alas kaki J Watch Pengingat waktu 4.3. Skenario pengujian Skenario pengujian yang dilakukan adalah dengan cara mengambil tiga sampel hasil pengujian dan dibuktikan kebenarannya bahwa user yang 29 TIM
direkomendasikan selalu mempunyai kesamaan isi wishlist yang lebih tinggi atau sama dengan user yang tidak direkomendasikan. 4.4. Hasil pengujian Pengujian dilakukan beberapa kali dengan menggunakan pasangan pengguna yang berbeda. Tabel 3. Hasil pengujian pertama User A User B Score 1 7 0.75 1 9 0.55 1 3 0.36 1 6 0.27 1 4 0.2 1 8 0.1 1 2 0.1 1 5 0.09 1 10 0.08 Tabel 3 merupakan hasil perhitungan algoritma Jaccard Index telah diurutkan secara descending berdasarkan score. Hasilnya, yang memiliki tingkat kesamaan paling tinggi dengan user 1 adalah user 7 dengan score 0.75. Pencocokan dengan data aslinya ternyata antara user 1 dan 7 memiliki isi wishlist 6 barang dengan sub kategori yang sama dan 2 sub kategori yang berbeda, sedangkan yang memiliki tingkat kesamaan paling rendah dengan user 1 adalah user 10 dengan isi wishlist 0 barang dengan sub kategori yang sama dan 11 barang dengan sub kategori yang berbeda. Tabel 4 melaporkan hasil ujicoba bahwa yang memiliki tingkat kesamaan paling tinggi dengan user 2 adalah user 8 dengan score 0.8 dan setelah dicocokan Tabel 4. Hasil pengujian kedua User A User B Score 2 8 0.8 2 4 0.5 2 5 0.25 2 1 0.1 2 9 0.1 2 7 0.1 2 3 0 2 6 0 2 10 0 dengan data aslinya ternyata antara user 2 dan 8 memiliki isi wishlist 4 barang dengan sub kategori yang sama dan 1 sub kategori yang berbeda, sedangkan yang memiliki tingkat kesamaan paling rendah dengan user 2 adalah user 3 dengan isi wishlist 0 barang dengan sub kategori yang sama dan 12 barang dengan sub kategori yang berbeda. Tabel 5. Hasil pengujian ketiga User A User B Score 3 6 0.5 3 10 0.36 3 7 0.33 3 9 0.25 3 1 0.25 3 4 0.08 3 5 0.07 3 2 0 3 8 0 Tabel 5 melaporkan hasil ujicoba bahwa yang memiliki tingkat kesamaan 30 TIM
paling tinggi dengan user 3 adalah user 6 dengan score 0.5 dan setelah dicocokan dengan data aslinya ternyata isi wishlist antara user 3 dan 6 ada 5 barang dengan sub kategori yang sama dan 10 barang dengan sub kategori yang berbeda, sedangkan yang memiliki tingkat kesamaan paling rendah dengan user 3 adalah user 2 dengan isi wishlist 0 barang dengan sub kategori yang sama dan 12 barang dengan sub kategori yang berbeda. 4.5. Analisis pengujian Dari hasil pengujian tiga sampel user, dapat diketahui bahwa besar nilai Jaccard Index (JI) selalu berbanding lurus dengan besar kemiripan sub kategori dari isi wishlist yang dimiliki kedua user. 5. KESIMPULAN DAN SARAN 5.1. Kesimpulan Berdasarkan hasil ujicoba, dapat disimpulkan bahwa: 1) Aplikasi Fashsale ini dapat mengumpulkan pembeli potensial dengan menggunakan algoritma JI yang dapat menemukan kemiripan jumlah sub kategori isi wishlist antar calon pembeli. 2) Parameter sub kategori yang digunakan oleh JI sangat bergantung kepada ketelitian untuk menentukan atributnya, semakin detil pemilihan atribut untuk sub kategori maka hasil yang didapatkan akan semakin akurat. Misal, sub kategori sepatu dapat diperdetil lagi menjadi sepatu olah raga, sepatu resmi, sepatu sandal, dan lain sebagainya. 3) Data yang digunakan untuk mencari kemiripan sub kategori isi wishlist adalah seluruh data di database sehingga aplikasi Fashsale tidak dapat mengetahui apakah user yang direkomendasikan masih aktif membeli barang atau tidak. 4) Algoritma JI membagi jumlah intersect dengan jumlah union dari seluruh isi wishlist kedua user sehingga apabila salah satu user memiliki banyak isi wishlist yang tidak dimiliki user lainnnya akan mengakibatkan semakin kecil nilai kemiripan sub kategori dari isi wishlist kedua user walaupun sebenarnya ada kemungkinan user tersebut adalah pembeli besar yang berpotensi untuk membeli barang yang sama dari user yang lainnya. 5.2. Saran Saran pengembangan bagi penelitian ini adalah: 1) Aplikasi ini dapat berguna juga untuk Business To Business (B2B), terutama untuk startup bisnis yang membutuhkan sejumlah packaging dengan harga yang murah dengan cara mengumpulkan pembeli potensial dari startup bisnis lain yang juga 31 TIM
membutuhkan packaging yang sama, demi efisiensi biaya. 2) Ditambahkan parameter lain dalam pencarian, seperti merek barang dan harga barang, untuk mempertajam akurasi. 3) Digunakan algoritma atau metode lain untuk meningkatkan akurasi hasil pada kasus-kasus tertentu, misalnya menghitung tingkat kepuasan pembeli terhadap suatu barang. 4) Ditambahkan filtering user aktif saja yang akan diolah dalam pencarian kesamaan, agar hasil rekomendasi lebih akurat. 6. DAFTAR PUSTAKA Ma ruf, H. 2005. Pemasaran Ritel. PT Gramedia Pustaka Utama, Jakarta, Indonesia. Setyanti, CA. 2011. Prospek Cerah "Online Shopping", Female Kompas, Indonesia. [Online] Tersedia di: http://female.kompas.com/read/2011/11/25/11510670/ Prospek.Cerah.Online.Shopping. [Diakses tanggal 29 Maret 2012] Ullman, JD, Rajaramand, A. 2011. Mining of Massive Datasets. Cambridge University Press, Cambridge, United Kingdom. 32 TIM