PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
APLIKASI REKOMENDASI DOKTER UNTUK SALES OBAT PADA ANDROID MENGGUNAKAN METODE K-MEAN CLUSTERING DAN EUCLIDEAN DISTANCE SKRIPSI Diajukan untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Komputer Program Studi Teknik Informatika
Oleh : Unggul Prasetya 095314043
JURUSAN TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2013 i
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
DOCTORE RECOMMENDED APPLICATIONS FOR ANDROID ON SALES OF DRUEG USING K-MEANS CLUSTERING AND EUCLIDEAN DISTANCE THESIS Presented as Partial Fullfilment of the Requirements To Obtain the Computer Bachelor Degree In Informatics Engineering
By: Unggul Prasetya 095314043
INFORMATICS ENGINEERING STUDY PROGRAM DEPARTMENT OF INFORMATICS ENGINEERING FACULTY OF SCIENCE AND TECHNOLOGY SANATA DHARMA UNIVERSITY YOGYAKARTA 2013 ii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
iii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
iv
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
HALAMAN PERSEMBAHAN
Teruslah mencoba meski selalu gagal. Teruslah berusaha meski sering menjadi bahan olok-olok. Teruslah belajar dari semua hal yang didapat Teruslah bertekun, fokus pada tujuan Kesuksesan adalah pilihan
Skripsi ini saya persembahkan untuk Ayah dan Ibu dan keluarga tercinta
v
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
PERNYATAAN KEASLIAN KARYA
vi
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
ABSTRAK Aplikasi mobile sangat cocok untuk mendukung kerja marketing yang bersifat mobile atau selalu berpindah. Tenaga marketing selalu berpindah-pindah karena pembeli berada ditempat yang jauh dan berbeda. Salah satu tenaga penjual tersebut adalah sales obat kerena mereka selalu mengunjungi dokter di klinik atau rumah sakit tempat yang jauh dan berbeda. Dalam menjalankan bisnis yang bersifat mobile, sales obat memerlukan informasi yang real time dan akurat. Hal ini dikemukakan oleh beberapa sales obat di sebuah rumah sakit swasta di Yogyakata, bahwa sales obat memerlukan aplikasi mobile yang mampu memberikan informasi secara real time dan akurat terkait dokter yang akan dikunjungi. Aplikasi rekomendasi dokter dibangun untuk menyelesaikan permasalahan yang dialami marketing obat. Aplikasi ini dibangun menggunakan pendekatan kmean clustering dan Euclidean distance. Input yang dibutuhkan adalah profil dokter yaitu rekaman rekomendasi obat untuk pasien , input profil sales yaitu obat-obat yang akan ditawarkan kepada dokter input obat ini didasarkan pada kandungan zat active dari obat tersebut. Data dokter yang telah diinputkan akan diproses sehingga membentuk custer dokter. Proses ini dilakukan karena diasumsikan bahwa dokter dengan spesialis yang sama cenderung memberikan rekomendasi obat yang sama. Cluster dan profil sales yang diproses untuk mendapatkan cluster dokter jarak terdekat. Setelah didapat cluster dokter dengan jarak terdekat anggota cluster tersebut diurutkan
berdasarkan
jarak
similarity
dengan
profil
sales
kemudian
direkomendasikan. Dengan menggunakan pendekatan tersebut aplikasi ini dapat menghasilkan informasi berupa rekomendasi dokter yang dapat dikunjungi oleh sales obat. Setelah dilakukan pengujian menghasilkan nilai precision 0.8 - 1 dan recall 0 - 7. Dapat disimpulkan bahwa Information retrival menggunakan pendekatan k-mean
vii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI viii dan Euclidean distance menghasilkan rekomendasi dokter yang sesuai dengan yang diharapkan sales obat.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
ABSTRACT Mobile application is suitableto support a mobile marketing work or always on the move. Marketing personnel are always moving because buyers are far away and different. One of the sales reps are drugs because they are always visit the doctor at the clinicor hospital where the distant an different. In running a bussines that is mobile, require drug sales information real time and accurate. This was stated by some drug sales at a private hospital in Yogyakarta, that requires drug sales moble application that is able to provide information in real time and accurately related to doctors who would visit. Applications of doctor’s recommendation was built to resolve problems experienced by marketing the drug. This application was built using k-mean clustering approach and Euclidean distance. The required input is the propfile of the recording physician medication recommendations for patients, input sales profile
is drugs that will be offered to doctors drug input based on active
substances of the drug. Physicians who have entered the data will be processed to form cluster doctor. This process is done because it is assumed that the same physicians with specialists tend to give the same medication recommendation. Cluster and sales profiles are processed to obtain nearest cluster distances doctor. Once the cluster obtained with the doctor closest cluster members are sorted by the distance similarity with sales profile is then recommended. By using the approach of these applications cangenerate information in the form of a doctor’s recommendation can be visited by drug sales. After testing produces precision value 0,8- 1 and recall 0-7. It can be concluded that the information retrival using k-mean approach and the ecuclidean distance produce a doctor’s recommendation in accordance with the expected drug sales.
ix
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
x
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
KATA PENGANTAR
Puji syukur kepada Yesus Kristus yang telah memberikan karunia, rahmat, dan kesempatan, sehingga penulis dapat menyelesaikan skripsi dengan judul “Aplikasi Rekomendasi Dokter Untuk Sales Obat Pada Android Menggunakan Metode K-Mean Clustering Dan Euclidean Distance”. Penyusunan skripsi ini tidak lepas dari semua pihak yang turut memberikan dukungan, doa, semangat, dan bantuan yang sangat bermanfaat bagi penulis. Pada kesempatan ini penulis mengucapkan terima kasih sebesar besarnya kepada : 1. Tuhan Yesus yang selalu melindungi. 2. Bapak Puspaningtyas Sanjoyo Adi,S.T.,M.T., selaku dosen pembimbing yang
senantiasa
memberikan
masukkan
dan
bantuan
dalam
membimbing penulis untuk menyelesaikan skripsi ini. 3. Sri Hartati Wijono, S.Si.,M.Kom , Ridowati Gunawan, S.Kom.,M.T. , Paulina Heruningsih Prima Rosa, S.Si., M.Sc , Bapak Puspaningtyas Sanjoyo Adi,S.T.,M.T. Beliau-beliau telah membantu saya dalam belajar sehingga saya dapat berkembang. 4. Segenap dosen Universitas Sana Dharma yang telah membantu memberikan bekal pengethauan kepada penulis. 5. Mamah CH.Supinah, S.Pd
dan
bapak Suradi, S.Pd yang selalu
menyayangi ku dann tidak pernah berhenti
semangat,
doa,
dan
dukungan. 6. Kakak (Trisna Sundari,S.E dan AMZ Yuli Susandar, S.E ) yang telah memberikan semangat dan dukungan. 7. Bapak, Ibu dan keluarga besar Margareta Sri Pinilih yang dengan tulus memberikan perhatian, doa, dan dukungan.
xi
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI xii 8. Audris Evan utomo,S.Kom dan seluruh sahabat TI yang tidak dapat penulis sebutkan atas kesediaannya dalam memberi masukkan, menemani, dan mendengarkan keluh kelas dari penulis.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI xiii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI xiv
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
DAFTAR ISI
SKRIPSI ................................................................................................................... i THESIS ................................................................................................................... ii HALAMAN PERSEMBAHAN ............................................................................. v PERNYATAAN KEASLIAN KARYA ................................................................ vi ABSTRAK ............................................................................................................ vii ABSTRACT ............................................................................................................. ix KATA PENGANTAR ........................................................................................... xi DAFTAR ISI ......................................................................................................... xv DAFTAR GAMBAR ............................................................................................ xx DAFTAR TABEL ................................................................................................ xxi DAFTAR GRAFIK ............................................................................................. xxii BAB I PENDAHULUAN ...................................................................................... 1 A. Latar Belakang Masalah ........................................................................... 1 B. Rumusan Masalah ..................................................................................... 2 C. Tujuan Penelitian ...................................................................................... 2 D. Manfaat Penelitian .................................................................................... 2 E. Batasan Masalah ....................................................................................... 2 F. Metodologi Penelitian ............................................................................... 3 G. Sistematika Penulisan ............................................................................... 4 BAB II LANDASAN TEORI ................................................................................ 5 A. Sistem Rekomendasi ................................................................................. 5 B. Content Based Filtering ............................................................................ 5 C. Normalisasi ............................................................................................... 6
xv
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI xvi D. Uclidean Distance ..................................................................................... 7 E. K-Mean ..................................................................................................... 7 1. Pengertian ............................................................................................. 7 2. Teknik Metode K-Mean........................................................................ 8 F. Pengujian sistem ....................................................................................... 9 G. Android ..................................................................................................... 9 1. Pengertian ............................................................................................. 9 2. Arsitektur Android .............................................................................. 10 3. Application .......................................................................................... 10 4. Application Framework ...................................................................... 10 BAB III METODOLOGI PENELITIAN DAN ANALISIS SISTEM ................ 12 A. Pengumpulan Data dan Informasi ........................................................... 12 1. Wawancara.......................................................................................... 12 2. Pemerolehan Data ............................................................................... 12 B. Analisis Sistem........................................................................................ 13 C. Software Requirement Analysis .............................................................. 14 1. Analisis perangkat lunak yang dibutukan .......................................... 14 2. Analisis perangkat keras yang dibutuhkan ......................................... 14 3. Arsitektur Aplikasi .............................................................................. 14 4. Membuat Rekomendasi Dokter .......................................................... 15 D. Metode Pengujian Recall dan Precision ................................................. 30 1. Contoh Perhitungan Recall dan Precision .......................................... 30 BAB IV PERANCANGAN SISTEM DAN IMPLEMENTASI ......................... 32 A. Diagram Use case ................................................................................... 32 B. Diagram Sekenario.................................................................................. 33 1. Input Profile Sales ............................................................................... 33
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI xvii 2. Hapus Profil Item ................................................................................ 33 3. Cari Rekomendasi ............................................................................... 33 4. Melihat Profil Dokter .......................................................................... 34 5. Manajemen File Dokter (Sales) ......................................................... 34 6. Login Admin ....................................................................................... 35 7. Management File Dokter ( Admin ) .................................................. 35 C. Diagram Aktivitas ................................................................................... 36 1. Saat Aplikasi Dijalankan .................................................................... 36 2. Cari rekomendasi ................................................................................ 37 3. Input Profile Sales ............................................................................... 37 4. Hapus Item Profile .............................................................................. 38 5. Melihat Profil MedRep ....................................................................... 38 6. Download File Rekomendasi Dokter .................................................. 39 7. Merubah File List Dokter Yang Diakses ........................................... 39 8. Tambah File ........................................................................................ 40 9. Edit Deskripsi File .............................................................................. 40 10.
Hapus File.................................................................................... 41
D. Diagram Model View Controler (MVC) ................................................ 41 1. Struktur MVC Kelas Boundary, Contorl dan Entity.......................... 41 2. Diagram Analisis Kelas (Model View Controler) .............................. 42 3. Diagram Kelas (Aplikasi Android) ................................................... 43 4. Diagram Kelas (Web Admin) ............................................................ 43 5. Diagram Kelas Detail.......................................................................... 44 E. Diagram Sequence .................................................................................. 50 1. Saat Plikasi Dijalankan ....................................................................... 50 2. Cari Rekomendasi ............................................................................... 51
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI xviii 3. Input Profile Medrep ........................................................................... 52 4. Lihat Profile Sales ............................................................................... 53 5. Hapus Item Profile .............................................................................. 53 6. Download File Rekomendasi Dokter .................................................. 54 7. Merubah File List Dokter Yang Diakses ............................................ 54 8. Tambah File ........................................................................................ 55 9. Edit Deskripsi File .............................................................................. 55 10.
Hapus File.................................................................................... 56
F. Model Penyimpanan Data ....................................................................... 56 G. Algoritma Method Dalam Kelas Yang Memuat Proses Custering dan Euclidean Similarity................................................................................ 59 1. RekomendasiDokterActivity.java ....................................................... 59 2. UpdateData(Strting): Boolean ............................................................ 64 3. Relasi_Kontroler.Java ......................................................................... 67 4. Similarity controller_avtivity.java ...................................................... 81 BAB V HASIL DAN PENGUJIAN ..................................................................... 90 A. Hasil Pengujian Sistem ........................................................................... 90 1. Item Query Yang Tersedia................................................................. 90 B. Sampel profil .......................................................................................... 91 C. Perhitungan Recall Dan Precision ........................................................ 100 1. Tabel Relevansi Dokumen ................................................................ 100 2. Perhitungan Recall Dan Precision Setiap Query ............................. 101 3. Perhitungan Average Precision Terhadap 11 Titik Recall ............... 104 4. Kelemahan ........................................................................................ 106 BAB VI KESIMPULAN DAN SARAN ........................................................... 107 A. Kesimpulan ........................................................................................... 107
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI xix B. Saran ..................................................................................................... 107 Daftar Pustaka ..................................................................................................... 108
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
DAFTAR GAMBAR
Gambar 1. Proses dari clustering ............................................................................ 9 Gambar 2. Arsitektur Android .............................................................................. 10 Gambar 3. Arsitektur Sistem ................................................................................. 15 Gambar 4. Diagram Usecase ................................................................................. 32 Gambar 5. Diagram Aktivitas Saat Aplikasi dijalankan ....................................... 36 Gambar 6. Diagram Aktivitas saat Proses Cari Rekomendasi .............................. 37 Gambar 7. Diagram Aktivitas Input Profil Sales .................................................. 37 Gambar 8. Diagram Aktivitas Hapus Item Profile ................................................ 38 Gambar 9. Diagram Aktivitas Melihat Profil MedRep ........................................ 38 Gambar 10. Diagram Aktivitas Download File Dokter ........................................ 39 Gambar 11. Diagram Aktivitas Meribah file list dokter yang diakses .................. 39 Gambar 12. Diagram Aktivitas Tambah File ........................................................ 40 Gambar 13. Diagram Aktivitas Edit Deskripsi File .............................................. 40 Gambar 14. Diagram Aktivitas Hapus File ........................................................... 41 Gambar 15. Diagram Analisis Kelas ..................................................................... 42 Gambar 16. Diagram Kelas ................................................................................... 43 Gambar 17. Diagram Kelas (Web Admin) .......................................................... 43 Gambar 18. Diagram Sequence Saat Aplikasi Dijalankan................................... 50 Gambar 19. Diagaram Sequence Cari Rekomendasi .......................................... 51 Gambar 20. Diagram Sequence Input Profile Medrep .......................................... 52 Gambar 21. Diagram Sequence Lihat Profil Sales................................................ 53 Gambar 22. Diagram Sequence hapus Item Profile .............................................. 53 Gambar 23. Diagram Sequence Download File Rekomendasi Dokter ................. 54 Gambar 24. Diagram Sequence Merubah File ListDokter Yang Diakses ............ 54 Gambar 25. Diagram Sequence Tambah File ....................................................... 55 Gambar 26. Diagram Sequence Edit Deskripsi..................................................... 55 Gambar 27. Diagram Sequence Hapus File .......................................................... 56
xx
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
DAFTAR TABEL
Tabel 1. Contoh Data Rekomendasi Obat Dokter ................................................ 12 Tabel 2. Rekomendasi Obat ................................................................................. 16 Tabel 3. Hasil Penggabungan obat berdasarkan Generic ..................................... 17 Tabel 4. Normalisasi Bobot Generic ................................................................... 18 Tabel 5. Centroid Awal ........................................................................................ 20 Tabel 6. Iterasi Pertama........................................................................................ 20 Tabel 7. Anggota Cluster Iiterasi Pertama ........................................................... 22 Tabel 8. Centroid Kedua ...................................................................................... 24 Tabel 9. Iterasi Kedua .......................................................................................... 24 Tabel 10. Anggota Cluster Iterasi Kedua ............................................................. 25 Tabel 11. Centroid Ketiga .................................................................................... 26 Tabel 12. Iterasi Ketiga ........................................................................................ 26 Tabel 13. Pusat cluster ......................................................................................... 28 Tabel 14. Contoh Profil Pengguna (Query) ......................................................... 28 Tabel 15. Jarak Query Dengan Cluster (contoh) .................................................. 29 Tabel 16 Anggota dari cluster yang terdekat ....................................................... 29 Tabel 17. Pengurutan Dokter Berdasarkan Jarak Similarity ................................ 30 Tabel 18 Tabel Relevansi Hasil Pencarian........................................................... 30 Tabel 19 Perhitungan Recal Dan Precission (contoh).......................................... 31 Tabel 20 Perhitungan Averge Precision (contoh) ................................................ 31 Tabel 21. Item Query Yang Tersedia ................................................................... 90 Tabel 22. Sampel Query Yang Digunakan Untuk Pengujian .............................. 91 Tabel 23. Relevansi Dokumen ........................................................................... 100 Tabel 24. Menghitung Recall dan Precision ...................................................... 101 Tabel 25. Average Precision Terhadap 11 Titik Recall .................................... 104
xxi
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
DAFTAR GRAFIK Grafik 1. Contoh Recall Precision ........................................................................ 31 Grafik.2 Diagram Average Precision 11 Titik Recall ......................................... 106
xxii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 1 BAB I PENDAHULUAN A. Latar Belakang Masalah Saat ini aplikasi mobile terus berkembang dengan pesat seiring meningkatnya penjualan smartphone. Seperti yang dikemukakan Junifer Network Inc dalam penelitiannya pada triwulan kedua tahun 2012, angka penjualan Samsung mampu meraih meraih total pengiriman 52 juta unit, iPhone 26 juta unit , Nokia 10.2 juta unit, dan RIM 7.4 juta unit [www.teknoup.com, 2012]. Perusahaan pengembang software terus mengembangkan aplikasi mobile untuk menarik minat konsumen. Perusahaan pengembang software mengedepankan inovasi-inovasi baru untuk pemerolehan informasi dibidang bisnis dan hiburan. Seperti yang dikemukakan Presiden SAP Asia Tenggara “SAP akan menekankan solusi bisnis dengan meluncurkan SAP mobility" [Okezone.com, 2012]. Aplikasi mobile sangat cocok untuk mendukung kerja marketing yang bersifat mobile atau selalu berpindah. Tenaga marketing selalu berpindah-pindah karena pembeli berada ditempat yang jauh dan berbeda. Salah satu tenaga penjual tersebut adalah sales obat kerena mereka selu mengunjungi dokter di klinik atau rumah sakit tempat yang jauh dan berbeda. Dalam menjalankan bisnis yang bersifat mobile, sales obat memerlukan informasi yang real time dan akurat. Hal ini dikemukakan oleh beberapa sales obat di sebuah rumah sakit swasta di Yogyakata, bahwa sales obat memerlukan aplikasi mobile yang mampu memberikan informasi secara real time dan akurat terkait dokter yang akan dikunjungi. Penelitian ini mencoba untuk menyelesaikan permasalahan sales obat dengan pendekatan data mining dan information retrival. Metode data mining dan information retrival ini akan diterapkan dalam aplikasi moible. Dengan demikian diharpkan dengan pendekatan ini dapat menghasilkan rekomendasi dokter yang akurat dan real time.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 2 B. Rumusan Masalah Berdasarkan latar belakang di atas, rumusan masalah penelitin ini adalah: 1. Bagaimana membuat rekomendasi dokter yang akan dikunjungi oleh sales obat? 2. Mengukur sejauh mana informasi rekomendasi dokter yang dihasilkan aplikasi dengan pendekatan k-mean clustering dan eculidean distance dapat memberikan informasi yang akurat. C. Tujuan Penelitian Penelitian ini bertujuan untuk mengetahui, sejauh mana rekomendasi dokter yang dihasilkan dari pendekatan k-mean clustering dan eculidean distance dapat memberikan informasi yang akurat. D. Manfaat Penelitian 1. Penelitian ini diharapkan dapat menjadi bahan rujukan bagi penelitian sejenis daalam ranah information retrival dan data mining. 2.
memberikan sebuah analisa yang dapat memberikan rekomendasi dokter yang tepat untuk dikunjungi.
3. Manfaat dari hasil penelitian diharapkan dapat membantu sales obat dalam pemasaran produk sehingga lebih efisien dan tepat sasaran . E. Batasan Masalah Adapun batasan-batasan masalah dalam penulisan tugas akhir ini adalah sebagai berikut : 1. Dalam penelitian ini metode clustering dan Euclidean similarity akan diimplementasikan dalam aplikasi rekomendasi dokter untuk sales berbasis mobile. 2. Aplikasi dibangun menggunakan bahasa pemrograman java untuk android 3. Aplikasi akan berjalan minimal pada sistem operasi Android 2.3 4. Perangkat yang digunakan adalah samsung galaxy mini 2.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3 5. Untuk melakukan pencarian dokter yang bisa dikunjungi, peneliti menggunakan metode Euclidean Distance untuk mengukur jarak profil dokter berupa rekomendasi obat(generic) dengan profil sales obat berupa list dari obat(generic). 6. Peneliti
menggunakan algoritma K-Mean untuk mengelompokan data
dokter yang memiliki kemiripan pola rekomendasi obat. 7. Hasil pencarian dokter akan hitung tingkat akurasinya menggunakan perhitungan information retrival dengan Recall dan Precision. 8. Karena sulitnya mendapatkan data rekomendasi dokter peneliti hanya akan menggunakan rekomendasi dari 67 dokter di Yogyakarta. 9. Banyaknya jenis obat yang direkomendasikan oleh dokter maka peneliti hanya akan menggunakan rekomendasi obat cari/injeksi sebanyk 109 merek. 10. Demi menjaga kode etik dokter dan rumah sakit maka dalam penelitian ini nama rumah sakit dan nama dokter akan disamarkan. 11. Aplikasi yang dibuat hanya untuk pentingan penelitian tidak untuk dikomersilkan. F. Metodologi Penelitian Langkah-langkah yang digunkan dalam penelitian ini adalah: 1. Referensi (Literatur) Pengumpulan informasi dengan cara membaca buku , jurnal dan mencari informasi di internet dan wawancara langsung pada sales obat untuk menunjang latarbelakang dalam pembuatan tugas akhir. 2. Pembuatan perangkat lunak. Peneliti memfokuskan pada proses pemerolehan informasi agar informasi yang didapatkan menjawab masalah yang ada. 3. Pengujian unjuk kerja. Pengujian ini dilakukan secara manual dengan mengukur tingkat presisi dari hasil pencarian.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4 G. Sistematika Penulisan Secara umum dalam penelitian ini, sistematika penulisan yang akan digunakan adalah sebagai berikut : BAB I : PENDAHULUAN Bab ini membahas latar
belakang masalah, rumusan masalah, tujuan
penelitian, batasan masalah, metodologi penelitian, dan sistematika penulisan. BAB II : LANDASAN TEORI Bab ini membahas teori-teori yang digunakan dalam pembuatan sistem. BAB III : METODELOGI PENELITIAN DAN ANALISIS SISTEM Bab ini membahas bagaimana data diperoleh dan diproses menggunakan metode tertentu. Bab ini juga akan membahas analisis sistem yang akan dibuat secara umum BAB IV : PERANCANGAN SISTEM DAN IMPLEMENTASI SISTEM Bab ini membahas implementasi dalam bentuk aplikasi berdasarkan analisa dan perancangan yang telah dilakukan. BAB V : HASIL DAN PENGUJIAN Bab ini membahas analisa hasil implementasi dan pengujian sistem. BAB VI : KESIMPULAN DAN SARAN Bab ini membahas kesimpulan dan saran dari hasil analisa sistem, implementasi sistem dan pengujian.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
BAB II LANDASAN TEORI A. Sistem Rekomendasi Sistem Rekomendasi atau disebut juga Recommender system merupakan sebuah sistem yang memberikan satu atau lebih informasi yang dibutuhkan untuk menentukan pilihan. Nilai dari Recommender system terletak pada kemampuannya untuk mencocokkan dua hal yaitu bagian yang memproses data untuk menghasilkan informasi-informasi yang dibutuhkan sebagai pertimbangan untuk menentukan pilihan [Burke, 2007]. Tugas inti dari recommender system adalah untuk memprediksikan evaluasi subyektif yang akan diberikan pengguna terhadap item. Prediksi ini dihitung menggunakan sejumlah model prediktif yang memiliki karakteristik umum, yaitu mengeksploitasi evaluasi atau penilaian yang diberikan oleh pengguna untuk transaksi yang sebelumnya. [Burke, 2007]. Recommender system telah diklasifikasikan ke dalam empat kategori utama collaborative-based, content-based, knowledge-based, hybrid [Burke, 2007]. Sistem dengan pendekatan content-based hanya menggunakan preferensi dari pengguna saat ini, memprediksi peringkat untuk item yang tak terlihat berdasarkan seberapa banyak deskripsinya atau isinya mirip dengan pengguna [Pazzani dan Billsus, 2007].
B. Content Based Filtering Satu aspek yang membedakan antara information filtering dan information retrieval adalah mengenai kepentingan pengguna. Pada information retrival pengguna menggunakan ad-hoc queries, sedangkan pada information filtering pengguna sudah mempunyai profil yang merepresentasikan kepentingan jangka panjang, dan sistem mencoba memberikan kepada setiap pengguna item yang relevan [Dai dan Mobasher, 2001].
5
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 6 Berdasarkan pada ukuran kesamaan antara masing-masing profil, sistem memilih dan membuat peringkat pada item yang relevan, kemudian diberikan kepada pengguna. Terdapat dua pendekatan pada information filtering, yaitu collaborative filtering dan content-based filtering [Dai dan Mobasher, 2001]. Keuntungan dari pendekatan content-based filtering adalah pengguna mendapatkan wawasan tentang mengapa suatu item dianggap relevan untuk pengguna, karena konten di setiap itemnya diketahui dari representasinya. Namun pendekatan ini juga mempunyai kelemahan, misalnya kenyataan bahwa pendekatan ini berfokus pada kemiripan kata kunci. Pendekatan ini tidak mampu menangkap hubungan yang lebih kompleks pada level semantik yang lebih dalam, berdasarkan pada berbagai jenis atribut yang berhubungan dengan obyek terstruktur dari teks [Dai dan Mobasher, 2001]. Kesamaan antara representasi dari pengguna dan representasi dari item akan didasarkan pada prinsip kedekatan. Perinsip kedekatan ini menyatakan bahwa jarak dari dua deskripsi item secara langsung berkaitan dengan kesamaan mereka [Knappe, 2005].
C. Normalisasi Faktor normalisasi digunakan untuk menormalkan vektor dokumen sehingga proses retrieval tidak terpengaruh oleh panjang dari dokumen. Normalisasi ini diperlukan karena dokumen panjang biasanya mengandung perulangan term yang sama sehingga menaikkan frekuensi term (tf). Dokumen panjang juga mengandung banyak term yang berbeda sehingga menaikkan
ukuran
kemiripan
antara
query
dengan
dokumen
tersebut,
meningkatkan peluang di-retrievenya dokumen yang lebih panjang. Beberapa pendekatan normalisasi adalah normalisasi cosinus, penjumlahan bobot, normalisasi ke- 4, normalisasi bobot maksimal dan normalisasi pivoted unique . Dalam penelitian ini akan digunakan normalisasi bobot maksimal [Husni, 2010]. Normalisasi bobot maksimal suatu term i di dalam dokumen j (tfij) dapat didefinisikan sebagai berikut:
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 7
ntf
=
tf Max tf
Diketahui: •
Tfik merupakan frekuensi dari istilah k dalam dokumen i.
•
n adalah jumlah dokumen dalam kumpulan dokumen.
•
Maxj tfik adalah frekuensi istilah terbesar pada satu dokumen.
D. Uclidean Distance Dalam matematika, euclidean distance atau adalah jarak antara dua titik dapat diukur menggunakan formula pytagoras. Euclidean sering disebut dengan vector obyek geometri yang memiliki panjang (magnitude) dan arah (direction). Sedangkan ruang vektor adalah sebuah struktur matematika yang dibentuk oleh sekumpulan vektor. Vektor-vektor tersebut dapat ditambahkan, dikalikan dengan bilangan real dan lain-lain. [Sandi, 2010]. Berikut merupakan penyelesaian dalam menghitung jarak antara vektor A dan vektor B. Panjang vektor A dan B dapat didefinisikan sebagai berikut:
Dengan demikian, untuk menghitung jarak antara kedua vektor tersebut menggunakan persamaan sebagai berikut :
E. K-Mean 1. Pengertian Jika diberikan sekumpulan data X = {x1, x2, …, xn} dimana xi = (xi1, xi2, …, xin) adalah vector dalam ruang real Rn, maka algoritma k-means akan mempartisi X dalam k buah cluster. Setiap cluster memiliki centroid (titik
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 8 tengah) atau mean dari data-data dalam cluster tersebut. Pada tahap awal, algoritma k-means memilih secara acak k buah data sebagai centroid. Kemudian, jarak antara data dan centroid dihitung menggunakan Euclidian distance. Data ditempatkan dalam cluster yang terdekat, dihitung dari titik tengah cluster. Centroid baru akan ditentukan bila semua data telah ditempatkan dalam cluster terdekat. Proses penentuan centroid dan penempatan data dalam cluster diulangi sampai nilai centroid konvergen (centroid dari semua cluster tidak berubah lagi) [Munzir dan Taufik , 2009]. 2. Teknik Metode K-Mean K-means memilih secara acak k buah data sebagai centroid. Kemudian menempatkan data dalam cluster yang terdekat, dihitung dari titik tengah cluster (centroid). Centroid baru akan ditentukan bila semua data telah ditempatkan dalam cluster terdekat. Proses penentuan centroid dan nempatan data dalam cluster diulangi sampai nilai centroid konvergen. Gambar 1 memperlihatkan cara kerja k-means dan algoritma 1 memperlihatkan langkahlangkah proses k-means [Munzir dan Taufik , 2009]. Algoritma 1 Proses K-Means Input: vektor dokumen D, k Output: k cluster dokumen 1. Pilih secara acak k vektor sebagai centroid 2. repeat 3. tempatkan data (vektor) dalam cluster atau centroid terdekat 4. hitung centroid baru dari cluster yang terbentuk 5. until centroid tidak berubah lagi
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 9
Gambar 1. Proses dari clustering F. Pengujian sistem Sistem IR mengembalikan sekumpulan dokumen sebagai jawaban dari query pengguna. Terdapat dua kategori dokumen yang dihasilkan oleh sistem IR terkait pemrosesan query, yaitu relevant documents (dokumen yang relevan dengan query) dan retrieved documents (dokumen yang diterima pengguna). Ukuran umum yang digunakan untuk mengukur kualitas dari text retrieval adalah kombinasi precision dan recall. Presisi mengevaluasi kemampuan sistem IR untuk menemukan kembali dokumen top-ranked yang paling relevan, dan didefinisikan sebagai persentase dokumen yang diretrieve yang benar-benar relevan terhadap query pengguna. [Husni , 2010]. Precision =|relevant ∩ retrieved| / |retrieved Recall mengevaluasi kemampuan sistem IR untuk menemukan semua item yang relevan dari dalam koleksi dokumen dan didefinisikan sebagai persentase dokumen yang relevan terhadap query pengguna dan yang diterima.
[Husni ,
2010] . Recall = |relevant ∩ retrieved| / |relevant|
G. Android 1. Pengertian Android merupakan sistem operasi yang dikembangkan untuk perangkat mobile berbasis Linux.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 10 2. Arsitektur Android Sistem operasi Android dibangun berdasarkan kernel Linux dan memiliki arsitektur seperti Gambar 2 berikut di bawah ini.
Gambar 2. Arsitektur Android 3. Application Lapisan ini adalah lapisan aplikasi, serangkaian aplikasi akan terdapat pada perangkat mobile. Aplikasi inti yang telah terdapat pada Android termasuk kalender, kontak, SMS, dan lain sebagainya.Aplikasi-aplikasi ini ditulis dengan bahasa pemrograman Java. 4. Application Framework Pengembangan aplikasi memiliki akses penuh ke Android sama dengan aplikasi inti yang telah tersedia. Pengembang dapat dengan mudah mengakses informasi lokasi, mengatur alarm, menambahkan pemberitahuan ke status bar dan lain sebagainya. Arsitektur aplikasi ini dirancang untuk menyederhanakan penggunaan kembali komponen, aplikasi apa pun dapat memubikasikan
kemampuan
dan
aplikasi
lain
dapat
menggunakan
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 11 kemampuan mereka sesuai batasan keamanan. Dasar dari aplikasi adalah seperangkat layanan dan sistem, yaitu berbagai View yang digunakan untuk membangun UI, Content Provider yang memungkinkan aplikasi berbagi data, ResourceManager menyediakan akses bukan kode sperti grafik, string, dan layout NotificationManager yang akan membuat aplikasi dapat menampilkan tanda pada status bar dan ActivityManager yang berfungsi mengatur daur hidup dari aplikasi.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
BAB III METODOLOGI PENELITIAN DAN ANALISIS SISTEM
A. Pengumpulan Data dan Informasi 1. Wawancara Wawancara dilakukan
untuk mengetahui kebutuhan kongkrit yang
dialami sales obat. Peneliti menemukan masalah yaitu sales obat membutuhkan informasi rekomendasi dokter yang akurat dan bersifat real time. Rekomendasi yang dibutuhkan adalah rekomendasi memuat informasi terkait dokter-dokter yang memiliki kesamaan profil dengan sales. 2. Pemerolehan Data Peneliti menggunakan rekomendasi obat dari seluruh dokter disebuah rumah sakit swasta di Yogyakarta. Data tersebut yang memuat nama dokter, spesialis dan merek obat-obat yang pernah direkomendasikan oleh dokter itu. Data dokter tersebut akan diproses untuk mencari dokter-dokter yang memiliki kemiripan profil dengan sales. Data tersebut digambarkan pada Tabel 1 berikut di bawah ini. Tabel 1. Contoh Data Rekomendasi Obat Dokter No
Dokter
Spesialis
Dypi rone
Dipyr one
Ceft riaxo ne
Ceft riaxo ne
Ephed rine hydroh loride
Fent anyl
Dexk etopr ofan
dex med etom idine
diaz epa m
cefu roxi me
Nov algi
Antra in
Terf acef
Biox on
Epheri n
Fent anyl
Kete se
Prec edex
Vali um
Anb acy m
1.
KS
Anak
0
14
68
0
0
0
0
0
0
74
2.
AP
Bedah
0
5
20
0
0
0
0
0
0
9
3.
NA
Jantung
0
4
0
0
0
0
0
0
0
0
4.
AD
Jantung
0
2
0
0
0
0
0
0
0
0
5.
DN
0
4
0
0
0
0
0
0
0
0
6.
BP
Kandun gan Anak
0
0
0
2
0
0
0
0
0
0
7.
WR
THT
0
3
7
0
0
0
0
0
0
18
12
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 13 8.
AW
THT
4
0
0
0
0
0
0
0
0
0
Keterangan : Nama Dokter
: KS , AP , NA , AD , DN , BP , WR , AW (untuk menjaga
kode etik nama dokter disamarkan) . Merek Obat
: Novalgin , Novalgin , Terfacef , Bioxon , Ephedrin ,
Fentanyl , Ketese , Precedex ,Valium Anbacym. Kandungan zat dalam obat (Generic) : dipyrone, ceftriaxone, ephedrine hydrochloride
+
theophylline
anhydrous,
fentanyl,
dexketoprofen,
dexmedetomidine hydrochloride, diazepam, cefuroxime. B. Analisis Sistem Analisis sistem adalah sebuah teknik pemecahan masalah yang memecahmecah sebuah sistem menjadi komponen-komponen untuk mengetahui bagaimana komponen-komponen tersebut bekerja dan berinteraksi untuk mencapai tujuannya [Whitten, 2004]. Dengan demikian alalisis sistem harus dilakukan agar software yang dihasilkan dapat menyelesaikan masalah yang ada. Aplikasi ini akan menghasilkan rekomendasi dokter untuk sales obat. Rekomendasi dokter akan dibuat menggunakan pendekatan K-mean Clustering dan Euclidean Similarity. K-mean Clustering digunakan untuk mengelompokan data dokter, diasumsikan dokter dengan spesialis yang sama menawarkan obat yang sama. Euclidean Similarity digunakan untuk mengukur kemiripan profil pengguna dengan profil dokter dalam cluster yang terdekat. Profil pengguna adalah obat-obat yang ditawarkan sales obat pada dokter. Setiap obat memiliki bobot prioritas penawaran 1-4 (standard-medium-highhighst). Bobot setiap obat dinormalisasi berdasarkan nilai bobot maksimal dari obat yang ditawarkan. Profil dokter memuat banyaknya jumlah obat yang direkomendasikan oleh dokter. Obat dengan generic yang sama akan digabungkan dengan menjumlahkan
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 14 nilai dari obat tersebut kemudian dinormalisasi berdasarkan nilai bobot maksimal generic dari seluruh dokumen (dokter). Rekomendasi dokter akan dibentuk dengan memilih cluster dokter paling dekat dengan profil pengguna. Profil pengguna akan diukur kedekatanya dengan setiap anggota dalam clustrer terdekat kemudian diurutkan berdasarkan jarak Euclidean similarity.
C. Software Requirement Analysis Sistem ini akan berjalan pada perangkat mobile dengan sistem operasi android minial 2.2 dan terkoneksi dengan internet. Untuk lebih jelasnya antara lain sebagai berikut: 1. Analisis perangkat lunak yang dibutukan a. Database
: File .XLS
b. Bahasa pemrograman
: Pemrograman Java Mobile untuk Android
c. Maps
: Maps Api dari Google
d. Sistem operasi
: Android 2.2
e. Tools
: Eclipse Galileo, Android SDK , JDK1.6
2. Analisis perangkat keras yang dibutuhkan a. Prosesor
: 900 Mhz
b. Ram
: 398MB
c. Storage
: 1 GB
3. Arsitektur Aplikasi Arsitektur aplikasi merupakan aplikasi yang memproses inputan berupa profil dari pengguna yang berisi generic obat dan bobotnya. Aplikasi akan mencari Cluster dokter dengan jarak yang paling dekat. Seluruh dokter dari
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 15 cluster yang paling dekat akan diurutkan berdasarkan jarak similarity antara anggota cluster dengan profil pengguna. Pada aplikasi tersebut terdapat juga Cloud Repository. Cloud Repository ini memberikan layanan kepada sales obat untuk mendownload data dat sesuai dengan kebutuhan. Sehingga data dokter yang diproses dapat dirubah sesuai kebutuhan sales. Proses dari aplikasi tersebut dapat dilihat pada Gambar 3 di bawah ini.
Gambar 3. Arsitektur Sistem 4. Membuat Rekomendasi Dokter a. Penggabungan Obat Berdasarkan Generic Penggabungan obat hanya dilakukan pada obat dengan generic yang sama. Misalnya dokter A merekomendasikan obat dengan merek y dan merek z, kedua obat tersebut memiliki generic yang sama yaitu parachetamol maka obat y dan z digabungkan dengan menjumlahkan nilai dari obat tersebut.
Dengan demikian
orientasi yang digunakan
sebagai profil dokter ayaitu berdasarkan generic dari obat yang ditawarkan.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 16 Tabel 2 berikut di bawah ini merupakan contoh
profil dokter
sebelum dilakukan penggabungan berdasarkan generic, dan Tabel 3 adalah hasil penggabungan obat berdasasrkan generic. Tabel 2. Rekomendasi Obat No
Dokter
Dipyro ne
Dipyro ne
Ceftria xone
Ceft riax one
Novalg in
Antrai n
Terfac ef
Biox on
Ephedrine hydrochlorid e+heophyllin e anhydrous
Ephedrin
Fentan yl
Dex keto prof en
Dexmede tomidine hydrochl oride
Diaz epa m
Cefu roxi me
Fentan yl
Kete se
Precedex
Vali um
Anb acy m
1.
KS
0
14
68
0
0
0
0
0
0
74
2.
AP
0
5
20
0
0
0
0
0
0
9
3.
NA
0
4
0
0
0
0
0
0
0
0
4.
AD
0
2
0
0
0
0
0
0
0
0
5.
DN
0
4
0
0
0
0
0
0
0
0
6.
BP
0
0
0
2
0
0
0
0
0
0
7.
WR
0
3
7
0
0
0
0
0
0
18
8.
AW
4
0
0
0
0
0
0
0
0
0
9.
NH
0
4
0
0
0
0
0
0
0
0
10.
PA
2
0
0
0
0
0
0
0
0
0
11.
SK
3
0
3
0
0
0
0
0
0
0
12.
AI
0
0
46
0
0
0
0
0
2
0
13.
El
0
0
5
0
0
0
0
0
0
0
14.
MJ
2
0
0
0
0
0
0
0
0
0
15.
HW
0
0
0
1
0
0
0
0
0
0
16.
SR
0
0
0
0
6
8
15
6
2
0
17.
SD
0
0
0
0
4
6
8
3
2
0
18.
RT
0
0
0
0
6
13
14
8
5
0
19.
CA
0
0
0
0
3
5
8
2
1
0
20.
AN
0
2
4
0
0
0
0
0
0
0
21.
PW
0
0
0
0
0
0
0
0
0
10
22.
AM
0
0
4
0
0
0
0
0
0
0
23.
TA
0
0
8
0
0
0
0
0
0
0
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 17
Tabel 3. Hasil Penggabungan obat berdasarkan Generic
No
Dokte
Dipy
Ceftriax
Ephedrine
Fentan
Dexketo
Dexmedeto
Diazep
Cefuro
rone
one
hydrochloride
yl
profen
midine
am
xime
r
+ theophylline
hydrochlor
anhydrous
ide
1.
KS
14
68
0
0
0
0
0
74
2.
AP
5
20
0
0
0
0
0
9
3.
NA
4
0
0
0
0
0
0
0
4.
AD
2
0
0
0
0
0
0
0
5.
DN
4
0
0
0
0
0
0
0
6.
BP
0
2
0
0
0
0
0
0
7.
WR
3
7
0
0
0
0
0
18
8.
AW
4
0
0
0
0
0
0
0
9.
NH
4
0
0
0
0
0
0
0
10.
PA
2
0
0
0
0
0
0
0
11.
SK
3
3
0
0
0
0
0
0
12.
AI
0
46
0
0
0
0
2
0
13.
El
0
5
0
0
0
0
0
0
14.
MJ
2
0
0
0
0
0
0
0
15.
HW
0
1
0
0
0
0
0
0
16.
SR
0
0
6
8
15
6
2
0
17.
SD
0
0
4
6
8
3
2
0
18.
RT
0
0
6
13
14
8
5
0
19.
CA
0
0
3
5
8
2
1
0
20.
AN
2
4
0
0
0
0
0
0
21.
PW
0
0
0
0
0
0
0
10
22.
AM
0
4
0
0
0
0
0
0
23.
TA
0
8
0
0
0
0
0
0
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 18 Keterangan: Dokter : KS , AP , NA , AD , DN , BP , WR , AW , NH , PA , SK , AI , MJ , HW , SR , SD , RT , CA , AN , PW , AM , TA Merek Obat : novalgin, antrain , terfacef, bioxon , ephedrine , fentanyl , ketese , precede, valium , anbacym Generic : dipryone ,Ceftriaxone , ephedrine , dexketropof , dexemd , diazepam , ceforoxi b. Normalisasi Profil Dokter Normalisasi pada profile dokter dilakukan dengan menggunakan normalisasi bobot maksimal suatu term i di dalam dokumen j (tfij). Tabel 4 berikut di bawah ini merupakan hasil normalisasi dari Tabel 3 dengan perhitungan menggunakan rumus berikut: . ntf
=
Diketahui: o Tfik merupakan frekuensi dari istilah k dalam dokumen i. o n adalah jumlah dokumen dalam kumpulan dokumen. o Maxj tfik adalah frekuensi istilah terbesar pada satu dokumen. Tabel 4. Normalisasi Bobot Generic
No
Dipy
Ceftriax
Ephedrine
rone
one
hydrochlorid
Dokter
Fentanyl
Dexketo
Dexmedeto
Diazepa
Cefuro
profen
midine
m
xime
e+
hydrochlor
theophylline
ide
anhydrous 1.
KS
1
1
0
0
0
0
0
1
2.
AP
0.4
0
0
0
0
0
0
0.1
3.
NA
0.3
0
0
0
0
0
0
0
4.
AD
0.1
0
0
0
0
0
0
0
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 19
5.
DN
0.3
0
0
0
0
0
0
0
6.
BP
0
0
0
0
0
0
0
0
7.
WR
0.2
0
0
0
0
0
0
0.2
8.
AW
0.3
0
0
0
0
0
0
0
9.
NH
0.3
0
0
0
0
0
0
0
10.
PA
0.1
0
0
0
0
0
0
0
11.
SK
0.2
0
0
0
0
0
0
0
12.
AI
0
1
0
0
0
0
0.4
0
13.
El
0
0
0
0
0
0
0
0
14.
MJ
0.1
0
0
0
0
0
0
0
15.
HW
0
0
0
0
0
0
0
0
16.
SR
0
0
1
0.62
1
1
0.4
0
17.
SD
0
0
1
0.46
0.533
0
0.4
0
18.
RT
0
0
1
1
0.933
1
1
0
19.
CA
0
0
1
0.38
0.533
0
0.2
0
20.
AN
0.1
0
0
0
0
0
0
0
21.
PW
0
0
0
0
0
0
0
0.1
22.
AM
0
0
0
0
0
0
0
0
23.
TA
0
0
0
0
0
0
0
0
c. Membuat Cluster Dokter Berikut ini digambarkan rangkaian proses dalam pembentukan cluster dengan algoritma k-mean. 1) Mengambil sejumlah k dari nilai data sebagai pusat cluster dengan data awal pada Tabel 4, sehingga diperoleh pusat cluster seperti pada Tabel 5 berikut di bawah ini.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 20 Tabel 5. Centroid Awal
No
Dip
Ceftria
Ephedrine
Fenta
Dexketo
Dexmedetom
Diazep
Cefurox
yro
xone
hydrochlorid
nyl
profen
idine
am
ime
ne
e+theophylli
hydrochloride
ne anhydrous C1
1
0.1
0
0.3
0.2
0.2
0.4
0
C2
0
0.5
0.6
0.5
0.5
0.7
0.2
0
C3
0.1
0.3
0.8
0.1
0
0.3
0.8
0
2) Menghitung Euclidian distance data dengan tiap pusat cluster kemudian ambil yang jaraknya paling kecil (dekat). Contoh perhitungan : SQRT((1-1)^2+(1-0.05)^2+(0-0.2)^2+(0-0.3)^2+(0-0.2)^2+(00.2)^2+(0-0.4)^2+(1-0.12)^2)= 1.417 Hasil dari perhitungan Euclidian distance dapat dilihat seperti Tabel 6 di bawah ini. Tabel 6. Iterasi Pertama ID
C1
C2
C3
1
1.417
1.8
1.20869718
C1
2
0.896
1.3
1.22657645
C1
3
0.926
1.3
1.21319279
C1
4
1.04
1.3
1.22657645
C1
5
0.926
1.3
1.20963548
C1
6
1.16
1.3
1.22108996
C1
7
0.983
1.3
1.22657645
C1
8
0.926
1.3
1.22657645
C1
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 21
9
0.926
1.3
1.21319279
C1
10
1.04
1.3
1.20769905
C1
11
0.981
1.3
1.02553893
C1
12
1.256
1.2
1.20053693
C3
13
1.16
1.3
1.21319279
C1
14
1.04
1.3
1.21300978
C1
15
1.16
1.3
1.32970722
C1
16
1.749
0.9
0.83579739
C3
17
1.276
0.7
1.53333333
C2
18
2.011
1.3
0.95809726
C3
19
1.195
0.7
1.20000118
C2
20
1.039
1.3
1.22403493
C2
21
1.154
1.3
1.20339773
C2
22
1.16
1.3
1.19300151
C3
23
1.161
1.3
1.21655251
C2
3) Pengelompokan data Pengelompokan dilakukan berdasarkan jarak euclidean terkecil dari data terhadap pusat cluster. Iterasi pada Tabel 7 merupakan menunjukkan data sebagai anggota cluster sementara.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 22 Tabel 7. Anggota Cluster Iiterasi Pertama C1
Dokt
(Iterasi 1) Dipyro
Ceftriax
Ephedrine
ne
one
hydrochlorid
Fentanyl
Dexketopr
Dexmedetomi
Diazep
Cefuroxi
ofen
dine
am
me
e+
er
hydrochloride
theophylline anhydrous
KS
1
1
0
0
0
0
0
1
AP
0.36
0.3
0
0
0
0
0
0
NA
0.29
0
0
0
0
0
0
0
AD
0.14
0
0
0
0
0
0
0
DN
0.29
0
0
0
0
0
0
0
BP
0
0
0
0
0
0
0
0
WR
0.21
0.1
0
0
0
0
0
0
AW
0.29
0
0
0
0
0
0
0
NH
0.29
0
0
0
0
0
0
0
PA
0.14
0
0
0
0
0
0
0
SK
0.21
0
0
0
0
0
0
0
El
0
0.1
0
0
0
0
0
0
MJ
0.14
0
0
0
0
0
0
0
HW
0
0
0
0
0
0
0
0
Rata2
0.24
0.11
0
0
0
0
0
0.071
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 23 C2
Dokte
Dipyro
Ceftriaxo
Ephedrine
ne
ne
hydrochlori
Fentanyl
Dexketopro
Dexmedetomi
Diazepa
Cefuroxi
fen
dine
m
me
de+
r
hydrochloride
theophylline anhydrous
SD
0
0
CA
0
0
AN
0.14
PW TA Rata 2
0.66666
0.4615 0.53
0.38
0.4
0
0.5
0.3846 0.53
0.25
0.2
0
0.1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0.028
0.02
0.233333
0.1692
4
32
0.213
0.126
0.12
0
Dipyro
Ceftriaxo
Ephedrine
Fentanyl
Dexketopro
Dexmedetomi
Diazepa
Cefuroxi
ne
ne
hydrochlori
fen
dine
m
me
7
C3
Dokte
de+
r
hydrochloride
theophylline anhydrous
AI
0
0.7
0
0
0
0
0.4
0
SR
0
0
1
0.6154
1
0.75
0.4
0
RT
0
0
1
1
0.93
1
1
0
AM
0
0.1
0
0
0
0
0
0
0
0.2
0.5
0.483
0.438
0.45
0
Rata 2
0.4038 45
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 24 4) Membuat Centroid Baru Setelah iterasi dilakukan buatlah centroid baru dengan menghitung nilai rata-rata index dari setiap cluster yang terbentuk. Ulangi langkah ke-2 sampai tidak terjadi perubahan anggota kelompok dalam iterasi berikutnya. Tabel 8. Centroid Kedua c1
0.24
0.11
0
0
0
0
0
0.071
c2
0.028
0.02
0.2333334
0.169232
0.213
0.126
0.12
0
c3
0
0.2
0.5
0.403845
0.483
0.438
0.45
0
Tabel 9. Iterasi Kedua 1
1.4942
1.750428001
1.9185968
C1
2
0.224
0.597562975
1.09188582
C1
3
0.1387
0.475006146
1.07826079
C1
4
0.163
0.415218435
1.04948646
C1
5
0.1387
0.475006146
1.07826079
C1
6
0.2629
0.399608267
1.03446316
C1
7
0.1743
0.509473323
1.07495104
C1
8
0.1387
0.475006146
1.07826079
C1
9
0.1387
0.475006146
1.07826079
C1
10
0.163
0.415218435
1.04948646
C1
11
0.1002
0.440565788
1.05414959
C1
12
0.7372
0.809043768
1.03345919
C1
13
0.2529
0.403067716
1.02810918
C1
14
0.163
0.415218435
1.04948646
C1
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 25
15
0.2678
0.399532493
1.03698967
C1
16
1.7821
1.369249456
0.83759889
C3
17
1.1477
0.719229545
0.28298171
C3
18
2.2239
1.826473423
1.21089834
C3
19
0.9272
0.492895962
0.3751228
C3
20
0.1308
0.416549655
1.03988107
C1
21
0.2717
0.422208112
1.04846325
C1
22
0.2555
0.401379436
1.03002159
C1
23
0.2504
0.411257989
1.02361891
C1
Tabel 10. Anggota Cluster Iterasi Kedua C1 Dipyrone
Ceftriaxon e
Ephedrine hydrochlori de+ theophyllin e anhydrous
Fenta nyl
Dexketopr ofen
Dexmedetomi dine hydrochloride
Diazep am
Cefuroxi me
Dokt er
KS
1
1
0
0
0
0
0
1
AP
0.36
0.3
0
0
0
0
0
0
NA
0.29
0
0
0
0
0
0
0
AD
0.14
0
0
0
0
0
0
0
DN
0.29
0
0
0
0
0
0
0
BP
0
0
0
0
0
0
0
0
WR
0.21
0.1
0
0
0
0
0
0
AW
0.29
0
0
0
0
0
0
0
NH
0.29
0
0
0
0
0
0
0
PA
0.14
0
0
0
0
0
0
0
SK
0.21
0
0
0
0
0
0
0
AI
0
0.71
0
0
0
0
0.4
0
El
0
0.1
0
0
0
0
0
0
MJ
0.14
0
0
0
0
0
0
0
HW
0
0
0
0
0
0
0
0
AN
0.14
0.1
0
0
0
0
0
0
PW
0
0
0
0
0
0
0
0
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 26 AM
0
0.1
0
0
0
0
0
0
TA
0
0
0
0
0
0
0
0
Rata
0.184210
0.12684
2
526
211
0
0
0
0
0.02
0.053
C2 Tidak memiliki anggota C3 Dokt er
SR
Dipyro ne
Ceftriaxo ne
Ephedrine hydrochlori de+ theophylline anhydrous
Fentanyl
Dexketopro fen
Dexmedetomi dine hydrochloride
Diazepa m
Cefuroxi me
0
0
1
0.6153
1
0.75
0.4
0
0.533
0.38
0.4
0
8 SD
0
0
0.666667
0.4615 4
RT
0
0
1
1
0.933
1
1
0
CA
0
0
0.5
0.3846
0.533
0.25
0.2
0
0.74975
0.595
0.5
0
2 AV
0
0
G
0.7916667
0.6153
5
85
Tabel 11. Centroid Ketiga Centroid 3 C1
0.184210526
0.12684211
0
0
0
0
0.02
0.53
C3
0
0
0.79166675
0.615385
0.74975
0.595
0.5
\0
Karena C2 tidak memiliki anggota maka tidak ada centroid untuk C2. Tabel 12. Iterasi Ketiga 1
1.2842
2.274111915
c1
2
0.4744
1.549333093
c1
3
0.5547
1.501072169
c1
4
0.5469
1.480538134
c1
5
0.5547
1.501072169
c1
6
0.5698
1.473923355
c1
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 27 7
0.29
1.512371493
c1
8
0.5547
1.501072169
c1
9
0.5547
1.501072169
c1
10
0.5469
1.480538134
c1
11
0.5376
1.489781775
c1
12
0.8725
1.545702902
c1
13
0.564
1.475463174
c1
14
0.5469
1.480538134
c1
15
0.5725
1.473703249
c1
16
1.8484
0.374236296
c3
17
1.2481
0.380170951
c3
18
2.2721
0.799411835
c3
19
1.0527
0.627841765
c3
20
0.5363
1.481706238
c1
21
0.4542
1.479812998
c1
22
0.5656
1.474803448
c1
23
0.5615
1.478318583
c1
Pada iterasi ke-3 ini anggota dari setiap kelompok sudah tidak berubah maka perhitungan dihentikan . d. Normalisasi Bobot Profil Pengguna (query) Normalisasi bobot untuk proifil pengguna didasarkan pada bobot maksimal dari seluruh oba. Nilai setiap obat dibagi dengan nilai maksimal dari seluruh obat yang akan ditawarkan. Dipy
Ceftr
Ephedrine
Fen Dexke
Dexmedeto Diaze
Cefuro
one
iaxo
hydrochloride+
tan
toprof
midine
xime
ne
theophylline
yl
en
hydrochlor
anhydrous Qu ery
3
3
2
pam
ide 0
0
4
1
1
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 28
Menghitung nilai bobot normal dilakukan dengan cara membagin nilai obat dengan nilai obat terbesar misalnya untuk index dipyrone memiliki bobot 3 kemudian dinormalkan menjadi ¾ = 0.75. berikut adalah hasil normalisasi query.
Quer y
Dipyron e
Eftr iaxo ne
0.75
0
Ephedrine hydrochloride+ theophylline anhydrous 0
Fe Dexket nta oprofe ny n l 0
Dexmed etomidin e hydrochl oride 1
0
Diaz epam
Cefu roxi me
0.25
0.25
e. Mencari Cluster Terdekat Menghitung jarak setiap pusat cluster dengan query yang telah dinormalisasi menggunakan Euclidean distance. Pilih cluster dengan jarak terkecil. Berikut adalah contoh pusat cluster, bisadilihat pada Tabel 13 di bawah ini. Tabel 13. Pusat cluster Dipyr one
Ceftriax one
Centr oid 1
0.1842
0.12684
Centr oid 2
0
0
ephedrine hydrochlor ide+ theophyllin e anhydrous 0
Fentan yl
0
0.7916667 5
0.6153 85
Dexketopr ofen
Dexmedetom idine hydrochlorid e
Dia z
0
0
0.74975
0.595
0.0 2 0.5
Cefuroxi me
pam
0.53 0
Tabel 14. Contoh Profil Pengguna (Query)
Berikut adalah jarak Euclidean query dengan pusat cluster. Tabel 15.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 29 Tabel 15. Jarak Query Dengan Cluster (contoh) Cluster 1
1.445594509
Cluster 3
1.562023769
Berdasarkan jarak Euclidean Cluster 1 yang merupakan cluster terdekat. f. Rangking Dokter Berdasarkan Jarak Similarity 1. Diasumsikan arrDokter adalah cluster dengan jarak terdekat dengan profil pengguna. 2. Ukur jarak euclidean profil pengguna terhadap seluruh anggota arrDokter. 3. Urutkan anggota dalam arrDokter berdasarkan jarak Euclidean secara descending. Tabel 16 Anggota dari cluster yang terdekat
KS
1
1
Ephedrine hydrochlorid e+ theophylline anhydrous 0
0
0
0
0
1
AP
0.36
0.3
0
0
0
0
0
0
NA
0.29
0
0
0
0
0
0
0
AD
0.14
0
0
0
0
0
0
0
DN
0.29
0
0
0
0
0
0
0
Dokt er
Dipyro ne
Ceftriaxo ne
Fentan yl
Dexketoprof en
Dexmedetomid ine hydrochloride
Diazepa m
Cefuroxi me
BP
0
0
0
0
0
0
0
0
WR
0.21
0.1
0
0
0
0
0
0
AW
0.29
0
0
0
0
0
0
0
NH
0.29
0
0
0
0
0
0
0
PA
0.14
0
0
0
0
0
0
0
SK
0.21
0
0
0
0
0
0
0
AI
0
0.71
0
0
0
0
0.4
0
El
0
0.1
0
0
0
0
0
0
MJ
0.14
0
0
0
0
0
0
0
HW
0
0
0
0
0
0
0
0
AN
0.14
0.1
0
0
0
0
0
0
PW
0
0
0
0
0
0
0
0
AM
0
0.1
0
0
0
0
0
0
TA
0
0
0
0
0
0
0
0
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 30 Tabel 17. Pengurutan Dokter Berdasarkan Jarak Similarity Dokter
Jarak
KS
1.2842
AI
0.894
AP
0.585
BP
0.5756
0.5555
HW
0.5756
BP
0.5756
PW
0.5756
WR
0.5317
TA
0.5756
AW NH
0.5555 0.5555
El
0.5621
AM
0.5621
PA
0.5471
NA
0.5555
SK AI El
0.5459 0.894 0.5621
DN
0.5555
AW
0.5555
NH
0.5555
MJ
0.5471
AD
0.5471
HW AN
0.5756 0.5329
PA
0.5471
MJ
0.5471
PW
0.5756
SK
0.5459
AM TA
0.5621 0.5756
AN
0.5329
WR
0.5317
Dokter
Jarak
KS AP
1.2842 0.585
NA AD
0.5555 0.5471
DN
Setelah
D. Metode Pengujian Recall dan Precision Precision adalah proporsi dari suatu set yang diperoleh yang relevan Precision =|relevant ∩ retrieved| / |retrieved| Recall adalah Proporsi dari semua dokumen yg relevan di koleksi yang diperoleh: Recall = |relevant ∩ retrieved| /|relevant| 1. Contoh Perhitungan Recall dan Precision Tabel 18 Tabel Relevansi Hasil Pencarian Dokter1 Query 1 Query 2
Relevan
Relevan
Dokter2 Not Relevan Not Relevan
Dokter3
Dokter4
Relevan
Relevan
Not Relvan
Relevan
Dokter5 Not Relevan Relevan
Dokter6
Dokter7
Relevan
Relevan
Not
Not
Relevan
Relevan
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 31 Contoh: hasil pencarian didapat 7 dokter dan 5 dokter yang relevan
Tabel 19 Perhitungan Recal Dan Precission (contoh) Query 1 recall
1/5=0.2
1/5=0.2
2/5=0.4
3/5=0.6
3/5=0.6
4/5=0.8
5/5=1
prec
1/1=1
½=0.5
2.4=0.6666 ¾=0.75
3/5=0.6
4/6=0.666 5/7=0.7142
Query 2 recall
1/3=0.33
1/3=0.33
1/3=0.33
2/3=0.66
3/3=1
3/3=1
3/3=1
prec
1/1=1
½=0.5
1/3=0.33
2/4= 0.5
3/5=0.6
3/6=0.5
3/7=0.42
Tabel 20 Perhitungan Averge Precision (contoh)
recall
0
0.1
0.2 0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Query1
1
1
1
0.75
0.75
0.75
0.75
0.7142 0.7142
0.7142 0.7142
Query2
1
1
1
1
0.6
0.6
0.6
0.6
0.6
0.6
0.6
Rata2
1
1
1
0.88
0.68
1
0.68
0.657
0.657
0.657
1
Grafik 1. Contoh Recall Precision
Grafik 1 menunjukan index 1-4 1 berada di titik i 0.8 -1 1 dan index 5-11 5 titik 0.6 ini menunjukan tingkat akurasi cukup baik.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
BAB IV PERANCANGAN SISTEM DAN IMPLEMENTASI
A. Diagram Use case
Gambar 4. Diagram Usecase
32
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 33 B. Diagram Sekenario 1. Input Profile Sales Aktor
: MedRep
Kondisi awal : Medrep sudah masuk ke halaman input profileuser Kondisi akhir : Data profil bertambah 1.
Medrep menginputkan generic dengan
memilih
combobox
MedRep menginputkan nilai bobot
dari
3. Sistem akan menyimpan profile medrep , profile ini akan digunakan sebagai query
inputan
(low,medium,high,higst) kemudian
sentuh
tombol
tambahkan, 2. Ulangi
langkah
1
jika
diperlukan.
2. Hapus Profil Item Actor : MedRep Kondisi awal : Mederp sudah masuk kehalaman profil dan profil tidak kosong Kondisi akhir : Medrep berhasil menghapus generic obat yang dipilih. 1. Medrep memilih generic obat yang akan dihapus dengan cara touch
3. Sistem akan menampilkan konfirmasi 4. Sistem
nama generic 2. Medrep menekan tombol Yes
akan
menghapus
Generic tersebut
3. Cari Rekomendasi Aktor
: MedRep
Kondisi awal : Medrep sudah menginputkan profilnya. Kondisi akhir : MedRep mengetahui dokter-dokter mana saja yang bisa dikunjungi.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 34 1.Medrep masuk kehalaman cari 2.Sistem rekomendasi dokter
mencari
memungkinkan
dokter
untuk
yang
dikunjungi
Medrep. sistem akan menampilkan seluruh dokter dari kelompok yang memilijarak terdekat dengan profil sales . kemudian nama-nama dokter dalam
kelompok
tersebut
akan
ditampilkan secara terurut berdasarkan tingkat kemiripanya 4. Melihat Profil Dokter Aktor
: MedRep
Kondisi awal : Diasumsikan MedRep Sudah melakukan Case Cari Rekomendasi dan hasil pencarian dokter telah ditampilkan. Kondisi akhir : medrep mendapatkan informasi
detail terkait dokter
tersebut 1. Medrep
touch
nama 2. Sistem
dokter
menampilkan halaman profil
dokter yang memuat data profil dokter yang dimaksud berupa nama ,spesialis dan rekaman data rekomendasi obat
5. Manajemen File Dokter (Sales) Actor
: Admin
Kondisi awal : admin sudah mendownload file profildokter.xls untuk bulan tertentu Kondisi akhir : admin berada di halaman admin sistem 1. Medrep kelakukan touch menu pada ponsel kemudian touch seting data
3. Sistem akan menampilkan halaman seting data 4. Sistem akan melakukan proses data jika
2. Medrep memasukan alamat file
proses berhasil maka akan muncul
tersebut berada kemudian touch
notifikasi jika tidak berhasil maka
tombol proses data
sistem akan tertutup
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 35 a. Download file dokter Actor
: Medrep
Kondisi Awal
:
Medrep sudah berada di halaman
download Kondisi Akhir
: File terdowload
1. Medrep memilih file yang akan
2. Sistem akan mendownload file yang
didownload
dipilih
6. Login Admin Actor
: Admin
Kondisi awal : admin berada di halaman login Kondisi akhir : admin berada di halaman admin sistem 1. Admin mengunjungi web admin control
2. Sistem akan memproses id dan
kemudian memasukan id dan password
password jika benar maka sistem akan menampilkan halaman admin control
7. Management File Dokter ( Admin ) Actor
: Admin
Kondisi Awal
: Admin sudah berada di halaman upload dan file
profiledokter.xls sudah sesuai dengan format yang ada. 1. Medrep memilih file yang akan
2. Sisem akan mengupload file ke
diupload kemudian klik upload
repository
a. Hapus File Data Dokter Actor
: Admin
Kondisi Awal
: Admin sudah berada di halaman Hapus
File 1. Medrep memilih file yang akan dihapus kemudian klik tombol hapus 3. MedRep klik tombol Yes
2.
Sisem
akan
menampilkan
konfirmasi 4. Sistem menghaus file
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 36 b. Edit Deskripsi File Data Dokter Actor
: Admin
Kondisi Awal
:
Admin sudah berada di halaman Edit
Deskripsi 1.Medrep memilih file yang akan di edit
2.Sisem akan menampilkan deskripsi file
3. MedRep mengetikan deskripsi yang baru
4.Sistem deskripsi file
C. Diagram Aktivitas 1. Saat Aplikasi Dijalankan
MedRep
System
Gambar 5. Diagram Aktivitas Saat Aplikasi dijalankan
mengupdate
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 37 2. Cari rekomendasi MedRep
System
Gambar 6. Diagram Aktivitas saat Proses Cari Rekomendasi 3. Input Profile Sales MedRep
System
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 38 4. Hapus Item Profile
MedRep
System
Gambar 8. Diagram Aktivitas Hapus Item Profile
5. Melihat Profil MedRep
MedRep
System
Gambar 9. Diagram Aktivitas Melihat Profil MedRep
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 39
6. Download File Rekomendasi Dokter MedRep
System
Gambar 10. Diagram Aktivitas Download File Dokter 7. Merubah File List Dokter Yang Diakses
MedRep
System
Gambar 11. Diagram Aktivitas Meribah file list dokter yang diakses
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 40 8. Tambah File Diasumsikan sudah login MedRep
System
Gambar 12. Diagram Aktivitas Tambah File
9. Edit Deskripsi File MedRep
System
Gambar 13. Diagram Aktivitas Edit Deskripsi File
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 41 10. Hapus File
MedRep
System
Gambar 14. Diagram Aktivitas Hapus File
D. Diagram Model View Controler (MVC) 1. Struktur MVC Kelas Boundary, Contorl dan Entity MODEL Rekomendasi_Obat_model.java Dokter_model.java ProfilSales_Model.java Olahan_data.java TempDokterModel,java TempResModel.java
CONTROL RelasiKontroler.java
View WebDownload_activity.java Profil_sales_Activity.java Provil_sales_view_activity.java RekomendasiDokterActivity.java Similarity_Controler_activity.java
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 42 2. Diagram Analisis Kelas (Model View Controler)
Rekomendasi_Obat_model.
SimilarityControleractivit
java
y.java
Dokter_model.java
ProfilSales_Model.java Olahan_data.java
Profil_sales_view_act RelasiKontroler.java
ivity.java
RekomendasiDokterActivity.ja va
TempResModel.j
WebDownload_activity.java
Profil_sales_Activi ty.java
Gambar 15. Diagram Analisis Kelas
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 43
3. Diagram Kelas (Aplikasi Android) Profil_Sale
Rekomend
Similarity_Co
Profil_sales_Activ
Dokter_Model.ja RelasiKontroler.java
TempResModel.
Dokter_Model.ja WebDownloadA Rekomendasi_O ProfilSales_Model.java
Index.php
Gambar 16. Diagram Kelas 4. Diagram Kelas (Web Admin) HomeAdmin.php ferifikasiLogin.php Conection.php FormAddFile.php loginAdmin.php Controler.php FormDelete.php
Logout.php
FormKonfirmasiHapus.p
FormEditDeskripsi.php
EditForm.php
Gambar 17. Diagram Kelas (Web Admin)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 44
5. Diagram Kelas Detail a. Model
ProfilSales_Model.java
Dokter_Model.java -Nama String
+Bobot : double
-Spesialis :String
+BobotText : String
-Clusster: int
+Generic : String
-rekomendasiObat : List< Rekomendasi_obat_model >
-
<
> :void
ProfilSales_Model
<> DokterModel() :void
+getBobot() :double
+getCluster() : int
+getBobotText() :String
+getNama() :String +getRekomendasi() +Rekomendasi_obat_model
()
+getGeneric() : String :
--Set Method--
+getSpesialis() : String
Rekomendasi_obat_Model.java
--Set Method--
-BobotObat : double[] -Generic : String[]
Olahan_Data_Model.java Bobot Generic: double[] Generic : String[]
-Obat : String[] olahanData : Olahan_Data_Model <> :void
Olahan_Data_Model
+getBobotGeneric() :double
<> Olahan_Data_Model () :void
+getGeneric() : String +getObat() : void
+getBobotGeneric() :double
+getOlahanData() : Olahan_Data_Model
+getGeneric() : String
TempResModel.java +Centroid: int[][]
--Set Method--
+Generic: String +Status : boolean <> TempResModel() :void --Set Method--
()
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 45
Profil_sales_activity.java
RekomendasiDokter_activity.java
File_Name : String
File_Name : String
File_profile : String
File_profile : String
File_TempDokter
File_TempDokter
ProfilSales : List
fosDokter : FileOutputStream
dokterM : DokterModel []
fosCentroid : FileOutputStream
resourceTemp : TempResModel
fosProfile: FileOutputStream
textInput : AutoCompleteTextView
t : TextView
rg : Radio Group
p : dokterModel[]
textMessage : TextView
p2:TempResModel
list_Image = Integer[]
list_Image = Integer[]
main.xml = view
main.xml = view
profilsalesinput.xml = view
TempResModel(): void
onCreate(Bundle) : void
onCreate(Bundle) : void
onCreateOptionMenu() : Boolean
onCreateOptionMenu() : Boolean
onOptionItemSelected():Boolean
onOptionItemSelected():Boolean
okChangeData(): Boolean
updateData (String): Boolean
onBackPressed(): void
cekProfile():void
profSalesView(): void
cekTemp():void
simpanItem(): void
createTemp():void
getResult() : void
onBackPressed(): void
profSales(): void
getResult() : void
getWebDownload() : void
profSales(): void
home() : void
getWebDownload() : void
keluar() : void
home() : void keluar() : void
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 46
Profil_sales_view_activity.java
WebDownoload_Activity.java
File_Name : String
List_Image : Int[]
File_profile : String
webView : WebView
File_TempDokter : Sting
onCreate(Bundle) : void
t : TextView listP : ListView
onBackPressed(): void onCreateOptionMenu() : Boolean
todoItems: ArrayList<String>
onOptionItemSelected():Boolean
resourceTemp : TempResModel
okChangeData(): Boolean
list_Image = Integer[]
getResult() : void
profilsalesiview.xml = view
profSales(): void
emptyprofile.xml = view
getWebDownload() : void
onCreate(Bundle) : void
home() : void
onBackPressed(): void onCreateOptionMenu() : Boolean onOptionItemSelected():Boolean okChangeData(): Boolean cekProfile():boolean delete(int):void hapusKonfirmasi(int):void inputProfile(view):void menu(int): void profSakesView():void showList():void getResult() : void profSales(): void getWebDownload() : void home() : void keluar() : void
keluar() : void
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 47
SImiraty_Controler_Activity.java File_Name : String
b. Controler
File_profile : String File_TempDokter resDistance : double[] STATUSDETAIL : Bolean
Kelas View
profilSales : List profilSalesResult : List listDokter : Dokter_Model[] todoItems : ArrayList<String> myListView : ListView myListView Detail: ListView t : TextView profilQuery : new double[61]
Relasi_Kontroler.java listAllDokter : Dokter_Model[] centroid : double[][] jumlahAnggotaCluster : int[] iteration : int listDokter = dokterModel[] Relasi_Kontroler(InputStream, InputStream): void ClusterHelper(Dokter_Model[], double[][]): void createIteration(double[][]): DokterModel[] getCentroid(Dokter_Model): double[][] getCentroidAwal(InputStream): double[][]
clusterResult :int
getDataNormalitation(Dokter_Model[],Strin g[]) : Dokter_Model[]
dokList : Dokter_Model[]
getGeneric(): String[]
context :Context
Information_Retrival_kontroler(Dokter_Mo del[], double[]): void
list_Image = Integer[] resultsimilarity.xml = view dokterdetailprofile = view TempResModel(): void onCreate(Bundle) : void onBackPressed(): void onCreateOptionMenu() : Boolean onOptionItemSelected():Boolean okChangeData(): Boolean BubleShort(): void getDokterLIstResult() : void getResource():void getSimilarity(): normalitationQuery(): void setting Query(): void
setDataDokter(InputStream): void
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 48 Detail Diagram kelas PHP
Index.php Link Download
LoginAdmin.php Id : var Password : var (md5) Include ferLogin.php
ferifikasiLogin.php Connection.php Id : var POST Mysql_connection() Password : var (md5) POST Ferifikasi() HomeAdmin.php
formaddFile.php
Link EditDeskripsi Link AddFile
File : File Deskripsi : Text controler.php Id : var SESSION formDelete.php IdFile : number Hapus : button
Password : var (md5)SESSION idSelectedMenu : var tambahFileRekomendasi () hapusFileRekomendasi ()
formkonfirmasiHapus.php editDeskripsiFileRekomendasi () Id : int Status_konfirmasi:text formEdit.php Id : int formEditDeskpripsi.php IdFile : number Link edit
Logout.php Destroy_session()
deskripsi: textArea Update : button
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 49 Detail File properties XML Main.xml
profilsalesview.xml
Galery5 : Galery
Galery4 : Galery
txSistem : TextView
txSistem : TextView
txMe : TextView
myLIstView :ListView
emptyProfile.xml
resultsimilarity.xml
Galery3: Galery
Galery5: Galery
txSistemEmpty: TextView
txSistem: TextView textViewResultSimilarity
:
TextView profilsalesinput.xml listDokterResult : LIstView Galeryx : Galery txSistem : TextView textInput : AutoCompleteTextView
webView.xml
groupPointGeneric : RadioGroup
GaleryWeb: Galery
radio1: RadioButton
webView1 : WebView
radio2: RadioButton radio3: RadioButton
dokterdetailprofil.xml
radio4: RadioButton but_simpan : Button txMessage: TextView
Galery6: Galery txSistem: TextView TVdetailDokter : TextView listDokterResultDetail : LIstView
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 50 E. Diagram Sequence 1. Saat Plikasi Dijalankan Diasumsikan file rekomendasi dokter belum dicluster
Gambar 18. Diagram Sequence Saat Aplikasi Dijalankan
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 51 2. Cari Rekomendasi
Gambar 19. Diagaram Sequence Cari Rekomendasi
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 52 3. Input Profile Medrep
Gambar 20. Diagram Sequence Input Profile Medrep
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 53 4. Lihat Profile Sales
Gambar 21. Diagram Sequence Lihat Profil Sales
5. Hapus Item Profile
Gambar 22. Diagram Sequence hapus Item Profile
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 54 6. Download File Rekomendasi Dokter
Gambar 23. Diagram Sequence Download File Rekomendasi Dokter 7. Merubah File List Dokter Yang Diakses
Gambar 24. Diagram Sequence Merubah File ListDokter Yang Diakses
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 55 8. Tambah File
Gambar 25. Diagram Sequence Tambah File
9. Edit Deskripsi File
Gambar 26. Diagram Sequence Edit Deskripsi
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 56 10. Hapus File
Gambar 27. Diagram Sequence Hapus File
F. Model Penyimpanan Data Aplikasi ini tidak menggunakan RDBMS seperti MySql atau SQLite dengan tujuan untuk mempercepat proses perhitungan maka digunakan sistem basisdata berbasis objek yang disimpan dalam file yang terpisah untuk setiap obeknya. File Resource :
1. dataDokter.xls digunakan sebagai sumber data atau data mentah yang memuat rekaman rekomendasi. 2. Centroid .txt memuat centroid awal.
Berikut adalah kelas model yang objeknya disimpan dalam file :
ProfilSales_Model.java -Bobot : double -BobotText : String
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 57 -Generic : String <> ProfilSales_Model () :void +SET/GET method
Objek
ArrayList
dari
ProfilSales_model
akan
disimpan
dalam
file
tempProfile5.tmp yang akan meuat generic beserta nilai prioritas (bobot) dari produk-prouduk yang akan dittawarkan. TempResModel.java +Centroid: int[][] +Generic: String +Status : boolean <> TempResModel() :void getCentroid() : int getGeneric: String isStatus(): boolean --Set Method--
Objek dari kelas TempTesModel akan disimpan dalam file tempfile5.tmp. File ini merupakan temporary file yang menyimpan semua generic yang terfilter. File ini juga memuat centroid sebagai pusat cluster ketika file dokter sudah dicluster selain itu file ini memuat status bila isStatus() bernilai false maka menandakan data dokter belum dicluster.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 58 Dokter_Model.java -Nama String -Spesialis :String -Clusster: int -rekomendasiObat
:
List<
-
Rekomendasi_obat_model > <> DokterModel() :void +getCluster() : int +getNama() :String +getRekomendasi()
:
+Rekomendasi_obat_model +getSpesialis() : String --Set Method--
Objek ArrayList dari Dokter_Model akan disimpan dalam file tempDokter5.tmp file ini akan menyimpan hasil clustering dari seluruh data dokter beserta menyimpan bobot merek obat yang ditawarkan dan menyimpan bobot obat yang telah dinormalisasi berdasarkan generic .
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 59 G. Algoritma Method Dalam Kelas Yang Memuat Proses Custering dan Euclidean Similarity 1. RekomendasiDokterActivity.java a. onCreate(Bundle) : void 1) melakukan seting view dengan mengakses file main.xml dengan perintah
setContentView(R.layout.main);
2) memanggil method cekTemp() untuk mengecek keberadaan file tempFile.tmp dan tempDokter5.tmp. 3) memanggil method cekProfile() untuk mengecek keberadaan file tempProfile.tmp 4) membuat variabel Galeri dan mendeklarasikan sebagai menu dengan perintah gallery.setOnItemClickListener(new OnItemClickListener() { /* di isikan kondisi sesuai kebutuhan menu */}
b. onBackPressed() 1) mendeklarasikan variabel alret member pesan kepada alret AlertDialog.Builder ad= new AlertDialog.Builder(RekomendasiDokterActivity.this); ad.setTitle("konfirmasi"); ad.setMessage("apakah anda yakin ingin keluar ..")
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 60 2) buat pilihan menu ok dan cancel 3) tambahkan kedalam alret dengan kondisi a) jika ok ditekan maka activity dihentikan b) jika cancel ditekan maka tidak terjadi apa-apa 4) tampilkan alert c. cekProfile():void 1) lakukan
pengecekan
terhadap
file
tempProfile5.tmp
dengan
membuat variabel 2) deklarasikanlah variabel bertipekan FileInputStream dengan nama fisCekProf 3) berikan nilai untuk fisCekProf 4) masukan fisCekProf kedalam cunsuctor ObjectOutputStream untuk langkah 4-5 perhatikan listing program berikut fisCekProf = openFileInput(“tempProfile5.tmp”); ObjectInputStream
inObjectStreamCek
=
new
ObjectInputStream(fisCekProf);
5) Jika file tidak ditemukan maka jalankan langkah 6 jika tidak maka proses cek selesai. 6) Buat Variabel bertipekan FileOutputStream dengan nama fosProfile 7) Deklarasikan nama file dan contex dalam consuctor openFileOutput 8) Seperti pada listing program berikut fosProfile= openFileOutput(FILE_profile,Context.MODE_PRIVATE);
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 61 9) Kemudian objek bertipekan ObjectOutputStream dengan nama outObjectStreamProfile isi parameter consuctor dengan fosProfile . 10) Buat objek ArrayList dari kelas ProfilSales bernama profilSales 11) Masukan objek profilSales kedalam outObjectStreamProfile Perhatikan listing program berikut: ObjectOutputStream
outObjectStreamProfile
=
new
ObjectOutputStream(fosProfile); List profilSales= new ArrayList(); outObjectStreamProfile.writeObject(profilSales);
d. cekTemp():void 1) lakukan pengecekan terhadap file tempRes5.tmp dengan membuat variabel 2) deklarasikanlah variabel bertipekan FileInputStream dengan nama fisCek 3) berikan nilai untuk fisCekProf FileInputStream fisCek = openFileInput(FILE_NAME); 4) jika file tidak ditemukan maka method createTemp() akan dijalankan, jika tidak akan menjalankan langkah 5. perhatikan listing berikut
catch (FileNotFoundException e) { createTemp(); }
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 62 5) Buat objek bertipekan ObjekInputStream dengan nama objek “ inObjectSteamCek” kemudian isikan consuctor dengan fisCek 6) Baca object dari isi file dengan membuat objek bertipekan TempResModel.
TempResModel temCek; temCek = (TempResModel) inObjectStreamCek.readObject();
7) Cek status objek tersebut jika true maka proses berhenti jika false maka akan membuat file tempRes5.tmp (berisikan data generic obat dan centroid akhir dari seluruh cluster) dan file tempDokter5.tmp ( berisikan data dokter yang telah dicluster) Perhatikan listing program berikut: if(temCek.isStatus()){ }else{
createTemp() ; }
e. createTemp():void 1) buat variabel bertipekan FIleOutputStream berinama fosDokter dan fosCentroid 2) deklarasikan
variabel
tersebut
dengan
mengisi
parameter
openFIleOutput untuk masing masing variabel. Perhatikan listing program berikut. fosDokter = openFileOutput(FILE_TemDokter, Context.MODE_PRIVATE); fosCentroid = openFileOutput(FILE_NAME,Context.MODE_PRIVATE);
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 63 3) buat
objek bertipekan ObjectOUtput Stream dengan nama
outObjectStream dan
outObjectStream2 deklarasikan parameter
dengan fosDokter dan fosCentroid. Perhatikan listing program berikut. ObjectOutputStream outObjectStream = new ObjectOutputStream(fosDokter); ObjectOutputStream outObjectStream2 = new ObjectOutputStream(fosCentroid);
4) buat variabel myCentroid dan myFile bertipekan InputStream 5) buat variabel bertipekan Resources dengan nama “myResources“ untuk Centroid dan “myResources2” untuk dataDokter . untuk langkah 4 dan 5 perhatikan listing program berikut. Resources myResources = getResources(); Resources myResources2 = getResources(); InputStream
myCentroid
=
myResources2.openRawResource(R.raw.centroid); InputStream myFile = myResources.openRawResource(R.raw.datadokter);
6) lakukan proses clutering untuk data dokter dengan memanggil kelas Relasi_Kontroler. Perharikan listing berikut Relasi_Kontroler rKontrol = myCentroid);
new
Relasi_Kontroler(myFile,
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 64 7) siapkan objek yang akan disimpan di dalam file tempRes5,tmp dan tempDokter5.tmp dengan cara membuat variabel objek bertipekan TempResModel
dengan
nama “tempR”
dan
Array dari
DokterModel dengan nama “dokterAll” 8) berikan nilai untuk atribut dalam objek tempR TempResModel tempR = new TempResModel(); tempR.setStatus(true); tempR.setTanggal("februari_2013"); tempR.setCentroid(rKontrol.centroid); tempR.setGeneric(rKontrol.getGeneric());
9) Berikan nilai untuk dokterAll Dokter_Model [] dokterAll=rKontrol.listAllDokter; 10) Simpan Objek dalam file outObjectStream2.writeObject(tempR); outObjectStream.writeObject(dokterAll);
2. UpdateData(Strting): Boolean a. Method ini akan mengakses file yang dimaksud dalam url dengan nama myFile bertipekan InputStream b. Buat
variabel
local
bertipe
InputStream
dengan
nama
inputStreamDokter yang berisikan file dokter yang akan dicluster c. Buat InputStream
inputStreamCentroid bernama myCentroid
berisikan centroid awal R.raw.centroid . d. Buat Objek Dari Kelas Relasi_Kontroler bernama rKontrol kemudian isi parameter konsuktor. Seperti listing berikut : Relasi_Kontroler rKontrol = new Relasi_Kontroler(myFile, myCentroid);
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 65 e. buat variabel bertipekan FIleOutputStream berinama fosDokter dan fosCentroid f. deklarasikan
variabel
tersebut
dengan
mengisi
parameter
openFIleOutput untuk masing masing variabel. Perhatikan listing program berikut. FileInputStream fisDokter = openFileInput(FILE_TemDokter); FileInputStream fisCentroid = openFileInput(FILE_NAME);
g. buat
objek
bertipekan
ObjectInputStream
dengan
nama
inObjectStream dan inObjectStream2 deklarasikan parameter dengan fosDokter dan fosCentroid. Perhatikan listing program berikut. ObjectInputStream inInputStream = new ObjectInputStream (fssDokter);
ObjectOutputStream inObjectStream2 = new ObjectOutputStream(fosCentroid);
h. siapkan objek yang akan disimpan di dalam file tempRes5,tmp dan tempDokter5.tmp dengan cara membuat variabel objek bertipekan TempResModel dengan nama “tempR” dan Array dari DokterModel dengan nama “dokterAll”
i. berikan nilai untuk atribut dalam objek tempR TempResModel tempR = new TempResModel(); tempR.setStatus(true); tempR.setTanggal("februari_2013"); tempR.setCentroid(rKontrol.centroid); tempR.setGeneric(rKontrol.getGeneric());
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 66
j. Berikan nilai untuk dokterAll Dokter_Model [] dokterAll=rKontrol.listAllDokter;
k. Simpan Objek dalam file inObjectStream2.writeObject(tempR); inObjectStream.writeObject(dokterAll);
l. Selesai.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
3. Relasi_Kontroler.Java a. Relasi_Kontroler(InputStream, InputStream) : void 1) Method ini hanya bekerja sebagai pengatur langkah program 2) Method ini akan mengisikan variabel listDokter dengan hasil dari method setDataDokter, seperti pada listring berikut : listDokter = setDataDokter(inputStreamDokter );
3) Kemudian listDokter memiliki nilai dari getDataNormalitaion dimana listDokter dan method getGeneric menjadi parameter dari method ini. listDokter = getDataNormalitation(listDokter, getGeneric());
4) Setelah listDokter bernilai getDataNormalitation maka baru akan dilakukan
proses
clustering
dengan
memanggil
method
Information_retrival_kontroler. Information_retrival_kontroler (listDokter, getCentroidAwal(inputStreamCentroid));
b. getCentroidAwal(InputStream): double[][] 1) buat variabel bertipe double [][] bernama centroid, deklarasikan sebagai berikut: double centroid[][] = new double[4][61]; 2) buat variabel String bernama “data”, variabel ini berfungsi sebagai tempat penyimpanan semua data dari inputStream 3) Masukan data dalam InputStream kedalam variabel data , seperti pada listing program berikut :
67
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 68 int c; int i = 0; while ((c = inputStream.read()) != -1) { data = data + (char) c; i++; }
inputStream.close();
4) Pisahkan data berdasarkan enter “\n” StringTokenizer dataToken = new StringTokenizer(data, "\n"); 5) Buat variabel String[] bernama “dataArr”
String dataArr[] =
new String[dataToken.countTokens()]; 6) Setiap index dataArr akan memuat 1 centroid Perhatikan listing program berikut : int index = 0; while (dataToken.hasMoreTokens()) { dataArr[index] = dataToken.nextToken(); index++; }
7) Centroid yang ada di setiap Index dataArr
harus dipisahkan
berdasarkan “\t” sehingga satu centroid terdiri dari beberapa index data untuk setiap centroid simpan dalam variabel yang berbeda StringTokenizer ar0, ar1, ar2 , ar3. Perhartikan listing program berikut : StringTokenizer ar0 = new StringTokenizer(dataArr[0], "\t"); StringTokenizer ar1 = new StringTokenizer(dataArr[1], "\t"); StringTokenizer ar2 = new StringTokenizer(dataArr[2], "\t"); StringTokenizer ar3 = new StringTokenizer(dataArr[3], "\t");
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 69 8) Data centroid sudah tersimpan di StringTokenizer ar0 ,
StringTokenizer
ar1
,
StringTokenizer
ar2,
StringTokenizer ar3, lakukanlah copy data dari variabel-variabel tersebut kedalam array double centroid [][]. Perhatikan listing program berikut : int index0 = 0; while (ar0.hasMoreTokens()) {; double nilai = Double.parseDouble(ar0.nextToken()); centroid[0][index0] = nilai; index0++; }
c. setDataDokter(InputStream): void
1) input berupa inputStream yang merupakan file bertipe .xls 2) buat variabel yang berisi konten-konten yang akan disimpan terpisah untuk setiap barisnya misalnya kelas dokter_model yang akan di isi merek_obat , generic , bobot obat , dokter dan
spesialis
.
Perhatrikan deklarasi variabel berikut listDokter = new Dokter_Model[sheet.getColumns() - 2]; String[] merek_obat = new String[sheet.getRows() - 2]; String[] generic = new String[sheet.getRows() - 2]; double[] bobotObat = new double[sheet.getRows() - 2]; String[] dokter = new String[sheet.getColumns() - 2]; String[] Spesialis = new String[sheet.getColumns() - 2];
3) Deklarasikan index objek dari kelas Dokter_model , perhatikan listing program berikut : for (int i = 0; i < listDokter.length; i++) { listDokter[i] = new Dokter_Model(); }
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 70 4) Buatlah variabel Integer Index_dokter =0 , i=0 5) Selama sheet.getColoumns() < I jika tidak maka ke langkah 14 6) Jika i==0 a) Maka integer index=0 , integer j=1 b) Selama sheet.getRows < j jika tidak maka selesai c) Cell cell = sheet.getCell(i, j); d) Jika cell.getContents() !=”” i. Maka
merek_obat[index] =
cell.getContents().toString(); // poses ini menyimpan merek obat dalam string [] ii.
Index ++
e) j++ , kembali ke b 7) tidak jika i=1 a) Maka integer index=0 , integer j=1 b) Selama sheet.getRows < j jika tidak maka selesai c) Cell cell = sheet.getCell(i, j); d) Jika cell.getContents() !=”” e) Maka generic[index] = cell.getContents().toString(); // poses ini menyimpan Generic obat dalam string [] iii.
Index ++
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 71 f) j++ , kembali ke b 8) untuk kondisi lain (else) a) Maka int indexObat = 0; , int j=0 b) Selama j < sheet.getRows(); jika tidak maka selesai c) Cell cell = sheet.getCell(i, j); d) Jika j==0 iv. Maka seting nama dokter listDokter[indexDokter]. setNama(cell.getContents().toString());
e) Jika j==0 v. Maka listDokter[indexDokter]. setSpesialis(cell.getContents().toString()); indexDokter++; f) Kondisi lain (else ) vi. Jika cell.getContents() == "" Maka seting nilai menjadi 0.0 bobotObat[indexObat] = 0.0; indexObat++; vii. Jika cell.getContents() !=”” bobotObat[indexObat] Double.parseDouble(cell.getContents()); indexObat++; g) j++ kembali ke b
=
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 72 9) Buatlah variabel bantu untuk menampung nilai bobot obat setelah looping index j selesai seperti berikut : double[] arrtemp = new double[bobotObat.length]; 10) Salinlah data menggunakan loop for (int j = 0; j < arrtemp.length; j++) { arrtemp[j] = bobotObat[j]; }
11) Setelah data bobot obat telah masuk kedalam arrtemp maka setinglah seluruh atribut dari objek Rekomendasi_obat_Model seperti berikut: Rekomendasi_obat_Model rek = new Rekomendasi_obat_Model(); rek.setBobotobat(arrtemp); rek.setGeneric(generic); rek.setObat(merek_obat);
12) Seting listDokter dengan menambahkan
rekomendasi obat
listDokter[indexDokter - 1].setReekomendasi_obat(rek); 13) i++ kembali ke langkah 5 14) kembalikan nilat listDokter
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 73 d. getGeneric(): String[] 1) Buatlah variabel String generic = “” dan TempString =”” , jum = 0 2) lakukan perulangan untuk membaca generic milik salahsatu dokter 3) integer I =0 4) selama listDokter [0].getReekomendasi_obat().getGeneric().length < I jika kondisi tidak terpenuhi maka lakukan langkah 8 5) jika listDokter[0].getReekomendasi_obat().getGeneric()[i].equals(tem pString) serupa dengan TempString maka {do nothing} 6) jika tidak a. tempString = listDokter[0].getReekomendasi_obat().getGeneric()[i]; b. tambahkan nilai generic dengan nilai tempString c.
generic += tempString + "\n";
d. Jum ++
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 74 7) I ++ 8) Setelah melakukan proses filtering dan memasukan generic kedalam array, lakukanlah pemotonga string berdasarkan enter “\n” 9) StringTokenizer tokenizer = new StringTokenizer(generic, "\n"); 10) Buatlah variabel baru seperti berikut String[] arrGeneric = new String[tokenizer.countTokens()]; 11) Kemudian salinlah data dari tokenizer kedalam arrGeneric sesuai index 12) Kembalikan nilai arrGeneric e. getDataNormalitation(Dokter_Model[],String[]) : Dokter_Model[] 1) buat
variabel
bertipekan
double
arrBobotGeneric
[jumlah_dokter][jumlah_generic] 2) hitung
nilai
bobot
atau
jumlah
direkomendasikan setiap dokter.
Bila
total
dari
obat
yang
dokter tersebut memiliki
generic yang sama maka dijumlahkan. Perhatikan listing program berikut:
for (int i = 0; i < listDokter.length; i++) { for (int j = 0; j < arrGeneric.length; j++) { double tempBobot = 0.0; for (int k = 0; k < listDokter[i].getReekomendasi_obat(). getGeneric().length; k++) { if(listDokter[i].getReekomendasi_obat().getGeneric()[k].equals(ar rGeneric[j])) { tempBobot = listDokter[i].getReekomendasi_obat(). getBobotobat()[k];
tempBobot
+
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 75 3) setelah mendapatkan bobot total generic dari setiap dokter. Lakukanlah pengesetan nilai dimana untuk setiap dokter[i] = arrBobotGeneric[i][j] perhatikan listing berikut : for (int i = 0; i < listDokter.length; i++) { double[] arrBobot = new double[arrGeneric.length]; for (int j = 0; j < arrBobot.length; j++) { arrBobot[j] = arrBobotGeneric[i][j]; } Olahan_data_Model olahandata = new Olahan_data_Model(); olahandata.setGeneric(arrGeneric); olahandata.setBobotgeneric(arrBobot); listDokter[i].getReekomendasi_obat().setOlahanData(olahandata); }
4) kemudian carilah nilai maksimal setiap generic yang ada dari seluruh dokter kemudian simpan dalam double ArrMaxBobotGeneric[] 5) nilai setiap generic pada dokter harus dinormalkan dengan cara dibagi oleh nilai maksimum dari generic tersebut. Misalnya dokter.Generic[i] / ArrMaxBobotGeneric[i] dapat dilihat pada listing program berikut for (int i = 0; i < arrGeneric.length; i++) { for (int j = 0; j < listDokter.length; j++) { for (int k = 0; k <listDokter[j].getReekomendasi_obat(). getOlahanData().getGeneric().length; k++) { if (arrGeneric[i].equals(listDokter[j]. getReekomendasi_obat().getOlahanData(). getGeneric()[k])) { listDokter[j].getReekomendasi_obat(). getOlahanData().getBobotgeneric()[k] = listDokter[j].getReekomendasi_obat().getOlahanData().
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 76 getBobotgeneric()[k] / ArrMaxBobotGeneric[k];
} } } }
6) retrunkan listDokter f. Information_Retrival_kontroler(Dokter_Model[], double[]): void 1) Method ini merupakan method kontroler untuk memanggil methodmethod untuk memproses data kluster dengan memulai iterasi pertama. 2) Lakukan seting value
untuk variabel public centroid dan
listAllDokter dengan nilai dari variabel parameter , seperti pada listing berikut : this.listAllDokter = dokterList; this.centroid = centroidParameter; 3) Buat variabel lokal Dokter_Model[] dengan nama dkterTemp untuk menyimpan hasil dari iterasi pertama dengan centtroid pertama. Perhatikan listing program berikut: Dokter_Model[] dkterTemp = createtIteration(centroid); 4) Lakukan proses clustering dengan memanggil method ClusterHelper dengan parameter dokterTemp , dan nilai centroid dari dokterTemp . dimana dokterTemp adalah dokter dengan nilai iterasi pertama. Perhatikan listing program berikut: ClusterHelper(dkterTemp, getCentroid(dkterTemp));
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 77 5) selesai g. ClusterHelper(Dokter_Model[], double[][]): void 1) Method ini aka mengetur jalanya iterasi yang lebih dari satu 2) Buat variabel boolean statusEndIteration = false 3) Buat variabel temporary untuk menyimpan data dokter dalam parameter perhatikan listing program berikut: Dokter_Model[]
nextIteration
=
createtIteration(centroid_parameter); 4) i=0 5) selama jumlah i < listdokter.length 6) jika nilai cluster dalam listdokter[i] tidak sama dengan listdokter dalam iterasi berikutnya i. Maka statusEndIteration = true; ii. Break iii. Lanjut langkah h
Perhatikan langkah berikut : for (int i = 0; i < listdokter.length; i++) { if (listdokter[i].getCluster() != nextIteration[i].getCluster()) { statusEndIteration = true; break; }
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 78 7) i++ , kembali ke langkah e 8) jika statusEndIteration == true iv. ulangi langkah b dengan parameter adalah listDokter dari iterasi n yang merupakan hasil dari iterasi dengan centroid = centroid parameter dan beri nilai parameter centroid dengan nilai centroid dari listdokter dengan iterasi ke n perhatikan langkah berikut :
ClusterHelper(createtIteration(centroid_parameter), getCentroid(createtIteration(centroid_parameter))); 9) jika jika statusEndIteration != true seting semua atribut yang diperlukan dengan hasil perhitungan. Perhatikan langkah berikut: this.centroid = centroid_parameter; this.listAllDokter = listdokter; getCentroid(nextIteration); System.out.println("selesai"); 10) selesai
h. createIteration(double[][]): DokterModel[] 1) deklarasikan
variabel
bertipe
dokter_model[]
dengan
nama
listDokterTemp. Perhatikan langkah berikut: Dokter_Model[]
lstDokterTemp
Dokter_Model[listAllDokter.length];
=
new
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 79 2) lakukan
copy
array
dari
seluruh
index
listAllDokter
ke
listDokterTemp 3) buatlah variabel Total_resultC1 , Total_resultC2 , Total_resultC3 , Total_resultC4 untuk menyimpan jarak euclidean dengan masingmasing centroid . perhatikan listing program berikut untuk mengukur jarak euclidean setiap dokter: double resultC1 = 0; double resultC2 = 0; double resultC3 = 0; double resultC4 = 0 for (int k = 0; k < ListDokterTemp[i].getReekomendasi_obat(). getOlahanData().getGeneric().length; k++) { resultC1
=
resultC1
+
Math.pow(ListDokterTemp[i].getReekomendasi_obat().get OlahanData().getBobotgeneric()[k] - centroid[0][k], 2); resultC2
=
resultC2
+
Math.pow(ListDokterTemp[i].getReekomendasi_obat().get OlahanData().getBobotgeneric()[k] - centroid[1][k], 2); resultC3
=
resultC3
+
Math.pow(ListDokterTemp[i].getReekomendasi_obat().get OlahanData().getBobotgeneric()[k] - centroid[2][k], 2); resultC4
=
resultC4
+
Math.pow(ListDokterTemp[i].getReekomendasi_obat().get OlahanData(). getBobotgeneric()[k] - centroid[3][k], 2);
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 80 } double Total_resultC1 = Math.sqrt(resultC1); double Total_resultC2 = Math.sqrt(resultC2); double Total_resultC3 = Math.sqrt(resultC3); double Total_resultC4 = Math.sqrt(resultC4);
4) hitunglah jarak euclidean dari setiap dokter dengan masing-masing centroid kemudian simpan di variabel untk setiap dokter. Perhatikan listing program berikut: i. cari nilai terkecil dari jarak euclidean yang terkecil dari dokter tersebut ii. tambahkan nilai 1 untk array cluster yang terkecil. iii. Untuk langkah i dan ii perhatikan listing program berikut
if
(Total_resultC1
<
Total_resultC2
&&
Total_resultC1 < Total_resultC3 && Total_resultC1 < Total_resultC4) { Cluster = 1; countAnggotaCluster[0]++; }else if(.....)else if(....)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 81 5) Kembalikan nilai dari listDokterTemp 6) Selesai 4. Similarity controller_avtivity.java a. onCreate(Bundle savedInstanceState) 1) method ini berkerja sebagai kontroler pengatur proses apa saja yang harus dilakukan 2) method
ini
akan
memanggil
method
getResource
untuk
mendapatkan data dokter dan data sales 3) memanggil
method
normalitationQuery()
untuk
melakukan
normalisasi bobot untuk query 4) memanggil method settingQuery() untuk
melakukan pengecekan
bobot generic bdalam profile dengan deneric yang dimiliki system untuk generic yang tidak dipilih oleh sales maka akan bernilai 0. 5) Memanggil method getSimilarity untuk mendapatkan hasil dari proses pencarian jarak terdekat antara query dengan cluster clusterResult=getSimilarity(); 6) Mendapatkan
data
dpokter
dari
cluster
yang
terpilih
getDokterListResult(); 7) melakukan pengurutan data dokter dari cluster yang terpilih berdasarkan similarity dengan query dengan memanggil method bubleShort(); 8) menampilkan data 9) myListView = (ListView)findViewById(R.id.listDokterResult); b. getResource()
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 82 1)
buatlah variable bertipe public diluar method seperti berikut :
String FILE_TemDokter = "tempDokter5.tmp"; String FILE_NAME = "tempfile5.tmp"; String FILE_profile="tempProfile5.tmp"; double [] resDistace; Boolean STATUSdETAIL=false;
List profilSales; TempResModel resourceTemp; Dokter_Model [] listDokter;
2) Dalam method getResource() panggilah file yang akan diambmbil datanya tempDOkter5.tmp , tempProfile5.tmp , tempfile5.tmp . perhartikan listing program berikut ; FileInputStream fis2 = openFileInput(FILE_NAME); ObjectInputStream inObjectStream2 = new ObjectInputStream(fis2); FileInputStream fis2Sales = openFileInput(FILE_profile) ObjectInputStream inObjectStream2Sales = new ObjectInputStream(fis2Sales); FileInputStream fisDokter = openFileInput(FILE_TemDokter); ObjectInputStream inObjectStreamDokter = new ObjectInputStream(fisDokter);
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 83 3) Jika sudah menyimpan dalam variable bertipe objectInputStream langkah
berikutnya
adalah
memberikan
nilai
variable
List profilSales; TempResModel resourceTemp; Dokter_Model [] listDokter agar berisikan data yang terdapat di objectInputStream. Inplementasi perhatikan listing program berikut : listDokter
=
(Dokter_Model
[]
)
inObjectStreamDokter.readObject(); resourceTemp = (TempResModel) inObjectStream2.readObject(); profilSales
=
(List)
inObjectStream2Sales.readObject(); 4) Setelah dilakukan pengesetan terhadiap variable listDokterm resourceTemp dan profilSales maka variable tersebut telah berisi data yang ada dalam file sehingga siap untuk diproses. 5) Selesai c. normalitationQuery() 1) akses variable profil sales 2) cari nilai maksimal dari seluruh item profile 3) bagi seluruh bobot dari item profil dengan nilai max 4) selesai d. settingQuery() 1) buat variable bantu
double profileQuery[] = new double ()[jumlah
generic] 2) seting seluruh nilai indek = 0.0 perhatikan listing berikut: for (int i = 0; i < profileQuery.length; i++) { profileQuery[i]=0.0;
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 84 }
3) akses variable profilSales 4) buat variable tempResource 5) isi variable genericRes[] dengan data generic dari kelas variable tempResource.getGeneric() 6) lakukan pencocokan indek 7) i=0 8) selama i< tempResource.generic().length , jika tidak lanjut langkah 14 9) j =0 10) selama j < profilSales.size() jika tidak lanjut langkah 13 11) cek
apakah
untuk
index
profilSales.get(j)
==
tempResource.generic()[i] a. jika sama cek seting profileQuery[i]= profilSales.get(j).getBobot() 12) j++ , ulangi langkah 10 13) i++ , ulangi langkah 8 untuk lebih jelas perhatikan listing program berikut :
public void settingQuery() { for (int i = 0; i < profileQuery.length; i++) { profileQuery[i]=0.0; }
for (int i = 0; i < resourceTemp.getGeneric().length; i++) { for (int j = 0; j < profilSales.size(); j++) {
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 85
if(resourceTemp.getGeneric()[i].equals(profilSales.get(j).Generic)){
profileQuery[i]=profilSales.get(j).getBobot(); }}}}
e. getSimilarity() 1) buat variable untuk menampung jarak ke empat centroid dengan query 2) lakukan perhitungan jarak Euclidean terhadap profilQuery dengan resourceTemp.getCentroid()[0...3] a) buat variable temporary double resultC1 = 0; double resultC2 = 0; double resultC3 = 0; double resultC4 = 0;
b) hitung nilai (index X1 – index Y2 ) ^ + index X2- index X2)^2 …. Untuk hasil perhitungan setiap centroid cluster dengan profilQuery simpan dalam variable temporary .
for (int i = 0; i < 61; i++) { resultC1=resultC1
+
Math.pow((resourceTemp.getCentroid()[0][i]-profileQuery[i]),2); resultC2=resultC2
+
Math.pow((resourceTemp.getCentroid()[1][i]-profileQuery[i]),2); resultC3=resultC3
+
Math.pow((resourceTemp.getCentroid()[2][i]-profileQuery[i]),2); resultC4=resultC4 Math.pow((resourceTemp.getCentroid()[3][i]-profileQuery[i]),2); }
+
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 86 c) hitung akar dari masing-masing variable dalam
variable
Total_ResultC1
,
temporary
simpan
Total_ResultC2
,
Total_ResultC3 , Total_ResultC4
double Total_resultC1 = Math.sqrt(resultC1); double Total_resultC2 = Math.sqrt(resultC2); double Total_resultC3 = Math.sqrt(resultC3); double Total_resultC4 = Math.sqrt(resultC4);
3) ambil
centroid
cluster
dengan
jarak
terkecil
dengan
membandingkan nilai dari Total_ResultC1 , Total_ResultC2 , Total_ResultC3 , Total_ResultC4 , perhatikan contoh pengecekan berikut :
int Cluster = 0; if (Total_resultC1 < Total_resultC2 && Total_resultC1 < Total_resultC3 && Total_resultC1 < Total_resultC4) { Cluster = 1; } else if (Total_resultC2 < Total_resultC1 && Total_resultC2 < Total_resultC3 && Total_resultC2 < Total_resultC4) { Cluster = 2; }
4) kemudian retrun cluster
f. getDokterListResult() 1) hitung anggota cluster dari cluster dokter yang terpilih 2) buat objek array dari kelas Dokter_model. Seperti listing program berikut Dokter_Model [] tDokter= new Dokter_Model[jumDokterResult];
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 87 3) copy array dari objek listDokter kedalam tDokter untuk dokter yang masuk kedalam cluster yang dipilih 4) seting variable dokListResult=tDokter; 5) setelah melakukan copy array buatlah variable resDistance[] bertipe double untuk menyimpan jarak dari setiap dokter dengan query 6) Setelah resDistance dibuat kemudian deklarasikanlah variable tersebut dalam method ini. resDistace= new double[tDokter.length]; 7) Hitung jarak antara dokter dalam dengan query
menggunakan
Euclidean seperti pada baris program berikut : for (int i= 0; i < resDistace.length; i++) { for
(int
j
=
0;
j
<
tDokter[0].getReekomendasi_obat().getOlahanData().getBobotgeneric().length; j++) { double tJum=Math.pow((tDokter[i].getReekomendasi_obat().
getOlahanData().getBobotgeneric()[j]-profileQuery[j]),2); resDistace[i]=resDistace[i]+ tJum; } }
8) Lakukan proses perhitungan akar untuk setiap jarak for (int i = 0; i < resDistace.length; i++) { resDistace[i]=Math.sqrt(resDistace[i]); }
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 88 9) Selesai g. bubleShort() 1) akses variabel resDistance[] yang memuat jarak dari setiap dokter terhadap query 2) urutkan menggunakan algoritma bubleshort dari yang besar menuju yang kecil Algoritma buble sort : a)
Algoritma ini digunakan untuk mengurutkan data dengan metode bubble sort.
b)
Masukan berupa kumpulan data dalam larik.
c)
Keluaran akan menghasilkan kumpulan data dalam larik yang sudah dalam keadaan urut.
d) Langkah 0 : Baca data ke dalam larik e) Langkah 1 : Untuk iterasi = 1 sampai N-1 lakukan langkah 2 f) Langkah 2 : Untuk elemen = 0 sampai N-1-iterasi lakukan langkah 3 g) Langkah 3 : Test apakah larik[elemen] > larik[elemen + 1] Jika ya, tukarkan nilai kedua elemen ini
3) detail algoritma dalam implementasi : for (int m = 0; m < dokListResult.length-1; m++) { for (int n = 0; n < dokListResult.length-1-m; n++) { if(resDistace[n]
double tem= resDistace[n+1]; resDistace[n+1]=resDistace[n]; resDistace[n]=tem;
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 89
Dokter_Model dT=dokListResult[n+1]; dokListResult[n+1]=dokListResult[n]; dokListResult[n]=dT; } } }
h. Dokter_Model shortRecomendation(int idDokter) 1) Method ini sama halnya dengan method BubleShort dimana method ini untuk mengurutkan obat yang direkomendasikan dokter berdasarkan jumlah terbesar 2) Berikut
adalah
algoritma
pengurutan
rerkomendasi
obat
menggunakan bubleshort Algoritma buble sort a)
Algoritma ini digunakan untuk mengurutkan data dengan metode bubble sort.
b)
Masukan berupa kumpulan data dalam larik.
c)
Keluaran akan menghasilkan kumpulan data dalam larik yang sudah dalam keadaan urut.
d) Langkah 0 : Baca data ke dalam larik e) Langkah 1 : Untuk iterasi = 1 sampai N-1 lakukan langkah 2 f) Langkah 2 : Untuk elemen = 0 sampai N-1-iterasi lakukan langkah 3 g) Langkah 3 : Test apakah larik[elemen] > larik[elemen + 1] Jika ya, tukarkan nilai kedua elemen ini
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
BAB V HASIL DAN PENGUJIAN
A. Hasil Pengujian Sistem 1. Item Query Yang Tersedia Tabel 21. Item Query Yang Tersedia 30 Heparin
No
Generic Obat ( Profil Query )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Amikacin Amoxicillin + clavulanic acid Ampicillin sodium, Ascorbic acid Biotin + folic acid + glycine Bupivacaine hydrochloride + dextrose monohydrate Cefepime Cefoperazone Cefotaxime Cefpirome Ceftazidime Ceftizoxime Ceftriaxone Cefuroxime Ciprofloxacin
16
Citicoline
17 18 19 20 21 22 23
Dexketoprofen Dexmedetomidine hydrochloride Dextrose +lidocaine hydrochloride Diazepam Dipyrone Dobutamine Ephedrine hydrochloride theophylline anhydrous epoetin alfa Esomeprazole Fentanyl Ferric hydroxide sucrose complex Fluconazole Fosfomycin Furosemide
24 25 26 27 28 29
31 32
Hyoscine Imipenem + cilastatin
33 34 35 36 37 38
Ketoprofen Ketorolac Levofloxacin Mecobalamin Meropenem Methampyrone + vitamin B complek Methylprednisolone Metoclopramide hydrochloride Metronidazole Midazolam Moxifloxacin Neostigmine Norepinephrine Omeprazole Ondansetron Oxytocin Pantoprazole paracetamol + vitamin B complek Parecoxib Piracetam Propofol Ranitidine rocuronium bromide Tetanus immunoglobulin Tramadol tranexamic acid Vecuronium bromide Vitamin B-Complek
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 59 60 61
+
90
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 91
B. Sampel profil Tabel 22. Sampel Query Yang Digunakan Untuk Pengujian 1. Query 1 Amoxcilin (standard ), Ciproflixacin (standard ), Ondancentron (standard), Ranitide ( Medium), Pinacetam ( Standar) Dokter yang dipilih
Urutan dalam sistem
Na
1
AD
2
DN
3
AWW
5
NH
7
RA
15
2. Query 2 Omeprazole (High), Pantoprazole (High), Tranexamid acid (High), Ceftasidim (High), Methilprednisolon (high), Citrizin (High), Ondansetron (High), Esomeprazole (Medium), Ceftriaxone (High), Meropenenem (High) Dokter yang dipilih
Urutan dalam sistem
KS
1
AP
2
WR
3
3. Query 3 Citicolin (Standard), Diazepam (Standard), Ondansetron (Standard), Omeprazole (Standard), Piracetan (High) Dokter yang dipilih
Urutan
IS
3
FN
4
IP
5
YU
6
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 92
4. Query 4 Amoxcilin (Medium), Dobutamine (Standard), Ranitide (High), Cefotamine (Medium), Omeprazole (Medium), Ketrolak(High), Methapyrone (Medium), Amixacin(Medium) Dokter yang dipilih
Urutan
Na
1
Ad
2
Dn
3
Bp
4
Aww
5
Ik
6
Dh
7
Pa
8
Fa
9
Sk
10
Al
11
Mj
13
Ra
15
5. Query 5 Amixacin
(Medium),
Dobutamine
Citicoline
(standard),
Omeprazole (medium),
(high),
Ranitide
Cefotaxime
Tramadol (standard)
Dokter yang dipilih
Urutan
Ab
1
Is
3
Fn
4
Ip
5
Es
7
(High),
(standard),
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 93
6. Query 6 Cefotaxime (medium), Citicoline (medium), Cefpirome (standard), Pantoprazole (standard),
(high),
Ciprofoxacin
(Medium),
Ondancentron (standard),
Amoxcilin
Mhetyl prednisolone
(medium), Ranitide (medium), Omeprazole (high) Dokter yang dipilih
Urutan
Na
1
Ad
2
Dn
3
Bp
4
Aww
5
Ik
6
Nh
7
Pa
8
Ra
15
7. Query 7 Pantoprazole
(medium),
Ondansetron
(medium),
(medium) , Ceftriaxone (high), Cefotaxime (high) Dokter yang dipilih
Urutan
Na
1
Ad
2
Dn
3
Bp
4
Aww
5
Ik
6
Dh
7
Pa
8
Fa
9
Sk
10
Ketrolack
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 94 Al
11
Mj
13
Lu
14
8. Query 8 Hyocine (standard), Levocaxin(medium), Pantoprazole(standard), Tramadol(high), Methylpredinsolone(medium), Ketoprofen(high) Dokter yang dipilih
Urutan
Na
1
Bp
4
Aww
5
Ik
6
Nh
7
Mj
13
9. Query 9 Cefotaxime (highst), Cetriaxone (highst), Ciprofloxacin (high), Ketrolac
(high),
ondansetron(high),
levoxacin(high), omeprazole
menropenem (high),
(high),
tramadol(high),
paracetamol(high) Profil sales
Dokter yang dipilih
Urutan
Ks
1
Ap
2
wr
3
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 95 10. Query 10 Citicolin
(high),
Dexketropen
Ondansentron(medium),
(high),
Piracetam(medium),
Ketrolac (high),
Tramadol(medium),
Ketroprofen (high), Mecobelamin(medium) , Panecoxib ( medium ) Profil sales
Dokter yang dipilih
Urutan
Ab
1
Sr
2
Is
3
Fn
4
Ip
5
Yu
6
Yf
7
Es
8
11. Query 11 Amoxicillin (standard), (medium),
Cefotaxime (high),
Diazepam
Ketoprofen(medium),
(high),
Ciprofloxacin
Ephedrine
Metronidazole (medium),
(medium), Paracetamol
(standard), Omeprazole (standard), Piracetam(high) Profil sales
Dokter yang dipilih
Urutan
Bp
4
Aww
5
Ik
6
Pa
8
Fa
9
Sk
10
Ai
11
Mj
13
Lu
14
Ra
15
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 96 12. Query 12
Ceftriaxone (medium), Ranitide (medium),
Diazepam (high),
Parastamol (standard), Ketrolac (medium), Mcobalamin (medium), Ciprofloxacin (medium), Amoxcilin (high), Citicolin (high), Meropenem (standard) Profil sales
Dokter yang dipilih
Urutan
AB
1
Sr
2
Is
3
Fn
4
Ip
5
Yu
6
Yf
7
Es
8
13. Query 13
Amoxicillin (high),
Cefepime (medium),
Cefoperazone
(medium), Cefotaxime (standard), Cefpirome (medium), Ceftazidime (medium),
Ceftriaxone (medium),
(medium), Meropenem (high), Profil sales
Ciprofloxacin
Ketrolac (medium) Dokter yang dipilih
Urutan
AB
1
Sr
2
Is
3
Yu
6
Yf
7
Es
8
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 97 14. Query 14 Ondansetron (high), Mecobelamin(medium), Methylprednisolone (high), Pharachetamol (standard), Amoxicillin (standard) Dokter yang dipilih
Urutan
Na
1
Ad
2
Bp
4
Aww
5
Ik
6
Nh
7
Da
8
Fa
9
Al
11
15. Query 15 Amoxicillin (high),
Citicolin (medium),
Pantoprozole (high),
Omeprazole (high), Meropenem (standard) Dokter yang dipilih
Urutan
Ab
1
Is
3
Fn
4
Yu
6
Es
7
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 98 16. Query 16
Cefoperazone (standard), (high),
Ceftazidime (medium), Cetriaxone
Ciprofloxacin (standard),
Dexketoprofen (medium),
Dexmedetomidine (high) Dokter yang dipilih
Urutan
Na
1
Ad
2
Dn
3
Bp
4
Nh
6
Ai
11
Ra
15
17. Query 17
Dobutamine (medium),
Esomeprazole (medium),
Fentanyl
(standard), Hyoscine (high), Heparin (high), Ketroprofen (high), Ranitide (high), Tramadol (high). Dokter yang dipilih
Urutan
Bp
4
Aww
5
Ik
6
Ra
15
Mj
13
Dn
2
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 99 18. Query 18
Amoxicillin (medium), Cefepime (standard), Dobutamine (high), Methylprednisolone (medium), Piracetam (high),
Paracetamol
(standard), Ranitide (standard) Profil sales
Dokter yang dipilih
Urutan
Aww
5
Nh
7
Na
1
Ra
15
19. Query 19
Amoxicillin (medium), Ondansentron (medium ), Ranitide (high), Cefotaxime (medium),
Omeprazole (medium),
Ondansetron
(medium), Pantoprazole (high), Tramadol (highst) Dokter yang dipilih
Urutan
Ab
1
Sr
2
Is
3
Yu
6
20. Query 20
Amoxicillin (medium),
Cefuroxime (medium), Paracetamol (medium),
Ascorbic acid (standard), Portoprazole (high) Dokter yang dipilih
Urutan
Na
1
Ad
2
Aw
5
Ik
6
Nh
7
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 100 C. Perhitungan Recall Dan Precision 1.
Tabel Relevansi Dokumen Tabel 23. Relevansi Dokumen RD
Query 1
Query 2
Query 3
Query 4
RD
Query 6
Query 7
RD 4
1
2
3
Rlv
Rlv
Rlv
an
an
5
RD 6
Rlv
RD
RD
RD
RD
RD
RD
RD
RD
7
8
9
10
11
12
13
14
Rlv
RD 15 Rlv
an
Nr
an
Nr
Nr
Nr
Nr
Nr
Nr
Nr
an
an
Nr
Nr
Nr
Nr
Nr
Nr
Nr
Nr
Nr
Nr
Nr
Nr
Rlv
Rlv
Rlv
Rlv Nr
Nr
Nr
Rlv
Rlv
an
an
Nr
Nr
an
an
an
an
Nr
Nr
Nr
Nr
Nr
Rlv
Rlv
Rlv
Rlv
Rlv
Rlv
Rlv
Rlv
Rlv
Rlv
Rlv
an
an
an
an
an
an
an
an
an
an
an
Nr
an
Nr
Rlv
Rlv
Rlv
Nr
Nr
Nr
Nr
Nr
Nr
Rlv
Nr
an
an
an
Nr
an
Nr
Rlv
Rlv
Rlv
Rlv
Rlv
Rlv
Rlv
Rlv
an
an
an
an
an
an
an
an
Nr
Nr
Nr
Nr
Rlv
Rlv
Rlv
Rlv
Rlv
Rlv
Rlv
Rlv
Rlv
Rlv
Rlv
Rlv
an
an
an
an
an
an
an
an
an
an
an
an
Rlv
Rlv
Rlv
Nr
an
an
an
Nr
Nr
Nr
Nr
Nr
Nr
Nr
Nr
an
Nr
Nr
Nr Rlv an
Rlv
an
Rlv Query 8
RD
Nr
Rlv
Rlv Query 5
RD
Nr Rlv
Nr
Nr
an
Rlv Nr
an
Nr
an
Nr
Nr
Nr
Nr
Nr
Nr
Nr
Nr
Nr
Nr
Rlv
Rlv
Rlv
Rlv
Query 9
an
an
an
Nr
Nr
Nr
Nr
Nr
Query
Rlv
Rlv
Rlv
Rlv
Rlv
Rlv
Rlv
Rlv
10
an
an
an
an
an
an
an
an
Nr
Nr
Nr
Rlv
Rlv
Rlv
Rlv
Rlv
Rlv
Rlv
Rlv
Rlv
Rlv
11
Nr
Nr
Nr
an
an
an
Nr
an
an
an
an
Nr
an
an
an
Query
Rlv
Rlv
Rlv
Rlv
Rlv
Rlv
Rlv
Rlv
12
an
an
an
an
an
an
an
an
Nr
Nr
Nr
Nr
Nr
Nr
Nr
Query
Rlv
Rlv
Rlv
Rlv
Rlv
Rlv
Rlv
13
an
an
an
an
Nr
an
an
an
Nr
Nr
Nr
Nr
Nr
Nr
Nr
Query
Rlv
Rlv
14
an
an
Query
Rlv
15
an
Nr
Query
Rlv
16
an
Query
Query
Rlv
Rlv
Rlv
Rlv
Rlv
Rlv
Nr
an
an
an
an
an
an
Nr
an
Nr
Nr
Nr
Nr
Rlv
Rlv
an
an
Nr
R
Nr
Nr
Nr
Nr
Nr
Nr
Nr
Nr
Rlv
Rlv
Rlv
an
an
an
Nr
Nr
an
Nr
Nr
Nr
an
Nr
Nr
Nr
Nr
Nr
Nr
Nr
Nr
Nr
R
Nr
an
Nr
Nr
Nr
Nr
Nr
Nr
Nr
an
Rlv
Rlv
Rlv an Rlv
Rlv
Rlv an
Rlv
Rlv
Rlv
an
Nr
an
an
an
an
Nr
Nr
Nr
an
Query
Rlv
Rlv
Rlv
19
an
an
an
Nr
Nr
an
Nr
Nr
Nr
Nr
Nr
Nr
Nr
Nr
Nr
Query
Rlv
Rlv
Nr
Nr
Rlv
Rlv
Rlv
Nr
Nr
Nr
Nr
Nr
Nr
Nr
Nr
17
Nr
Query
Rlv
18
Rlv
Rlv
Rlv Nr
an Rlv
Rlv
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 101 20
an
an
an
an
an
Keterangan : RD : Result Dokter Nr : Not Relevan Relevan : Indek dokter yang dianggap relevean oleh sales . Missal untuk query 1 didapatkan hasil sebagai berikut Dokter Na (1) ,
Dokter Ad (2) , DOkter Dn (3) , Dokter Aww (5) ,
Dokter Nh (7) , Dokter Ra (15 ) Maka untuk query 1 index result yang relevan adalah index 1 , 2 , 3,5, 7 dan 15 2. Perhitungan Recall Dan Precision Setiap Query Tabel 24. Menghitung Recall dan Precision
Query 1 recall
0.16 7 1
0.33 3 1
0.5
0.5
1
prec
0.33 3 1
0.66 7 1
Query 3 Recall
0
0
prec
0
0
0.07 7 1
0.15 4 1
prec
Query 2 recall
Query 4 recall rec
0.6 7 0.6 7
0.83 3 0.71 4
0.8 3 0.6 3
0.8 3 0.5 6
0.8 3 0.5
0.8 3 0.4 5
0.8 3 0.4 2
0.8 3 0.3 8
0.8 3 0.3 6
1
0.75
0.6 7 0.8
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0.75
0.6
0.5
0.42 9
0.3 8
0.3 3
0.3
0.2 7
0.2 5
0.2 3
0.2 1
0.2
0.2 5 0.3 3
0.5
1
1
1
1
1
1
1
1
1
1
0.5
0.7 5 0.6
0.6 7
0.57 1
0.5
0.4 4
0.4
0.3 6
0.3 3
0.3 1
0.2 9
0.2 7
0.2 3 1
0.30 8 1
0.3 8 1
0.4 6 1
0.5
0.5 7 1
0.6 4 1
0.7 7 1
0.8 5 1
0.8
0.9 2 0.9 2
0.9 2 0.8 6
1
1
0.9 2
0.4
0.8 7
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 102
Query 5 recall
0.2
0.2
0.4
0.6
0.8
0.8
1
1
1
1
1
1
1
1
1
prec
1
0.5
0.6 7
0.75
0.8
0.6 7
0.71 4
0.6 3
0.5 6
0.5
0.4 5
0.4 2
0.3 8
0.3 6
0.3 3
0.11 1 1
0.22 2 1
0.3 3 1
0.44 4 1
0.6
0.77 8 1
0.8 9 1
0.8 9 0.8 9
0.8 9 0.8
0.8 9 0.7 3
0.8 9 0.6 7
0.8 9 0.6 2
0.8 9 0.5 7
1
1
0.6 7 1
0.15 4 1
0.2 3 1
0.30 8 1
0.3 8 1
0.4 6 1
0.53 8 1
0.6 2 1
0.6 9 1
0.7 7 1
0.8 5 1
0.9 2 1
0.9 2 0.9 2
1
1
prec
0.07 7 1
0.9 3
0.8 7
Query 8 recall
0.2
0.2
0.2
0.2
0.4
0.6
0.8
0.8
0.8
0.8
0.8
0.8
1
1
1
prec
1
0.5
0.3 3
0.5
0.6
0.6 7
0.71 4
0.6 3
0.5 6
0.5
0.4 5
0.4 2
0.4 6
0.4 3
0.4
0.33 3 1
0.66 7 1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0.75
0.6
0.5
0.42 9
0.3 8
0.3 3
0.3
0.2 7
0.2 5
0.2 3
0.2 1
0.2
0.25
0.7 5 1
0.87 5 1
1
1
1
1
1
1
1
1
0.6 3 1
1
1
0.3 8 1
0.5
prec
0.12 5 1
1
0.8 9
0.8
0.7 3
0.6 7
0.6 2
0.5 7
0.5 3
Query1 1 recall
0
0
0
0.1
0.2
0.3
0.3
0.4
0.5
0.6
0.7
0.7
0.8
0.9
1
prec
0
0
0
0.25
0.4
0.5
0.57 1
0.6 3
0.6 7
0.7
0.7 3
0.6 7
0.6 9
0.7 1
0.6 7
0.12 5 1
0.25
0.3 8 1
0.5
0.7 5 1
0.87 5 1
1
1
1
1
1
1
1
1
1
0.6 3 1
1
0.8 9
0.8
0.7 3
0.6 7
0.6 2
0.5 7
0.5 3
0.14 3 1
0.28 6
0.4 3 1
0.57 1 0.75
0.5 7 0.8
0.7 1 0.8 3
0.85 7 0.85 7
1
1
1
1
1
1
1
1
0.8 8
0.7 8
0.7
0.6 4
0.5 4
0.5 8
0.5
0.4 7
Query 6 recall prec
0.6
Query7 recall
Query 9 recall prec
Query1 0 recall
Query 12 recall prec
Query 13 recall prec
1
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 103 Query 14 recall
0.22 2 1
0.2 2 0.6 7
0.33 3 0.75
0.4 4 0.8
0.5 6 0.8 3
0.66 7 0.85 7
0.7 8 0.8 8
0.8 9 0.8 9
0.8 9 0.8
1
1
1
1
1
prec
0.11 1 1
0.8 2
0.7 5
0.6 9
0.6 4
0.6
Query 15 recall
0.2
0.2
0.4
0.6
0.6
0.8
1
1
1
1
1
1
1
1
1
prec
1
0.5
0.6 7
1
0.6
0.6 7
0.71 4
0.6 3
0.5 6
0.5
0.4 5
0.4 2
0.3 8
0.3 6
0.3 3
0.28 6 1
0.4 3 1
0.57 1 0.5
0.5 7 0.8
0.5 7 0.6 7
0.71 4 0.71 4
0.7 1 0.6 3
0.7 1 0.5 6
0.7 1 0.5
0.8 6 0.5 5
0.8 6 0.5
0.8 6 0.4 6
0.8 6 0.4 3
1
prec
0.14 3 1
Query 17 recall
0
0.33 3 0.25
0.6 7 0.6 7
0.66 7 0.57 1
0.6 7 0.5
0.6 7 0.4 4
0.6 7 0.4
0.6 7 0.3 6
0.6 7 0.3 3
0.8 3
0.8 3 0.3 6
1
0
0.1 7 0.3 3
0.5
prec
0.16 7 0.5
0.2 5 0.3 3
0.25
0.5
0.5
0.75
0.4
0.3 3
0.42 9
0.7 5 0.3 3
0.7 5 0.3
0.7 5 0.2 7
0.7 5 0.2 5
0.7 5 0.2 3
0.7 5 0.2 1
1
0.75
0.7 5 0.3 8
0.75
1
1
1
1
1
1
1
1
1
1
0.5
0.7 5 0.6
0.6 7
0.57 1
0.5
0.4 4
0.4
0.3 6
0.3 3
0.3 1
0.2 9
0.2 7
Query 16 recall
0.6
.38
0.4 7
0.4
Query 18 recall
0.25
0.25
prec
1
0.5
Query 19 recall
0.25
0.5
prec
1
1
0.7 5 1
Query 20 recall
0.2
0.4
0.4
0.4
0.6
0.8
1
1
1
1
1
1
1
1
1
prec
1
1
0.6 7
0.5
0.6
0.6 7
0.71 4
0.6 3
0.5 6
0.5
0.4 5
0.4 2
0.3 8
0.3 6
0.3 3
0.2 7
Keterangan : Missal untuk query 20 didapatkan hasil sebagai berikut Diktahui result dokter yang relevan adalah dokter dengan urutan ke 1 , 2 , 5, 6, 7 Precision = index relevan / index berlaku untuk seluruh index
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 104 seperti berikut : index1 = 1/1= 1 index2 = 2/2=1 index3 = 2/3=0.667 ,index4 = 2/4=0.5 index5 = 3/5 =0.6 index6 = 4/5 =0.8 dan seterusnya. Recall = |relevant ∩ retrieved| / |relevant| index1 = 1/5= 0.2 index2 = 2/5= 0.4 index3 = 2/3= 0.4 ,index4 = 2/4= 0.4 index5 = 3/5 =0.6 index6 = 4/5 =0.8 index6 = 5/5 =1 dan seterusnya.
3. Perhitungan Average Precision Terhadap 11 Titik Recall
Tabel 25. Average Precision Terhadap 11 Titik Recall 0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
QUERY 1
1
1
1
1
1
1
0.8
0.71
0.71
0.4
0.4
QUERY 2
1
1
1
1
1
1
1
1
1
1
1
QUERY 3
0.667
0.667
0.67
0.67
0.67
0.67
0.667
0.67
0.67
0.67
0.67
QUERY 4
1
1
1
1
1
1
1
1
1
1
0.92
QUERY 5
1
0.8
0.8
0.8
0.8
0.8
0.8
0.8
0.8
0.71
0.71
QUERY 6
1
1
1
1
1
1
1
1
1
0.6
0.6
QUERY 7
1
1
1
1
1
1
1
1
1
1
1
QUERY 8
1
0.714
0.71
0.714
0.71
0.71
0.714
0.71
0.71
0.41
0.41
QUERY 9
1
1
1
1
1
1
1
1
1
1
1
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 105
QUERY 10
1
1
1
1
1
1
1
1
1
1
1
QUERY 11
0.727
0.727
0.73
0.727
0.73
0.73
0.727
0.73
0.71
0.71
0.71
QUERY 12
1
1
1
1
1
1
1
1
1
1
1
QUERY 13
1
1
1
1
1
0.88
0.875
0.88
0.88
0.88
0.88
QUERY 14
1
1
0.82
0.818
0.82
0.82
0.818
0.82
0.82
0.82
0.82
QUERY 15
1
1
1
1
1
1
1
0.71
0.71
0.71
0.71
QUERY 16
1
1
1
1
0.8
0.714
0.71
0.47
0.47
0.47
QUERY 17
0.667
0.667
0.67
0.667
0.67
0.67
0.667
0.4
0.4
0.4
0.4
QUERY 18
1
1
1
0.429
0.43
0.43
0.429
0.43
0.27
0.27
0.27
QUERY 19
1
1
1
1
1
1
1
1
0.67
0.67
0.67
QUERY 20
1
1
1
1
1
0.71
0.714
0.71
0.71
0.71
0.71
AVG
0.953
0.929
0.92
0.891
0.89
0.86
0.846
0.81
0.78
0.72
0.72
Algoritm untuk menghitung nilai precision terhadap 11 titik recall. .
1. Titik_akhir = index recall terakhir (missal index ke -11) 2. Jika Titik_akhir != 0 3. Titik_depan = titik akhir -1 ( missal 11-1 = index 10) 4.
Cari
nilai max
Titik_depan sampai
precision
untuk
Titik_akhir
tempNilai= nilai max 5. Jika tempNilai > nilai precision untuk Titik_akhir nilai Titik_depan =temp nilai jika tidak nilai Titik_depan = nilai titik akhir
pada
recall
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 106 6. Titik_akhir= Titik_akhir-1 5. ulangi langkah 2
1.2 1 0.8 0.6 0.4 0.2 0
Series1
1
2
3
4
5
6
7
8
9
10 11
Grafik.2 Diagram Average Precision 11 Titik Recall
Keterangan : Dari Grafik.2 diatas dapat diketahui rekomendasi dokter yang diberikan sistem
bahwa tingkat relevansi recall memiliki
akurasi
dengan titik recall 0 - 0.7 dan precision 0.8 hingga 1 (70%) . Terdapat 3 penurunan yaitu di titik recall 0.8 -1 dengan precision 0.6 – 0.8 . Dengan demikian sistem ini memiliki akurasi yang baik . 4. Kelemahan Meskipun penelitian ini menunjukan hasil yang baik namun data dokter
yang digunakan dalam penelitian ini sangat terbatas. Jadi
rekomendasi masih terbatas untuk dokter dirumahsakit itu. Penelitian ini akan lebih baik lagi jika data data dokter yang digunakan memuat semua rekaman rekomendasi obat di semua tempat dokter itu bekerja.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
BAB VI KESIMPULAN DAN SARAN A. Kesimpulan Dalam penelitian ini telah dibuat aplikasi rekomendasi dokter dengan pendekatan k-mean clustering dan Euclidean similarity. Informasi dokter yang dihasilkan dari pendekatan tersebut menghasilkan nilai precision yang mencapai 0.8 sampai 1 dan recal berada di titik 0 sampai 7. Dengan demikian dapat disimpulkan. Information retrival dengan menggunakan k-mean untuk dan Euclidean distance menghasilkan rekomendasi dokter yang sesuai dengan yang diharapkan sales obat.
B. Saran Berdasarkan kelemahan yang telah dijelaskan pada poin 5.3.4. Disarankan bagi peneliti yang akan melakukan penelitian menggunakan pendekatan metode K-mean dan Euclidean distance harus mempersiapkan data dalam jumlah yang mencukupi. Misalnya dengan kasus sebuah rumahsakit diperlukan ahulu data-data yang memuat rekaman medis selama satu periode atau satu tahun. Karena banyanknya data sangat berpengaruh pada kluster yang akan terbentuk serta berpengaruh juga terhadap informasi yang diperoleh dari jarak similarity.
107
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 108
Daftar Pustaka
1. Resnick, Paul dan Varian, Hal R. 1997. Recommender systems. Communications of the ACM, Vol. 40, No. 3, 56-58. 2. Herlocker, J.L., Konstan, J.A., Terveen, L.G. & Riedl, J.T. Evaluating collaborative filtering recommender systems. ACM Transactions on Information Systems, 22(1), 5-53. 3. Burke, R. 2007. Hybrid web recommender systems. In The Adaptive Web, pages 377–408. Springer Berlin / Heidelberg. 4. Arifin Zainal, Novan Ari. 2001. “Klasifikasi Dokumen Berita Kejadian Berbahasa Indonesia dengan Algoritma Single Pass Clustering”. Surabaya : Institut Teknologi Sepuluh Nopember 5. Hermawan
Stephanus.2011.“Mudah
Membuat
Aplikasi
Android”.
Yogyakarta : Andi Publisher 6. Whitten, et.al. 2004. “Systems Analysis & Design Methods. 7th ed”. 7. Han
Jiawei,
Kamber
M.
2006.“Data
Mining
Concept
And
Technique”.New York : Diane Cera 8. www.tecno.okezone.com.2012.“SAP lirik kekuatan mobile, in-memory &cloud ” 9. www.tecnoup.com .2012. “Juniper: Penjualan Smarphone Samsung 2 kali lipat iPhone, Sony Seharusnya Labih Baik” 10. www.husni.trunojoyo.ac.id . 2010. “Husni-IR-dan-Klasifikasi”