Collaborative Filtering

9.4 Collaborative Filtering

Pada dasarnya, film merupakan salah satu media massa komunikasi yang digunakan untuk mengkomunikasikan suatu realita yang terjadi dalam kehidupan sehari-hari. Didukung oleh perkembangan teknologi dan paduan unsur seni, film semakin dapat menciptakan gambar-gambar yang mendekati kenyataan. Kehadiran film dianggap sangat penting, konten yang disajikan mampu menjadi sumber hiburan bahkan mampu memberikan indoktrinasi kepada penontonnya. Perkembangan produksi film menjadi semakin banyak, dan peminat film pun mengalami kesulitan dalam pemilihan film yang akan ditonton sesuai dengan keinginannya diantara banyak deretan film baru tersebut. Hal ini yang mendasari adanya sistem rekomendasi film yang memberikan informasi atau item yang bersifat personal dengan mempelajari interaksi seorang pengguna dengan pengguna lain dengan item film yang telah tersimpan sebelumnya.

Collaborative Filtering adalah salah satu metode rekomendasi film yang didasarkan pada rating. Rating setiap pengguna film menjadi penting dan khusunya rating 5 bintang agar menghasilkan rekomendasi yang berkualitas. Collaborative filtering menganggap bahwa selera pengguna terhadap suatu item atau barang akan cenderung sama dari waktu ke waktu. Ditambah lagi, pengguna yang menyukai suatu item biasanya juga akan menyukai item lain yang disukai oleh pengguna lain yang juga menyukai item yang sama dengan pengguna tersebut. Pada penelitian ini mengajukan metode Collaborative Filtering (CF) menggunakan

maching learning Hadoop sebagai metode dalammemberikan rekomendasi dengan skalabilitas yang besar.

9.4.1 Dasar Teori

4. Dataset Dataset yang digunakan adalah training dataset dari Netflix

Prize Challenge. Data tersebut dalam betuk training_set.tar yang berisi 17770 file film. Pada baris pertama setiap file film berisi id film, kemudia paragraph penjelasan film berisi rating dari costumer beserta tanggal film tersebut di tayangkan. Kemudian file training tersebut di ubah dalam 3 fitur yang terdiri atas UserID, MovieID, Rating. Data yang di ubah menjadi 3 fitur tersebut di masukkan pada folder input dengan nama file userRating.txt.

5. Konsep Big Data Big data adalah suatu kondisi yang menggambarkan sistem

basis data konvensional yang memiliki volume data terstruktur ataupun tidak terstruktur yang besar. Pertumbuhan jumlah data ini akan semakin berkembang dan arsitektur sistem basis data basis data konvensional yang memiliki volume data terstruktur ataupun tidak terstruktur yang besar. Pertumbuhan jumlah data ini akan semakin berkembang dan arsitektur sistem basis data

Untuk itu, dibutuhkan sebuah teknologi informasi yang dapat melakukan proses pengolahan, penyimpanan dan analisis data dalam beragam bentuk/format, berjumlah besar dan pertambahan data yang sangat cepat.

6. Collaborative Filtering Metode CF merupakan salah satu metode rekomendasi

yang menggunakan data rating dari pengguna lain. Metode ini bertujuan untuk memberikan rekomendasi kepada pengguna yang akan memilih atau membeli suatu produk berdasarkan dari rating yang diberikan oleh pengguna lain. Ada dua (2) jenis sistem rekomendasi menggunakan CF, yaitu:

a. User-based Collaborative Filtering (UFC) Pada UFC ada banyak teknik yang dapat digunakan untuk

mencari nilai prediksi untuk pengguna aktif ( 𝑃 π‘Ž,𝑖 ), mulai dari dengan cara menjumlahkan semua rating dari pengguna lain yang

seleranya sama dan kemudian dibagi dengan jumlah pengguna tersebut, hingga menggunakan cara pembobotan.

Ada 3 tahap dalam mencari nilai prediksi ( 𝑃) dan daftar rekomendasi ( 𝐿 ) untuk pengguna aktif, yaitu: input, proses (algoritma UFC), dan keluaran ( 𝑃 dan 𝐿). Input berupa nilai irisan 𝐿 π‘Ž,𝑖 dimana nilai itu merupakan item yang sudah di rating oleh pengguna aktif dan irisan 𝐿 𝑒,𝑖 yang merupakan item yang di rating oleh pengguna lain. Dalam algroitma UFC, sebelum mencari nilai

𝑃 π‘Ž,𝑖 perlu dicari dahulu nilai tetangga dari π‘ˆ π‘Ž (jumlah rating dari pengguna lain yang seleranya sama dengan pengguna aktif).

Perhitungan rumusnya:

(1) Pada Rumus (1), variabel π‘š merupakan jumlah tetangga. Dalam algortima ini dalam perhitungannya tidak melibatkan

variabel yang menunjukan bahwa seorang tetangga berbeda dari tetangga lainnya.

Pada Rumus (2), variabel π‘Š merupakan bobot yang diberikan pengguna π‘ˆ π‘š . Nilai π‘Š dapat ditentukan secara manual oleh π‘ˆ π‘Ž atau pembuat sistem. Atau dapat juga dicari dengan cara menambahkan variabel rata-rata rating dari π‘ˆ π‘Ž dan π‘ˆ π‘š , seperti pada rumus:

Algoritma pembobotan dan rata-rata rating dapat digabungkan supaya mendapatkan 𝑃 yang lebih spesifik dengan menggunakan rumus:

Dengan menggabungkan pembobotan dan rata-rata rating penggua, nilai 𝑃 π‘Ž,𝑗 akan lebih spesifik karena melibatkan dua variabel yang berasal dari kegiatan lampau pengguna aktif dan tetangga.

b. Item-based Collaborative Filtering Pendekatan item-based yaitu dengan menggunakan

sekumpulan item yang telah diberi rating oleh pengguna dan menghitung kemiripannya terhadap target item 𝑖 untuk kemudian dipilih sebanya π‘˜ item yang paling mirip. Setelah ditemukan item yang paling mirip, kemudian dihitung berdasarkan nilai rata-rata dari rating dari pengguna pada item yang mirip. Untuk menghitung kemiripan item terdapat dua cara yaitu:

o Adjusted Cosine-based similarity Digunakan menghitung kemiripan dari pengguna yang

memberikan rating berbeda, dengan menggunakan rumus: βˆ‘ (𝑅 π‘š π‘˜,𝑝 βˆ’π‘… Μ…Μ…Μ…Μ…)(𝑅 π‘˜ π‘˜,π‘ž βˆ’π‘… Μ…Μ…Μ…Μ…) π‘ π‘–π‘š(𝑖 π‘˜

Dimana variabel π‘ π‘–π‘š(𝑖 𝑝 ,𝑖 π‘ž ) merupakan nilai similarity antara item 𝑖 𝑝 dan 𝑖 π‘ž . 𝑅 π‘˜,𝑝 merupakan nilai rating pengguna π‘˜ terhadap item 𝑝 , sedangkan 𝑅 π‘˜ adalah rata-rata rating dari user π‘˜.

o Correlation-based similarity Digunakan untuk mengukur seberapa dekat hubungan

antara dua variabel. Untuk lebih jelasnya dapat dilihat pada rumus:

Dimana untuk mendapatkan persmaan 𝑅 𝑝 dan 𝑅 π‘ž adalah dengan menggunakan rumus: Μ…Μ…Μ…Μ… = 1 π‘š 𝑅

Dimana 𝑅 𝑝,𝑖 merupakan rating item 𝑝 oleh pengguna 𝑖 dan 𝑅 π‘ž,𝑖 merupakan rating item π‘ž oleh pengguna 𝑖.

9.4.2 Implementasi

Proses ini menjelaskan mengenai tahapan map reduce pada dataset yang dimasukkan. Map reduce ini berdasarkan userID dari pemberi rating. Berikut sedikit potongan kode program dari proses map reduce.

publicvoid map(LongWritable key , Text value , Context context ) throws IOException, InterruptedException {

//input user,movie,rating String[] user_movie_rating = value .toString().trim().split( "," ); int userID = Integer.parseInt( user_movie_rating [0]); String movieID = user_movie_rating [1]; String rating = user_movie_rating [2];

context .write( new IntWritable( userID ), new Text( movieID + ":" + rat- ing )); }

publicvoid reduce(IntWritable key , Iterable<Text> values , Context context ) throws IOException, InterruptedException {

StringBuilder sb = new StringBuilder(); while ( values .iterator().hasNext()) {

sb .append( "," + values .iterator().next()); } //key = user value=movie1:rating, movie2:rating... context .write( key , new Text( sb .toString().replaceFirst( "," , "" )));

Source Code 9.6 Map Reduce

Penjelasan dari Kode Program1: o Baris 1-10 merupakan proses mapping untuk memilah data pada

setiap dataset. o Baris 12-22 merupakan proses reduce untuk mengelompokkan

data berdasarkan userID. Sebelum dapat menjalankan program, penulis melakukan start

hadoop dengan syntax β€œstart-all.cmd”

Setelah hadoop aktif, maka penulis menyiapkan data yang akan dijalankan pada kode program.seperti yang sudah dijelaskan pada sub- bab dataset, penulis menggunakan data yang berisi userID, movieID, dan rating. Data ini berjumlah 21 data yang disimpan dalam file userRating.txt.

Ketika ingin menjalankan kode program, sebaiknya file yang dijadikan dataset diunggah ke dalam database hadoop. Disini penulis menggunakan Syncfusion Big Data Studio untuk menyimpan file input dan hasil output dari kode program yang dijalankan. Untuk mengkoneksikan antara kode program yang dijalankan dengan database hadoop, maka diperlukan syntax yang mendefinisikan dimana file input yang akan dijalankan. Berikut syntax yang digunakan untuk koneksi ke database hadoop.

1 args = new String[7];

3 args[0]= "hdfs://localhost:9000/user/hduser/cf/input/userRating.txt"; args[1]= 4 "hdfs://localhost:9000/user/hduser/cf/output6/DividerByUser"; args[2]= "hdfs://localhost:9000/user/hduser/cf/output6/coOccurrenceMatr 5 ixBuilder"; args[3]= "hdfs://localhost:9000/user/hduser/cf/output6/NormalizeCoOccur 6 renceMatrix"; args[4]= "hdfs://localhost:9000/user/hduser/cf/output6/MultiplicationMa 7 pperJoin"; args[5]= "hdfs://localhost:9000/user/hduser/cf/output6/MultiplicationSu 8 m"; args[6]= "hdfs://localhost:9000/user/hduser/cf/output6/RecommenderListG 9 enerator";

Penjelasan dari Kode Program1: o Baris 1 merupakan inisialisasi objek baru bernama args dengan

panjang array String sejumlah 7. o Baris 3 merupakan pengambilan file input bernama userRating

pada localhost:9000. o Baris 4-9 merupakan penyimpanan hasil running setiap file class

dari kode program.

Maka setelah kode program berhasil dijalankan, hasil output akan disimpan dalam localhost:9000.

Hasil output dari implementasi Hadoop Map Reduce telah berhasil diimplementasikan seperti terlihat pada gambar 4 sampai dengan gam- bar 7. Implementasi Hadoop MapReduce ini menggunakan kode pro- gram dan dataset yang diperoleh dari https://github.com/blackruan/rec- ommender-system.git.