Aamir, M., & Bhusry, M. (2015). Recommendation System: State of the Art Approach. International Journal of Computer Applications, 25-32. Adi, P. S. (2010). SISTEM REKOMENDASI NILAI MATA KULIAH MENGGUNAKAN. Seminar Nasional Informatika 2010 (semnasIF 2010). Ariani, P. D., Kusuma, E. M., & Basuki, D. K. (2010). SISTEM PENDUKUNG KEPUTUSAN PEMILIHAN JURUSAN SMK MENGGUNAKAN NEUROFUZZY. Arief, A., Widyawan, & Hantono, B. S. (2012). Rancang Bangun Sistem Rekomendasi Pariwisata Mobile dengan Menggunakan Metode Collaborative Filtering dan Location Based Filtering. JNTETI, Vol 1, No. 3. Atthina, N., & Iswari, L. (2014). Klasterisasi Data Kesehatan Penduduk untuk Menentukan Rentang Derajat Kesehatan Daerah dengan Metode K-Means. Seminar Nasional Aplikasi Teknologi Informasi (SNATI). Yogyakarta. Basri, S. (2011, september). Seta Basri Menulis Terus. Retrieved from http://setabasri01.blogspot.co.id/2011/04/uji-korelasi-pearson.html Fadhi, l. J., & Mahmudy, W. F. (2007). Pembuatan Sistem Rekomendasi Menggunakan Decision Tree dan Clustering. Kursor,Vol 3, no 1, 45-66. Gulo, W. (2000). Metode Penelitian. Yogyakarta: Grasindo. Hasibuan, Z. A. (2007). Metodologi Penelitian pada Bidang Ilmu Komputer dan Teknologi Informasi. Konsep, Teknik, dan Aplikasinya. Jakarta. Jurusan Teknik Elektro dan Teknologi Informasi. (2011). Buku Panduan Akademik 2011/2012. Yogyakarta. 62
Laksana, E. A. (2014). Collaborative Filtering dan Aplikasinya. Jurnal Ilmiah Teknologi Informasi Terapan Vol.1. Laudon, K. C., & Laudon, J. P. (2008). Management Information System Ed. 10. In C. Sungkono, & M. P. Eka, Sitem Informasi Manajemen Ed. 10. Jakarta: Penerbit Salemba Empat. Li, C., & Luo, Z. (2011). A Hybrid Item-based Recommendation Algorithm against Segment
Attack
in
Collaborative
Filtering
Systems
.
Information
Management, Innovation Management and Industrial Engineering (ICIII), 2011 International Conference on (Volume:2 ) , 403 - 406 . Linden, G., Smith, B., & York, J. (2006). Amazon.com Recommendations Item-toItem Collaborative Filtering. IEEE Computer Society. Masruri, F., & Firdaus, M. W. (2007). Personalisasi Web E-Commerce Menggunakan Recommender System dengan Metode Item-Based Collaborative filtering. Melville, P., & Sindhwani, V. (2010). Recommender Systems. Encyclopedia of Machine Learning. Melville, P., & Sindhwani, V. (2010). Recommender Systems. Whatson Research Center. Mutiara, A. B., Awaludin, R., Muslim, A., & Oswari, T. (2014). TESTING IMPLEMENTASI
WEBSITE
OPELTGUNASYS
DENGAN
REKAM METODE
MEDIS
ELEKTRONIK
ACCEPTANCE
TESTING.
Prosiding Seminar Ilmiah Nasional Komputer dan Sistem Intelijen (KOMMIT 2014).
63
Nofriansyah, D. (2014). Konsep Data Mining Vs Sistem Pendukung Keputusan. Yogyakarta: Deepublish. Putra, A., Mahmudy, W. F., & Setiawan, B. D. (2014). SISTEM REKOMENDASI MATA KULIAH PILIHAN MAHASISWA DENGAN CONTENT-BASED FILTERING DAN COLLABORATIVE FILTERING (STUDI KASUS: UNIVERSITAS BRAWIJAYA). DORO: Repository Jurnal Mahasiswa PTIIK Universitas Brawijaya vol 5 no 17. Ramadhan, A. (2006). Pemrograman Web Database dengan PHP dan MySQL. Jakarta: Elex Media Komputindo. Saimadhu. (2015, May 5). dataasprint. Retrieved November 11, 2015, from http://dataaspirant.com:
http://dataaspirant.com/2015/05/25/collaborative-
filtering-recommendation-engine-implementation-in-python/ Salusu, J. (1996). Pengambilan keputusan stratejik. Jakarta: Grasindo, Gramedia Widiasarama Indonesia. Saric, A., Hadzikadic, M., & Wilson, D. (2009). Alternative Formulas for Rating Prediction Using Collaborative Filtering. Sarwar, B., Karypis, G., Konstan, J., & Riedl, J. (2001). Item-based collaborative filtering recommendation algorithms. WWW '01 Proceedings of the 10th international conference on World Wide Web , 285-295. Scafer, J., Konstan, J., & Riedl, J. (2001). Item-Based Collaborative filtering Recommender Algorithms. Schafer, J. B., Frankowski, D., Herlocker, J., & Sen, S. (2007). Collaborative Filtering Recommender Systems. The Adaptive Web Vol. 4321, 291-324.
64
Segaran, T. (2007). Programming Collective Intelligence. United States of America: dia, Inc. Simarmala, J. (2010). Rekayasa Perangkat Lunak. Yogyakarta: Penerbit Andi. Susanto, H. (2014). Perancangan Sistem Rekomendasi Pakaian Distro dengan Menggunakan Item Collaborative Filtering ( Studi Kasus: The Junggle Medan ). Pelita Informatika Budi Darma, Vol VI, No 3. Tsalaatsa, R., Santoso, E., & Ratnawati, D. E. (2011). SISTEM REKOMENDASI FILM
MENGGUNAKAN
ITEM-BASED
CLUSTERING
HYBRID
METHOD. Wang, J., & Yin, J. (2013). Combining User-based and Item-based Collaborative Filtering Techniques to Improve Recommendation Diversity. Biomedical Engineering and Informatics (BMEI), 2013 6th International Conference, 661 - 665. ZURB, I. (2015, February 2). Zurb Foundation. Retrieved from Zurb Foundation: http://foundation.zurb.com/
65
LAMPIRAN Kode Python membuat sistem rekomendasi dapat didownload secara lengkap di https://github.com/rendiya/rekomen-cf #!/usr/bin/env python # Implementation of collaborative filtering recommendation engine from recommendation_data import dataset from math import sqrt import sys import MySQLdb db = MySQLdb.connect(host="localhost", passwd="",db="rekomendasi") cursor = db.cursor ()
user="root",
def pearson_correlation(person1,person2): # To get both rated items both_rated = {} for item in dataset[person1]: if item in dataset[person2]: both_rated[item] = 1 number_of_ratings = len(both_rated) # Checking for number of ratings in common if number_of_ratings == 0: return 0 # Add up all the preferences of each user person1_preferences_sum = sum([dataset[person1][item] both_rated]) person2_preferences_sum = sum([dataset[person2][item] both_rated])
for
item
in
for
item
in
# Sum up the squares of preferences of each user person1_square_preferences_sum = sum([pow(dataset[person1][item],2) for item in both_rated]) person2_square_preferences_sum = sum([pow(dataset[person2][item],2) for item in both_rated]) # Sum up the product value of both preferences for each item product_sum_of_both_users = sum([dataset[person1][item] dataset[person2][item] for item in both_rated]) 1
*
# Calculate the pearson score numerator_value = product_sum_of_both_users (person1_preferences_sum*person2_preferences_sum/number_of_ratings) denominator_value = sqrt((person1_square_preferences_sum pow(person1_preferences_sum,2)/number_of_ratings) (person2_square_preferences_sum pow(person2_preferences_sum,2)/number_of_ratings)) if denominator_value == 0: return 0 else: r = numerator_value/denominator_value return r
* -
def most_similar_users(person,number_of_users): # returns the number_of_users (similar persons) for a given specific person. scores = [(pearson_correlation(person,other_person),other_person) for other_person in dataset if other_person != person ] # Sort the similar persons so that highest scores person will appear at the first scores.sort() scores.reverse() return scores[0:number_of_users] def user_reommendations(person): # Gets recommendations for a person by using a weighted average of every other user's rankings totals = {} simSums = {} rankings_list =[] personstr = str(person) listdata = cocokin(personstr) print listdata #scores2 = [(pearson_correlation(person,other)) for other in dataset if other != person ] scores2 = [(pearson_correlation(person,other)) for other in listdata if other != person ] print scores2 mymax = max(scores2) print '.........', mymax for other in listdata: # don't compare me to myself if other == person: #if other not in listdata or other == person: continue sim = pearson_correlation(person,other) 2
#print ">>>>>>>",sim # ignore scores of zero or lower #if sim <=0: #continue if sim >= mymax: other2 = other for item in dataset[other2]: # only score movies i haven't seen yet if item not in dataset[person] or dataset[person][item]
== 0:
# Similrity * score totals.setdefault(item,0) totals[item] += dataset[other2][item]* sim # sum of similarities simSums.setdefault(item,0) simSums[item]+= sim # Create the normalized list rankings = [(total/simSums[item],item) for item,total in totals.items()] rankings.sort() rankings.reverse() # returns the recommended items recommendataions_list = [recommend_item for score,recommend_item in rankings] return recommendataions_list # recommendataions_list = [recommend_item for score,recommend_item in mymax] # return recommendataions_list def cocokin(other3): #cursor = db.cursor () cursor.execute ("SELECT * FROM id_mahasiswa = "+other3+" ") prodi = cursor.fetchall() dataprodi = list() datasemester = list() for row in prodi : #prog1 = row['id_mahasiswa'] dataprodi.append(str(row[6])) 3
`data_mahasiswa`
WHERE
datasemester.append(int(row[4])) for x in dataprodi: x, for y in datasemester: y, x1 = x y1 = str(y) print x1,y1 #other2 = '400000' #cursor.execute ("SELECT id_mahasiswa FROM data_mahasiswa WHERE prodi = ""'"+x1+"'"" ") cursor.execute ("SELECT id_mahasiswa FROM data_mahasiswa WHERE prodi = ""'"+x1+"'"" and semester > ""'"+y1+"'"" ") data = cursor.fetchall () listdata = list() for row in data : #prog1 = row['id_mahasiswa'] listdata.append(int(row[0])) listdata=listdata print listdata return listdata ############end function############### user = sys.argv[1] user = int(user) varlist = user_reommendations(user) sama = most_similar_users(user,12) #rows = [] print 'rekomendasi',user,'adalah',varlist print 'nilai sama',sama campur=[user]*len(varlist) #Replace some datas to MySQL datacampur = zip(campur,varlist) cursor = db.cursor() cursor.executemany('''replace into dummy_reko (nama, rekomendasi) values (%s, %s)''', datacampur) db.commit() db.close() sys.exit() 4
Hasil rekomendasi dengan data dummy Nim
Rekomendasi Mata Kuliah
Nim
310787
Prak. Jaringan Komputer
310787
Manajemen Jaringan Komputer
408009
Teknik Kompresi Data
408009
310787 310787 310787 310787 310787 310787 310787 310787 310787 310787 310787 310787 408009 408009 408014 408014 408014 408014 408014 408014 408014 408014 408014 408014 408014 408014 408014 408014 408014 408014 408014 408009 408009 408009 408009 408009 408009 408009
408009
Metodologi Penelitian dan Teknik Presentasi408009 Kerja Praktek
408009
Sistem Pendukung Keputusan
408009
Sistem Berbasis Pengetahuan
408009
Proyek Mahasiswa
408009
Prak. Sistem Telekomunikasi Pengembangan Aplikasi Piranti Bergerak
408009 408001
Komputer dan Masyarakat
408001
Integrasi Aplikasi dan Informasi Pemrograman Jaringan dan Web
408001 408001
Manajemen Industri Prak. Teknik Komputasi
408001 408001
Prak. Teknik Komputasi
408001
Teknik Antarmuka dan Periferal
408001
Prak. Pemrograman Berorientasi Obyek
408001
Perencanaan Rekayasa
408001
Sistem dan Keamanan Informasi
408001
Sistem Terdistribusi
408001
Rekayasa Perangkat Lunak Prak. Telekomunikasi Dasar
408001 408001
Prak. Mikroprosessor dan Komputer Prak. Basis Data
408001 408001
Kecerdasan Buatan
408001
Jaringan Komputer Ekonomi dan Bisnis Informasi
408001 408001
Teknologi Telekomunikasi Teknologi Multimedia
408001 408001
Teknik Visualisasi Grafis
408001
Teknik Komputer Interaktif Organisasi dan Arsitektur Komputer
408001 408001
Teknik Antarmuka dan Periferal
407999
Prak. Pemrograman Berorientasi Obyek Perencanaan Rekayasa
407980 407980
Sistem dan Keamanan Informasi
407980
Sistem Terdistribusi
407980
Rekayasa Perangkat Lunak
407980
Prak. Telekomunikasi Dasar
407980
5
Rekomendasi Mata Kuliah Prak. Teknik Komputasi
Prak. Mikroprosessor dan Komputer Prak. Basis Data
Kecerdasan Buatan
Teknologi Telekomunikasi Teknologi Multimedia
Teknik Visualisasi Grafis
Teknik Komputer Interaktif
Organisasi dan Arsitektur Komputer Teknik Pengolahan Isyarat Digital Penyambungan dan persinyalan Pancasila Instrumentasi Elektronis
Transmisi Telekomunikasi Teknik Tenaga Listrik Dasar Teknik Kendali Digital Teknik Kendali
Sistem Komunikasi
Prakt. Telekomunikasi Lanjut Prak. Teknik Kendali Digital
Prak. Perancangan Sistem Digital Prak. Mesin Listrik Dasar Prak. Komputasi
Prak. Instrumen dan Kendali Prak. Instalasi Perencanaan Rekayasa
Perancangan Sistem Digital Matematika Elektro Isyarat dan Sistem Fisika Teknik Fisika Elektro
TE Jaringan dan Komunikasi Data Medan Elektromagnetis Prak. Komputasi
Teknik Pengolahan Isyarat Digital Penyambungan dan persinyalan Pancasila
Instrumentasi Elektronis
Transmisi Telekomunikasi
Teknik Tenaga Listrik Dasar
Nim
Rekomendasi Mata Kuliah
Nim
Rekomendasi Mata Kuliah
Teknik Kendali
407980
Penyambungan dan persinyalan
407980
Teknik Kendali Digital
407980
Sistem Komunikasi
407980 407980 407980 407980 407980 407980 407980 407980 407980 407980 407980 407980 407980 407980 408008 408008 408008 407980 407980 407980 407980 407980 407980 407980 407980 407980 407980 407980 407980 407980 407980 407980 407980 407980 407980 407980 407980 407980 407980
407980 407980
Prakt. Telekomunikasi Lanjut
407980
Prak. Teknik Kendali Digital
407980
Prak. Perancangan Sistem Digital
407980
Prak. Mesin Listrik Dasar
407980
Prak. Komputasi
407980
Prak. Instrumen dan Kendali
407980
Prak. Instalasi Perencanaan Rekayasa
407980 407980
Perancangan Sistem Digital
407980
Matematika Elektro Fisika Teknik
407980 407980
TE Jaringan dan Komunikasi Data Medan Elektromagnetis
407980 407980
Pancasila
407980
Prak. Komputasi Pengukuran dan Instrumentasi
407980 407980
Teknik Pengolahan Isyarat Digital Penyambungan dan persinyalan
407980 407980
Pancasila
407980
Instrumentasi Elektronis Transmisi Telekomunikasi
400000 400000
Teknik Tenaga Listrik Dasar Teknik Kendali Digital
400000 400000
Teknik Kendali
400000
Sistem Komunikasi
400000
Prakt. Telekomunikasi Lanjut
400000
Prak. Teknik Kendali Digital
400000
Prak. Perancangan Sistem Digital
400000
Prak. Mesin Listrik Dasar
400000
Prak. Komputasi
400000
Prak. Instrumen dan Kendali
400000
Prak. Instalasi Perencanaan Rekayasa
400000 400000
Perancangan Sistem Digital
400000
Matematika Elektro Fisika Teknik
400000 400000
TE Jaringan dan Komunikasi Data Medan Elektromagnetis
400000 408008
6
Teknik Pengolahan Isyarat Digital Pancasila
Instrumentasi Elektronis
Transmisi Telekomunikasi
Teknik Tenaga Listrik Dasar Teknik Kendali Digital Teknik Kendali
Sistem Komunikasi
Prakt. Telekomunikasi Lanjut Prak. Teknik Kendali Digital
Prak. Perancangan Sistem Digital Prak. Mesin Listrik Dasar Prak. Komputasi
Prak. Instrumen dan Kendali Prak. Instalasi Perencanaan Rekayasa
Perancangan Sistem Digital Matematika Elektro
Fisika Teknik TE Jaringan dan Komunikasi Data Medan Elektromagnetis
Teknik Tenaga Listrik Dasar Teknik Kendali
Prakt. Telekomunikasi Lanjut Instrumentasi Elektronis Medan Elektromagnetis Sistem Komunikasi
Prak. Mesin Listrik Dasar
Prak. Teknik Kendali Digital Perencanaan Rekayasa
Prak. Instrumen dan Kendali
TE Jaringan dan Komunikasi Data Prak. Instalasi
Penyambungan dan persinyalan Prak. Perancangan Sistem Digital Perancangan Sistem Digital
Transmisi Telekomunikasi Teknik Pengolahan Isyarat Digital Teknik Kendali Digital Teknik Pengolahan Isyarat Digital
Nim
Rekomendasi Mata Kuliah
Nim
Rekomendasi Mata Kuliah
Pancasila
408008
Medan Elektromagnetis
408008
Penyambungan dan persinyalan
408008
Instrumentasi Elektronis
408008 408008 408008 408008 408008 408008 408008 408008 408008 408008 408008 408008 408008 408008 408008 408008 Nim
408008 355555
Transmisi Telekomunikasi
355555
Teknik Tenaga Listrik Dasar
355555
Teknik Kendali Digital
355555
Teknik Kendali
355555
Sistem Komunikasi
355555
Prakt. Telekomunikasi Lanjut
355555
Prak. Teknik Kendali Digital Prak. Perancangan Sistem Digital
355555 355555
Prak. Mesin Listrik Dasar
355555
Prak. Komputasi Prak. Instrumen dan Kendali
355555 355555
Prak. Instalasi Perencanaan Rekayasa
355555 355555
Perancangan Sistem Digital
355555
Pengukuran dan Instrumentasi
355555 355555
Rekomendasi Mata Kuliah
355555
TE Jaringan dan Komunikasi Data Teknik Pengolahan Isyarat Digital Teknik Kendali Neurofuzi
Penyambungan dan persinyalan
Antena dan Perambanan Gelombang Transmisi Telekomunikasi Teknik Penyandian Kanal Teknik Kendali Digital
Sistem Komunikasi Bergerak Sistem Komunikasi Rekayasa Trafik
Prakt. Telekomunikasi Lanjut Prak. Teknik Kendali Digital
Prak. Perancangan Sistem Digital Prak. Manajemen Telekomunikasi Prak. Elektronika Analog
Perancangan Sistem Digital Kuliah Kerja Nyata Jaringan Telekomunikasi
Hasil rekomendasi menggunakan data asli Nim
Rekomendasi Mata Kuliah
Nim
7
Rekomendasi Mata Kuliah
Nim
Nim
Rekomendasi Mata Kuliah
8
Rekomendasi Mata Kuliah
Nim
Rekomendasi Mata Kuliah
Nim
9
Rekomendasi Mata Kuliah
Nim
Rekomendasi Mata Kuliah
Hasil pengujian dengan skala Likert No Pertanyaan
Skala Likert SS S R TS STS
1
2
4 3
5
4 1
1
8
3
5 2
2 3 4
Apakah anda membutuhkan rekomendasi ketika akan melakukan pengambilan mata kuliah atau mengisi kartu rencana studi (KRS)? Apakah anda setuju dengan sistem rekomendasi pengambilan mata kuliah pada sistem akademik? Apakah sistem rekomendasi pengambilan mata kuliah yang dikembangkan dapat membantu anda untuk menentukan mata kuliah yang akan diambil? Apakah sistem rekomendasi matakuliah dapat diterapkan secara nyata?
10
1
1