PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DETEKSI OUTLIER MENGGUNAKAN ALGORITMA LOCAL CORRELATION INTEGRAL (STUDI KASUS: DATA AKADEMIK MAHASISWA TEKNIK INFORMATIKA UNIVERSITAS SANATA DHARMA) Skripsi Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Komputer (S.Kom) Program Studi Teknik Informatika Disusun Oleh: Felisitas Brillianti 105314013 PROGRAM STUDI TEKNIK INFORMATIKA JURUSAN TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2014 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI OUTLIER DETECTION USING LOCAL CORRELATION INTEGRAL ALGORITHM (STUDY CASE: ACADEMIC DATA OF STUDENTS OF INFORMATICS ENGINEERING STUDY PROGRAM SANATA DHARMA UNIVERSITY) A Thesis Presented as Partial Fulfillment of the Requirements To Obtain the Sarjana Komputer Degree (S.Kom) In Informatics Engineering Study Program By: Felisitas Brillianti 105314013 INFORMATICS ENGINEERING STUDY PROGRAM DEPARTMENT OF INFORMATICS ENGINEERING FACULTY OF SCIENCE AND TECHNOLOGY SANATA DHARMA UNIVERSITY YOGYAKARTA 2014 i PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI ii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI iii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI HALAMAN PERSEMBAHAN “Bagi manusia hal ini tidak mungkin, tetapi bagi Allah segala sesuatu mungkin” (Matius 19:26) ~NO PAIN NO GAIN~ Terimakasih untuk doa, dukungan, dan semangat serta bantuan yang kalian berikan baik disaat suka maupun duka iv PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI PERNYATAAN KEASLIAN KARYA Saya menyatakan dengan sesungguhnya bahwa skripsi yang saya tulis ini tidak memuat karya atau bagian karya orang lain, kecuali yang telah saya sebutkan dalam kutipan dan daftar pustaka, sebagaimana layaknya karya ilmiah. Yogyakarta, 14 Januari 2015 Penulis Felisitas Brillianti v PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI ABSTRAK Data mining (penambangan data) adalah suatu proses untuk menemukan suatu pengetahuan atau informasi yang berguna dari data berskala besar. Sering juga disebut sebagai bagian proses KDD (Knowledge Discovery in Databases) (Santosa, 2007). Deteksi outlier merupakan salah satu bidang penelitian yang penting dalam mendeteksi perilaku yang tidak normal seperti deteksi mahasiswa yang nilai tes masuk universitasnya bagus tetapi pada saat kuliah mahasiswa tersebut mendapat nilai rendah. Penelitian ini menggunakan algoritma Local Correlation Integral dengan teknik density-based. Data diambil dari data akademik Mahasiswa Program Studi Teknik Informatika Universitas Sanata Dharma angkatan 2007 dan 2008 yang meliputi nilai tes masuk dan nilai IPS semester 1-4. Algoritma Local Correlation Integral (LOCI) merupakan salah satu algoritma yang memiliki kemampuan untuk mendeteksi outlier dalam sekumpulan data. Mendeteksi outlier dilakukan untuk menemukan data yang tidak konsisten dengan data lainnya. Data dianggap tidak konsisten (outlier) apabila data tersebut tidak memiliki tingkat kemiripan dengan data lainnya (Han & Kamber, 2006). Algoritma Local Correlation Integral (LOCI) dapat diimplementasikan pada sekumpulan data numerik untuk mendeteksi adanya outlier dengan pendekatan density-based. Hasil dari penelitian ini adalah sebuah perangkat lunak yang dapat digunakan untuk mendeteksi outlier. Pengujian terhadap sistem ini meliputi tiga metode pengujian, yaitu pengujian Blackbox, pengujian efek perubahan nilai atribut terhadap hasil deteksi outlier, dan pengujian reviewer dan validitas pengguna. Hasil pengujian dari ketiga jenis data tersebut dapat disimpulkan bahwa sistem pendeteksi outlier ini dapat menghasilkan output yang sesuai dengan yang diharapkan oleh pengguna. Kata kunci: Penambangan Data, Local Correlation Integral, deteksi outlier. vi PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI ABSTRACT Mining data is a process to discover a useful knowledge or information from grand data. It is often said as part of the KDD (Knowledge Discovery in Databases) process. (Santosa, 2007) The outlier detection is one of the important researches in detecting the abnormal behavior namely detecting the students who have good marks in the university entrance test but after they join in the lecturing they get low marks. This research uses the Local Correlation Integral algorithm in density-based technique. The data is taken from the academic data of the students of Sanata Dharma University, in Informatics Engineering Study Program, year 2007 and 2008 consisting the marks of the entrance test and the marks of Social Study semester 1 – 4. The Local Correlation Integral Algorithm (LOCI) is one the algorithms that has ability to detect outlier in a group of data. Detecting outlier is done to discover the inconsistent data with the other data. Data is considered inconsistent (outlier) if the data do not have the grade of similarity to the other data (Han & Kamber, 2006). The Local Correlation Integral (LOCI) algorithm can be implemented in a group of numeric data to detect the existence of the outlier with density-based approach. The result of this research is a set of software which can be used to detect outlier. The test of this system comprises 3 testing methods, namely The Blackbox testing, the testing of the change of attribute value toward the result of outlier detecting, and the testing of reviewer and the validity of the user. The test results of the three types of data we can conclude that this outlier detection system can generate output as expected by the user. Keywords: data mining, Local Correlation Integral, outlier detection. vii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS Yang bertanda tangan dibawah ini, saya mahasiswa Universitas Sanata Dharma Nama : Felisitas Brillianti Nomor Mahasiswa : 105314013 Demi pengembangan ilmu pengetahuan, saya memberikan kepada Perpustakaan Universitas Sanata Dharma karya ilmiah saya yang berjudul: DETEKSI OUTLIER MENGGUNAKAN ALGORITMA LOCAL CORRELATION INTEGRAL (STUDI KASUS: DATA AKADEMIK MAHASISWA TEKNIK INFORMATIKA UNIVERSITAS SANATA DHARMA) Beserta perangkat yang diperlukan (bila ada). Dengan demikian saya memberikan kepada Perpustakaan Sanata Dharma hak untuk menyimpan, mengalihkan dalam bentuk media lain, mengelolanya di internet atau media lain untuk kepentingan akademis tanpa perlu meminta ijin dari saya maupun memberikan royalty kepada saya selama tetap mencantumkan nama saya sebagai penulis. Demikian pernyataan ini saya buat dengan sebenarnya Dibuat di Yogyakarta Pada tanggal: 14 Januari 2015 Yang menyatakan, (Felisitas Brillianti) viii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI KATA PENGANTAR Puji dan syukur kepada Tuhan Yesus Kristus, atas segala berkat dan karunia sehingga penulis dapat menyelesaikan penelitian tugas akhir dengan judul “Deteksi Outlier Menggunakan Algoritma Local Correlation Integral (Studi Kasus: Data Akademik Mahasiswa Teknik Informatika Universitas Sanata Dharma)” dengan baik. Tugas ini ditulis sebagai salah satu syarat memperoleh gelar sarjana komputer program studi Teknik Informatika, Fakultas Sains dan Teknologi Universitas Sanata Dharma. Penelitian ini tidak dapat berjalan dengan baik tanpa adanya dukungan, semangat, motivasi dan bantuan dalam bentuk apapun yang telah diberikan oleh banyak pihak. Untuk itu penulis mengucapkan terimakasih yang sebesar-besarnya kepada: 1. Tuhan Yesus Kristus, Bunda Maria, dan Santa Felisitas yang telah memberikan anugerah sehingga penulis dapat menyelesaikan tugas akhir ini. 2. Ibu Paulina Heruningsih Prima Rosa, S.Si., M.Sc. selaku Dekan Fakultas Sains dan Teknologi. 3. Ibu Ridowati Gunawan, S.Kom., M.T. selaku Ketua Program Studi Teknik Informatika dan dosen pembimbing yang telah dengan sabar membimbing dan memberikan kesabaran, waktu, kebaikan, dan motivasi. 4. Bapak Albertus Agung Hadhiatma, M.T. dan Ibu Sri Hartati Wijono S.Si., M.Kom. selaku dosen penguji atas kritik dan saran yang telah diberikan. 5. Ibu Agnes Maria Polina S.Kom., M.Sc. selaku Dosen Pembimbing Akademik. 6. Seluruh dosen yang mendidik dan memberikan ilmu pengetahuan berharga selama penulis belajar di Universitas Sanata Dharma Yogyakarta. ix PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 7. Pihak sekretariat dan laboran yang turut membantu penulis dalam menyelesaikan tugas akhir ini. 8. Kedua orang tua tercinta Drs. Gregorius Suwarto dan Bernardia Kristiyanti. Terimakasih untuk setiap doa, kasih sayang, perhatian, dan dukungan yang selalu diberikan kepada saya. 9. Kedua saudara teryoi Stefanus Dandy dan Andreas Handyanta. Terimakasih untuk dukungan yang selalu diberikan kepada saya. 10. Ari Auditianto S.T, Daniel Tomi Raharjo S.Kom, Agustinus Dwi Budi D S.Kom dan Valentinus Fetha Eka Saputra. Super big thanks untuk segala bantuan yang selalu diberikan kepada saya. 11. Kedua rekan kerja skripsi ini, Yustina Ayu Ruwidati dan Erlita Octaviani. Terimakasih telah saling berbagi ilmu serta suka duka dari awal hingga akhir penyelesaian skripsi ini. 12. Verena Pratita Adji, Fidelis Asterina Surya Prasetya, Ria Riska Topurmera, Hevea Forestta Perangin Angin, Novia Hillary Panjaitan, dan Ajeng Arsita Ambarwati. Terimakasih untuk persahabatan serta dukungan kalian. 13. Benedictus Resta Viandri, Martinus Betty Praditya, Afra Raras Santika, Rosalia Megasari, dan Christina Mega Citraningtyas terimakasih untuk hura-huranya. 14. Lufy, Mintul†, dan Ucek terimakasih atas kebersamaannya saat suka maupun duka. 15. Seluruh teman-teman kuliah Teknik Informatika 2010 (HMPS), terimakasih untuk kebersamaan kita selama menjalani masa perkuliahan. 16. Pihak-pihak lain yang telah membantu penulis dalam menyelesaikan tugas akhir ini, yang tidak dapat disebutkan satu per satu. x PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Penelitian tugas akhir ini masih memiliki banyak kekurangan. Untuk itu penulis sangat membutuhkan kritik dan saran untuk perbaikan dimasa yang akan datang. Semoga penelitian tugas akhir ini dapat membawa manfaat bagi semua pihak. Yogyakarta, 14 Januari 2015 Felisitas Brillianti xi PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DAFTAR ISI Halaman Judul Halaman Judul (Bahasa Inggris) ............................................................. i Halaman Persetujuan ............................................................................... ii Halaman Pengesahan .............................................................................. iii Halaman Persembahan ............................................................................ iv Halaman Pernyataan................................................................................ v Abstrak ................................................................................ vi Abstract ................................................................................ vii Halaman Persetujuan Publikasi Karya Ilmiah......................................... viii Kata Pengantar ................................................................................ ix Daftar Isi ................................................................................ xii BAB I PENDAHULUAN ................................................................ 1 1.1 Latar Belakang Masalah ....................................................... 1 1.2 Rumusan Masalah ................................................................ 2 1.3 Batasan Masalah ................................................................... 3 1.4 Tujuan Penelitian.................................................................. 3 1.5 Manfaat Penelitian................................................................ 3 1.6 Metodologi Penelitian .......................................................... 3 1.7 Sistematika Penulisan........................................................... 4 LANDASAN TEORI ........................................................... 6 Data Mining.......................................................................... 6 2.1.1 Pengertian Data Mining ......................................... 6 2.1.2 Fungsi Data Mining ............................................... 9 BAB II 2.1 2.2 Outlier Detection .................................................................. 10 2.2.1 Pengertian Outlier .................................................. 10 2.2.2 Jenis Pendekatan Outlier ........................................ 11 2.2.2.1 Statistik Based .......................................... 11 2.2.2.2 Distance Based ........................................ 11 2.2.2.3 Density Based .......................................... 12 xii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 2.2.2.4 Deviation Based ....................................... 13 Algoritma Local Correlation Integral (LOCI) .................... 13 2.3.1 Multi-Granuality Deviation Factor (MDEF) ......... 13 2.3.2 Metode Local Correlation Integral (LOCI)........... 16 2.4 Contoh Jalannya Algoritma ................................... 19 METODOLOGI PENELITIAN ........................................... 25 3.1 Data yang Dibutuhkan .......................................................... 25 3.2 Pengolahan Data ................................................................. 25 3.2.1 Penggabungan Data (Data Integration) .................. 25 3.2.2 Seleksi Data (Data Selection) ................................ 26 3.2.3 Transformasi Data (Data Transformation) ............. 27 3.2.4 Penambangan Data (Data Mining) ......................... 32 3.2.5 Evaluasi Pola (Pattern Evaluation) ........................ 33 3.2.6 Presentasi Pengetahuan (Knowledge Presentation) 33 BAB IV ANALISA DAN PERANCANGAN SISTEM .................... 35 4.1 Identifikasi Sistem ................................................................ 35 4.1.1 Diagram Use Case ................................................. 36 4.1.2 Narasi Use Case ..................................................... 37 Perancangan Sistem Secara Umum ...................................... 37 4.2.1 Input Sistem ........................................................... 37 4.2.2 Proses Sistem ......................................................... 39 4.2.3 Output Sistem......................................................... 40 Perancangan Sistem.............................................................. 40 4.3.1 Diagram Aktivitas .................................................. 40 4.3.2 Diagram Kelas Analisis ......................................... 41 4.3.3 Diagram Sequence ................................................. 43 4.3.4 Diagram Kelas Desain ........................................... 43 4.3.5 Rincian Algoritma Setiap Method Pada Tiap Kelas 44 2.3 BAB III 4.2 4.3 4.4 Perancangan Struktur Data ................................................... 65 4.4.1 Graf ................................................................. 65 4.4.2 Matriks Dua Dimensi ............................................. 66 xiii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4.5 Perancangan Antarmuka ...................................................... 67 4.5.1 Tampilan Halaman Awal ....................................... 67 4.5.2 Tampilan Halaman Utama ..................................... 67 4.5.3 Tampilan Halaman Bantuan................................... 70 4.5.4 Tampilan Halaman Tentang ................................... 71 4.5.5 Tampilan Menu Keluar .......................................... 72 4.5.6 Tampilan Halaman Pilih File ................................. 72 4.5.7 Tampilan Halaman Pilih Database ......................... 73 4.5.8 Tampilan Halaman Pilih Tabel .............................. 74 IMPLEMENTASI SISTEM ................................................. 75 Impelementasi Antarmuka ................................................... 75 5.1.1 Implementasi Halaman Awal ................................. 75 5.1.2 Implementasi Halaman Utama ............................... 76 5.1.3 Implementasi Halaman Pilih Database .................. 80 5.1.4 Implementasi Halaman Tampil Tabel .................... 81 5.1.5 Implementasi Halaman Bantuan ............................ 83 5.1.6 Implementasi Halaman Tentang ............................ 83 5.1.7 Implementasi Halaman Konfirmasi Keluar ........... 84 5.1.8 Implementasi Pengecekan Masukan ...................... 85 Implementasi Struktur Data ................................................. 88 5.2.1 Implementasi Kelas Graph.java ............................. 88 5.2.2 Implementasi Kelas Verteks.java ........................... 89 5.3 Implementasi Kelas .............................................................. 90 BAB VI PENGUJIAN DAN ANALISA PENGUJIAN ..................... 91 6.1 Rencana Pengujian ............................................................... 91 6.1.1 Hasil Pengujian Blackbox ...................................... 93 6.1.1.1 Pengujian Input Data ............................... 93 6.1.1.2 Pengujian Koneksi Database ................... 94 6.1.1.3 Pengujian Halaman Pilih Tabel ............... 96 6.1.1.4 Pengujian Seleksi Atribut ........................ 96 6.1.1.5 Pengujian Deteksi Outlier ........................ 97 BAB V 5.1 5.2 xiv PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 6.1.1.6 Pengujian Simpan Hasil Deteksi Outlier . 99 6.1.2 Kesimpulan Hasil Pengujian Blacbox .................... 100 6.1.3 Hasil Pengujian Efek Perubahan Nilai Atribut Penambangan Data ................................................................. 100 6.1.3.1 Pengujian Dengan Data Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Jalur Tes Tertulis ..................................................... 100 6.1.3.2 Pengujian Dengan Data Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Jalur Prestasi ................................................................. 101 6.1.3.3 Pengujian Dengan Data Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Jalur Tes Tertulis dan Jalur Prestasi ........................ 6.1.4 6.1.5 101 Kesimpulan Hasil Pengujian Efek Perubahan Nilai Atribut Penambangan Data ................................................. 102 Hasil Pengujian Review dan Validitas Pengguna .. 102 6.1.5.1 Perbandingan Perhitungan Manual dan Hasil Sistem ................................................................. 102 6.1.5.2 Kesimpulan Hasil Perbandingan Perhitungan Manual dengan Perhitungan Sistem ........ 104 6.1.5.3 Hasil Deteksi dari Sistem untuk Pengujian Review dan Validitas oleh Pengguna.................... 104 6.1.5.4 Kesimpulan Hasil Pengujian Review dan Validitas oleh Pengguna .......................................... 107 Kelebihan dan Kekurangan Sistem ...................................... 112 6.2.1 Kelebihan Sistem ................................................... 112 6.2.2 Kekurangan Sistem ................................................ 112 BAB VIII KESIMPULAN DAN SARAN ............................................ 113 6.2 7.1 Kesimpulan ................................................................. 113 7.2 Saran ................................................................. 113 ................................................................. 114 DAFTAR PUSTAKA xv PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI LAMPIRAN 1 Diagram Use Case ................................................. 115 LAMPIRAN 2 Deskripsi Use Case ................................................ 116 LAMPIRAN 3 Narasi Use Case ..................................................... 118 LAMPIRAN 4 Diagram Proses Umum Sistem .............................. 126 LAMPIRAN 5 Diagram Aktivitas .................................................. 127 LAMPIRAN 6 Diagram Kelas Analisis ......................................... 132 LAMPIRAN 7 Diagram Sequence.................................................. 133 LAMPIRAN 8 Diagram Kelas Desain ........................................... 138 LAMPIRAN 9 Diagram Kelas........................................................ 139 LAMPIRAN 10 Listing Program...................................................... 152 LAMPIRAN 11 Outlier Plot ............................................................. 230 LAMPIRAN 12 Data Nilai Mahasiswa Angkatan 2007 dan 2008 ... 236 xvi PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DAFTAR GAMBAR Gambar 2.1 Proses KDD Gambar 2.2 Dataset dengan Outlier .................................................... 10 Gambar 2.3 Definisi dari n dan n̂ ........................................................ 14 Gambar 3.1 Database “gudangdata” ................................................... 26 Gambar 3.2 Isi tabel “fact_lengkap” ................................................... 27 Gambar 4.1 Ilustrasi Struktur Data Graf ............................................. 65 Gambar 4.2 Tampilan Halaman Utama ............................................... 67 Gambar 4.3 Tampilan Halaman Utama Tab Preprosesing .................. 68 Gambar 4.4 Tampilan Halaman Utama Tab Deteksi Outlier .............. 69 Gambar 4.5 Tampilan Halaman Bantuan ............................................ 70 Gambar 4.6 Tampilan Halaman Tentang ............................................ 71 Gambar 4.7 Tampilan Menu Keluar.................................................... 72 Gambar 4.8 Tampilan Halaman Pilih File........................................... 72 Gambar 4.9 Tampilan Halaman Pilih Database .................................. 73 Gambar 4.10 Tampilan Halaman Pilih Tabel ........................................ 74 Gambar 5.1 Antarmuka Halaman Awal .............................................. 76 Gambar 5.2 Kotak Dialog saat memilih File....................................... 77 Gambar 5.3 Antarmuka Halaman Utama (data file .xls tertampil) ..... 78 Gambar 5.4 Kotak Seleksi Atribut ...................................................... 78 Gambar 5.5 Proses Deteksi Outlier ..................................................... 79 Gambar 5.6 Tampilan Hasil Outlier .................................................... 79 Gambar 5.7 Tampilan Save Dialog ..................................................... 79 Gambar 5.8 Pesan Ketika Proses Penyimpanan Hasil Outlier Berhasil Dilakukan Gambar 5.9 ................................................................. 7 ......................................................................................... 80 Antarmuka Halaman Pilih Database ............................... 80 Gambar 5.10 Antarmuka Halaman Pilih Database (Setelah Pengguna memilih Database .......................................................................... 81 Gambar 5.11 Pesan Koneksi Berhasil ................................................... 81 Gambar 5.12 Antarmuka Halaman Tampil Tabel ................................. 82 xvii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Gambar 5.13 Hasil Input Data dari Database ........................................ 82 Gambar 5.14 Antarmuka Halaman Bantuan ......................................... 83 Gambar 5.15 Antarmuka Halaman Tentang.......................................... 84 Gambar 5.16 Antarmuka Halaman Konfirmasi Keluar......................... 84 Gambar 5.17 Error Handling (1) ........................................................... 85 Gambar 5.18 Error Handling (2) ........................................................... 85 Gambar 5.19 Error Handling (3) ........................................................... 86 Gambar 5.20 Error Handling (4) ........................................................... 86 Gambar 5.21 Error Handling (5) ........................................................... 86 Gambar 5.22 Error Handling (6) ........................................................... 87 Gambar 5.23 Error Handling (7) ........................................................... 87 Gambar 5.24 Error Handling (8) ........................................................... 87 Gambar 2.25 Error Handling (9) ........................................................... 88 Gambar 2.26 Error Handling (10) ......................................................... 88 xviii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DAFTAR TABEL Tabel 2.1 Simbol dan Definisi.............................................................. 15 Tabel 2.2 Data 13 Mahasiswa .............................................................. 19 Tabel 2.3 Jumlah r-neighbors dari pi ................................................... 20 Tabel 2.4 Jumlah r-neighbors dari pi................................................. 21 Tabel 3.1 Contoh atribut sebelum dinormalisasi .................................. 28 Tabel 3.2 Contoh atribut setelah dinormalisasi .................................... 29 Tabel 3.3 Contoh atribut sebelum dinormalisasi .................................. 31 Tabel 3.4 Contoh atribut setelah dinormalisasi .................................... 32 Tabel 4.1 Tabel Keterangan Diagram Analisis .................................... 41 Tabel 4.2 Ilustrasi Struktur Data Matriks Dua Dimensi ....................... 66 Tabel 4.3 Ilustrasi Struktur Data Matriks Dia Dimensi Setelah Dilakukan Perhitungan Jarak antar Vertex ............................................. 66 Tabel 5.1 Tabel Implementasi Kelas .................................................... 90 Tabel 6.1 Tabel Rencana Pengujian ..................................................... 92 Tabel 6.2 Tabel Pengujian Input Data .................................................. 93 Tabel 6.3 Tabel Pengujian Koneksi Database ...................................... 94 Tabel 6.4 Tabel Pengujian Halaman Tampil Tabel .............................. 96 Tabel 6.5 Tabel Pengujian Seleksi Atribut........................................... 96 Tabel 6.6 Tabel Pengujian Deteksi Outlier .......................................... 97 Tabel 6.7 Tabel Pengujian Simpan Hasil Deteksi Outlier.................... 99 Tabel 6.8 Tabel Jumlah Outlier Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Jalur Tes Tertulis Semester 1 dengan Nilai Radius yang berubah-ubah dan Nilai Alpha = 0.5 .................................... 100 Tabel 6.9 Tabel Jumlah Outlier Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Jalur Prestasi Semester 1 dengan Nilai Radius yang berubahubah dan Nilai Alpha = 0.5 .................................................. 101 Tabel 6.10 Tabel Jumlah Outlier Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Jalur Tes Tertulis dan Prestasi Semester 1 dengan Nilai Radius yang berubah-ubah dan Nilai Alpha = 0.5 ............... xix 101 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Tabel 6.11 Tabel Data Set untuk Perbandingan Manual dan Sistem ..... 103 Tabel 6.12 Tabel Perbandingan Hasil Deteksi Outlier Mahasiswa Angkatan 2007 Jalur Tes ............................................................................... 104 Tabel 6.13 Tabel Hasil Perhitungan Sistem 2007-2008 Jalur Tes Tertulis 105 Tabel 6.14 Tabel Hasil Perhitungan Sistem 2007-2008 Jalur Prestasi... 106 Tabel 6.15 Tabel Hasil Perhitungan Sistem 2007-2008 Jalur Test dan Prestasi .............................................................................................. xx 106 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB I PENDAHULUAN 1.1 Latar Belakang Masalah Di era globalisasi pendidikan merupakan salah satu kebutuhan manusia sehingga tidak dapat dipisahkan dari kehidupan sehari-hari. Penelitian dalam bidang pendidikan menggunakan teknik penambangan data yang telah banyak dilakukan saat ini. Penambangan data dalam bidang pendidikan berguna untuk mengembangkan sebuah metode untuk menemukan keunikan dari sebuah data yang berasal dari sistem pendidikan tersebut, dan menggunakan metode tersebut untuk lebih memahami mahasiswa, sehingga dapat dibuat sistem yang sesuai. Deteksi outlier merupakan salah satu bidang penelitian yang penting dalam mendeteksi perilaku yang tidak normal seperti deteksi nilai mahasiswa yang nilai tes masuk universitasnya bagus tetapi pada saat kuliah mahasiswa tersebut mendapat nilai yang rendah bahkan di keluarkan. Bermacam-macam metode telah dikembangkan baik berdasarkan teknik seperti distance-based, clustering-based, dan density-based. Universitas merupakan sebuah lembaga yang dirancang untuk pengajaran mahasiswa dibawah pengawasan dosen. Universitas Sanata Dharma merupakan sebuah lembaga pendidikan yang memiliki banyak data. Nilai akademik mahasiswa merupakan salah satu dari data yang di miliki Universitas Sanata Dharma. Nilai tersebut meliputi nilai tes masuk (PMB) dan nilai pada setiap semester. Untuk dapat menjadi mahasiswa Universitas Sanata Dharma, seorang calon mahasiswa harus mengikuti tes masuk. Dengan nilai tes masuk tersebut seseorang akan ditentukan apakah dapat menjadi mahasiswa atau tidak. Setiap semester IV akan dilakukan evaluasi sisip program. Mahasiswa yang nilainya tidak mencapai batas tuntas akan di keluarkan (DO), tetapi jika 1 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 2 mahasiswa tersebut nilainya diatas batas tuntas maka mahasiswa tersebut dipertahankan dan dapat melanjutkan ke semester V. Dalam penambangan data teknik untuk mengenali outlier dikenal dengan istilah Deteksi Outlier. Sebuah sumber data atau dataset pada umumnya mempunyai nilai-nilai pada setiap obyek yang tidak terlalu berbeda jauh dengan obyek lain. Akan tetapi terkadang pada data tersebut juga ditemukan obyek-obyek yang mempunyai nilai atau sifat atau karakteristik yang berbeda dibandingkan dengan obyek pada umumnya. Deteksi oulier adalah suatu teknik untuk mencari obyek dimana obyek tersebut mempunyai perilaku yang berbeda dibandingkan obyek-obyek pada umumnya. Teknik data mining dapat digunakan untuk mendeteksi adanya suatu outlier pada sebuah dataset. Teknik data mining yang digunakan adalah Clustering-based, Distance-based dan Density-based. Algoritma Local Correlation Integral (LOCI) merupakan salah satu algoritma yang memiliki kemampuan untuk mendeteksi outlier dalam sekumpulan data. Mendeteksi outlier dilakukan untuk menemukan data yang tidak konsisten dengan data lainnya. Data dianggap tidak konsisten (outlier) apabila data tersebut tidak memiliki tingkat kemiripan yang sesuai dengan data lainnya (Han & Kamber, 2006). Algoritma Local Correlation Integral (LOCI) dapat diimplementasikan pada sekumpulan data numerik untuk mendeteksi adanya outlier dengan pendekatan density-based. 1.2 Rumusan Masalah Berdasarkan latar belakang diatas, rumusan masalah dari penelitian ini adalah 1. Bagaimana algoritma Local Correlation Integral (LOCI) dapat mendeteksi outlier dari data nilai akademik mahasiswa? PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 1.3 3 Batasan Masalah Batasan masalah pada penelitian ini adalah: 1. Algoritma yang dipakai adalah algoritma Local Correlation Integral (LOCI) dengan pendekatan density-based. 2. Data yang digunakan adalah data akademik mahasiswa Teknik Informatika Universitas Sanata Dharma Yogyakarta tahun angkatan 20072008. 1.4 Tujuan Penelitian Tujuan dari penelitian ini adalah untuk menerapkan algoritma Local Correlation Integral (LOCI) ke dalam sebuah sistem untuk mendeteksi outlier dari data akademik mahasiswa Teknik Informatika Universitas Sanata Dharma Yogyakarta. 1.5 Manfaat Penelitian Manfaat dari penelitian ini adalah sebagai berikut: 1. Menambah wawasan tentang Algoritma Local Correlation Integral dalam mendeteksi outlier. 2. Membantu pihak program studi dalam mendeteksi outlier pada data akademik mahasiswa. 1.6 Metodologi Penelitian Metodologi yang digunakan dalam penelitian ini adalah metode KDD (Knowledge Discovery in Database). 1. Pembersihan Data (Data Cleaning). Proses membersihkan data yang tidak konsisten atau yang mengganggu. Proses Data Cleanning mencakup antara lain membuang duplikasi data, memeriksa data yang tidak konsisten, dan memperbaiki kesalahan pada data. 2. Penggabungan Data (Data Integration) Proses menggabungkan data dari berbagai sumber. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4 3. Seleksi Data (Data Selection) Proses menyeleksi data yang relevan. Data yang tidak sesuai akan dihilangkan. 4. Transformasi Data (Data Transformation) Data yang sudah di seleksi selanjutnya di transformasikan ke dalam bentuk yang sesuai untuk ditambang. 5. Penambangan Data (Data Mining) Proses mengekstrak informasi atau pengetahuan dari data dalam jumlah yang besar. Dalam penelitian ini, metode yang digunakan adalah metode analisis outlier dengan menggunakan pendekatan density based. Algoritma yang digunakan adalah Local Correlation Integral (LOCI). 6. Evaluasi Pola (Pattern Evaluation) Proses mengidentifikasi apakah pola atau informasi yang ditemykan sesuai fakta atau hipotesa yang ada sebelumnya. 7. Presentasi Pengetahuan (Knowledge Presentation) Proses merepresentasikan pola kepada pengguna ke dalam bentuk yang mudah dimengerti. 1.7 Sistematika Penulisan Dalam penyusunan proposal tugas akhir ini penulis membagi dalam beberapa bab yaitu: BAB I PENDAHULUAN Bab ini berisi tentang latar belakang secara umum, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metodologi penelitian, dan sistematika penelitian secara keseluruhan. BAB II LANDASAN TEORI Bab ini berisi tentang landasan teori dalam menyelesaikan penelitian ini. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB III 5 METODOLOGI PENELITIAN Bab ini berisi tentang metode yang digunakan untuk menyelesaikan tugas akhir ini, yaitu menggunakan metode Knowledge Discovery in Database (KDD). BAB IV ANALISIS DAN PERANCANGAN SISTEM Bab ini berisi tentang identifikasi sistem, perancangan sistem secara umum, perancangan sistem, perancangan struktur data, dan perancangan antarmuka yang akan dibuat. BAB V IMPLEMENTASI SISTEM Bab ini berisi tentang implementasi sistem deteksi outlier menggunakan algoritma Local Correlation Integral yang terdiri dari implementasi antarmuka, implementasi pengecekan masukan, implementasi struktur data dan implementasi kelas serta analisis dari masing-masing tampilan program. BAB VI PENGUJIAN DAN ANALISIS PENGUJIAN Bab ini berisi tentang tahap pengembangan sistem pendeteksi outlier menggunakan algorotma Local Correlation Integral yaitu pengujian blackbox beserta kesimpulannya dan juga pengujian review dan validitas pengguna beserta kesimpulannya. BAB VII KESIMPULAN DAN SARAN Bab ini berisi tentang kesimpulan dan saran dari penulis tugas akhir mengenai penelitian yang dilakukan. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB II LANDASAN TEORI 2.1 Data Mining 2.1.1 Pengertian Data Mining Data mining adalah suatu istilah yang digunakan untuk menemukan pengetahuan yang tersembunyi di dalam database. Data mining merupakan proses semi otomatik yang menggunakan teknik statistik, matematika, kecerdasan buatan, dan machine learning untuk mengekstraksi dan mengidentifikasi informasi pengetahuan potensial dan berguna yang bermanfaat yang tersimpan didalam database besar. (Turban et al, 2005). Teknik data mining digunakan untuk memeriksa basis data berukuran besar sebagai cara untuk menemukan pola yang baru dan berguna. Tidak semua pekerjaan pencarian informasi dinyatakan sebagai data mining. Beberapa pengertian data mining dari beberapa referensi: 1. Data mining adalah mencocokkan data dalam suatu model untuk menemukan informasi yang tersembunyi dalam basis data (Dunham, 2002) 2. Data mining merupakan proses menemukan pola-pola didalam data, dimana proses penemuan tersebut dilakukan secaa otomatis atau semi otomatis dan pola-pola yang ditemukan harus bermanfaat (Fayyad, Piatetsky-Shapiro, & Smyth, 1996) 3. Data mining atau Knowledge Discovery in Database (KDD) adalah pengambilan informasi yang tersembunyi, dimana informasi tersebut sebelumnya tidak dikenal dan berpotensi bermafaat. Proses ini meliputi sejumlah pendekatan teknik yang 6 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 7 berbeda, seperti clustering, data summarization, learning clasification rules (Dunham, 2002) Data mining adalah sebuah bagian yang sangat penting dalam proses KDD (Knowledge Discovery in Database). Knowledge Discovery in Databases (KDD) merupakan sekumpulan proses untuk menentukan pengetahuan yang bermanfaat dari data. Gambar 2.1 adalah proses KDD menurut Jiawei Han dan Micheline Kamber: Gambar 2.1 Proses KDD PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 8 Proses KDD terdiri dari langkah-langkah dibawah ini: 1. Pembersihan Data (Data Cleaning). Proses membersihkan data yang tidak konsisten atau yang mengganggu. Proses Data Cleanning mencakup antara lain membuang duplikasi data, memeriksa data yang tidak konsisten, dan memperbaiki kesalahan pada data. 2. Penggabungan Data (Data Integration) Proses menggabungkan data dari berbagai sumber. 3. Seleksi Data (Data Selection). Proses menyeleksi data yang relevan. Data yang tidak sesuai akan dihilangkan. 4. Transformasi Data (Data Transformation) Data yang sudah di seleksi selanjutnya di transformasikan ke dalam bentuk yang sesuai untuk ditambang. 5. Penambangan Data (Data Mining) Proses mengekstrak informasi atau pengetahuan dari data dalam jumlah yang besar. Dalam penelitian ini, metode yang digunakan adalah metode analisis outlier dengan menggunakan pendekatan density based. Algoritma yang digunakan adalah Local Correlation Integral (LOCI). 6. Evaluasi Pola (Pattern Evaluation) Proses mengidentifikasi apakah pola atau informasi yang ditemukan sesuai fakta atau hipotesa yang ada sebelumnya. 7. Presentasi Pengetahuan (Knowledge Presentation) Proses merepresentasikan pola kepada pengguna ke dalam bentuk yang mudah dimengerti. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 9 2.1.2 Fungsi Data Mining Berikut fungsionalitas dan tipe data pola yang dapat ditemukan dengan data mining (Han & Kamber, 2006) a. Deskripsi konsep: Karakterisasi dan diskriminasi. Generalisasi, rangkuman, dan karaktiristik data kontras. Data dapat diasosiasikan dengan suatu kelas atau konsep. b. Analis Asosiasi (korelasi dan hubungan sebab akibat) Analisis asosiasi adalah pencarian aturan-aturan asosiasi yang menunjukkan kondisi-kondisi nilai atribut yang sering terjadi bersama-sama dalam sekumpulan data. Biasanya digunakan untuk menganalisa data transaksi. c. Klasifikasi dan Prediksi Klasifikasi adalah proses menemukan model (fungsi) yang menjelaskan dan membedakan kelas-kelas atau konsep, dengan tujuan agar model yang diperoleh dapat digunakan untuk memprediksikan kelas atau objek yang memiliki label kelas tidak diketahui. Model yang diturunkan didasarkan pada analisis dari training data (yaitu objek data yang memiliki label kelas yang diketahui). d. Analisis Cluster (analisis pengelompokan) Tidak seperti klasifikasi dan prediksi, yang menganalisis objek data yang diberi label kelas, clustering menganalisis objek data dimana label kelas tidak diketahui. Clustering dapat digunakan untuk menentukan label kelas yang tidak diketahui dengan cara mengelompokkan data untuk membentuk kelas baru. Prinsip dalam clustering adalah memaksimalkan kemiripan intra-class dan meminimumkan kemiripan interclass. e. Analisis Outlier Outlier merupakan objek data yang tidak mengikuti perilaku umum dari data, outlier dapat dianggap sebagai noise atau pengecualian. Analisis data outlier dinamakan outlier mining. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 10 Teknik ini berguna dalam fraud detection dan rare events analysis. f. Analisis Trend dan Evolusi Analisis evolusi data menjelaskan dan memodelkan trend dari objek yang memiliki perilaku yang berubah setiap waktu. Teknik ini dapat meliputi karakterisasi, diskriminasi, asosiasi, klasifikasi, atau clustering dari data yang berkaitan dengan waktu. 2.2 Outlier Detection 2.2.1 Pengertian Outlier Outlier adalah sehimpunan data yang dianggap memiliki sifat yang berbeda dibandingkan dengan kebanyakan data lainnya. (Han & Kamber, 2006) Analis outlier dikenal juga dengan analisis anomali atau deteksi anomali (Atastina). Deteksi outlier adalah suatu teknik untuk mencari obyek yang mempunyai perilaku yang berbeda dari obyekobyek lain. Teknik data mining dapat digunakan untuk mendeteksi adanya suatu anomali pada sebuah dataset. Dataset dengan outlier dipaparkan pada gambar 2.2 Gambar 2.2 Dataset dengan Outlier Outlier biasanya dianggap sebagai objek atau data yang jumlahnya sangat kecil jika dibandingkan dengan data normal lainnya, misalnya probabilitas kemunculannya satu dari seribu data, tetapi bila PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 11 menjadi seribu jika data sudah berjumlah satu juta. Dengan demikian, deteksi outlier pada data yang menyimpang merupakan pekerjaan yang penting untuk berbagai keperluan dalam data mining (Prasetyo). Beberapa metode yang dapat digunakan untuk pendeteksian outlier adalah Statistik Based, Distance Based, Density Based, dan Deviation Based. 2.2.2 Jenis Pendekatan Outlier 2.2.2.1 Statistik Based Cara yang paling sederhana adalah cara statistik. Perlu dilakukan perhitungan rata-rata dan standar deviasi. Kemudian berdasarkan nilai tersebut dibuat fungsi threshold berpotensi untuk dinyatakan sebagai outlier. Kelebihan dan kekurangan Statistik Based: 1. Jika pengetahuan data cukup (jenis distribusi data dan jenis uji yang diperlukan), maka pendekatan statistik akan sangat efektif). 2. Umumnya sulit menemukan fungsi distribusi dan jenis uji yang tepat untuk data. 3. Kebanyakan uji hanya cocok untuk single atribut. 4. Sulit untuk menentukan fungsi distribusi dan uji yang tepat untuk data berdimensi tinggi. 2.2.2.2 Distance Based Sebuah metode pencarian outlier yang populer dengan menghitung jarak pada obyek tetangga terdekat (nearest neighbor). Dalam pendekatan ini, satu obyek melihat obyekobyek local neihgborhood yang didefinisikan dengan knearest neighbor. Jika ketertetanggan antar obyek relatif dekat maka dikatakan obyek tersebut normal, akan tetapi jika PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 12 ketertetanggan antar obyek relatif sangat jauh maka dikatakan obyek tersebut tidak normal (Hendriyadi, 2009). Kelebihan dan kekurangan Distance Based: 1. Pendekatannya cukup sederhana. 2. Basisdata yang besar akan memakan biaya yang besar. 3. Sangat tergantung pada nilai parameter yang dipilih. 4. Waktu proses mendeteksi outlier dan hasil deteksi kurang akurat dibandingkan dengan metode Density-Based (Hendriyadi, 2009) 2.2.2.3 Density Based Metode density-based tidak secara eksplisit mengklasifikasikan sebuah obyek adalah outlier atau bukan, akan tetapi lebih kepada pemberian nilai kepada obyek sebagai derajat kekuatan, obyek tersebut dapat dikategorikan sebagai outlier. Ukuran derajat kekuatan ini adalah local outlier factor (LOF). Pendekatan untuk pencarian outlier ini hanya membutuhkan satu parameter yaitu MinPts, dimana MinPts adalah jumlah tetangga terdekat yang digunakan untuk mendefinisikan local neighborhood suatu obyek. MinPts diasumsikan sebagai jangkauan dari nilai MinPtsLB dan MinPtsUB. Nilai MinPtsLB dan MinPtsUB disarankan bernilai 10 dan 20. Akhirnya semua obyek dalam dataset dihitung nilai LOFnya (Hendriyadi, 2009). Kelebihan dan kekurangan Density Based: 1. Dapat digunakan untuk data yang kepadatannya berbeda. 2. Namun pemilihan parameter juga menjadi satu penentuan yang kuat dalam menentukan nilai kepadatan. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 13 3. Tanpa LOF objek yang berada pada cluster yang berbeda dapat dianggap outlier juga. 2.2.2.4 Deviation Based Metode deviation based tidak menggunakan pengujian statistik ataupun perbandingan jarak untuk mengidentifikasi sebuah outlier. Sebaliknya metode ini mengidentifikasi sebuah outlier dengan memeriksa karakteristik utama dari obyek dalam sebuah kumpulan. Obyek yang memiliki karakteristik diluar karakteristik utama maka akan dianggap sebagai oulier (Han & Kamber, 2006). 2.3 Algoritma Local Correlation Integral (LOCI) 2.3.1 Multi-Granularity Deviation Factor (MDEF) Multi-granuality deviation factor (MDEF), adalah ukuran untuk mengukur outlier-ness suatu objek pada lingkungannya (neighborhood) (Peter Cabens, 1998). Sedangkan 𝑀𝐷𝐸𝐹 adalah normalisasi standar deviasi dari MDEF. Untuk setiap objek pi, r dan mendefinisikan Multi-granulality deviation factor (MDEF) pada radius r sebagai berikut: 𝑀𝐷𝐸𝐹(𝑝𝑖, 𝑟, 𝑎) = 𝑛̂(𝑝𝑖 , 𝑟, ) − 𝑛(𝑝𝑖 , 𝑟) 𝑛(𝑝𝑖 , 𝑟) =1− 𝑛̂(𝑝𝑖 , 𝑟, ) 𝑛̂(𝑝𝑖 , , 𝑟) r-neighborhood untuk object pi selalu mengandung pi. Ini berarti 𝑛̂(𝑝𝑖 , 𝑟, ) > 0 sehingga kuantitas diatas selalu di definisikan. Untuk perhitungan lebih cepat dari MDEF, kadang-kadang harus memperkirakan 𝑛(𝑝𝑖 , 𝑟) dan 𝑛̂(𝑝𝑖 , 𝑟, ). r-neighborhood adalah neighborhood pada radius r, dimana masing-masing 𝑛(𝑝, 𝑟) diperkirakan. Sampling neighborhood (atau r- PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 14 neighborhood) adalah neighborhood radius r, dimana mengumpulkan sample 𝑛(𝑝, 𝑟) untuk memperkirakan 𝑛̂(𝑝𝑖 , 𝑟, ). Ide pokok deteksi outlier bergantung pada standar deviasi dari jumlah r-neighborhood atas neighborhood dari pi. 𝑀𝐷𝐸𝐹 (𝑝𝑖 , 𝑟, 𝛼) = 𝑛̂ (𝑝𝑖 , 𝑟, ) 𝑛(𝑝𝑖 , 𝑟, ) Gambar 2.3 Definisi dari n dan n̂ Definisi dari n dan n̂ dipaparkan pada gambar 2.3. Ilustrasi untuk definisi dari n dan n̂ misalnya 𝑛(𝑝𝑖 , 𝑟) = 4, 𝑛(𝑝𝑖 , 𝑟) = 1, 𝑛(𝑝1 , 𝑟) = 6, dan 𝑛̂(𝑝𝑖 , 𝑟, ) = (1+6+5+1) 4 = 3.25 Dimana: 1. 𝑛(𝑝𝑖 , 𝑟) merupakan jumlah r-neighbors dari pi. 2. 𝑛(𝑝𝑖 , 𝑟) merupakan jumlah r-neighbors dari pi. 3. 𝑛̂(𝑝𝑖 , 𝑟, ) merupakan rata-rata dari 𝑛(𝑝, 𝑟) pada r-neighbors dari pi (Spiros Papadimitriou, 2003). PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 15 Setiap objek dapat dikatakan sebagai outlier dengan berdasarkan formula berikut: 𝑀𝐷𝐸𝐹(𝑝𝑖 , 𝑟, ) > 𝑘 𝑀𝐷𝐸𝐹 (𝑝𝑖 , 𝑟, 𝛼) Tabel 2.1 merupakan tabel yang berisi simbol yang digunakan algoritma Local Correlation Integral untuk mendeteksi outlier. Tabel 2.1 Simbol dan Definisi Simbol Definisi Kumpulan Objek P = {p1,….,pi…..pN}. 𝑝𝑖 N Jumlah data (|P| N). 𝑑(𝑝𝑖 , 𝑝𝑗 ) Jarak antara pi dan pj. 𝑛(𝑝𝑖 , 𝑟) Jumlah r-neighbors dari pi. 𝑛(𝑝𝑖 , 𝑟) Jumlah r-neighbors dari pi. n̂(𝑝𝑖 , 𝑟,) Rata-rata dari 𝑛(𝑝, 𝑟) pada r-neighbors dari pi, n̂(𝑝𝑖 , 𝑟,) n̂ (𝑝𝑖 , 𝑟,) ∑𝑝𝑁(𝑝𝑖 ,𝑟) 𝑛(𝑝, 𝑟) 𝑛(𝑝𝑖 , 𝑟) Standar deviasi dari 𝑛(𝑝, 𝑟) pada r-neighbors. ∑𝑝𝑁(𝑝𝑖 ,𝑟)(𝑛(𝑝, 𝑟) − n̂(𝑝𝑖 , 𝑟, ))2 𝑛(𝑝𝑖 , 𝑟) n̂ (𝑝𝑖 , 𝑟,) √ 𝑀𝐷𝐸𝐹(𝑝𝑖 , 𝑟, ) Multi-granuality deviation factor untuk pi pada radius r. 𝑀𝐷𝐸𝐹 (𝑝𝑖 , 𝑟, 𝛼) Standar deviasi multi-granuality deviation factor. 𝑘 𝑀𝐷𝐸𝐹(𝑝𝑖 , 𝑟, ) > 𝑘 𝑀𝐷𝐸𝐹 (𝑝𝑖 , 𝑟, 𝛼) 𝑘 = 3 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 16 2.3.2 Metode Local Correlation Integral (LOCI) Penelitian ini menggunakan algoritma Local Correlation Integral (LOCI), ide utama dari LOCI adalah menandai objek sebagai outlier jika di kepadatan lokal (local density) antara neighboors cukup besar. Untuk mendeteksi bahwa relative deviasi dari average local neighborhood density diperoleh. Penyimpangan ini disebut multigranularity-deviation factor (MDEF). Algoritma LOCI dalam mendeteksi outlier menghitung nilai MDEF dan nilai MDEF untuk semua objek. Kemudian LOCI akan menandai suatu objek sebagai outlier jika nilai nilai MDEF lebih besar tiga kali lipat dari nilai MDEF untuk radius yang sama (Peter Cabens, 1998). Algoritma ini diusulkan dalam (Spiros Papadimitriou, 2003). Algoritma LOCI tidak mempunyai parameter penting seperti k. Objek yang dinyatakan sebagai outlier adalah objek yang memiliki nilai MDEF mendekati 1. Tujuannya adalah untuk ditandai sebagai outlier jika rasio diantara MDEF dan MDEF melebihi konstanta yang diusulkan menjadi 3 (Amer, 2011) PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 17 Langkah –langkah untuk menemukan outlier dideskripsikan sebagai berikut: 1. Menentukan jarak antar objek. Untuk menentukan jarak antar objek menggunakan rumus euclidean distance. 𝑛̂ √∑(𝑋𝑎 − 𝑋𝑏 )2 𝑎=1 2. Menghitung jumlah r-neighbors dari pi. Jumlah tetangga yang jaraknya kurang dari sama dengan r. 3. Menghitung jumlah r-neighbors dari pi. Jumlah tetangga yang jaraknya kurang dari sama dengan r. 4. Menghitung rata-rata dari n(p, r) pada r-neighbors dari pi. n̂(𝑝𝑖 , 𝑟,) 5. ∑𝑝𝑁(𝑝𝑖 ,𝑟) 𝑛(𝑝, 𝑟) 𝑛(𝑝𝑖 , 𝑟) Menghitung standar deviasi dari n(p, r) pada r-neighbors. ∑𝑝𝑁(𝑝𝑖 ,𝑟)(𝑛(𝑝, 𝑟) − n̂(𝑝𝑖 , 𝑟, ))2 𝑛(𝑝𝑖 , 𝑟) n̂ (𝑝𝑖 , 𝑟,) √ 6. Menghitung Multy-granuality deviation factor untuk pi pada radius r. 𝑀𝐷𝐸𝐹(𝑝𝑖, 𝑟, 𝑎) = 7. 𝑛̂(𝑝𝑖 , 𝑟, ) − 𝑛(𝑝𝑖 , 𝑟) 𝑛(𝑝𝑖 , 𝑟) =1− 𝑛̂(𝑝𝑖 , 𝑟, ) 𝑛̂(𝑝𝑖 , , 𝑟) Menghitung standar deviasi Multy-granuality deviation factor. 𝑀𝐷𝐸𝐹 (𝑝𝑖 , 𝑟, 𝛼) = 𝑛̂ (𝑝𝑖 , 𝑟, ) 𝑛(𝑝𝑖 , 𝑟, ) PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 8. 18 Menghitung LOCI. 𝑀𝐷𝐸𝐹(𝑝𝑖 , 𝑟, ) > 𝑘 𝑀𝐷𝐸𝐹 (𝑝𝑖 , 𝑟, 𝛼) Outlier memiliki nilai MDEF mendekati 1. Tujuannya adalah sebagai outlier jika rasio antara MDEF dan MDEF melebihi konstanta yang diusulkan dalam publikasi asli menjadi 3. Berikut adalah implementasi dari algoritma Local Correlation Integral: // Pre-processing Foreach pi Perform a range-search For Ni = {p | d(pi, p) ≤ rmax} From Ni, construct a sorted list Di Of the critical and -critical distances of pi // Post-processing Foreach pi : For each radius r Di (ascending): Update n(pi, r) and n̂(pi, r, ) From n and n̂, compute MDEF(pi, r, α) and MDEF(pi, r, α) If MDEF(pi, r, α) > 3MDEF(pi, r, α) flag pi PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 2.4 19 Contoh Jalannya Algoritma Misalnya sebuah database memiliki sebuah objek dan dilambangkan sebagai P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, dan P13. Dari objek tersebut memiliki atribut nilai ips1, nil11, nil12, nil13, nil14, dan nil15. Tabel 2.2 merupakan tabel yang berisi data nilai dari 13 mahasiswa. Tabel 2.2 Data 13 Mahasiswa P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 P13 IPS 1 2.94 1.72 2.56 2.44 2.94 1.89 4.00 1.44 3.72 1.72 3.28 2.89 2.89 NIL11 NIL12 2.80 2.00 1.20 0.80 2.40 1.60 2.00 2.00 2.40 1.60 2.40 2.00 2.40 2.40 4.00 2.00 3.20 2.40 2.80 2.40 2.80 2.40 2.40 2.00 2.00 2.00 NIL13 2.00 3.20 2.00 2.40 2.40 2.40 1.60 3.60 2.40 3.20 2.80 2.00 3.20 NIL14 2.00 1.20 2.80 2.00 1.20 2.40 1.60 2.40 2.80 3.20 2.40 2.80 2.00 NIL15 1.60 0.40 2.00 2.00 2.80 2.80 2.80 2.80 2.00 0.80 2.40 2.00 2.80 1. Menghitung jumlah r-neighbors dari pi. Maka untuk contoh diatas langkah untuk menghitung jumlah r-neighbors dari obyek P2 adalah sebagai berikut. Diasumsikan nilai r = 6. Kemudian tandai yang jaraknya kurang dari sama dengan r. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 20 Tabel 2.3 merupakan tabel yang berisi tentang jumlah r-neighbors dari ke-13 obyek. Tabel 2.3 Jumlah r-neighbors dari pi Object r-neighbors n(pi,r) P1 P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13 13 P2 P2,P1,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13 13 P3 P3,P1,P2,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13 13 P4 P4,P1,P2,P3,P5,P6,P7,P8,P9,P10,P11,P12,P13 13 P5 P5,P1,P2,P3,P4,P6,P7,P8,P9,P10,P11,P12,P13 13 P6 P6,P1,P2,P3,P4,P5,P7,P8,P9,P10,P11,P12,P13 13 P7 P7,P1,P2,P3,P4,P5,P6,P8,P9,P10,P11,P12,P13 13 P8 P8,P1,P2,P3,P4,P5,P6,P7,P9,P10,P11,P12,P13 13 P9 P9,P1,P2,P3,P4,P5,P6,P7,P8,P10,P11,P12,P13 13 P10 P10,P1,P2,P3,P4,P5,P6,P7,P8,P9,P11,P12,P13 13 P11 P11,P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P12,P13 13 P12 P12,P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P13 13 P13 P13,P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12 13 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 21 2. Menghitung jumlah r-neighbors dari pi. Selanjutnya mencari r-neighbors dari objek P2 adalah sebagai berikut: a. Nilai = 0.5. b. Nilai r = 3. c. Maka 𝑛(𝑝, 𝑟) atau jumlah ar-neighbors dari objek pi. Tabel 2.4 merupakan tabel yang berisi tentang jumlah r-neighbors dari ke-13 obyek. Tabel 2.4 Jumlah r-neighbors dari pi. r-neighbors Object n(p,r) P1 P1,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13 12 P2 P2,P4 2 P3 P3,P1,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13 12 P4 P4,P1,P2,P3,P5,P6,P7,P8,P9,P10,P11,P12,P13 13 P5 P5,P1,P3,P4,P6,P7,P8,P9,P11,P12,P13 11 P6 P6,P1,P3,P4,P5,P7,P8,P9,P10,P11,P12,P13 12 P7 P7,P1,P3,P4,P5,P6,P9,P11,P12,P13 10 P8 P8,P1,P3,P4,P5,P6,P9,P10,P11,P12,P13 11 P9 P9,P1,P3,P4,P5,P6,P7,P8,P10,P11,P12,P13 12 P10 P10,P1,P3,P4,P6,P8,P9,P11,P12,P13 10 P11 P11,P1,P3,P4,P5,P6,P7,P8,P9,P10,P12,P13 12 P12 P12,P1,P3,P4,P5,P6,P7,P8,P9,P10,P11,P13 12 P13 P13,P4,P5,P6,P11 12 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 22 3. Menghitung rata-rata dari n(p,r) pada r-neighbors dari pi. Selanjutnya adalah menghitung rata-rata dari 𝑛(𝑝, 𝑟) pada keseluruhan objek p pada r-neighborhood dari p. 4. Menghitung standar deviasi dari n(p,r) pada r-neighbors. Setelah menghitung rata-rata 𝑛(𝑝, 𝑟) langkah selanjutnya adalah menghitung standar deviasi 𝑛(𝑝, 𝑟) pada r-neighbors. 5. Menghitung nilai MDEF untuk pi pada radius r. MDEF dari sebuah objek dimana kepadatan lingkungannya cocok dengan rata rata local neighbourhood density akan bernilai 0. Kebalikannya MDEF dari outlier akan bernilai jauh dari 0 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 23 6. Menghitung standar deviasi MDEF. Dimana 𝑀𝐷𝐸𝐹 (𝑝𝑖 , 𝑟, 𝛼) = 𝑛̂ (𝑝𝑖 ,𝑟,) , 𝑛̂(𝑝𝑖 ,𝑟,) yaitu normalisasi deviasi 𝑛̂ (𝑝𝑖 , 𝑟, ) dari 𝑛(𝑝𝑖 , 𝑟) untuk 𝑝𝑁(𝑝𝑖, 𝑟). 7. Menghitung kMDEF. Pada tahap selanjutnya adalah membuktikan apakah objek tersebut merupakan outlier atau bukan, dengan cara nilai MDEF dikalikan dengan nilai 𝑘 , diasumsikan nilai 𝑘 = 3. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 24 8. Local Correlation Integral Jika nilai 𝑀𝐷𝐸𝐹 > 𝑘 𝑀𝐷𝐸𝐹 maka objek tersebut merupakan outlier, jika 𝑀𝐷𝐸𝐹 < 𝑘 𝑀𝐷𝐸𝐹 maka objek tersebut bukan termasuk outlier. Dari perhitungan di atas, objek P2 memiliki nilai 𝑀𝐷𝐸𝐹 > 𝑘 𝑀𝐷𝐸𝐹 . Maka dapat disimpulkan bahwa objek P2 termasuk outlier. Yang menjadi outlier di Semester 1 adalah mahasiswa ke 2, pada Semester 2 yang menjadi outlier adalah mahasiswa ke 2, pada Semester 3 yang menjadi outlier adalah mahasiswa ke 2, dan pada Semester 4 yang menjadi outlier adalah mahasiswa ke 2. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB III METODOLOGI PENELITIAN Pada bab ini berisi mengenai metode penambangan data yang digunakan yaitu metode Knowledge Discovery in Database (KDD) yang dikemukakan oleh Jiawei Han dan Kamber. 3.1 Data yang Dibutuhkan Pada penelitian ini data yang digunakan adalah data akademik mahasiswa yang meliputi nilai indeks prestasi semester dari semester satu sampai semester empat dan nilai tes masuk mahasiswa program studi Teknik Informatika fakultas Sains dan Teknologi Universitas Sanata Dharma Yogyakarta tahun angkatan 2007 dan 2008. Data tersebut diperoleh dari Gudang Data akademik mahasiwa Universitas Sanata Dharma hasil penelitian Rosa, dkk (2011). Data ini berupa script query yang berisi gudang data dengan format .sql kemudian data tersebut diolah. Data yang digunakan dalam penelitian ini adalah data nilai hasil tes masuk mahasiswa melalui jalur tes tertulis dan jalur prestasi. Dan juga data nilai indeks prestasi mahasiswa dari semester satu sampai dengan semester empat. 3.2 Pengolahan Data Berikut adalah tahapan yang dilakukan dalam pengolahan data: 3.2.1 Penggabungan Data (Data Integration) Pada tahap ini mengekstrak skrip .sql tersebut di dalam SQLyog. Setelah skrip tersebut di eksrak akan menghasilkan sebuah database bernama “gudangdata” yang terdiri dari dim_angkatan, dim, dim_daftarsmu, dim_fakultas, dim_jeniskel, dim_kabupaten, dim_prodi, dim_prodifaks, dim_statuses, dan fact_lengkap2. Gambar 3.2 merupakan isi database “gudangdata”. 25 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 26 Gambar 3.1 Database “gudangdata” 3.2.2 Seleksi Data (Data Selection) Pada tahap ini merupakan proses menyeleksi data yang relevan. Data yang tidak sesuai akan dihilangkan. Data dipilih dan diseleksi yang sesuai untuk dilakukan perhitungan, dimana data yang tidak relevan akan dibuang dari penelitian. Data yang digunakan terdapat pada tabel ‘fact_lengkap2’ karena dalam tabel tersebut terdapat nilai hasil seleksi tes masuk mahasiswa dan terdapat nilai indeks prestasi mahasiswa dari semester satu sampai dengan semester 4. Data yang dipakai adalah kolom ips1, ips2, ips3, ips3, ips4, nil11, nil12, nil13, nil14, nil15, dan final. Kemudian menyeleksi kembali baris tersebut untuk mengambil data baris dengan sk_prodi = 27. Baris dengan sk_prodi = 27 merupakan data mahasiswa Teknik Informatika. Gambar 3.2 merupakan isi dari tabel “fact_lengkap”. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 27 Gambar 3.2 Isi tabel “fact_lengkap”. 3.2.3 Transformasi Data (Data Transformation) Tahap ini merupakan tahap untuk mentransformasikan data ke dalam bentuk yang sesuai untuk ditambang. Pada tahap ini, data yang akan di transformasi adalah atribut ips1, ips2, ips3, dan ips4 yang memiliki range nilai antara 0 sampai dengan 4.00. Untuk atribut nil11, nil12, nil13, nil14, dan nil15 memiliki range nilai antara 0 sampai dengan 10. Sedangkan nilai final memiliki range nilai antara 0 sampai dengan 100. Data mentah perlu dilakukan proses transfiormasi untuk meningkatkan performanya. Salah satu cara transformasi yang digunakan adalah dengan cara melakukan normalisasi. Untuk melakukan transformasi menggunakan rumus min-max normalization: 𝑣′ = 𝑣 − 𝑚𝑖𝑛𝐴 (new_𝑚𝑎𝑥𝐴 − 𝑛𝑒𝑤_𝑚𝑖𝑛𝐴 ) + 𝑛𝑒𝑤_𝑚𝑖𝑛𝐴 𝑚𝑎𝑥𝐴 − 𝑚𝑖𝑛𝐴 Dimana 𝑣 ′ adalah nilai yang sudah dinormalisasi, v adalah nilai lama yang belom di normalisasi, minA adalah nilai minimum dari atribut a, maxA adalah nilai maksimum dari atribut a, newminA nilai minimum baru dari atribut a, dan newmaxA adalah nilai maksimum baru dari atribut a. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 1. 28 Normalisasi atribut nil11, nil12, nil13, nil14, dan nil15 Pada tahap ini dilakukan normalisasi untuk menyamakan jangkauan nilai terhadap atribut ips1, ips2, ips3, dan ips4. Misalnya nil11 akan dinormalisasi, nil11 adalah 8.00, kemudian dilakukan proses normalisasi. Tabel 3.1 merupakan tabel yang berisi data atribut nill11, nil12, nil13, nil14, dan nil15 yang belum di normalisasi. Dimana: minA = 0 maxA = 10 new_minA = 0 new_maxA = 4 v = 8.00 𝑣′ = (8 − 0) (4 − 0) + 0 = 0,8 ∗ 4 + 0 = 3,20 (10 − 0) Tabel 3.1 Contoh atribut nil11, nil12, nil13, nil14, dan nil15 sebelum di normalisasi No Ips1 Nil11 Nil12 Nil13 Nil14 Nil15 1 3.72 8.00 6.00 6.00 7.00 5.00 2 2.89 6.00 5.00 5.00 7.00 5.00 3 2.56 6.00 4.00 5.00 7.00 5.00 4 3.28 7.00 6.00 7.00 6.00 6.00 5 1.89 6.00 5.00 6.00 6.00 7.00 6 1.44 10.00 5.00 9.00 6.00 7.00 7 4.00 6.00 6.00 4.00 4.00 7.00 8 1.72 3.00 2.00 8.00 3.00 1.00 9 2.89 5.00 5.00 8.00 5.00 7.00 10 2.94 7.00 5.00 5.00 5.00 4.00 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 29 11 2.94 6.00 4.00 6.00 3.00 7.00 12 2.44 5.00 5.00 6.00 5.00 5.00 13 1.72 7.00 6.00 8.00 8.00 2.00 Nilai lama yang belum dinormalisasi yaitu 8.00 dikurangi nilai minimum dari atribut a, dimana nil11 mempunyai jarak antara 0-10. Nilai maksimum dari atribut a yaitu 10 dikurangi nilai minimum dari atribut a yaitu 0. Kemudian hasil dari pengurangan nilai yang belum dinormalisasi dengan nilai minimum dari atribut a akan dibagi dengan hasil pengurangan nilai maksimum dari atribut a dan nilai minimum dari atribut a. Langkah selanjutnya adalah nilai maksimum baru dari atribut a dikurangi dengan nilai minimum baru dari atribut a. Kemudian hasil pembagian nilai yang belum dinormalisasi dengan nilai minimum dari atribut a akan dibagi dengan hasil nilai maksimum dari atribut a dan nilai minimum dari atribut a akan dikalikan dengan hasil pengurangan nilai maksimum baru dari atribut a dengan nilai minimum baru dari atribut a. Dari hasil perkalian tersebut kan dikurangi dengan nilai minimum baru dari atribut a. Maka hasil penjumlahan tersebut akan menghasilkan nilai yang sudah dinormalisasi. Tabel 3.2 merupakan tabel yang berisi data atribut nill11, nil12, nil13, nil14, dan nil15 setelah di normalisasi. Tabel 3.2 Contoh atribut nil11, nil12, nil13, nil14, dan nil15 setelah di normalisasi No Ips1 Nil11 Nil12 Nil13 Nil14 Nil15 1 3.72 3.20 2.40 2.40 2.80 2.00 2 2.89 2.40 2.00 2.00 2.80 2.00 3 2.56 2.40 1.60 2.00 2.80 2.00 4 3.28 2.80 2.40 2.80 2.40 2.40 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 2. 5 1.89 2.40 2.00 2.40 2.40 2.80 6 1.44 4.00 2.00 3.60 2.40 2.80 7 4.00 2.40 2.40 1.60 1.60 2.80 8 1.72 1.20 0.80 3.20 1.20 0.40 9 2.89 2.00 2.00 3.20 2.00 2.80 10 2.94 2.80 2.00 2.00 2.00 1.60 11 2.94 2.40 1.60 2.40 1.20 2.80 12 2.44 2.00 2.00 2.40 2.00 2.00 13 1.72 2.80 2.40 3.20 3.20 0.80 30 Normalisasi nilai atribut final Pada tahap ini dilakukan normalisasi untuk atribut final. Misalnya nilai final akan dinormalisasi, nilai final adalah 67.80, kemudian dilakukan proses normalisasi. Tabel 3.3 merupakan tabel yang berisi data atribut nill11, nil12, nil13, nil14, dan nil15 yang belum di normalisasi. Dimana: minA = 0 maxA = 100 new_minA = 0 new_maxA = 4 v = 67.80 𝑣′ = (67.80−0) (100−0) (4 − 0) + 0 = 0,678 ∗ 4 + 0 = 2,712 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 31 Tabel 3.3 Contoh atribut nil11, nil12, nil13, nil14, dan nil15 sebelum di normalisasi No Ips1 Ips2 Ips3 Ips4 Final 1 2.06 2.32 2.91 3.00 67.80 2 2.72 2.50 2.96 2.38 67.75 3 3.33 3.48 3.78 3.48 69.41 4 2.39 3.00 2.43 2.82 71.60 5 2.11 2.71 2.43 2.45 73.75 6 3.00 2.96 2.61 3.29 67.57 7 3.72 3.56 3.43 3.67 78.67 8 3.44 3.04 2.88 3.48 71.33 9 2.17 2.70 3.09 3.63 72.00 10 3.89 3.75 3.00 3.62 77.00 11 2.89 3.68 2.88 3.76 72.99 12 3.11 3.08 2.78 3.48 68.17 13 2.00 2.00 2.29 3.00 77.10 Nilai lama yang belum dinormalisasi yaitu 67,80 dikurangi nilai minimum dari atribut a, dimana nilai final mempunyai jarak antara 0-100. Nilai maksimum dari atribut a yaitu 100 dikurangi dengan nilai minimum dari atribut a yaitu 0. Kemudian hasil dari pengurangan nilai yang belum dinormalisasi dengan nilai minimum dari atribut a akan dibagi dengan hasil pengurangan nilai maksimum dari atribut a dan nilai minimum dari atribut a. Langkah selanjutnya adalah nilai maksimum baru dari atribut a di kurangi dengan nilai minimum baru dari atribut a. Kemudian hasil pembagian nilai yang belum dinormalisasi dengan nilai minimum dari atribut a akan dibagi dengan hasil nilai maksimum dari atribut a dan nilai minimum dari atribut a akan dikalikan dengan hasil pengurangan nilai maksimum baru dari atribut a dengan nilai minimum baru dari atribut a. Dari hasil PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 32 perkalian tersebut akan dikurangi dengan nilai minimum baru dari atribut a. Maka hasil penjumlahan tersebut akan menghasilkan nilai yang sudah dinormalisasi. Tabel 3.4 merupakan tabel yang berisi data atribut nill11, nil12, nil13, nil14, dan nil15 yang belum di normalisasi. Tabel 3.4 Contoh atribut nil11, nil12, nil13, nil14, dan nil15 setelah di normalisasi No Ips1 Ips2 Ips3 Ips4 Final Normalisasi 1 2.06 2.32 2.91 3.00 2.712 2 2.72 2.50 2.96 2.38 2.710 3 3.33 3.48 3.78 3.48 2.776 4 2.39 3.00 2.43 2.82 2.864 5 2.11 2.71 2.43 2.45 2.950 6 3.00 2.96 2.61 3.29 2.703 7 3.72 3.56 3.43 3.67 3.147 8 3.44 3.04 2.88 3.48 2.853 9 2.17 2.70 3.09 3.63 2.880 10 3.89 3.75 3.00 3.62 3.080 11 2.89 3.68 2.88 3.76 2.920 12 3.11 3.08 2.78 3.48 2.727 13 2.00 2.00 2.29 3.00 3.084 3.2.4 Penambangan Data (Data Mining) Data mining merupakan proses mengekstrak informasi atau pengetahuan dari data dalam jumlah yang besar. Dalam penelitian ini, metode yang digunakan adalah metode analisis outlier dengan menggunakan pendekatan density based. Algoritma yang digunakan adalah Local Correlation Integral (LOCI). Data yang digunakan adalah data akademik mahasiswa Program Studi Teknik Informatika PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 33 di Universitas Sanata Dharma angkatan 2007 dan 2008 dari semester satu sampai dengan semester empat. Pada tahap ini terdapat beberapa variabel yang digunakan, antara lain: 1. Variabel Input Variabel input yang digunakan terdiri dari nil11, nil12, nil13, nil14, nil15, dan nilai final. Dan terdiri dari nilai per semester yaitu nilai ips1, ips2, ips3, dan ips4. 2. Variabel output Variabel output yang digunakan adalah data mahasiswa yang menjadi outlier dari hasil perhitungan dengan algoritma Local Correlation Integral dari data nilai hasil seleksi masuk dan nilai mahasiswa dari semester satu sampai dengan semester 4. Keluaran ini berupa nomor urut mahasiswa, MDEF, KMDEF, jumlah outlier, dan lama deteksi outlier. 3.2.5 Evaluasi Pola (Pattern Evaluation) Evaluasi pola merupakan proses mengidentifikasi apakah pola atau informasi yang ditemukan sesuai fakta atau hipotesa yang ada sebelumnya. Luaran yang diperoleh berupa data-data outlier menggunakan algoritma Local Correlation Integral dan akan diuji kebenarannya oleh pemilik data apakah hipotesa outlier yang mereka miliki sama dengan hasil yang diperoleh sistem. 3.2.6 Presentasi Pengetahuan (Knowledge Presentation) Knowledge presentation merupakan proses merepresentasikan pola kepada pengguna ke dalam bentuk yang mudah dimengerti. Dengan adanya sistem ini, diharapkan dapat membantu pihak Universitas Sanata Dharma dalam mendeteksi outlier melalui hasil tes PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 34 masuk baik melalui jalur tes tertulis maupun jalur prestasi dan nilai per semester dari semester 1 sampai dengan semester 4. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB IV ANALISIS DAN PERANCANGAN SISTEM Bab ini berisi tentang identifikasi sistem, perancangan sistem secara umum, perancangan sistem, perancangan struktur data, dan perancangan antarmuka yang akan dibuat. 4.1 Identifikasi Sistem Universitas Sanata Dharma melakukan penerimaan mahasiswa baru setiap tahunnya. Seleksi penerimaan mahasiswa baru dibagi menjadi dua jalur, yaitu jalur prestasi dan jalur tes. Syarat untuk calon mahasiswa yang mengikuti jalur prestasi adalah melampirkan nilai akademik SMA/sederajat kelas XI semester 1 dan 2, yang kemudian nilai-nilai tersebut akan dirata-rata dan menjadi nilai final. Calon mahasiswa yang mengikuti jalur tes diwajibkan mengikuti tes tertulis. Tes tertulis memiliki 5 komponen nilai yaitu nilai penalaran numerik, nilai penalaran verbal, nilai hubungan ruang, nilai bahasa Inggris, dan nilai kemampuan numerik. Calon mahasiswa yang mengikuti tes akan memiliki lima komponen tes tersebut, kelima komponen nilai tersebut akan dirata-rata dan akan menjadi nilai final. Mahasiswa yang diterima di Universitas Sanata Dharma setiap semesternya akan dilakukan evaluasi untuk mengetahui tingkat pemahaman setiap mahasiswa, dan pada akhir semester setiap mahasiswa akan memperoleh nilai hasil belajar selama satu semester yang disebut Indeks Prestasi Semester (IPS). Mahasiswa yang nilai tes masuk universitasnya tinggi belum tentu memiliki Indeks Prestasi Semester yang tinggi, dan mahasiswa yang nilai tes masuk universitasnya rendah belum tentu memiliki Indeks Prestasi Semester yang rendah. Mahasiswa dengan data yang unik ini disebut sebagai outlier. Deteksi outlier merupakan salah satu bidang penelitian yang penting dalam topik data mining. Deteksi outlier bermanfaat untuk mendeteksi 35 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 36 perilaku yang tidak normal, salah satunya adalah mendeteksi nilai mahasiswa yang nilai tes masuk universitasnya bagus tetapi pada saat kuliah mahasiswa tersebut mendapatkan nilai yang rendah. Dalam tugas akhir ini akan dijelaskan bagaimana proses mendeteksi outlier dan proses pembuatan aplikasi untuk mendeteksi outlier menggunakan algoritma Local Correlation Integral (LOCI). Algoritma LOCI merupakan salah satu algoritma yang memiliki kemampuan untuk mendeteksi outlier dalam sekumpulan data. Algoritma LOCI dapat diimplementasikan pada sekumpulan data numerik untuk mendeteksi adanya outlier dengan pendekatan density-based. Dalam penelitian ini data yang digunakan adalah data yang bertipe file (.xls) dan file (.csv) dan dari Basis Data, hasil output akan disimpan kedalam file Text Documents (.txt), Ms. Word (.doc), dan Ms. Excel (.xls). 4.1.1 Diagram Use Case Dalam sebuah sistem akan selalu ada interaksi, di mana interaksi tersebut menggambarkan proses jalannya sistem tersebut dan fungsi dari sistem tersebut. Untuk menggambarkan interaksi tersebut, tugas akhir ini menggunakan diagram use case. Diagram use case digunakan untuk mengetahui fungsi apa saja yang ada di dalam sebuah sistem dan siapa saja yang berhak menggunakan fungsi-fungsi tersebut. Diagram use case menjelaskan secara sederhana fungsi sistem dari sudut pandang user. Diagram use case yang digunakan adalah dapat dilihat pada bagian lampiran 1. Di dalam diagram use case akan ada 1 pengguna yang akan menjalankan fungsi dari sistem. Terdapat tiga fungsi utama yang dapat dijalankan oleh pengguna yaitu fungsi input data dari database, data yang berformat .xls, .csv, fungsi untuk mendeteksi outlier, dan fungsi untuk menyimpan hasil deteksi outlier. Sistem tersebut juga PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 37 memiliki fungsi seleksi atribut untuk menseleksi atribut yang tidak diikutsertakan dalam deteksi outlier. Deskripsi use case dapat dilihat pada bagian lampiran 2. 4.1.2 Narasi Use Case Untuk mengetahui detail Narasi Use Case secara keseluruhan dapat dilihat pada bagian lampiran 3. 4.2 Perancangan Sistem Secara Umum 4.2.1 Input Sistem Sistem yang dibangun dapat menerima masukan berupa data yang bertipe file excel (.xls) dan (.csv) atau data dalam tabel yang terdapat dalam basis data. Sistem ini membutuhkan masukan untuk memproses pencarian outlier yaitu: 1. Radius atau r Radius adalah sebuah parameter yang digunakan untuk mendefinisikan r-neighborhood suatu obyek. 2. Alpha atau Alpha adalah sebuah parameter skala yang digunakan untuk mendefinisikan r-neighborhood suatu obyek. 3. Konstanta atau k Konstanta adalah sebuah parameter yang digunakan untuk mendefinisikan konstanta. Penelitian ini menggunakan data akademik mahasiswa Program Studi Teknik Informatika Universitas Sanata Dharma Yogyakarta. Data yang digunakan adalah nilai penerimaan mahasiswa baru melalui tes tertulis dan jalur prestasi. Atribut yang digunakan dapat dilihat pada tabel di bawah ini: PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 38 a. Data Hasil Seleksi Masuk Jalur Tes No 1 Nama Penjelasan Atribut Nomor urut Nilai Atribut ini merupakan nomor 1 - 126 untuk menunjukkan obyek mahasiswa. 2 Nil11 Atribut ini merupakan nilai 0.00 - 4.00 merupakan nilai 0.00 - 4.00 merupakan nilai 0.00 - 4.00 merupakan nilai 0.00 - 4.00 merupakan nilai 0.00 - 4.00 komponen 1. 3 Nil12 Atribut ini komponen 2. 4 Nil13 Atribut ini komponen 3. 5 Nil14 Atribut ini komponen 4. 6 Nil15 Atribut ini komponen 5. 7 Final Atribut ini merupakan nilai rata- 0.00-4.00 rata rapor siswa pada saat SMA/sederajat. b. Data Hasil Seleksi Masuk Jalur Prestasi No Nama Penjelasan Atribut Nilai Atribut ini merupakan nomor 1 - 126 1 Nomor urut untuk menunjukkan obyek mahasiswa. 2 Final Atribut ini merupakan nilai rata- 0.00-4.00 rata rapor siswa SMA/sederajat. pada saat PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 39 c. Data Indeks Prestasi Semester No Nama Penjelasan Atribut Nilai Atribut ini merupakan nomor 1 - 126 1 Nomor urut untuk menunjukkan obyek mahasiswa. 2 Ips1 Atribut ini merupakan Indeks 0.00-4.00 Prestasi Semester 1. 4 Ips2 Atribut ini merupakan Indeks 0.00-4.00 Prestasi Semester 2. 5 Ips3 Atribut ini merupakan Indeks 0.00-4.00 Prestasi Semester 3. 6 Ips4 Atribut ini merupakan Indeks 0.00-4.00 Prestasi Semester 4. 4.2.2 Proses Sistem Tahap-tahap dalam proses sistem adalah sebagai berikut: 1. Pengambilan Data Pada tahap pengambilan data, sistem akan mengambil data sesuai dengan pilihan user. Data tersebut berupa file .xls dan .csv atau mengambil data dari tabel yang terdapat didalam database. Kemudian data yang dipilih oleh user tersebut akan ditampilkan di dalam sistem, kemudian data tersebut diseleksi oleh user, yaitu menyeleksi atribut mana saja yang akan digunakan. 2. Perhitungan Jarak Obyek Data Tahap selanjutnya adalah tahap untuk menghitung jarak obyek data dengan rumus euclidean distance. Atribut yang dimasukkan ke dalam perhitungan data disesuaikan dengan pilihan user. Sehingga diketahui jarak setiap obyek. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3. 40 Pencarian Outlier Bersadarkan Parameter r , , dan k Tahap selanjutnya adalah mencari outlier menggunakan algoritma Local Correlation Integral. Pada tahap ini sistem akan menerima inputan berupa parameter r, parameter tersebut untuk mencari r-neighborhood suatu obyek. Inputan kedua berupa parameter , dengan parameter untuk mencari rneighborhood suatu obyek. Inputan ketiga berupa parameter k yang digunakan sebagai konstanta. Diagram proses umum sistem menggunakan algoritma Local Correlation Integral dapat dilihat pada lampiran 4. 4.2.3 Output Sistem Sistem yang dibuat akan menghasilkan data yang dinyatakan sebagai outlier. Hasil keluaran dari sistem tersebut adalah sebagai berikut: 4.3 1. Hasil outlier untuk setiap data beserta nilai atribut yang dimiliki. 2. Jumlah data. 3. Jumlah outlier. 4. Lama deteksi outlier. Perancangan Sistem 4.3.1 Diagram Aktivitas Diagram aktivitas berfungsi untuk menggambarkan aliran fungsionalitas sistem. Diagram aktivitas juga dapat digunakan untuk menunjukkan alur kerja, dan untuk menjelaskan aktivitas yang terjadi di dalam sebuah use case. 1. Diagram Aktivitas Input Data dari File .xls atau .csv. 2. Diagram Aktivitas Input Data dari Tabel Database. 3. Diagram Aktivitas Deteksi Outlier. 4. Diagram Aktivitas Simpan Hasil Deteksi Outlier. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 5. 41 Diagram Aktivitas Seleksi Atribut. Untuk detail dari diagram aktivitas per use case dapat dilihat di lampiran 5. 4.3.2 Diagram Kelas Analisis Diagram kelas analisis dapat dilihat pada lampiran 6. Keterangan diagram analisis dipaparkan pada tabel 4.1. Tabel 4.1 Tabel Keterangan Diagram Analisis No 1 Nama Kelas DatabaseController Jenis Entity Keterangan Kelas ini digunakan untuk menampilkan data dari tabel database Oracle maupun mySQL berdasarkan tabel yang dipilih pengguna. 2 Graph Controller Kelas ini digunakan untuk membuat graph dan edge setiap verrteks. Dan untuk proses perhitungan outlier menggunakan algoritma Local Correlation Integral. 3 Seleksi Atribut Entity Kelas ini digunakan untuk melakukan atribut, proses dan seleksi menyimpan atribut yang digunakan untuk proses deteksi. 4 Verteks Entity Kelas ini digunakan untuk membentuk sebuah verteks, dalam kelas ini juga terdapat PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 42 atribut yang digunakan untuk proses deteksi outlier. 5 CheckBoxTableModel Entity Kelas ini digunakan untuk membentuk dan mengatur seleksi atribut menjadi sebuah tabel model. 6 DataLoci Entity Kelas ini digunakan untuk menyimpan data hasil outlier. 7 KoneksiDataBase Controller Kelas ini digunakan untuk melakukan koneksi antara sistem dengan database. 8 LociTabelModel Entity Kelas ini digunakan untuk menampilkan DataLoci ke dalam tabel model. 9 HalamanAwal Boundary Kelas ini berisi tampilan awal yang digunakan untuk menghubungkan ke halaman utama. 10 HalamanBantuan Boundary Kelas ini berisi tampilan informasi atau petunjuk penggunaan sistem. 11 HalamanPilihDatabase Boundary Kelas ini berisi tampilan untuk memilih database yang digunakan untuk proses deteksi outlier. 12 HalamanPilihFile Boundary Kelas ini berisi tampilan untuk memilih file yang digunakan untuk deteksi outlier. proses PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 13 HalamanPilihTabel Boundary 43 Kelas ini berisi tampilan untuk memilih tabel basisdata yang akan digunakan untuk proses deteksi outlier. 14 HalamanTentang Boundary Kelas ini berisi tampilan informasi tentang sistem. 15 HalamaUtama Boundary Kelas ini berisi tentang tampilan halaman utama dari sistem yang terdiri dari proses input data, seleksi tabel, dan deteksi outlier. 4.3.3 Diagram Sequence Diagram Sequence digunakan untuk menggambarkan perilaku pada setiap skenario dan digunakan untuk memberikan gambaran detail dari setiap diagram use case. 1. Diagram Sequence Input Data dari File .xls atau .csv. 2. Diagram Sequence Input Data dari Tabel Basisdata. 3. Diagram Sequence Deteksi Outlier. 4. Diagram Sequence Simpan Hasil Deteksi Outlier. 5. Diagram Sequence Seleksi Atribut. Untuk penjelasan rinci dari masing-masing diagram sequence dapat dilihat pada lampiran 7. 4.3.4 Diagram Kelas Desain Diagram kelas desain adalah diagram yang berisi kelas yang akan digunakan untuk pembuatan sistem. Diagram Kelas Desain memuat semua kelas untuk menjalankan semua fungsi pada sistem dapat dilihat pada lampiran 8. Untuk rincian atribut dan method untuk masing-masing diagram kelas dapat dilihat pada lampiran 9. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 44 4.3.5 Rincian Algoritma Setiap Method Pada Tiap Kelas 1. Rincian Algoritma pada Method di Kelas DatabaseController. Nama Method Fungsi Method Algoritma Method tampilTabelOracle(Co Menampilkan nnection conn) seluruh daftar tabel daftar tabel dari basisdata Oracle yang dengan sintaks: select table_name ada 1. Membuat kueri untuk menampilkan di database Oracle. from user_tables user_tables. 2. Mengeksekusi kueri. 3. Mengembalikan nilai rset yang berisi daftar tabel yang ada pada basisdata Oracle. tampilTabelMYSql Menampilkan (Connection conn) seluruh dartar tabel daftar tabel dari basisdata MySQL yang dengan sintaks: show tables. ada 1. Membuat kueri untuk menampilkan di database mySQL. 2. Mengeksekusi kueri. 3. Mengembalikan nilai rset yang berisi daftar tabel yang ada pada basisdata mySQL. selectTable(Connectio n conn, namaTable) Menampilkan String tabel isi 1. Membuat kueri untuk menampilkan berdasarkan daftar tabel dari basisdata MySQL tabel yang dipilih. dengan sintaks: select * from + namaTable. 2. Mengeksekusi kueri. 3. Mengembalikan nilai rset yang berisi daftar tabel yang sesuai dengan parameter “namaTable” pada kueri. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 2. Nama Method 45 Rincian Algoritma pada Method di Kelas KoneksiDatabase. Fungsi Method Algoritma Method KoneksiDataBaseSQL Melakukan koneksi 1. Membuat koneksi basis data SQL ke (String url, String user, ke String password) Database MySQL. dalam method connection = DriverManager.getConnection(url, user, password). Parameter tersebut dicocokkan dengan nilai dari inputan pengguna pada login ke dalam database. 2. Jika inputan benar maka kan muncul pesan Koneksi Berhasil”. 3. JIka tidak maka akan muncul pesan error. 4. Mengembalikan connection. KoneksiDataBaseOrac Melakukan koneksi 1. Membuat koneksi basis data Oracle le(String url, String ke Database Oracle ke dalam method connection = user, String password) DriverManager.getConnection(url, user, password). Parameter tersebut dicocokkan dengan nilai dari inputan pengguna pada login ke dalam database. 2. Jika inputan benar maka kan muncul pesan Koneksi Berhasil”. 3. JIka tidak maka akan muncul pesan error. 4. Mengembalikan connection. OracleConnected(Stri ng url, username, password) Mengecek String sistem String terhubung apakah 1. Jika parameter pada method sudah KoneksiDataBaseOracle(String url, dengan String user, String password) terisi PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI database Oracle atau belum. 46 maka akan mengembalikan nilai true. 2. Jika tidak, maka akan mengembalikan nilai false. SQLConnected(String Mengecek apakah 1. Jika url, String username, sistem String password) terhubung database sudah parameter pada method KoneksiDataBaseSQL(String url, dengan String user, String password) terisi MySQL maka akan mengembalikan nilai atau belum. true. 2. Jika tidak, maka akan mengembalikan nilai false. getClosed() Memutuskan koneksi basis data. 1. Mengecek apakah sistem masih terhubung ke database, maka akan memanggil method Connected(). 2. Jika ya maka tutup koneksi dan mengembalikan nilai true. 3. Jika tidak maka mengembalikan nilai false. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3. Nama Method addVertex(String 47 Rincian Algrotima pada Method di Kelas Graph. Fungsi Method Membuat label, List<Double> untuk nilai) graph. vertex membentuk Algoritma Method 1. Membaca parameter berupa label dan list nilai. 2. Membuat vertex baru dengan label dan nilai yang diinputkan melalui parameter. addEdge(int awal, int Mengisi nilai edge akhir, Double nilai) pada vertex. 1. Membaca parameter berupa awal, akhir, dan nilai. 2. Mengisi nilai jarak kedalam edge[awal][akhir] dan edge[akhir][awal]. inputData(JTable Menginputkan data 1. Selama i = 0 dan i tidak lebih dari jTableData) dari Jtable ke dalam jumlah baris dalam jTable maka matrix dalam graph. lakukan langkah dibawah ini maka membuat variable label bertipe String dan listNilai yang bertipe arrayList Double. 2. Selama j = 0 dan j tidak lebih dari jumlah baris dalam jTable. Jika j = 0 maka set label = data yang ada dalam baris dan kolom tabel tersebut. 3. Selama j != 0 maka cek data tersebut merupakan data numerik, jika ya maka masukkan data pada baris (i, j), dan jika tidak maka masukkan nilai 0.0 ke dalam arrayList nilai. 4. Memanggil nilai addVertex dengan inputan label dan list Nilai. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 48 5. Selama i = 0 dan i tidak lebih dari jumlah baris pada jTable, selama j = i + 1 dan j tidak lebih dari jumlah baris dari jTable, dan jika i tidak sama dengan j maka panggil method addEdge dan memasukkan inputan j dan j kemudian menghitung jarak berdasarkan Distance rumus Ecludiian dengan memanggil method cariJarakEcludian. cariJarakEcludian (int Menghitung indexAwal, int dengan indexTujuan) jarak 1. Membaca nilai parameter input rumus method yaitu nilai awal dan nilai Euclidean Distance. akhir. 2. Membuat dua buah list yaitu a dan b. a merupakan indexAwal dan vertexList b merupakan vertexList indexAkhir. 3. Mengisi vertexList[awal].getNilai da vertexList[akhir].getNilai. 4. Selama i < a.size() maka lakukan perhitungan total = total + Math.pow((a.get(i) - b.get(i)), 2); 5. Mengembalikan Math.sqrt(total). tampilJarakEuclidean( Untuk menampilkan ) perhitungan jarak 1. Jika i = 0 dan I kurang dari jumlah baris vertexList maka akan dengan menampilkan vertexList[i] dengan menggunakan rumus memanggil method getLabel(). Euclidean Distance. 2. Jika i = 0 dan i kurang dari jumlah baris adjMat maka akan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 49 menampilkan vertexList[i] dengan memanggil method getLabel(). 3. Jika j = 0 dan j kurang dari jumlah baris vertexList maka akan menampilkan adjMat[i][j]. cariRNeighborhood(D Untuk mencari ouble radius, int indeks RNeighborhood. 1. Membuat ArrayList dengan nama a. 2. Selama i = 0 dan i kurang dari jumlah baris vertexList, cek apakah adjMat[indeks][i] != -1, dan adjMat[indeks][i] != 0, lalu cek apakah adjMat[indeks[i] kurang dari sama dengan radius. Jika ya maka tambahkan vertexList[i] ke dalam array a. 3. Mengembalikan a. cariAnggotaRNeighbo Untuk mencari 1. Set semua wasVisited dari semua r(int indeks, Double anggota RNeighbor. radius) obyek (vertex) menjadi false. 2. Membuat variabel AnggotaRNeighbor bertipe Double, temp1 bertipe Double, dan anggotaNpir yang bertipe int. 3. Selama i = 0 dan i tidak lebih dari jumlah baris vertexList, adjMAt[indeks][i] != -1 dan dan wasVisited == false, jika ya maka cek apakah adjMat[indeks][i] kurang dari sama dengan radius, jika ya maka set adjMat[indeks][i] ke dalam variabel temp1. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 50 4. Memanggil variabel anggotaNpir untuk menampung npir[i]. 5. Set AnggotaRNeighbor = temp1. 6. Kemudian ubah wasVisited dari arrayList menjadi true dengan memanggil method Search2 dengan inputan (temp1, indeks). 7. Mengembalikan AnggotaRNeighbor. setAnggotaRNeighbor Untuk mengeset 1. Membuat variabel indeks dengan (String label, Double anggotaRNeighbor memanggil method Search dengan radius) parameter label. ke dalam vertex. 2. Memanggil method setrNeighbors pada vertexList[indeks] inputan hasil dengan dari cariRNeighborhood dengan inputan vertexList[indeks].getAnggotaRNei ghbor(), index. setRNeighborhood(Str Untuk mengeset 1. Membuat variabel indeks dengan ing label) variable memanggil method Seacrh dengan RNeighborhood ke parameter label. dalam vertex. 2. Memanggil setAnggotaRNeighbors method pada vertexList[indeks] dengan inputan hasil dari cariAnggotaRNeighborhood dengan parameter indeks dan radius. setNpir() Untuk npir. mengeset 1. Membuat variabel x. 2. Selama i = 0 dan i tidak lebih dari jumlah baris adjMat, jika j = 0 dan j PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 51 tidak lebih dari jumlah barus vertexList, maka akan di cek apakah adjmat[i][j] tidak kurang dari sama dengan radius, jika ya maka x = x + 1. Mengeset rneighbors[i][j] = j. 3. Mengeset npir[i] = x; 4. Mengesey nilai x = 0; tampilRNeighbor() Untuk menampilkan 1. Membuat variabel rn. anggota 2. Selama i = 0 dan i tidak lebih dari npir dan n(pi, r) jumlah barus adjMat, dan jika j = 0 dan j tidak lebih dari jumlah baris j, cek apakah adjMat[i][j] tidak lebih dari sama dengan radius, jika ya maka rn = rn + 1 dan menampilkan anggota npir dengan memanggil adjMat[i][j]. 3. Menampilkan n(pi,r) dengan memanggil atribut rn. 4. Mengeset niali rn = 0; cariARNeighborhood (Double indeks) radius, Untuk mencari int anggota ARneighbor. 1. Membuat ArrayList dengan nama a. 2. Selama i = 0 dan i kurang dari jumlah baris vertexList, cek apakah adjMat[indeks][i] != -1, dan adjMat[indeks][i] != 0, lalu cek apakah adjMat[indeks[i] kurang dari sama dengan alpha * radius. Jika ya maka tambahkan vertexList[i] ke dalam array a. 3. Mengembalikan a. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI cariAnggotaARNeigh Untuk mencari 1. Set semua wasVisited dari semua bor(int indeks, Double anggota radius) 52 obyek (vertex) menjadi false. ARneighbor. 2. Membuat variabel AnggotaARNeighbor bertipe Double, temp2 bertipe Double, dan anggotaNpar yang bertipe int. 3. Selama i = 0 dan i tidak lebih dari jumlah baris vertexList, adjMAt[indeks][i] != -1 dan dan wasVisited == false, jika ya maka cek apakah adjMat[indeks][i] kurang dari sama dengan alpha * radius, jika ya maka set adjMat[indeks][i] ke dalam variabel temp2. 4. Memanggil variabel anggotaNpar untuk menampung npar[i]. 5. Set AnggotaARNeighbor = temp2. 6. Kemudian ubah wasVisited dari arrayList menjadi true dengan memanggil method Search2 dengan inputan (temp2, indeks). 7. Mengembalikan AnggotaARNeighbor. setAnggotaARNeighb Untuk mengeset 1. Membuat variabel indeks dengan or(String label, Double anggotaARNeighbor memanggil method Seacrh dengan radius) parameter label. ke dalam vertex. 2. Memanggil method setrNeighbors pada vertexList[indeks] inputan dengan hasil dari cariARNeighborhood dengan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 53 inputan vertexList[indeks].getAnggotaAR Neighbor(), index. setARNeighborhood( Untuk mengeset String label) variable memanggil method Search dengan ARNeighborhood ke parameter label. dalam vertex. 1. Membuat variabel indeks dengan 2. Memanggil method setAnggotaARNeighbors pada vertexList[indeks] dengan inputan hasil dari cariAnggotaARNeighborhood dengan parameter indeks dan radius. setNpar() Untuk mengeset npar. 1. Membuat variabel x. 2. Selama i = 0 dan i tidak lebih dari jumlah baris adjMat, jika j = 0 dan j tidak lebih dari jumlah barus vertexList, maka akan di cek apakah adjmat[i][j] tidak kurang dari sama dengan alpha * radius jika ya maka x = x + 1. Mengeset arneighbors[i][j] = j. 3. Mengeset npar[i] = x; 4. Mengesey nilai x = 0; tampilARNeighbor() Untuk menampilkan 1. Membuat variabel arn. anggota npar dan 2. Selama i = 0 dan i tidak lebih dari n(pa, r) jumlah barus adjMat, dan jika j = 0 dan j tidak lebih dari jumlah baris j, cek apakah adjMat[i][j] tidak lebih dari sama dengan radius, jika ya PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI maka arn = arn + 54 1 dan menampilkan anggota npar dengan memanggil adjMat[i][j]. 3. Menampilkan n(pa,r) dengan memanggil atribut arn. 4. Mengeset niali arn = 0; setJumlahAnggota() Untuk mengeset jumlah anggota. 1. Membuat variabel x dan y dengan tipe int. 2. Selama i = 0 dan i kurang dari jumlah baris adjMat, dan selama j = 0 dan j kurang dari jumlah baris vertexList, jika ya maka cek apakah adjMat[i][j] kurang dari sama dengan radius, jika ya x = x + 1 dan set rneighbors[i][j] = j. 3. Jika tidak set rneighbors[i][j] = max. 4. Cek apakah adjmat[i][j] kurang dari sama dengan alpha * radius, jika ya maka y = y + 1 dan set arneighbors[i][j] = j. 5. Set npir[i] = x. 6. Set npar[i] = y. 7. Set nilai x = 0. 8. Set nilai y = 0. cariLoci() Untuk outlier. mencari 1. Membuat variabel jml_npar, jml_npar2, avgNpira, stdevNpira, mdef, omdef, komdef dengan tipe Double. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 2. Memanggil 55 method setJumlahAnggota(). 3. Mengecek apakah rneighbor[i][j] tidak sama dengan max. jika ya maka jml_npar = jml_npar + npar[j]. npar[j] digunakan untuk menyimpan nilai rneighbors yang kurang dari max. 4. Menghitung rata-rata npar dengan rumus avgNpira = jml_npar / npir[i]. 5. Menampilkan memanggil avgNpira hasil dengan perhitungan avgNpira. 6. Mengecek apakah rneighbor[i][j] tidak sama dengan max. jika ya maka ekseksui rumus jml_npar2 = jml_npar2 + Math.pow((npar[j] avgNpira), 2). 7. Menghitung standar deviasi npira dengan memanggil rumus stdevNpira = Math.sqrt(jml_npar2 / npir[i]). 8. Menampilkan stdevNpira dengan memanggil hasil perhitungan stdevNpira. 9. Menghitung nilai mdef dengan rumus mdef = 1 - (npar[i] / avgNpira). 10. Menampilkan nilai mdef dengan memanggil hasil perhitungan mdef. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 11. Mengeset mdef 56 kedalam vertexList[i] dengan memanggil method setMdef. 12. Menghitung omdef dengan rumus omdef = stdevNpira / avgNpira. 13. Menampilkan nilai omdef dengan memanggil hasil perhitungan omdef. 14. Mengeset omdef kedalam vertexList[i] dengan memanggil method setOmdef. 15. Menghitung komdef dengan rumus komdef = konstanta * omdef. 16. Menampilkan nilai komdef dengan memanggil hasil perhitungan komdef. 17. Mengeset komdef kedalam vertexList[i] dengan memanggil method setKomdef. 18. Jika nilai mdef lebih besar dari komdef maka akan dianggap sebagai outlier, jika tidak maka bukan outlier. 19. Mengeset jml_npar = 0.0; 20. Mengeset jml_npar2 = 0.0; 21. Mengeset nilai mdef = 0.0. 22. Mengeset nilai omdef = 0.0. 23. Mengeset nilai komdef = 0.0. setDataLoci(String Untuk label) tabel mengeset HasilDeteksiOutlier 1. Membuat ArrayList dengan nama dlc yang bertipe List<DataLoci>. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI agar hasil deteksi outlier dapat di tampilkan ke dalam tabel. 57 2. Membuat atribut dl dengan tipe DataLoci. 3. Mengecek apakah nilai Mdef lebih besar dari nilai Komdef dengan cara memanggil method getMdef() dan getKomdef(). 4. Jika ya, membuat obyek baru dengan nama dl untuk mengeset label, mdef, dan komdef dengan memanggil method getLabel(), getMdef(), dan getKomdef(). 5. Menambahkan obyek dl kedalam List<DataLoci>. 6. Membuat obyek dari LociTabelModel dengan nama ltm. 7. Mengembalikan ltm. 4. Rincian Algrotima pada Method di Kelas CheckBoxTableModel. Nama Method add(int Fungsi Method Algoritma Method a, Menambah data ke 1. Membaca parameter a dan field_m. SeleksiAtribut dalam 2. Menambahkan nilai field_m sebagai field_m) CheckBoxTableMode. removeRow() Menghapus data di index ke-a ke dalam list. atribut 1. Membuat yang di hapus dari tabel seleksi atribut. ArrayList bertipe SeleksiAtribut dengan nama sa. 2. Selama select kurang dari list maka di cek apakah atribut tersebut telah dipilih. Jika ya maka nilai select ditambahkan pada ArrayList sa. 3. Mengeset list = sa. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 5. 58 Rincian Algrotima pada Method di Kelas HalamanUtama. Nama Method pilihFile() Fungsi Method Algoritma Method Untuk memilih file 1. Menampilkan kotak dialog Open bertipe .xls atau .csv. File. 2. namaFile menangkap nama file terpilih. 3. Cut_namaFile = namaFile.split("\\.") 4. Jika cut_namafile adalah .xls maka jalankan langkah pada tabel pilih .xls 5. Jika cut_namafile adalah .csv maka jalankan langkah pada tabel pilih .csv 6. Jika buka .xls dan .csv maka menampilkan pesan peringatan. pilihDataBase(Koneks Untuk iDataBase kdb, String data table) memasukkan dari basisdata. tabel 1. Mengambil isi tabel dari basis data melalui method selectTable (kdb.getConnection(), table). 2. Membuat vector baru columnName dan data. 3. Selama i = 1, dan i kurang dari sama dengan columnCount maka columnName diisi dengan nama kolom ke i yang didapat dari basisdata melalui getColumnName. method PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 59 4. Selama rset.next benar maka buat vector data2 diisi dengan baris di kolom ke i. 5. Tambahkan data2 ke dalam data. 6. Selama i = 1 dan i kurang dari sama dengan columnCount maka data2 diisi dengan data pada setiap baris di kolom ke i. 7. Tambahkan data2 ke dalam data. 8. Selama i = 0 dan i kurang dari model.getColumnCount, membuat obyek seleksiAtribut kemudian memanggil method setAtribut untuk memanggil columnName. 9. Memanggil setPilih(false). 10. Menambahkan seleksiAtribut kedalam cexboxtable. 11. Atur tabel dataPreprocessTable. hapusAtribut() Menghapus atribut tabel data sesuai atribut yang dipilih pengguna. 1. Selama i = 0 dan i kurang dari jumlah baris seleksiTable. 2. Jika seleksiTable.getValueAt(i, 1).equals(true) maka cek apakah nilai ke i dari seleksiTable berisi nama kolom pada dataPreprocessTable. 3. Membuat variabel tcol1 dengan inisialisasi nilai dataPreprocessTable.getColumnM odel().getColumn(j). 4. Membuat variabel tcol 2 dengan inisialisasi nilai PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 60 dataOutlierTable.getColumnMode l().getColumn(j). 5. Hapus kolom pada dataPreprocessTable. 6. Hapus kolom pada dataOutlierTable. 7. Hapus baris pada cekboxtable. submitData() Memasukkan data 1. Membuat varaibel tableModel pada tabel data pada dengan mengambil model dari tab Preprocessing dan tabel dataPreprocessTable. tab Deteksi Outlier. 2. Mengeset dataOutlierTable dengan tablemodel. 3. Mengeset dataOutlierTable.setAutoCreateR owSorter(true). 4. Menampilkan tabel pada tabel Deteksi pada tabbed pane Deteksi Outlier dengan jTabbedPane1.setSelectedCompo nent(deteksiPanel) dan jTabbedPane1.setEnabledAt(1, true); prosesDeteksi() Menerima input radius 1. Jika nilai radius kosong akan dan alpha untuk proses menampilkan pesan “Nilai radius deteksi outlier. tidak boleh kosong!”, lakukan pengisian ulang parameter tersebut. 2. Jika nilai alpha kosong akan menampilkan pesan “Nilai alpha tidak boleh kosong!”, lakukan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI pengisian ulang 61 parameter tersebut. 3. Jika nilai konstanta kosong akan menampilkan pesan “Nilai konstanta tidak boleh kosong!”, lakukan pengisian ulang parameter tersebut. 4. Membuat variabel t1 bertipe long. 5. Jika nilai radius, alpha, dan konstanta terisi, maka cek apakah nilai radius lebih besar dari 0, nilai alpha lebih besar dari 0, nilai alpha kurang dari sama dengan 1, dan nilai konstanta bilangan bulat positif lebih besar dari 0. 6. Jika tidak akan menampilkan pesan “Nilai radius harus bilangan real" + "\n" + "nilai alpha antara 01 + "\n" + "dan nilai konstanta harus bilangan bulat positif > 0". 7. Jika ya buat obyek baru dengan nama graph jumlah dan memanggil baris pada dataOutlierTable. 8. Mengeset radius. 9. Mengeset alpha. 10. Mengeset konstanta. 11. Memanggil method inputData ke dalam dataOutlierTable. 12. Memanggil tampilJarakEuclidean(). method PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 13. Memanggil 62 method tampilRNeighbor(). 14. Memanggil method tampilARNeighbor(). 15. Memanggil method cariLoci(). 16. Mengeset HasilOutlierTable dengan mengeset model untuk setDataLoci(dataOutlierTable.get ColumnName(0)). 17. Membuat variabel t2 bertipe long. 18. Menghitung waktu proses deteksi dengan rumus ((t2 - t1) * java.lang.Math.pow(10, -9) dan menampilkan pada lamaDeteksiTextField. simpanLoci() Untuk menyimpan hasil deteksi outlier ke 1. Membuat obyek fileChooser. 2. Membaca lokasi penyimpanan file dalam file .xls, .doc, dan disimpan atau .txt. filename. dalam variabel 3. Membaca format file yang dipilih pengguna dengan fileChooser.getFileFilter().getDes cription() kemudian ditampung dalam variabel ext. 4. Jika ext = Microsoft Excel (*.xls)" maka format yang dipilih adalah .xls. 5. Membuat variabel model dengan memanggil model HasilOutlierTable. pada PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 63 6. Membuat obyek excel yang bertipe FileWriter. 7. Jika i = 0 dan i kurang dari jumlah kolom, maka memanggil method write yang berisi model.getColumnName(i). 8. Jika i = 0 dan i kurang dari jumlah baris, jika j = 0 dan j kurang dari jumlah kolom, maka memanggil method write yang berisi model.getValueAt(i, j).toString(). 9. Excel.close(). 10. Jika ext = Microsoft Word (*.doc)" maka format yang dipilih adalah .doc. 11. Membuat obyek bfw yang bertipe BufferedWriter. 12. Jika i = 0 dan i kurang dari jumlah kolom, HasilOutlierTable maka memanggil method write yang berisi HasilOutlierTable.getColumnNam e(i). 13. Jika i = 0 dan i kurang dari jumlah baris HasilOutlierTable, jika j = 0 dan j kurang dari jumlah kolom HasilOutlierTable, maka memanggil method write yang berisi HasilOutlierTable.getValueAt(i, j).toString(). PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 64 14. bfw.close(); 15. Jika ext = "Text Documents (*.txt)" maka format yang dipilih adalah .txt. 16. Membuat obyek bfw yang bertipe BufferedWriter. 17. Jika i = 0 dan i kurang dari jumlah kolom, HasilOutlierTable maka memanggil method write yang berisi HasilOutlierTable.getColumnNam e(i). 18. Jika i = 0 dan i kurang dari jumlah baris HasilOutlierTable, jika j = 0 dan j kurang dari jumlah kolom HasilOutlierTable, maka memanggil method write yang berisi HasilOutlierTable.getValueAt(i, j).toString(). 19. bfw.close(); 20. Jika proses simpan gagal akan menampilkan pesan “Penyimpanan Gagal”. 21. Jika proses simpan berhasil akan mnampilkan pesan “Hasil Deteksi Outlier Telah Berhasil Disimpan”. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4.4 65 Perancangan Struktur Data Untuk mengembangkan sebuah sistem atau aplikasi diperlukan adanya perancangan struktur data. Konsep struktur data yang digunakan adalah konsep Graf tak berarah dengan menggunakan struktur data matriks dua dimensi. Dengan menggunakan graf akan mempermudah dalam memetakan obyek data dan jarak sebuah obyek dengan obyek yang lainnya. Jarak masingmasing obyek data dinyatakan dalam edge dan nilai edge dari satu vertex ke vertex lain, kemudian akan disimpan dalam bentuk matriks dua dimensi. 4.4.1 Graf Graf merupakan sebuah kumpulan vertex (simpul-simpul) yang saling terhubung melalui sebuah edge (garis). Yang dinyatakan sebagai vertex adalah obyek data yang akan dicari outliernya. Vertex tersebut mengandung list yang akan digunakan untuk menyimpan nilai atribut sebuah obyek data. Kemudian akan dihitung jarak antar objek data, jarak tersebut dinyatakan sebagai edge. Yang dimaksud dengan obyek adalah obyek Mahasiswa, yang dimaksud dengan vertex adalah list nilai mahasiswa. Kemudian untuk edge merupakan jarak dari nilai mahasiswa satu dengan lainnya. Ilustrasi graph dipapakan pada gambar 4.1. Gambar 4.1 Ilustrasi Struktur Data Graf PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 66 4.4.2 Matriks Dua Dimensi Pertama-tama, edge untuk setiap obyek data mahasiswa masih belum ada sehingga dinyatakan dengan nilai -1. Kemudian jarak obyek data terhadap dirinya sendiri dinyatakan dengan nilai 0. Ilustrasi struktur data matriks dua dimensi dipaparkan pada tabel 4.2. Tabel 4.2 Ilustrasi Struktur Data Matriks Dua Dimensi Mahasiswa[1] Mahasiswa[2] Mahasiswa[3] Mahasiswa[1] 0 -1 -1 Mahasiswa[2] -1 0 -1 Mahasiswa[3] -1 -1 0 Setelah dilakukan perhitungan jarak antar objek, maka jarak objek -1 diubah sesuai dengan jarak antar obyek setelah dilakukan perhitungan jarak dengan menggunakan rumus jarak Eucludian Distance. Untuk jarak obyek data terhadap dirinya sendiri tetap bernilai 0. Ilustrasi struktur data matriks dua dimensi setelah dilakukan perhitungan jarak dan vertex dipaparkan pada tabel 4.3. Tabel 4.3 Ilustrasi Struktur Data Matriks Dua Dimensi Setelah Dilakukan Perhitungan Jarak antar Vertex Mahasiswa[1] Mahasiswa[2] Mahasiswa[3] Mahasiswa[1] 0 2.58 3.21 Mahasiswa[2] 2.58 0 1.05 Mahasiswa[3] 3.21 1.05 0 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4.5 67 Perancangan Antarmuka 4.5.1 Tampilan Halaman Awal Halaman awal adalah tampilan pertama saat sistem dijalankan. Pada halaman ini terdapat button Masuk. Jika user menekan button tersebut, maka sistem akan menampilkan halamn selanjutnya, yaitu halaman utama. SISTEM PENDETEKSI OUTLIER MASUK Universitas Sanata Dharma Yogyakarta Copyright © 2014 Gambar 4.2 Tampilan Halaman Utama 4.5.2 Tampilan Halaman Utama Pada halaman ini proses pendeteksian outlier dilakukan. Pada halaman utama terdapat dua tab, yaitu tab untuk melakukan preposesing dan tab untuk mendeteksi outlier. Pada tab preposesing terdapat fungsi untuk memilih file mana yang akan digunakan dan database mana yang akan digunakan. Terdapat pula fungsi untuk PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 68 menyeleksi atribut, pada fungsi ini user dapat menyeleksi atribut mana saja yang akan dipakai. SISTEM DETEKSI OUTLIER MENGGUNAKAN ALGORITMA LOCAL CORRELATION INTEGRAL Preprosessing Deteksi Outlier Pilih Database Pilih File Tentang Bantuan Atribut 2 Atribut 1 Atribut 3 Atribut 4 Seleksi Atribut Jumlah Data Atribut Atribut 1 Atribut 2 Tandai Semua Batal Hapus Keluar Submit Batal Gambar 4.3 Tampilan Halaman Utama Tab Preprosesing Kemudian tab yang kedua adalah tab deteksi outlier, pada tab deteksi outlier user memasukkan nilai radius, alpha, dan konstanta kemudian melakukan proses deteksi outlier dengan menekan button Proses. Kemudian pada hasilnya akan ditampilkan pada tabel hasil deteksi outlier. User juga dapat menyimpan hasil perhitungan didalam sebuah file yang berbentuk word, excel, dan txt. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI SISTEM DETEKSI OUTLIER MENGGUNAKAN ALGORITMA LOCAL CORRELATION INTEGRAL Preprosessing Deteksi Outlier Proses Algoritma Local Correlation Integral radius alpha Proses konstanta Tentang Atribut 1 Atribut 2 Atribut 3 Atribut 4 Bantuan Jumlah Data Hasil Deteksi Outlier No Mahasiswa MDEF KOMDEF Keluar Simpan Hapus Gambar 4.4 Tampilan Halaman Utama Tab Deteksi Outlier 69 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4.5.3 70 Tampilan Halaman Bantuan Halaman bantuan berisi petunjuk-petunjuk penggunaan sistem untuk mendeteksi outlier dengan menggunakan algoritma Local Correlation Integral mulai dari tahap preprosesing data sampai dengan proses deteksi outlier. SISTEM DETEKSI OUTLIER MENGGUNAKAN ALGORITMA LOCAL CORRELATION INTEGRAL Petunjuk Penggunaan A. Petunjuk Preprosessing Data B. Petunjuk Proses Deteksi Outlier Kembali Gambar 4.5 Tampilan Halaman Bantuan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4.5.4 71 Tampilan Halaman Tentang Halaman tentang berisi nama sistem, serta nama pembuat sistem tersebut. SISTEM PENDETEKSI OUTLIER PENGEMBANGAN ALAT BANTU DETEKSI OUTLIER MENGGUNAKAN ALGORITMA LOCAL CORRELATION INTEGRAL Dibuat oleh: FELISITAS BRILLIANTI 105314013 PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2014 Kembali Gambar 4.6 Tampilan Halaman Tentang PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4.5.5 72 Tampilan Menu Keluar Pada halaman menu keluar, user dihadapkan pada dua button, yaitu button YA dan button TIDAK. Jika user menekan button TIDAK, maka sistem akan kembali pada halaman utama, jika user menekan button YA maka sistem akan keluar. Apakah anda ingin keluar dari sistem? YA TIDAK Gambar 4.7 Tampilan Menu Keluar 4.5.6 Tampilan Halaman Pilih File Pada halaman pilih file, user dapat memilih file mana yang akan digunakan untuk proses deteksi. Look In: File Name: Files of type: OPEN Gambar 4.8 Tampilan Halaman Pilih File CANCEL PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4.5.7 73 Tampilan Halaman Pilih Database Pada halaman pilih database terdapat fungsi untuk memilih database mana yang akan digunakan. Kemudian user diminta untuk memasukkan username, password, database name, dan URL. PILIH KONEKSI DATABASE Username Password Database Name Url OK BATAL Gambar 4.9 Tampilan Halaman Pilih Database PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4.5.8 74 Tampilan Halaman Pilih Tabel Pada halaman pilih tabel, user dapat memilih tabel mana yang akan digunakan. Tabel tersebut berada dalam database. Kemudian setelah menekan button OK maka isi tabel tersebut akan ditampilkan ke halaman utama. PILIH TABEL OK BATAL Gambar 4.10 Tampilan Halaman Pilih Tabel PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB V IMPLEMENTASI SISTEM Bab ini berisi tentang implementasi Sistem Deteksi Outlier yang menggunakan Algoritma Local Correlation Integral. Implementasi sistem ini dilakukan dengan menggunakan NetBeans IDE 6.9.1 pada komputer dengan spesifikasi processor Inter Core 2 Duo 2.2 GHz, RAM 2.00 GB, dan hardisk 320 GB. Sistem ini dibuat sesuai dengan perancangan sistem yang dibuat pada bab sebelumnya. Dan sistem ini dibuat dengan menggunakan bahasa pemrograman Java. 5.1 Implementasi Antarmuka Sistem Pendeteksi Outlier menggunakan Algoritma Local Correlation Integral telah selesai dibuat menjadi sebuah aplikasi. Berikut ini adalah tampilan antarmuka dari Sistem Pendeteksian Outlier menggunakan Algoritma Local Correlation Integral. 5.1.1 Implementasi Halaman Awal Halaman awal adalah tampilan yang pertama kali keluar pada saat sistem dijalankan. Pada halaman ini terdapat tombol ‘Masuk’. Jika pengguna ingin masuk kedalam sistem Pendeteksi Outlier menggunakan Algoritma Local Correlation Integral, maka pengguna harus menekan tombol ‘Masuk’. 75 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 76 Gambar 5.1 Antarmuka Halaman Awal 5.1.2 Implementasi Halaman Utama Halaman utama akan muncul setelah pengguna menekan tombol ‘Masuk’. Pada halaman utama ini terdapat dua Tabbed Pane yaitu tab Preprosessing dan tab Deteksi Outlier. Pada halaman utama ini juga terdapat tombol ‘Bantuan’, tombol ‘Tentang’, dan tombol ‘Keluar’ di sebelah kiri halaman utama. Halaman utama ini merupakan fungsi inti dari sistem. Pada tab Preprosessing terdapat tombol ‘Pilih File’, tombol ‘Pilih Database’, tombol ‘Tandai’, tombol ‘Tandai Semua’, tombol ‘Batal’, tabel ‘dataPreprocessTable’, tabel ‘dataOutlierTable’, dan terdapat text field ‘jumlahDataSeleksiTextField’ dan text field ‘pilihFileTextField’. Pada tab Deteksi Outlier terdapat tombol ‘Proses’, tombol ‘Simpan’, dan tombol ‘Hapus’, text field ‘radiusTextField’, ‘alphaTextField’, ‘jumlahDataOutlierTextField’, dan ‘jumlahOutlierTextField’. Terdapat juga tabel ‘dataOutlierTable’ dan ‘HasilOutlierTable’. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 77 Jika pengguna ingin mengolah data berformat .xls atau .csv maka pengguna menekan tombol ‘Pilih File’ untuk mencari data yang akan diolah seperti dibawah ini. Gambar 5.2 Kotak Dialog saat memilih File Setelah memilih file kemudian pengguna menekan tombol ‘Open’. Setelah menekan tombol ‘Open’ maka data tersebut akan ditampilkan dalam tabel seperti tampak pada antarmuka di bawah ini: PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 78 Gambar 5.3 Antarmuka Halaman Utama (data file .xls tertampil) Kemudian pengguna melakukan seleksi atribut untuk memilih atribut mana yang akan di gunakan untuk proses deteksi dengan cara memilih 1 atau lebih atribut yang akan dihapus. Gambar 5.4 Kotak Seleksi Atribut Selanjutnya pengguna meneka tombol ‘Hapus’ untuk menghapus atribut yang tidak digunakan untuk proses deteksi. Kemudian sistem akan menampilkan tab Deteksi Outlier. Kemudian pada tab Deteksi Outlier pengguna menginputkan nilai radius, alpha, dan konstanta. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 79 Gambar 5.5 Proses Deteksi Outlier Setelah pengguna menginputkan nilai radius, alpha, dan konstanta pengguna menekan tombol ‘Proses’. Gambar 5.6 Tampilan Hasil Outlier Selanjutnya pengguna dapat menyimpan hasil outlier dengan menekan tombol ‘Simpan’. Hasil outlier dapat disimpan dengan format .doc, .xls, dan .txt. Gambar 5.7 Tampilan Save Dialog PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 80 Setelah selesai menyimpan, jika file berhasil disimpan akan muncul pesan “Hasil Deteksi Outlier Telah Berhasil Disimpan di E:\Hasil Outlier”. Gambar 5.8 Pesan Ketika Proses Penyimpanan Hasil Outlier Berhasil Dilakukan 5.1.3 Implementasi Halaman Pilih Database Halaman Pilih Database adalah halaman yang digunakan untuk input data dari database. Halaman pilih database muncul ketika pengguna menekan tombol ‘Pilih Database’ pada tab Preprosessing. Gambar 5.9 Antarmuka Halaman Pilih Database Pada halaman Pilih Database pengguna memilih koneksi Database ‘MySQL’ atau ‘Oralce’. Kemudian pengguna memasukkan Username, Password, Database Name, dan URL. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 81 Gambar 5.10 Antarmuka Halaman Pilih Database (Setelah Pengguna memilih Database) Selanjutnya pengguna menekan tombol ‘OK’, jika username, password, nama database, dan URL yang dimasukkan benar maka akan muncul pesan “Koneksi Berhasil”. Gambar 5.11 Pesan Koneksi Berhasil 5.1.4 Implementasi Halaman Tampil Tabel Halaman Tampil Tabel akan muncul setelah pengguna berhasil terhubung atau login ke database. Kemudian pengguna memilih tabel yang akan di deteksi. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 82 Gambar 5.12 Antarmuka Halaman Tampil Tabel Setelah menekan tombol ‘OK’ sistem akan menampilkan data pada tabel di Halaman Utama tab Preprosessing. Gambar 5.13 Hasil Input Data dari Database PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 83 5.1.5 Implementasi Halaman Bantuan Halaman ini berisi tentang informasi tentang bagaimana sistem ini digunakan. Halaman ini dapat muncul ketika pengguna menekan tombol ‘Bantuan’ pada halaman utama. Gambar 5.14 Antarmuka Halaman Bantuan 5.1.6 Implementasi Halaman Tentang Halaman ini berisi tentang informasi sistem yang telah di buat, yaitu pengembangan alat bantu Deteksi Outlier Menggunakan Algoritma Local Correlation Integral. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 84 Gambar 5.15 Antarmuka Halaman Tentang 5.1.7 Impelementasi Halaman Konfirmasi Keluar Halaman Konfirmasi Keluar ditampilkan pada saat pengguna menekan tombol ‘Keluar’. Jika pengguna menekan tombol ‘OK’ maka akan keluar dari sistem, tetapi jika pengguna menekan tombol ‘TIDAK’ maka sistem akan kembali ke halaman utama. Gambar 5.16 Antarmuka Halaman Konfirmasi Keluar PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 85 5.1.8 Implementasi Pengecekan Masukan Sistem pendeteksi outlier menggunakan algoritma Local Correlation Integral menyediakan fungsi error handling untuk mengatasi kesalahan pengguna pada waktu melakukan input ke sistem pendeteksi outlier. 1. Pada saat menginputkan file yang bukan bertipe .xls atau .csv sistem akan menampilkan pesan “File yang Anda pilih harus berformat .xls atau .csv”. Gambar 5.17 Error Handling (1) 2. Pada saat pengguna tidak memasukkan Username, Password, Nama Database, atau URL pada saat akan login database untuk menginput data, maka sistem akan menampilkan pesan “Username, Password, Nama Database, dan URL tidak boleh kosong!”. Gambar 5.18 Error Handling (2) 3. Pada saat pengguna salah memasukkan Username, Password, Nama Database, atau URL pada saat akan login database untuk menginput data, maka sistem akan menampilkan pesan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 86 “Username, Password, Nama Database, dan URL yang anda masukkan”. Gambar 5.19 Error Handling (3) 4. Pada saat pengguna menekan tombol ‘Proses’ tetapi pengguna tidak menginputkan nilai radius. Maka sistem akan menampilkan pesan “Nilai radius tidak boleh kosong!”. Gambar 5.20 Error Handling (4) 5. Pada saat pengguna menekan tombol ‘Proses’ tetapi pengguna tidak menginputkan nilai alpha. Maka sistem akan menampilkan pesan “Nilai alpha tidak boleh kosong!”. Gambar 5.21 Error Handling (5) 6. Pada saat pengguna menekan tombol ‘Proses’ tetapi pengguna tidak menginputkan nilai konstanta. Maka sistem menampilkan pesan “Nilai konstanta tidak boleh kosong!”. akan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 87 Gambar 5.22 Error Handling (6) 7. Pada saat pengguna menekan tombol ‘Proses’ tetapi pengguna menginputkan nilai radius bukan bilangan real atau pengguna tidak menginputkan nilai alpha dengan bilangan real antara 0-1. Maka sistem akan menampilkan pesan “Nilai radius harus bilangan real, nilai alpha antara 0-1 dan nilai konstanta harus bilangan bulat positif > 0”. Gambar 5.23 Error Handling (7) 8. Pada saat pengguna menginputkan nilai radius berupa huruf dan angka negatif. Gambar 5.24 Error Handling (8) PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 88 9. Pada saat pengguna menginputkan nilai alpha berupa huruf dan angka negatif. Gambar 5.25 Error Handling (9) 10. Pada saat pengguna menginputkan nilai konstanta berupa huruf dan angka negatif. Gambar 5.26 Error Handling (10) 5.2 Implementasi Struktur Data Tahap ini berisi tentang implementasi struktur data Sistem ini menggunakan konsep graph dengan matriks dua dimensi. 5.2.1 Implementasi kelas Graph.java Graph berfungsi untuk membentuk graph dan untuk membentuk verteks dari setiap obyek data. Dalam graph juga terdapat edge yang berfungsi untuk menghubungkan verteks. Method graph ini menggunakan sebuah parameter yaitu maxVertex. Parameter maxVertex berfungsi sebagai ukuran maksimum dari verteks. Method addVertex berfungsi untuk membuat sebuah verteks. Dalam method ini menggunakan dua parameter yaitu label dan nilai. Setiap obyek merupakan verteks. Kemudian untuk memasukkan nilai edge antar obyek, nilai edge diinputkan melalui PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 89 method addEdge. Nilai edge adalah nilai jarak yang dihitung menggunakan rumus Euclidean Distance. 5.2.2 Implementasi kelas Verteks.java Kelas Verteks merupakan kelas yang menyimpan setiap obyek data ke dalam verteks. Dalam kelas ini terdapat beberapa atribut yang berfungsi untuk menghitung dan melakukan proses deteksi outlier pada setiap obyek data. Atribut yang pertama adalah label. Atribut ini berfungsi untuk menyimpan label pada setiap obyek. Atribut yang kedua adalah nilai, atribut ini berfungsi untuk menyimpan nilai dari setiap obyek. Atribut ketiga adalah wasVisited yang berfungsi untuk menandai suatu obyek yang memiliki jarak kurang dari sama dengan radius. Atribut yang keempat adalah jumlah_rNeighbors yang berfungsi untuk menyimpan jumlah rNeighbors. Atribut yang kelima adalah jumlah_arNeighbors yang berfungsi untuk menyimpan jumlah arNeighbors. Atribut keenam adalah rNeighbor yang berfungsi untuk menyimpan rNeighbors. Atribut ketujuh adalah arNeighbor yang berfungsi untuk menyimpan arNeighbors. Atribut kedelapan adalah avgNpira yang berfungsi untuk menyimpan avgNpira. Atribut kedelapan adalah stdevNpira yang berfungsi untuk menyimpan stdevNpira. Atribut kesembilan adalah mdef yang berfungsi untuk menyimpan mdef. Atribut kesepuluh adalah koMdef yang berfungsi untuk menyimpan avgNpira. Atribut kesebelas adalah AnggotaRNeighbor yang berfungsi untuk menyimpan AnggotaRNeighbor. AnggotaARNeighbor AnggotaARNeighbor. Atribut yang keduabelas berfungsi untuk adalah menyimpan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 5.3 90 Implementasi Kelas Tahap ini berisi tentang implementasi kelas yang digunakan dalam pembuatan sistem. Method yang digunakan adalah method yang memiliki fungsi utama dalam sistem. Tabel 5.1 merupakan tabel yang berisi implementasi setiap kelas. Impelementasi setiap kelas dapat dilihat pada lampiran 10. Tabel 5.1 Tabel Impementasi Kelas No 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Nama Kelas Graph Verteks DataLoci DatabaseController SeleksiAtribut CheckBoxTableModel KoneksiDataBase LociTabelModel HalamanAwal HalamanBantuan HalamanPilihDatabase HalamanPilihFile HalamanPilihTabel HalamanTentang HalamanUtama Nama File Fisik Graph.java Verteks.java DataLoci.java DatabaseController.java SeleksiAtribut.java CheckBoxTableModel.java KoneksiDataBase.java LociTabelModel.java HalamanAwal.form HalamanBantuan.form HalamanPilihDatabase.form HalamanPilihFile.form HalamanPilihTabel.form HalamanTentang.form HalamanUtama.form Nama File Executable Graph.class Verteks.class DataLoci.class DatabaseController.class SeleksiAtribut.class CheckBoxTableModel.class KoneksiDataBase.class LociTabelModel.class HalamanAwal.class HalamanBantuan.class HalamanPilihDatabase.class HalamanPilihFile.class HalamanPilihTabel.class HalamanTentang.class HalamanUtama.class PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB VI PENGUJIAN DAN ANALISIS PENGUJIAN Bab ini berisi tentang tahap pengembangan sistem pendeteksi outlier menggunakan algoritma Local Correlation Integral yaitu pengujian sistem. Di bawah ini merupakan tahap-tahap pengujian terhadap sistem. 6.1 Rencana Pengujian Pengujian terhadap sistem ini meliputi tiga metode pengujian, yaitu pengujian Blackbox, pengujian efek perubahan nilai atribut terhadap hasil deteksi outlier, dan pengujian reviewer dan validitas pengguna. Metode pengujian dengan Blackbox adalah pengujian untuk mengetahui apakah semua fungsi perangkat lunak telah berjalan semestinya sesuai dengan kebutuhan fungsional yang telah didefinisikan. Metode Blackbox memungkinkan perekayasa perangkat lunak mendapatkan serangkaian kondisi input yang sepenuhnya menggunakan semua persyaratan fungsional untuk suatu program. Metode Blackbox dilakukan untuk menguji apakah perangkat lunak berfungsi dengan benar. Pengujian efek perubahan nilai atribut terhadap hasil deteksi outlier dilakukan dengan cara mengubah nilai parameter yang dimiliki algoritma Local Correlation Integral yaitu nilai radius. Pengujian review dan validasi oleh pengguna dilakukan dengan membandingkan hasil deteksi outlier yang diperoleh melalui sistem dengan hasil deteksi outlier yang dilakukan oleh pengguna dalam hal ini Kepala Program Studi Teknik Informatika Universitas Sanata Dharma. Berikut ini merupakan tabel rencana pengujian Blackbox yang akan dilakukan pada masing-masing kelas uji. Rencana pengujian dipaparkan pada tabel 6.1. 91 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Tabel 6.1 Tabel Rencana Pengujian Kelas Uji DatabaseConnection Butir Uji Koneksi ke Jenis Pengujian dalam Blackbox database (MySql dan Oracle). HalamanUtama Menampilkan data file Blackbox dalam extensi .xls Menampilkan data file Blackbox dengan extensi .csv Menampilkan data Blackbox dari tabel basisdata. Melakukan seleksi Blackbox atribut Menampilkan hasil Blackbox deteksi outlier. HalamanPilihDatabase Menampilkan pilihDatabase form Blackbox untuk masuk ke basis data sesuai dengan pilihan pengguna. HalamanPilihTabel Menampilkan tabel daftar Blackbox dari database sesuai pengguna. pilihan 92 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 93 6.1.1 Hasil Pengujian Blackbox 6.1.1.1 Pengujian Input Data Tabel 6.2 merupakan hasil pengujian pada kelas HalamanUtama. Tabel 6.2 Tabel Pengujian Input Data Kasus Dan Hasil Uji (Data Benar) Aktivitas yang Keluaran yang Hasil yang dilakukan diharapkan diperoleh Memasukkan data dari Data tertampil ke Data file dalam tabel. Kesimpulan tertampil Diterima ke dalam tabel. berekstensi .xls Memasukkan data dari Data tertampil ke Data file dalam tabel. tertampil Diterima ke dalam tabel. berekstensi .csv Memasukkan Data tertampil ke Data data dari tabel dalam tabel. tertampil Diterima ke dalam tabel. basisdata. Menyeleksi Atribut atribut tidak digunakan tidak digunakan terhapus Melakukan yang Atribut dari terhapus tabel. tabel. Menghasilkan Hasil proses deteksi output outlier deteksi menggunakan atribut terkait. yang Diterima dari deteksi Diterima hasil outlier berhasil beserta ditampilkan. algoritma Local Correlation Integral. Kasus Dan Hasil Uji (Data Salah) PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Aktivitas yang Keluaran yang Hasil yang dilakukan diharapkan diperoleh Input data Menampilkan dengan Pesan 94 Kesimpulan Diterima extensi pesan peringatan peringatan selain .xls atau “File yang anda berhasil .csv pilih harus ditampilkan. berformat .xls atau .csv”. 6.1.1.2 Pengujian Koneksi Database Tabel 6.3 merupakan hasil pengujian pada kelas KoneksiDatabase. Tabel 6.3 Tabel Pengujian Koneksi Database Kasus Dan Hasil Uji (Data Benar) Aktivitas yang Keluaran yang Hasil yang dilakukan diharapkan diperoleh Memasukkan Menampilkan username, pesan “Koneksi ditampilkan. password, url, ke Pesan Kesimpulan berhasil Diterima Database dan nama MySQL database benar Berhasil”. (mySQL) Memasukkan Menampilkan username, pesan “Koneksi ditampilkan. password, url, ke Database dan nama Oracle Berhasil”. database benar (Oracle) Pesan berhasil Diterima PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Kasus Dan Hasil Uji (Data Salah) Aktivitas yang Keluaran yang Hasil yang dilakukan diharapkan diperoleh Input username, Menampilkan Pesan Kesimpulan Diterima password, nama pesan peringatan peringatan database, dan url “Username, berhasil ada yang kosong Password, Nama ditampilkan. (mySQL). Database, dan URL tidak boleh kosong!”. Input username, Menampilkan Pesan Diterima password, nama pesan peringatan peringatan database, dan url “Username, berhasil ada yang salah Password, Nama ditampilkan. (mySQL). Database, dan URL yang anda masukkan salah”. Input username, Menampilkan Pesan Diterima password, nama pesan peringatan peringatan database, dan url “Username, berhasil ada yang kosong Password, Nama ditampilkan. (Oracle). Database, dan URL tidak boleh kosong!”. Input username, Menampilkan Pesan password, nama pesan peringatan peringatan database, dan url “Username, berhasil ada yang salah Password, Nama ditampilkan. (Oracle). Database, dan Diterima 95 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 96 URL yang anda masukkan salah”. 6.1.1.3 Pengujian Halaman Pilih Tabel Tabel 6.4 merupakan hasil pengujian kelas HalamanPilihTabel. Tabel 6.4 Tabel Pengujian Halaman Tampil Tabel Kasus Dan Hasil Uji (Data Benar) Aktivitas yang Keluaran yang Hasil yang dilakukan diharapkan diperoleh Membuka Menampilkan HalamanPilihTabel daftar yang dari Daftar Kesimpulan tabel Diterima tabel berhasil berasal ditampilkan. basisdata yang dipilih pengguna. 6.1.14 Pengujian Seleksi Atribut Tabel 6.5 merupakan hasil pengujian untuk fungsi SeleksiAtribut. Tabel 6.5 Tabel Pengujian Seleksi Atribut Kasus Dan Hasil Uji (Data Benar) Aktivitas yang Keluaran yang Hasil yang dilakukan diharapkan diperoleh Kesimpulan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Memilih salah Atribut yang Atribut berhasil Diterima satu atau lebih dipilih terhapus. dihapus atribut tabel. akan 97 yang dari dihapus. Kemudian pengguna menekan tombol “Hapus”. Menekan Semua atribut Semua atribut Diterima tombol “Hapus dihapus. berhasil dihapus Semua”. dari tabel. Menekan Atribut yang Semua tombol “Batal” ditandai menjadi dalam tidak ditandai. 6.1.1.5 atribut Diterima tabel tidak ditandai. Pengujian Deteksi Outlier Tabel 6.6 merupakan hasil pengujian untuk fungsi SeleksiAtribut pada kelas HalamanUtama. Tabel 6.6 Tabel Pengujian Deteksi Outlier Kasus Dan Hasil Uji (Data Benar) Aktivitas yang Keluaran yang Hasil yang dilakukan diharapkan diperoleh Menginputkan Hasil parameter radius outlier deteksi Hasil deteksi Diterima beserta outlier beserta berupa bilangan atributnya. real dan alpha berupa bilangan real antara 0-1. Kesimpulan atributnya. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Kasus Dan Hasil Uji (Data Salah) Aktivitas yang Keluaran yang Hasil yang dilakukan diharapkan diperoleh Input parameter Menampilkan Pesan Kesimpulan Diterima radius ada yang pesan peringatan peringatan “Nilai kosong radius berhasil tidak boleh ditampilkan. kosong!”. Input parameter Menampilkan Pesan Diterima alpha ada yang pesan peringatan peringatan kosong “Nilai alpha berhasil tidak boleh ditampilkan. kosong!”. Input parameter Menampilkan konstanta Pesan Diterima ada pesan peringatan peringatan yang kosong “Nilai konstanta berhasil tidak boleh ditampilkan. kosong!”. Input parameter Menampilkan Pesan radius, alpha ada pesan peringatan peringatan yang bukan “Nilai bilangan real dan harus konstanta yang bilangan positif > 0. radius berhasil bilangan ditampilkan. ada real, nilai alpha bukan antara 0-1 dan bulat nilai harus kontsanta bilangan bulat positif > 0”. Diterima 98 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 99 6.1.1.6 Pengujian Simpan Hasil Deteksi Outlier Tabel 6.7 merupakan hasil pengujian untuk fungsi simpan hasil deteksi outlier pada kelas HalamanUtama. Tabel 6.7 Tabel Pengujian Simpan Hasil Deteksi Outlier Kasus Dan Hasil Uji (Data Benar) Aktivitas yang Keluaran yang Hasil yang dilakukan diharapkan diperoleh Kesimpulan Menekan File tersimpan di File tersimpan di Diterima tombol lokasi yang telah lokasi yang telah “Simpan” (.doc) di pilih pengguna oleh di pilih oleh dan pengguna dan berekstensi .doc berekstensi .doc Menekan File tersimpan di File tersimpan di Diterima tombol lokasi yang telah lokasi yang telah “Simpan” (.xls) di pilih pengguna oleh di pilih oleh dan pengguna dan berekstensi .xls berekstensi .xls Menekan File tersimpan di File tersimpan di Diterima tombol lokasi yang telah lokasi yang telah “Simpan” (.txt) di pilih pengguna oleh di pilih oleh dan pengguna dan berekstensi .txt berekstensi .txt PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 100 6.1.2 Kesimpulan Hasil Pengujian Blackbox Berdasarkan pengujian terhadap setiap fungsi sistem dengan kasus uji seperti diatas, dapat disimpulkan bahwa Sistem Deteksi Outlier Menggunakan Algoritma Local Correlation Integral ini dapat menangani kesalahan (error handling) terhadap fungsi yang tidak berjalan sesuai aturan dan dapat menghasilkan output yang sesuai dengan yang diharapkan oleh pengguna. 6.1.3 Hasil Pengujian Efek Perubahan Nilai Atribut Penambangan Data Pengujian terhadapat Sistem Deteksi Outlier menggunakan Algoritma Local Correlation Integral dapat dilakukan dengan mengubah nilai input parameter radius. Berikut adalah tabel hasil deteksi outlier mahasiswa angkatan 2007 dan 2008. 6.1.3.1 Pengujian Dengan Data Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Jalur Tes Tertulis. Hasil pengujian dengan menggunakan data angakatan 2007 dan 2008 untuk jalur tes tertulis dipaparkan pada tabel 6.8. Tabel 6.8 Tabel Jumlah Outlier Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Jalur Tes Tertulis Semester 1 dengan Nilai Radius dan Konstanta yang berubah-ubah dan Nilai Alpha = 0.5 k=1 k=2 k=3 r = 4.0 26, 28, 33, 36, 58, 72 26, 28, 36 - r = 4.5 26, 28, 33, 36, 58, 69, 72 26, 28, 33 28 r = 5.0 26, 28, 33, 36, 58, 69, 72 26, 28, 33 28 r = 5.5 26, 28, 33, 36, 58 26, 28 28 r = 6.0 26, 28, 33, 58 28 28 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 101 6.1.3.2 Pengujian Dengan Data Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Jalur Tes Prestasi. Hasil pengujian dengan menggunakan data angakatan 2007 dan 2008 untuk jalur prestasi dipaparkan pada tabel 6.9. Tabel 6.9 Tabel Jumlah Outlier Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Jalur Prestasi Semester 1 dengan nilai radius dan konstanta yang berubah-ubah dan nilai alpha = 0.5 k=1 k=2 k=3 r = 3.0 10, 15, 16, 76, 79, 124 10, 15, 16, 76, 124 76 r = 3.5 15, 76, 124 76, 124 76 r = 4.0 76, 124 76, 124 76 r = 4.5 76, 124 76 76 r = 5.0 76 76 76 6.1.3.3 Pengujian Dengan Data Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Jalur Test Tertulis dan Jalur Prestasi. Hasil pengujian dengan menggunakan data angakatan 2007 dan 2008 untuk jalur tes tertulis dan jalur prestasi dipaparkan pada tabel 6.10. Tabel 6.10 Tabel Jumlah Outlier Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Jalur Test Tertulis dan Prestasi Semester 1 dengan nilai radius dan konstanta yang berubah-ubah dan nilai alpha = 0.5 r = 3.0 k=1 k=2 k=3 7, 10, 15, 16, 26, 27, 28, 10, 16, 26, 27, 28, 76 33, 36, 58, 68, 69, 76, 124 28, 36, 68, 76, 124 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI r = 3.5 7, 10, 16, 26, 27, 28, 36, 102 26, 28, 36, 76 28, 76 28, 76 28, 76 28, 76 28, 76 28, 76 28, 76 68, 69, 76, 124 r = 4.0 10, 16, 26, 27, 28, 36, 68, 69, 76, 124 r = 4.5 7, 10, 16, 19, 20, 21, 26, 27, 28, 36, 68, 69, 76, 124 r = 5.0 6.1.4 10, 16, 26, 27, 28, 36, 76 Kesimpulan Hasil Pengujian Efek Perubahan Nilai Atribut Penambangan Data. Dari percobaan dengan melakukan perubahan nilai radius dan konstanta maka dapat disimpulkan bahwa: 1. Jika nilai parameter radius tetap dan konstanta bertambah, maka outlier yang dihasilkan akan semakin berkurang. Nilai radius mempengaruhi jumlah outlier. 2. Jika nilai parameter radius bertambah dan kosntanta tetap, maka jumlah outlier yang didapatkan akan semakin berkurang. Nilai konstanta mempengaruhi jumlah outlier. 3. Nilai parameter radius sangat mempengaruhi besarnya nilai MDEF, semakin kecil nilai parameter radius maka nilai MDEF akan semakin mendekati 1. 6.1.5 Hasil Pengujian Review dan Validitas Pengguna 6.1.5.1 Perbandingan Perhitungan Manual dan Hasil Sistem Dataset yang digunakan untuk proses deteksi adalah data akademik mahasiswa Program Studi Teknik Informatika angkatan 2007 yang diterima melalui jalur tes tertulis. Atribut yang digunakan adalah data ips1, ips2, ips3, ips4, nil11, nil12, nil13, nil14, dan nil15. Data tersebut akan diolah dan dihitung secara manual menggunakan Microsoft Excel untuk mendeteksi outlier dengan menggunakan algoritma PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 103 Local Correlation Integral. Hasil perhitungan manual tersebut dibandingkan hasilnya dengan hasil perhitungan dari Sistem Deteksi Outlier Menggunakan Algoritma Local Correlation Integral. Berikut adalah hasil perbandingan deteksi outlier dari data 13 mahasiswa angkatan 2007 yang mengikuti jalur tes tertulis menggunakan perhitungan manual dan perhitungan sistem. Tabel 6.11 merupakan tabel yang berisi data 13 mahasiswa beserta atribut ips1, ips2, ips3, ips4, nill11, nil12, nil13, nil14 dan nil15. Tabel 6.11 Tabel Data Set untuk Perbandingan Manual dan Sistem No Alias ips1 ips2 ips3 ips4 nil11 nil12 nil13 nil14 nil15 P1 2.94 3.27 2.96 2.81 2.80 2.00 2.00 2.00 1.60 P2 1.72 1.65 1.53 1.68 1.20 0.80 3.20 1.20 0.40 P3 2.56 2.77 2.52 3.13 2.40 1.60 2.00 2.80 2.00 P4 2.44 2.63 2.00 2.67 2.00 2.00 2.40 2.00 2.00 P5 2.94 2.59 1.55 2.35 2.40 1.60 2.40 1.20 2.80 P6 1.89 2.20 2.21 1.95 2.40 2.00 2.40 2.40 2.80 P7 4.00 3.52 3.43 3.70 2.40 2.40 1.60 1.60 2.80 P8 1.44 2.42 2.53 1.96 4.00 2.00 3.60 2.40 2.80 P9 3.72 3.48 3.36 3.65 3.20 2.40 2.40 2.80 2.00 P10 1.72 2.65 2.43 2.24 2.80 2.40 3.20 3.20 0.80 P11 3.28 2.75 2.90 3.00 2.80 2.40 2.80 2.40 2.40 P12 2.89 3.21 3.33 3.36 2.40 2.00 2.00 2.80 2.00 P13 2.89 3.18 3.04 2.95 2.00 2.00 3.20 2.00 2.80 Di bawah ini merupakan tabel 6.12 yang berisi hasil perbandingan perhitungan secara manual dan perhitungan dengan sistem. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 104 Tabel 6.12 Tabel Perbandingan Hasil Deteksi Outlier Mahasiswa Angkatan 2007 Jalur Tes Input Parameter Hasil Outlier Semester Hitung (r, , dan k) Sistem Manual 1 P2 P2 r = 6; = 2 P2 P2 0.5; k = 3 3 P2 P2 4 P2 P2 6.1.5.2 Kesimpulan Hasil Perbandingan Perhitungan Manual dengan Perhitungan Sistem. Dari hasil perbandingan perhitungan manual dengan perhitungan sistem untuk data mahasiswa program studi Teknik Informatika angkatan 2007 melalui jalur tes tertulis dengan pendeteksian outlier yang dilakukan menghasilkan hasil outlier dari perhitungan manual dan perhitungan sistem yang sama. Maka dapat disimpulkan bahwa Sistem Deteksi Outlier Menggunakan Algoritma Local Correlation Integral dapat menghasilkan output sesuai dengan yang diharapkan seperti pada perhitungan manual. 6.1.5.3 Hasil Deteksi dari Sistem untuk Pengujian Review dan Validitas oleh Pengguna Pengujian ini dilakukan untuk mengetahui bahwa hasil deteksi outlier adalah benar, oleh karena itu perlu dilakukan analisis oleh Kepala Program Studi (Kaprodi) Teknik Informatika. Analisis ini dilakukan untuk mempertimbangkan apakah kumpulan nilai yang dimiliki PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 105 oleh mahasiswa yang dinyatakan sebagai outlier tersebut memang berbeda dari mahasiswa lain. Berikut ini merupakan hasil outlier yang diperoleh sistem untuk tiga macam dataset, detail data dapat dilihat di lampiran 6. 1. Hasil deteksi outlier mahasiswa angkatan 2007-2008 jalur test tertulis dengan jumlah data 54 mahasiswa, atribut yang digunakan adalah ips1, ips2, ips3, ips4, nil11, nil12, nil13, nil14, dan nil15. Parameter yang digunakan radius = 6.0, alpha = 0.5, dan konstanta = 3. Tabel 6.13 merupakan tabel hasil perhitungan sistem mahasiswa angkatan 2007-2008 untuk jalur tes tertulis. Tabel 6.13 Tabel Hasil Perhitungan Sistem 2007-2008 Jalur Tes Tertulis Sem Nomor Urut ips1 ips2 ips3 ips4 nil11 nil12 nil13 nil14 nil15 1 28 1.72 - - - 1.20 0.80 3.20 1.20 0.40 2 28 - 1.65 - - 1.20 0.80 3.20 1.20 0.40 3 28 - - 1.53 - 1.20 0.80 3.20 1.20 0.40 74 - - 0.19 - 3.20 2.00 3.60 3.20 1.60 28 - - - 1.68 1.20 0.80 3.20 1.20 0.40 67 - - - 0.00 2.80 2.00 1.20 1.60 1.60 4 2. Hasil deteksi outlier mahasiswa angkatan 2007-2008 jalur prestasi dengan jumlah data 72 mahasiswa, atribut yang digunakan adalah ips1, ips2, ips3, ips4, dan nilai final. Parameter yang digunakan radius = 3.0, alpha = 0.5, dan konstanta = 3. Tabel 6.14 merupakan tabel hasil perhitungan sistem mahasiswa angkatan 2007-2008 untuk jalur prestasi. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 106 Tabel 6.14 Tabel Hasil Perhitungan Sistem 2007-2008 Jalur Prestasi Sem Nomor ips1 ips2 ips3 ips4 final 1 76 0.85 - - - 2.85 2 17 - 0.32 - - 2.72 124 - 0.44 - - 2.90 3 - - 3.78 - 2.78 17 - - 0.69 - 2.72 107 - - 3.76 - 3.33 88 - - - 0.94 2.89 94 - - - 1.20 2.77 122 - - - 1.47 3.05 3 4 3. Urut Hasil deteksi outlier mahasiswa angkatan 2007-2008 jalur test tertulis dan prestasi dengan jumlah data 126 mahasiswa, atribut yang digunakan adalah ips1, ips2, ips3, ips4, dan nilai final. Parameter yang digunakan radius = 3.5, alpha = 0.5, dan konstanta = 3. Tabel 6.15 merupakan tabel hasil perhitungan sistem mahasiswa angkatan 2007-2008 untuk jalur tes tertulis. Tabel 6.15 Tabel Hasil Perhitungan Sistem 2007-2008 Jalur Tes dan Prestasi Sem 1 2 Nomor Urut ips1 ips2 ips3 ips4 final Jalur Tes 28 1.72 - - - 1.12 Tes 76 0.85 - - - 2.85 Prestasi 17 - 0.32 - - 2.72 Prestasi 28 - 1.65 - - 1.12 Tes PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3 4 68 - 1.00 - - 2.00 Tes 124 - 0.44 - - 2.90 Prestasi 17 - - 0.69 - 2.72 Prestasi 28 - - 1.53 - 1.12 Tes 50 - - 0.59 - 2.56 Tes 74 - - 0.19 - 2.56 Tes 46 - - - 0.31 2.76 Tes 47 - - - 0.05 2.40 Tes 67 - - - 0.00 2.04 Tes 68 - - - 0.00 2.00 Tes 107 6.1.5.4 Kesimpulan Hasil Pengujian Review dan Validitas oleh Pengguna. 1. Dari pengujian data akademik mahasiswa 2007-2008 jalur tes tertulis didapat hasil sebagai berikut: a. Pada semester 1 mahasiswa yang dinyatakan sebagai outlier adalah mahasiswa dengan nomor urut 28. Mahasiswa dengan nomor urut 28 dinyatakan sebagai outlier karena mahasiswa tersebut memiliki nilai ips1 dan nilai tes masuk yang rendah juga. b. Pada semester 2 mahasiswa yang dinyatakan sebagai outlier adalah mahasiswa dengan nomor urut 28. Mahasiswa dengan nomor urut 28 masih tetap dinyatakan sebagai outlier karena mahasiswa tersebut memiliki nilai ips2 dan nilai tes masuk yang rendah juga. c. Pada semester 3 mahasiswa yang dinyatakan sebagai outlier adalah mahasiswa dengan nomor urut 28 dan 74. Mahasiswa dengan nomor urut 28 masih tetap dinyatakan sebagai outlier karena PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 108 mahasiswa tersebut memiliki nilai ips3 dan nilai tes masuk yang rendah juga. Mahasiswa dengan nomor urut 74 dinyatakan sebagai outlier karena mahasiswa tersebut memiliki nilai ips3 yang sangat rendah dan nilai tes masuk tinggi. d. Pada semester 4 mahasiswa yang dinyatakan sebagai outlier adalah mahasiswa dengan nomor urut 28 dan 67. Mahasiswa dengan nomor urut 28 dari semester 1 sampai semester 4 dinyatakan sebagai outlier karena mahasiswa tersebut memiliki nilai ips4 dan nilai tes masuk yang rendah juga. Mahasiswa dengan nomor urut 67 dinyatakan sebagai outlier karena memiliki nilai ips 4 yang sangat rendah yaitu 0.00 dan memiliki nilai test masuk yang rendah. 2. Dari pengujian data akademik mahasiswa 2007-2008 jalur prestasi didapat hasil sebagai berikut: a. Pada semester 1 mahasiswa yang dinyatakan sebagai outlier adalah mahasiswa dengan nomor urut 76. Mahasiswa dengan nomor urut 76 dinyatakan sebagai outlier karena mahasiswa tersebut memiliki nilai ips 1 sangat rendah dan nilai tes masuk yang berada di tengah-tengah. b. Pada semester 2 mahasiswa yang dinyatakan sebagai outlier adalah mahasiswa dengan nomor urut 17 dan 124. Mahasiswa dengan nomor urut 17 dinyatakan sebagai outlier karena mahasiswa tersebut memiliki nilai ips 2 yang sangat rendah dan memiliki nilai tes masuk yang rendah dibanding dengan mahasiswa lain. Mahasiswa dengan nomor PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 109 urut 124 dinyatakan sebagai outlier karena memiliki nilai ips 2 yang sangat rendah dan memiliki nilai tes masuk yang berada di tengah-tengah. c. Pada semester 3 mahasiswa yang dinyatakan sebagai outlier adalah mahasiswa dengan nomor urut 3, 17, dan 107. Mahasiswa dengan nomor urut 3 dinyatakan sebagai outlier karena mahasiswa tersebut memiliki nilai ips 3 yang sangat tinggi tetapi nilai tes masuk rendah. Mahasiswa dengan nomor urut 17 pada semester 2 dinyatakan sebagai outlier dan pada semester 3 masih tetap dinyatakan sebagai outlier karena mahasiswa tersebut memiliki nilai ips 3 yang sangat rendah dan memiliki nilai tes masuk yang rendah dibanding dengan mahasiswa lain. Mahasiswa dengan nomor urut 107 dinyatakan sebagai outlier karena memiliki nilai ips 3 yang sangat tinggi dan memiliki nilai tes masuk yang sangat tinggi. d. Pada semester 4 mahasiswa yang dinyatakan sebagai outlier adalah mahasiswa dengan nomor urut 88, 94, dan 122. Mahasiswa dengan nomor urut 88 dinyatakan sebagai outlier karena mahasiswa tersebut memiliki nilai ips 4 yang sangat rendah dan memiliki nilai test masuk yang berada di tengahtengah. Mahasiwa dengan nomor urut 94 dinyatakan sebagai outlier karena mahasiswa tersebut memiliki nilai ips 4 yang rendah dan memiliki nilai tes masuk yang rendah dibanding dengan mahasiswa lain. Mahasiswa dengan nomor mahasiswa 122 dinyatakan sebagai outlier karena mahasiswa PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 110 tersebut memiliki nilai ips 4 yang rendah tetapi memiliki nilai tes masuk yang tinggi. 3. Dari pengujian data akademik mahasiswa 2007-2008 jalur tes tertulis dan prestasi didapat hasil sebagai berikut: a. Pada semester 1 mahasiswa yang dinyatakan sebagai outlier adalah mahasiswa dengan nomor urut 28 dan 76. Mahasiswa dengan nomor urut 28 dinyatakan sebagai outlier karena mahasiswa tersebut memiliki nilai ips1 yang rendah. Mahasiswa dengan nomor urut 76 dinyatakan sebagai outlier karena mahasiswa tersebut memiliki nilai ips 1 yang sangat rendah. b. Pada semester 2 mahasiswa yang dinyatakan sebagai outlier adalah mahasiswa dengan nomor urut 17, 28, 68, dan 124. Mahasiswa dengan nomor urut 17 dinyatakan sebagai outlier karena mahasiswa tersebut memiliki nilai ips 2 yang sangat rendah. Mahasiswa dengan nomor urut 28 pada semester 2 masih dinyatakan sebagai outlier karena mahasiswa tersebut memiliki nilai ips2 rendah. Mahasiswa dengan nomor urut 68 dinyatakan sebagai outlier karena mahasiswa tersebut memiliki nilai ips 2 yang rendah. Mahasiswa dengan nomor urut 124 dinyatakan sebagai outlier karena memiliki nilai ips 2 yang sangat rendah. c. Pada semester 3 mahasiswa yang dinyatakan sebagai outlier adalah mahasiswa dengan nomor urut 17, 28, 50 dan 74. Mahasiswa dengan nomor urut 17 dinyatakan sebagai outlier karena PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 111 mahasiswa tersebut memiliki nilai ips 3 yang sangat rendah. Mahasiswa dengan nomor urut 28 masih dinyatakan sebagai outlier karena mahasiswa tersebut memiliki nilai ips3 yang rendah. Mahasiswa dengan nomor urut 50 dinyatakan sebagai outlier karena mahasiswa tersebut memiliki nilai ips 3 yang sangat rendah. Mahasiswa dengan nomor urut 74 dinyatakan sebagai outlier karena memiliki nilai ips 3 yang sangat rendah. d. Pada semester 4 mahasiswa yang dinyatakan sebagai outlier adalah mahasiswa dengan nomor urut 46, 47, 67, dan 68. Mahasiswa dengan nomor urut 46 dinyatakan sebagai outlier karena memiliki nilai ips 4 yang sangat rendah. Mahasiswa dengan nomor urut 47 dinyatakan sebagai outlier karena memiliki nilai ips 4 yang sangat rendah. Mahasiswa dengan nomor urut 67 dinyatakan sebagai outlier karena memiliki nilai ips 4 yang sangat rendah yaitu 0.00. Mahasiswa dengan nomor urut 68 dinyatakan sebagai outlier karena memiliki nilai ips 4 yang sangat rendah yaitu 0.00. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 6.2 112 Kelebihan dan Kekurangan Sistem Sistem Deteksi Outlier Menggunakan Algoritma Local Correlation Integral memiliki kelebihan dan kekurangan sebagai berikut: 6.2.1 Kelebihan Sistem Kelebihan dari Sistem Deteksi Outlier Menggunakan Algoritma Local Correlation Integral adalah sebagai berikut: 1. Sistem ini mampu membaca input data dengan format .xls dan .csv 2. Sistem ini mampu membaca input data yang berasal dari database Oracle dan mySQL. 3. Sistem ini mampu menyeleksi atribut pada data yang diinputkan oleh pengguna. 4. Sistem ini mampu menyimpan hasil outlier dengan format .doc, .xls, dan .txt 6.2.2 Kekurangan Sistem Kekurangan dari Sistem Deteksi Outlier Menggunakan Algoritma Local Correlation Integral adalah sebagai berikut: 1. Sistem ini tidak mampu membaca inputan data dengan format selain .xls dan .csv 2. Sistem ini tidak dapat menyeleksi baris pada data yang diinputkan oleh pengguna. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB VII KESIMPULAN DAN SARAN 7.1 Kesimpulan Dari hasil penelitian tentang Deteksi Outlier Menggunakan Algoritma Local Correlation Integral dengan studi kasus data mahasiswa Program Studi Teknik Informatika Universitas Sanata Dharma Yogyakarta angkatan 2007 dan 2008 maka dapat ditarik kesimpulan sebagai berikut: 1. Sistem Deteksi Outlier Menggunakan Algoritma Local Correlation Integral telah berhasil dibangun menjadi aplikasi yang dapat mendeteksi outlier pada sekumpulan data numerik. 7.2 2. Nilai radius sangat berpengaruh terhadap hasil deteksi outlier. 3. Nilai konstanta sangat berpengaruh terhadap hasil deteksi outlier. Saran Dari hasil analisis pada tugas akhir ini, penulis memberikan saran untuk perbaikan dan pengembangan program lebih lanjut antara lain: 1. Sistem ini seharusnya dilengkapi dengan fungsi tambahan agar dapat menerima inputan selain file dengan format .xls dan .csv. 2. Sistem ini seharusnya dilengkapi dengan fungsi tambahan agar dapat melakukan seleksi pada baris. 113 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 114 DAFTAR PUSTAKA Amer, Mennatallah. 2011. Comparison of Unsupervised anomaly Detection Teqniques. Germany. Atastina, Imelda. Analisis Outlier. CS 4333-Data Mining. Dunham, H. Margareth (2002), Data Mining: Introductory and Advanced, Prentice Hall. Fayyad, U., Piatetsky-Shapiro, G. dan Smyth, P. (1996), From Data Mining to Knowledge Discovery in Databases, AAAI and The MIT Pres, 37-53. Handriyadi, Dedy., M. Arif Bijaksana, Ir. Mtech, Erwin Budi Setiawan, MT (2009), Analisis Perbandingan Clustering-Based, Distance-Based, dan DensityBased dalam Mendeteksi Outlier. Han, J., & Kamber, M. (2006). Data Mining Concept and Techniques. San Fransisco: Elsevier. Peter Cabens, Pablo Hadjinian, Rolf Stadler, Jaap Verhees, dan Alesandro Zanasi, 1998, Discovering Data Mining: from Concept to Implementation, Prentice Hall, New Jersey, USA. Prasetyo, Eko. Data Mining - Konsep dan Aplikasi menggunakan MATLAB. Yogyakarta: Penerbit Andi. Spiros Papadimitriou, Hiroyuki Kitagawa, Phillip B. Gibbons, and Christos Faloutsos. Loci: Fast outlier detection using the local correlation integral. Data Engineer-ing, International Conference on, 0:315, 2003. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI LAMPIRAN 1 Diagram Use Case Input data file .xls, .csv, atau tabel database <<extends>> <<depends on>> Seleksi Atribut Deteksi Outlier Pengguna <<depends on>> Simpan Hasil Deteksi Outlier 115 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 116 LAMPIRAN 2 Deskripsi Use Case Nomor Nama Use Case Deskripsi Aktor Use Case 001 Input data file .xls, Use case input data file .xls, .csv Pengguna .csv, atau tabel atau basisdata tabel basisdata ini menggambarkan proses dimana pengguna memilih data dengan file berformat .xls, .csv, atau tabel dari database. Setelah memilih file atau tabel mana yang akan diinputkan, sistem akan menampilkan data tersebut ke dalam tabel untuk proses deteksi. 002 Deteksi outlier Use case deteksi outlier Pengguna menggambarkan tentang proses pencarian outlier pada data yang telah di masukkan oleh pengguna. 003 Simpan deteksi outlier hasil Use case simpan hasil deteksi Pengguna outlier menggambarkan proses penyimpanan hasil deteksi outlier. Dimana pengguna dapat menyimpan hasil deteksi outlier ke dalam file dengan format .xls, .doc, dan .txt. 004 Seleksi atribut Use case menggambarkan seleksi proses atribut Pengguna seleksi atribut, dimana pengguna dapate memilih atribut mana yang akan di PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI gunakan untuk proses deteksi, dan atribut mana yang akan di hapus. 117 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 118 LAMPIRAN 3 Narasi Use Case Use case menggambarkan interaksi antara sistem dan pengguna atau sistem eksternal. Use case menggambarkan siapa yang akan menggunakan sistem dan dengan cara bagaimana pengguna berinteraksi dengan sistem. Narasi use case digunakan untuk menggambarkan langkah-langkah dalam interaksi sistem dengan penggunanya. 1. Narasi Use Case Input data dari file .xls, .csv atau tabel basisdata. Nama Use Case Input data dari file .xls, .csv atau tabel basisdata ID Use Case Jenis Use Case Kebutuhan 001 Operasional Prioritas Pelaku Utama Pengguna Pelaku Lain yang Terlibat - Pihak Lain yang - Berkepentingan Deskripsi Use case input data file .xls, .csv atau tabel basisdata ini menggambarkan proses dimana pengguna memilih data dengan file berformat .xls, .csv, atau tabel dari database. Setelah memilih file atau tabel mana yang akan diinputkan, sistem akan menampilkan data tersebut ke dalam tabel untuk proses deteksi. Kondisi Awal Pengguna masuk ke sistem dan berada Halaman Utama tab Preprosessing. Urutan Aktivitas Normal Aksi Aktor Langkah 1: Pengguna menekan tombol ‘Pilih File’ untuk memilih file yang Respon Sistem PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI akan digunakan proses deteksi 119 untuk dengan format .xls atau .csv. Langkah 2: Sistem menampilkan File Chooser atau kotak dialog untuk memilih file. Langkah 3: Pengguna memilih file .xls atau .csv kemudian menekan tombol ‘Open’. Langkah 4: Sistem menampilkan data yang telah di pilih pada tabel ‘dataPreprocessTable’ di Halaman Utama tab Preprosessing. Aktivitas Alternnatif Aksi Aktor Langkah 1: menekan tombol Respon Sistem Pengguna ‘Pilih Database’ untuk memilih file yang akan digunakan untuk proses deteksi dari tabel database. Langkah 2: Sistem menampilkan Halaman Pilih Database. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Langkah 3: 120 Pengguna memilih database yang akan di ambil datanya. Langkah 4: memasukkan Pengguna username, password, nama database, dan URL. Langkah 5: Pengguna menekan tombol ‘OK’. Langkah 6: Sistem menampilkan doalog bahwa koneksi berhasil. Langkah 7: Pengguna menekan tombol ‘OK’. Langkah 8: Sistem menampilkan Halaman Pilih Tabel. Langkah 9: Pengguna memilih tabel yang akan digunakan untuk proses deteksi. Langkah 10: Pengguna menekan tombol ‘OK’. Langkah 11: Sistem menampilkan data yang telah di pilih di tabel ‘dataPreprocessTable’ dan menampilkan atribut data di tabel ‘selekssiTabel’ pada tab PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 121 Preprosessing dan menampilkan di tabel ‘dataOutlierTable’ pada tab Deteksi Outlier. Kondisi Akhir Data yang telah dipilih akan tampil pada tabel ‘dataPreprocessTable’ yang terdapat pada Halaman Utama. 2. Narasi Use Case Deteksi Outlier. Nama Use Case Deteksi Outlier ID Use Case 002 Jenis Use Case Kebutuhan Operasional Prioritas Pelaku Utama Pengguna Pelaku Lain yang Terlibat - Pihak Lain yang - Berkepentingan Deskripsi Use case deteksi outlier menggambarkan tentang proses pencarian outlier pada data yang telah di masukkan oleh pengguna. Kondisi Awal Pengguna telah melakukan seleksi atribut pada tab Preprosessing dan telah menekan tombol ‘Submit’. Pengguna berada pada tab Preprosessing. Urutan Aktivitas Normal Aksi Aktor Langkah 1: Pengguna menginputkan nilai radius, alpha, dan konstanta. Langkah 2: Pengguan menekan tombol ‘Proses’. Respon Sistem PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Langkah 3: 122 Sistem melakukan proses pencarian outlier berdasarkan Local algoritma Correlation Integral. Langkah 4: Sistem menampilkan hasil outlier kedalam tabel ‘HasilOutlierTable’ pada tab Deteksi Outlier. Aktivitas Alternatif - Kondisi Akhir Pengguna dapat melihat hasil deteksi outlier menggunakan algoritma Local Correlation Integral pada tabel ‘HasilOutlierTable’. 3. Narasi Use Case Simpan Hasil Deteksi Outlier. Nama Use Case Simpan Hasil Deteksi Outlier ID Use Case 003 Jenis Use Case Kebutuhan Operasional Prioritas Pelaku Utama Pengguna Pelaku Lain yang Terlibat - Pihak Lain yang - Berkepentingan Deskripsi Use case simpan hasil deteksi outlier menggambarkan proses penyimpanan hasil deteksi outlier. Dimana pengguna dapat menyimpan hasil deteksi outlier ke dalam file dengan format .xls, .doc, dan .txt. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Kondisi Awal 123 Pengguna berada pada tab Deteksi Outlier. Sistem menampilkan hasil deteksi outlier pada tabel ‘HasilDeteksiTable’. Urutan Aktivitas Normal Aksi Aktor Langkah 1: Respon Sistem Pengguna menekan tombol ‘Simpan’. Langkah 2: Sistem menampilkan kotak dialog penyimpanan file. Langkah 3: memilih Pengguna lokasi penyimpanan file. Langkah 4: Pengguna memasukkan nama file. Langkah 5: Pengguna memilih extensi file data. Langkah 6: Pengguna menekan tombol ‘Save’. Langkah 7: Sistem menyimpan hasil deteksi outlier sesuai dengan nama file, format file, dan lokasi penyimpanan file. Langkah 8: Sistem menampilkan doalog bahwa hasil deteksi outlier telah berhasil disimpan. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Langkah 9: 124 Pengguna menekan tombol ‘OK’. Aktivitas Alternatif - Kondisi Akhir Hasil deteksi outlier tersimpan dalam format file berekstensi tertentu sesuai dengan pilihan pengguna. 4. Narasi Use Case Seleksi Atribut. Nama Use Case Seleksi Atribut ID Use Case 004 Jenis Use Case Kebutuhan Operasional Prioritas Pelaku Utama Pengguna Pelaku Lain yang Terlibat - Pihak Lain yang - Berkepentingan Deskripsi Use case seleksi atribut menggambarkan proses seleksi atribut, dimana pengguna dapat memilih atribut mana yang akan di gunakan untuk proses deteksi, dan atribut mana yang akan di hapus. Kondisi Awal Pengguna berada pada tab Preprosessing pada Halaman Utama. Sistem menampilkan data pada tabel di Halaman Utama. Urutan Aktivitas Normal Aksi Aktor Respon Sistem Langkah 1: Sistem menampilkan daftar atribut pada ‘seleksiTable’. tabel PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Langkah 2: 125 Pengguna menandai atribut yang akan dihapus dari tabel. Langkah 3: Pengguna menekan tombol ‘Hapus’. Langkah 4: Sistem menghapus atribut yang dipilih beserta data dalam tabel data yang berada di Halaman Utama. Aktivitas Alternatif - Kondisi Akhir Atribut yang dipilih berhasil di hapus dari tabel. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI LAMPIRAN 4 Diagram Proses Umum Sistem STAR Data File .csv Data File .xls Data Basisdata Pilih Seleksi Tabel Tidak Input radius, alpha, dan konstanta Proses Deteksi Hasil Deteksi Outlier END Ya Proses Seleksi 126 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI LAMPIRAN 5 Diagram Aktivitas 1. Diagram Aktivitas Memilih File .xls atau .csv Pengguna Sistem Menekan tombol pilih file Menampilkan halaman jFileChooser Memilih file .xls atau .csv Menampilkan data ke dalam tabel 127 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 2. Diagram Aktivitas Input Data dari Tabel Database. Sistem Pengguna Menekan tombol pilih database Menampilkan halaman pilih database Memilih database (Oracle atau mySQL) Pilih Oracle Memasukkan username, password, nama database, dan URL Ya Tidak Menekan tombol OK Memasukkan username, password, nama database, dan URL Menekan tombol OK Tidak Menekan tombol OK Koneksi Berhasil Ya Menekan tombol OK Menampilkan kotak dialog koneksi berhasil Memilih tabel Menampilkan halaman pilih tabel Menekan tombol OK Menampilkan data ke dalam tabel 128 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3. 129 Diagram Aktivitas Deteksi Outlier. Pengguna Sistem Memasukkan nilai radius, alpha, dan konstanta Menekan tombol Proses Melakukan proses deteksi outlier Menampilkan hasil deteksi outlier ke dalam tabel PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4. 130 Diagram Aktivitas Simpan Hasil Deteksi Outlier. Pengguna Menekan tombol Simpan Sistem Menampilkan kotak dialog penyimpanan file Memilih lokasi penyimpanan file Memasukkan nama file Memilih extensi file data Menekan tombol Save Menyimpan hasil outlier Menekan tombol OK Menampilkan dialog hasil outlier berhasil disimpan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 5. 131 Diagram Aktivitas Seleksi Atribut. Pengguna Sistem Menandai atribut yang akan dihapus dari tabel Menampilkan daftar atribut pada tabel seleksi atribut Menekan tombol Hapus Menghapus atribut beserta data pada tabel PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 132 LAMPIRAN 6 Diagram Kelas Analisis HalamanPilihFile HalamanAwal KoneksiDataBase HalamanPilihTabel Halaman Utama HalamanPilihDatabase DatabaseController Pengguna CheckBoxTableModel HalamanBantuan HalamanTentang SeleksiAtribut Graph Verteks LociTableModel DataLoci PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 133 LAMPIRAN 7 Diagram Sequence 1. Diagram Sequence Memilih File .xls atau .csv Pengguna <<boundary>> HalamanUtama <<entity>> ChecBoxTableModel 1. Tekan tombol Pilih File 2. Tampil jFileChooser 3. Memilih file .xls atau .csv 4. pilihFile() 5. new CheckBoxTableModel 6. setAtribut(), getAtribut(), setPilih(), getPilih() 7. setPilih(false) 8. add(column, seleksiAtribut) 9. Menampilkan data ke tabel dataPreprocessTable 10. Menampilkan data ke tabel seleksiTable <<entity>> SeleksiAtribut PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 2. Pengguna 134 Diagram Sequence Input Data dari Tabel Database. <<boundary>> HalamanUtama <<boundary>> HalamanPilihDatabase <<controller>> DatabaseController <<entity>> KoneksiDataBase 1. Menekan tombol Pilih 2. db.setVisible(true) 3. Menampilkan HalamanPilihDatabase 4. Memilih konksi database, mengisi username, password, database name, dan URL. 5. pilihDatabase() 6. selectTable(kdb.getConnection(), table) 7. isConncectedSQL(), IsConnectedOracle() 8. Connected() 9. showTable() 10. Menampilkan HalamanPilihTable 11. Memilih tabel 12. selectTable() 13. Menampilkan tabel data preprosesing 14. new CheckBoxTableModel() 15. setAtribut(model.getColumnName(i) 16. setPilih(false) 17. add(column, seleksiAtribut) 18. Menampilkan data pada tab Preprosessing 19. Menampilkan data pada tabelSeleksi <<boundary>> HalamanPilihTabel <<entity>> CheckBoxTableModel <<entity>> SeleksiAtribut PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3. 135 Diagram Sequence Deteksi Outlier. Pengguna <<boundary>> HalamanUtama <<controller>> Graph <<entity>> Vertex <<entity>> LociTableModel 1. Menginputkan radius 2. Menginputkan alpha 3. Menginputkan konstanta 4. Menekan tombol Proses 5. inputData(jTable) 6. new graph() 7. new vertex() 8. setRadius(radius) 9. setAlpha(alpha) 10. setKonstanta(konstanta) 11. cariLoci() 12.setDataLoci 13. setLabel, setMdef, setKomdef 14. setValueAt, getValueAt 15. tableModel 16. Menampilkan hasil deteksi outlier <<entity>> DataLoci PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4. Diagram Sequence Simpan Hasil Deteksi Outlier. Pengguna <<boundary>> HalamanUtama 1. Menekan tombol Simpan 2. Menampilkan Save Dialog 3. Memilih lokasi penyimpanan 4. Mengisi nama file 5. Memilih tipe file 6. Menekan tombol Save 7. simpanLoci() 8. Menampilkan pesan file berhasil disimpan 136 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 5. 137 Diagram Sequence Seleksi Atribut. Pengguna <<boundary>> HalamanUtama <<entity>> ChecBoxController 1. Memilih atribut 2. Menekan tombol Hapus 3. hapusAtribut() 3. removeRow() 4. getPilih() 4. Menghapus atribut yang di pilih <<entity>> SeleksiAtribut PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 138 LAMPIRAN 8 Diagram Kelas Desain memanggil 1 <<boundary>> HalamanAwal 1 <<boundary>> HalamanPilihFile memanggil 1 <<boundary>> HalamanUtama 1 1 <<boundary>> 1 1 HalamanPilihDatabase memanggil memanggil 1 memanggil memanggil 1 * <<controller>> DatabaseController 1 1 memanggil <<boundary>> HalamanPilihTable <<entity>> KoneksiDatabase 1 1 * <<entity>> CheckBoxTableModel memanggil <<entity>> SeleksiAtribut memiliki 1 memanggil <<controller>> Graph 1 1 * <<entity>> Verteks memanggil 1 1 memanggil 1 memanggil <<boundary>> HalamanBantuan <<boundary>> HalamanTentang * <<entity>> LociTableModel 1 1 memanggil <<entity>> DataLoci PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 139 LAMPIRAN 9 Diagram Kelas Berikut ini merupakan rincian dan method untuk masing-masing diagram kelas: <<entity>> DatabaseConnection + selectTable(Connection conn, String namaTable): ResultSet + tampilTabelMYSql(Connection conn): ResultSet + tampilTabelOracle(Connection conn): ResultSet <<controller>> Graph - adjMat : Double[][] - alpha : Double - arneighbors : int[][] - konstanta : int - max : int - npar : int [][] - npir : int[][] - radius : Double - rneighbors : int[][] - size : int - vertexList : Verteks[] + Graph(int maxVertex) : Konstruktor + Search(String label) : int + Search2(String label) : void + addEdge(int awal, int akhir, Double nilai) : void + addVertex(String label, List<Double> nilai) : void PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI + cariARNeighborhood(Double radius, int indeks) : void + cariAnggotaARNeighbor(int indeks, Double radius) : List<String> + cariAnggotaRNeighbor(int indeks, Double radius) : Double + cariJarakEcludian(int indexAwal, int indexTujuan) : Double + cariLoci() : Double + cariRNeighborhood(Double radius, int indeks) : void + getAdjMat() : List<String> + getAlpha() : Double + getKonstanta() : int + getRadius() : Double + getSize() : Double + getVertexList() : int + inputData(JTable jTableData) : Verteks[][] + jumlahARNeighbors() : void + jumlahRNeighbors() : void + setARNeighborhood(String label) : void + setAdjMat(Double[][] adjMat) : void + setAlpha(Double alpha) : void + setAnggotaArNeighbor(String label, Double radius) : void + setAnggotaRNeighbor(String label, Double radius) : void + setDataLoci(String label) : LociTabelModel + setJumlahAnggota() : void + setKonstanta(int konstanta) : void + setNpar() : void + setNpir() : void + setRNeighborhood : void + setRadius(Double radius) : void + setVertexList(Vertex[] verteList) : void + tampilARNeighbor() : void + tampilJarakEcludien() : void + tampilRNeighbor() : void 140 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI <<entity>> Seleksi Atribut - atribut : String - pilih : Boolean + SeleksiAtribut() : Konstruktor + SeleksiAtribut(String atribut, Boolean pilih) : Konstruktor + getAtribut() : String + getPilih() : Boolean + setAtribut(String atribut) : void + setPilih(Boolean pilih) : void <<entity>> Verteks - AnggotaARNeighbor : Double - AnggotaRNeighbor : Double - arNeighbor : List<String> - avgNpira : Double - jumlah_arNeighbors : int - jumlah_rNeighbors : int - komdef : Double - label : String - mdef : Double - nilai : List<Double> - omdef : Double - rNeighbors : List<String> - stdevNpira : Double - wasVisited : boolean + Verteks(String label, List<Double> nilai) : Konstruktor 141 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI + getAnggotaARNeighbor() : Double + getAnggotaRNeighbor() : Double + getArNeighbors() : List<String> + getAvgpira() : Double + getJumlah_arNeighbors() : int + getJumlah_rNeighbors() : int + getKomdef() : Double + getLabel() : String + getMdef() : Double + getNilai() : List<Double> + getOmdef() : Double + getStdevNpira() : Double + getrNeighbors : List<String> + isWasVisited : boolean + setAnggotaARNeighbor(Double AnggotaARNeighbor) : void + setAnggotaRNeighbor(Double AnggotaRNeighbor) : void + setArNeighbors(List<String> arNeighbors) : List<String> + setAvgNpira(Double avgNpira) : void + setJumlah_arNeighbors(int jumlah_arNeighbors) : void + setJumlah_rNeighbors(int jumlah_rNeighbors) : void + setKomdef(Double komdef) : void + setLabel(String label) : void + setMdef(Double mdef) : void + setNilai(List<Double> nilai) : void + setOmdef(Double omdef) : void + setStdevNpira(Double stdevNpira) : void + setWasVisited(booelan wasVisited) : void + setrNeighbors(List<String>rNeighbors) : List<String> 142 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 143 <<entity>> CheckBoxTableModel - column : String[] - list : List<SeleksiAtribut> - seleksi : SeleksiAtribut + CheckBoxTableModel() : Konstruktor + add(int a, SeleksiAtribut field_m) : void + getColumnClass(int columnIndex) : Class + getColumnCount() : int + getColumnName(int col) : String + getRowCount() : int + getValueAt(int rowIndex, int columnIndex) : Object + isCellEditable(int row, int column) : boolean + removeRow() : void + setValueAt(Object value, int rowIndex, int columnIndex) : void <<entity>> DataLoci - komdef : Double - label : String - mdef : Double + getKomdef() : Double + getLabel() : String + gekMdef() : Double + setKomdef(Double komdef) : void + setLabel(String label) : void + setMdef(Double mdef) : void PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 144 <<controller>> KoneksiDatabase - connection : Connection - jdbcURL : String - password : String - user : String + KoneksiDataBase() : Konstruktor + Connected() : boolean + KoneksiDataBaseOracle(String, String, String) : Connection + KoneksiDataBaseSQL(String, String, String) : Connection + OracleConnected(String, String, String) : boolean + SQLConnected(String, String, String) : boolean + getClosed() : boolean + getConnection() : Connection + getJdbcURL() : String + getPassword() : String + getUser() : String + setConn(Connection connection) : void + setJdbcURL(String jdbcURL) : void + setPassword(String password) : void + setUser(String user) : void <<entity>> LociTabelModel - dlo : List<DataLoci> - label : String + LociTabelModel(List<DataLoci> dlo, String label) : Konstruktor + getColumnCount() : int + getColumnName(int column) : String PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI + getRowCount() : int + getValueAr(int rowIndex, int columnIndex) : Object + isCellEditable(int row, in col) : Boolean + setValueAt(Objecy val, int rowIndex, int columnIndex) : void <<boundary>> HalamanAwal - jLabel1 : JLabel - jLabel2 : JLabel - jLabel3 : JLabel - jLabel4 : JLabel - jLabel5 : JLabel - jLabel6 : JLabel - jPanel1 : JLabel - masukButton : JButton + HalamanAwal() : Konstruktor + masukButtonActionPerformed(ActionEvent evt) : void <<boundary>> HalamanBantuan - bantuanButton : JButton - jLabel12 : JLabel - jLabel14 : JLabel - jLabel2 : JLabel - jLabel3 : JLabel - jLabel5 : JLabel - jLabel6 : JLabel - jPanel1 : JLabel 145 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI - jPanel2 : JPanel - jPanel3 : JPanel - jPanel4 : JPanel - jScrollPane1 : JScrollPane - jTextArea1 : JTextArea - keluarButton : JButton - kembaliBurron : JButton - tentangButton : JButton + HalamanBantuan() : Konstruktor + bantuanButtonActionPerformed(ActionEvent evt) : void + keluarButtonActionPerformed(ActionEvent evt) : void + kembaliButtonActionPerformed(ActionEvent evt) : void + tentangButtonActionPerformed(ActionEvent evt) : void 146 <<boundary>> HalamanPilihDatabase - batalButton : JButton - dbNameTextField : JTextField - jLabel1 : JLabel - jLabel2 : JLabel - jLabel3 : JLabel - jLabel4 : JLabel - jLabel5 : JLabel - okButton : JButton - passwordField : JPasswordtField - pilihKoneksiComboBox : JComboBox - urlTextField : JTextField - userNameTextField : JTextField + HalamanPilihDatabase() : Konstruktor PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI + batalButtonActionPerformed(ActionEvent evt) : void + okButtonActionPerformed(ActionEvent evt) : void + pilihDatabase() : void + pilihKoneksiComboBoxActionPerformed(ActionEvent evt) : void 147 <<boundary>> HalamanPilihFile - jFileChooser1 JFileChooser + HalamanPilihFile() : Konstruktor <<boundary>> HalamanPilihTabel - OKButton : JButton - batalButton : JButton - jLabel1 : JLabel - koneksi : KoneksiDataBase - pilihTabelCombo : JComboBox + HalamanPilihTabel(KoneksiDataBase koneksi, String : Konstruktor database) + HalamanPilihTabel() : Konstruktor + OKButtonActionPerformed(ActionEvent evt) : void + batalButtonActionPerformed(ActionEvent evt) : void + tampilDaftarTabel(KoneksiDataBase database) koneksi, String : void PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI <<boundary>> HalamanTentang - bantuanButton : JButton - jLabel1 : JLabel - jLabel10 : JLabel - jLabel11 : JLabel - jLabel12 : JLabel - jLabel13 : JLabel - jLabel14 : JLabel - jLabel15 : JLabel - jLabel16 : JLabel - jLabel17 : JLabel - jLabel18 : JLabel - jLabel2 : JLabel - jLabel3 : JLabel JLabel - jLabel4 : JLabel - jLabel5 : JLabel - jLabel6 : JLabel - jLabel7 : JLabel - jLabel8 : JLabel - jLabel9 : JLabel - jPanel1 : JPanel - jPanel2 : JPanel - jPanel3 : JPanel - jPanel4 : JPanel - keluarButton : JButton - kembaliButton : JButton - tentangButton : JButton + HalamanTentang() : Konstruktor + bantuanButtonActionPerformed(ActionEvent evt) : void 148 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI + keluarButtonActionPerformed(ActionEvent evt) : void + kembaliButtonActionPerformed(ActionEvent evt) : void + tentangButtonActionPerformed(ActionEvent evt) : void 149 <<boundary>> HalamanUtama - HasilOutlierTable : JTable - alphaTextField : JTextField - bantuanButton : JButton - batalButton : JButton - batalSeleksiButton : JButton - checkboxtable : CheckBoxTableModel - dataOutlierTable : JTable - dataPreprocessTable : JTable - deteksiOutlierPanel : JPanel - graph : Graph - hapusButton : Jbutton - hapusOutlierButton : JButton - jDesktopPane1 : JDekstopPane - jLabel1 : JLabel - jLabel10 : JLabel - jLabel11 : JLabel - jLabel12 : JLabel - jLabel13 : JLabel - jLabel14 : JLabel - jLabel15 : JLabel - jLabel16 : JLabel - jLabel17 : JLabel - jLabel18 : JLabel PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI - jLabel2 : JLabel - jLabel3 : JLabel - jLabel4 : JLabel - jLabel5 : JLabel - jLabel6 : JLabel - jLabel7 : JLabel - jLabel8 : JLabel - jLabel9 : JLabel - jPanel1 : JPanel - jPanel2 : JPanel - jPanel3 : JPanel - jPanel4 : JPanel - jPanel6 : JPanel - jPanel7 : JPanel - jScrollPane1 : JSrollPane - jScrollPane2 : JSrollPane - jScrollPane3 : JSrollPane - jScrollPane4 : JSrollPane - jTabbedPane1 : JTabbedPane - jumlahDataOutlierTextField : JTextField - jumlahDataSeleksiTextField : JTextField - jumlahOutlierTextField : JTextField - keluarButton : JButton - konstantaTextField : JTextField - lamaDeteksiTextField : JTextField - pilihDatabaseButton : JButton - pilihFileButton : JButton - pilihFileTextField : JTextField - prosesButton : JButton - radiusTextField : JTextField - seleksiTable : JTable 150 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI - simpanButton : JButton - submitButton : JButton - tandaiSemuaButton : JButton - tentangButton : JButton + HalamanUtama() : Konstruktor + HalamanUtama(KoneksiDataBase koneksi, String table) : Konstruktor + alphaTextFieldKeyReleased(KeyEvent evt) : void + bantuanButtonActionPerformed(ActionEvent evt) : void + batalButtonActionPerformed(ActionEvent evt) : void + batalSeleksiButtonActionPerformed(ActionEvent evt) : void + hapusAtribut() : void + hapusButtonActionPerformed(ActionEvent evt) : void + hapusOutlierButtonActionPerformed(ActionEvent evt) : void + keluarButtonActionPerformed(ActionEvent evt) : void + konstantaTextFieldKeyReleased(KeyEvent evt) : void + pilihDataBase(KoneksiDataBase kdb, String table) : void + pilihDatabaseButtonActionPerformed(ActionEvent evt) : void + pilihFile() : void + pilihFileButtonActionPerformed(ActionEvent evt) : void + prosesButtonActionPerformed(ActionEvent evt) : void + prosesDeteksi() : void + radiusTextFieldKeyReleased(KeyEvent evt) : void + simpanButtonActionPerformed(ActionEvent evt) : void + simpanLoci() : void + submitButtonActionPerformed(ActionEvent evt) : void + submitData() : void + submitButtonActionPerformed(ActionEvent evt) : void + tentangButtonActionPerformed(ActionEvent evt) : void 151 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 152 LAMPIRAN 10 Listing Program 1. Implementasi Kelas Graph.java Method graph berfungsi untuk membentuk graph dan untuk membentuk verteks dari setiap obyek data. Dalam graph juga terdapat edge yang berfungsi untuk menghubungkan verteks. Method graph ini menggunakan sebuah parameter yaitu maxVertex. Parameter maxVertex berfungsi sebagai ukuran maksimum dari verteks. Method addVertex berfungsi untuk membuat sebuah verteks. Dalam method ini menggunakan dua parameter yaitu label dan nilai. Setiap obyek merupakan verteks. Kemudian untuk memasukkan nilai edge antar obyek, nilai edge diinputkan melalui method addEdge. Nilai edge adalah nilai jarak yang dihitung menggunakan rumus Euclidean Distance. package Controller; import Model.DataLoci; import Model.LociTabelModel; import java.util.ArrayList; import java.util.List; import javax.swing.JTable; public class Graph { private Verteks vertexList[]; //simpul private int size = 0; private Double adjMat[][]; //garis atau edge private Double radius; private Double alpha; private int konstanta; PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI private int npir[]; private int npar[]; private int rneighbors[][]; private int arneighbors[][]; private int max; public Graph(int maxVertex) { vertexList = new Verteks[maxVertex]; max = maxVertex + 1; // adjacency matrix adjMat = new Double[maxVertex][maxVertex]; npir = new int[maxVertex]; npar = new int[maxVertex]; rneighbors = new int[maxVertex][maxVertex]; arneighbors = new int[maxVertex][maxVertex]; for (int i = 0; i < maxVertex; i++) { for (int j = 0; j < maxVertex; j++) { if (i == j) { adjMat[i][j] = 0.0; } else { adjMat[i][j] = -1.0; } } } } public void addVertex(String label, List<Double> nilai) { vertexList[size++] = new Verteks(label, nilai); } 153 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI public void addEdge(int awal, int akhir, Double nilai) { adjMat[awal][akhir] = adjMat[akhir][awal] = nilai; } public void setAdjMat(Double[][] adjMat) { this.adjMat = adjMat; } public void setSize(int size) { this.size = size; } public void setVertexList(Verteks[] vertexList) { this.vertexList = vertexList; } public Double[][] getAdjMat() { return adjMat; } public int getSize() { return size; } public Verteks[] getVertexList() { return vertexList; } public void setRadius(Double radius) { this.radius = radius; } 154 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI public Double getRadius() { return radius; } public void setAlpha(Double alpha) { this.alpha = alpha; } public Double getAlpha() { return alpha; } public int getKonstanta() { return konstanta; } public void setKonstanta(int konstanta) { this.konstanta = konstanta; } public Double cariJarakEcludian(int indexAwal, int indexTujuan) { List<Double> a = new ArrayList<Double>(); List<Double> b = new ArrayList<Double>(); a = vertexList[indexAwal].getNilai(); b = vertexList[indexTujuan].getNilai(); Double total = 0.0; for (int i = 0; i < a.size(); i++) { total = total + Math.pow((a.get(i) - b.get(i)), 2); } 155 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 156 return Math.sqrt(total); } public List<String> cariRNeighborhood(Double radius, int indeks) { List<String> a = new ArrayList<String>(); if (indeks == -1) { System.out.println("Tidak ada Kota dalam Peta"); } else { for (int i = 0; i < vertexList.length; i++) { if (adjMat[indeks][i] != -1 && adjMat[indeks][i] != 0) { if (adjMat[indeks][i] <= radius) { a.add(vertexList[i].getLabel()); } } } } return a; } public void setRNeighborhood(String label) { int indeks = Search(label); vertexList[indeks].setrNeighbors(cariRNeighborhood(vertexList[indeks]. getAnggotaRNeighbor(), indeks)); } public void setAnggotaRNeighbor(String label, Double radius) { int indeks = Search(label); vertexList[indeks].setAnggotaRNeighbor(cariAnggotaRNeighbor(indeks, radius)); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 157 } public Double cariAnggotaRNeighbor(int indeks, Double radius) { for (int i = 0; i < vertexList.length; i++) { vertexList[i].setWasVisited(false); } Double AnggotaRNeighbor = 0.0; Double temp1 = Double.MAX_VALUE; int anggotaNpir = 0; if (indeks == -1) { System.out.println("Tidak ada kota dalam peta"); } else { for (int i = 0; i < vertexList.length; i++) { if (adjMat[indeks][i] != -1 && vertexList[i].isWasVisited() == false) { if (adjMat[indeks][i] <= radius) { temp1 = adjMat[indeks][i]; anggotaNpir = anggotaNpir + npir[i]; } } } AnggotaRNeighbor = temp1; Search2(temp1, indeks); temp1 = Double.MAX_VALUE; } return AnggotaRNeighbor; } PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 158 public void setNpir() { int x = 0; for (int i = 0; i < adjMat.length; i++) { for (int j = 0; j < vertexList.length; j++) { if (adjMat[i][j] <= getRadius()) { x = x + 1; rneighbors[i][j] = j; } } npir[i] = x; x = 0; } } public void tampilRNeighbor() { int rn = 0; for (int i = 0; i < vertexList.length; i++) { System.out.println(" " + vertexList[i].getLabel() + "\t"); for (int j = 0; j < vertexList.length; j++) { if (adjMat[i][j] <= getRadius()) { rn = rn + 1; System.out.println("anggota npir[" + j + "]" + adjMat[i][j] + "\t"); } } System.out.println("n(pi,r) [" + i + "] = " + rn); System.out.println(""); rn = 0; } } PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 159 public List<String> cariARNeighborhood(Double radius, int indeks) { List<String> a = new ArrayList<String>(); if (indeks == -1) { System.out.println("Tidak ada Kota dalam Peta"); } else { for (int i = 0; i < vertexList.length; i++) { if (adjMat[indeks][i] != -1 && adjMat[indeks][i] != 0) { if (adjMat[indeks][i] <= (getAlpha() * radius)) { a.add(vertexList[i].getLabel()); } } } } return a; } public void setARNeighborhood(String label) { int indeks = Search(label); vertexList[indeks].setArNeighbors(cariARNeighborhood(vertexList[inde ks].getAnggotaRNeighbor(), indeks)); } public void setAnggotaARNeighbor(String label, Double radius) { int indeks = Search(label); vertexList[indeks].setAnggotaARNeighbor(cariAnggotaARNeighbor(ind eks, radius)); } public Double cariAnggotaARNeighbor(int indeks, Double radius) { PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 160 for (int i = 0; i < vertexList.length; i++) { vertexList[i].setWasVisited(false); } Double AnggotaARNeighbor = 0.0; Double temp2 = Double.MAX_VALUE; int anggotaNpar = 0; if (indeks == -1) { System.out.println("Tidak ada kota dalam peta"); } else { for (int i = 0; i < vertexList.length; i++) { if (adjMat[indeks][i] != -1 && vertexList[i].isWasVisited() == false) { if (adjMat[indeks][i] <= (getAlpha() * radius)) { temp2 = adjMat[indeks][i]; anggotaNpar = anggotaNpar + npar[i]; } } } AnggotaARNeighbor = temp2; Search2(temp2, indeks); temp2 = Double.MAX_VALUE; } return AnggotaARNeighbor; } public void setNpar() { int x = 0; for (int i = 0; i < adjMat.length; i++) { for (int j = 0; j < vertexList.length; j++) { PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 161 if (adjMat[i][j] <= (getAlpha() * getRadius())) { x = x + 1; arneighbors[i][j] = j; } } npar[i] = x; x = 0; } } public void tampilARNeighbor() { int arn = 0; for (int i = 0; i < vertexList.length; i++) { System.out.println(" " + vertexList[i].getLabel() + "\t"); for (int j = 0; j < vertexList.length; j++) { if (adjMat[i][j] <= (getAlpha() * getRadius())) { arn = arn + 1; System.out.println("anggota npar[" + j + "]" + adjMat[i][j] + "\t"); } } System.out.println("n(pa,r) [" + i + "] = " + arn); System.out.println(""); arn = 0; } } public int Search(String label) { for (int i = 0; i < vertexList.length; i++) { if (label.equals(vertexList[i].getLabel())) { return i; PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI } } return -1; } public void Search2(Double jarak, int indeks) { for (int i = 0; i < vertexList.length; i++) { if (adjMat[indeks][i].equals(jarak)) { vertexList[i].setWasVisited(true); } } } public void tampilJarakEuclidean() { System.out.print("\t"); for (int i = 0; i < vertexList.length; i++) { System.out.print("" + vertexList[i].getLabel() + "\t"); } System.out.println(""); for (int i = 0; i < adjMat.length; i++) { System.out.print("" + vertexList[i].getLabel() + "\t"); for (int j = 0; j < vertexList.length; j++) { System.out.print("" + adjMat[i][j] + "\t"); } System.out.println(""); } System.out.println(""); } public void setJumlahAnggota() { 162 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI int x = 0; int y = 0; for (int i = 0; i < adjMat.length; i++) { for (int j = 0; j < vertexList.length; j++) { if (adjMat[i][j] <= getRadius()) { x = x + 1; rneighbors[i][j] = j; } else { rneighbors[i][j] = max; } if (adjMat[i][j] <= (getAlpha() * getRadius())) { y = y + 1; arneighbors[i][j] = j; } } npir[i] = x; npar[i] = y; x = 0; y = 0; } } public void cariLoci() { Double jml_npar = 0.0; Double jml_npar2 = 0.0; Double avgNpira; Double stdevNpira; Double mdef; Double omdef; Double komdef; 163 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 164 for (int i = 0; i < adjMat.length; i++) { setJumlahAnggota(); for (int j = 0; j < rneighbors.length; j++) { if (rneighbors[i][j] != max) { jml_npar = jml_npar + npar[j]; } } avgNpira = jml_npar / npir[i]; System.out.println("avgNpira [" + i + "] = " + avgNpira); for (int j = 0; j < rneighbors.length; j++) { if (rneighbors[i][j] != max) { jml_npar2 = jml_npar2 + Math.pow((npar[j] - avgNpira), 2); } } stdevNpira = Math.sqrt(jml_npar2 / npir[i]); System.out.println("stdevNpira [" + i + "] = " + stdevNpira); mdef = 1 - (npar[i] / avgNpira); System.out.println("mdef [" + i + "] = " + mdef); vertexList[i].setMdef(mdef); omdef = stdevNpira / avgNpira; System.out.println("omdef [" + i + "] = " + omdef); vertexList[i].setOmdef(omdef); komdef = konstanta * omdef; System.out.println("komdef [" + i + "] = " + komdef); vertexList[i].setKomdef(komdef); if (mdef > komdef) { PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 165 System.out.println("Mahasiswa [" + i + "] = " + "OUTLIER"); } else { System.out.println("Mahasiswa [" + i + "] = " + "BUKAN OUTLIER"); } System.out.println(""); jml_npar = 0.0; jml_npar2 = 0.0; mdef = 0.0; omdef = 0.0; komdef = 0.0; } } public void inputData(JTable jTableData) { for (int i = 0; i < jTableData.getRowCount(); i++) { String label = ""; List<Double> listNilai = new ArrayList<Double>(); for (int j = 0; j < jTableData.getColumnCount(); j++) { if (j == 0) { if (jTableData.getValueAt(i, j).toString().equals("")) { label = "null"; } else { label = jTableData.getValueAt(i, j).toString(); } } else { if (jTableData.getValueAt(i, j).toString().equals("")) { listNilai.add(0.0); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI } else if (jTableData.getValueAt(i, j).toString().matches("[^0-9]*")) { listNilai.add(0.0); } else { listNilai.add(Double.parseDouble(jTableData.getValueAt(i, j).toString().replace(",", "."))); } } } addVertex(label, listNilai); } for (int i = 0; i < jTableData.getRowCount(); i++) { for (int j = i + 1; j < jTableData.getRowCount(); j++) { if (i != j) { addEdge(i, j, cariJarakEcludian(i, j)); } } } } public LociTabelModel setDataLoci(String label) { List<DataLoci> dlc = new ArrayList<DataLoci>(); DataLoci dl; for (int i = 0; i < vertexList.length; i++) { if (vertexList[i].getMdef() > vertexList[i].getKomdef()) { dl = new DataLoci(); dl.setLabel(vertexList[i].getLabel()); dl.setMdef(vertexList[i].getMdef()); dl.setKomdef(vertexList[i].getKomdef()); 166 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 167 dlc.add(dl); } } LociTabelModel ltm = new LociTabelModel(dlc, label); return ltm; } } 2. Implementasi Kelas Verteks.java Kelas ini adalah kelas yang menyimpan setiap obyek data ke dalam verteks. Kelas ini adalah terdapat beberapa atribut yang berfungsi untuk menghitung dan melakukan proses deteksi outlier pada seriap obyek data sehingga nantinya setiap obyek data akan memiliki atribut-atribut tersebut. package Controller; import java.util.List; public class Verteks { public String label; List<Double> nilai; private boolean wasVisited = false; private int jumlah_rNeighbors; private List<String> rNeighbors; private int jumlah_arNeighbors; private List<String> arNeighbors; private Double avgNpira; private Double stdevNpira; private Double mdef; PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI private Double omdef; private Double komdef; private Double AnggotaRNeighbor; private Double AnggotaARNeighbor; public Verteks(String label, List<Double> nilai) { this.label = label; this.nilai = nilai; } public void setArNeighbors(List<String> arNeighbors) { this.arNeighbors = arNeighbors; } public void setJumlah_arNeighbors(int jumlah_arNeighbors) { this.jumlah_arNeighbors = jumlah_arNeighbors; } public void setJumlah_rNeighbors(int jumlah_rNeighbors) { this.jumlah_rNeighbors = jumlah_rNeighbors; } public void setLabel(String label) { this.label = label; } public void setMdef(Double mdef) { this.mdef = mdef; } public void setNilai(List<Double> nilai) { 168 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI this.nilai = nilai; } public void setrNeighbors(List<String> rNeighbors) { this.rNeighbors = rNeighbors; } public void setWasVisited(boolean wasVisited) { this.wasVisited = wasVisited; } public List<String> getArNeighbors() { return arNeighbors; } public int getJumlah_arNeighbors() { return jumlah_arNeighbors; } public int getJumlah_rNeighbors() { return jumlah_rNeighbors; } public String getLabel() { return label; } public Double getMdef() { return mdef; } 169 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI public List<Double> getNilai() { return nilai; } public List<String> getrNeighbors() { return rNeighbors; } public boolean isWasVisited() { return wasVisited; } public Double getAnggotaRNeighbor() { return AnggotaRNeighbor; } public void setAnggotaRNeighbor(Double AnggotaRNeighbor) { this.AnggotaRNeighbor = AnggotaRNeighbor; } public Double getAnggotaARNeighbor() { return AnggotaARNeighbor; } public void setAnggotaARNeighbor(Double AnggotaARNeighbor) { this.AnggotaARNeighbor = AnggotaARNeighbor; } public Double getAvgNpira() { return avgNpira; } 170 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI public Double getStdevNpira() { return stdevNpira; } public void setAvgNpira(Double avgNpira) { this.avgNpira = avgNpira; } public void setStdevNpira(Double stdevNpira) { this.stdevNpira = stdevNpira; } public Double getOmdef() { return omdef; } public void setOmdef(Double omdef) { this.omdef = omdef; } public Double getKomdef() { return komdef; } public void setKomdef(Double komdef) { this.komdef = komdef; } } 171 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3. 172 Implementasi Kelas DataLoci.java Method DataLoci memiliki atribut label, mdef, da komdef. Atribut ini digunakan untuk menampilkan hasil deteksi outlier pada tab Deteksi Outlier. package Model; public class DataLoci { private String label; private Double mdef; private Double komdef; public Double getKomdef() { return komdef; } public String getLabel() { return label; } public Double getMdef() { return mdef; } public void setKomdef(Double komdef) { this.komdef = komdef; } public void setLabel(String label) { this.label = label; } PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 173 public void setMdef(Double mdef) { this.mdef = mdef; } } 4. Implementasi Kelas DatabaseController.java Pada kelas DatabaseController.java terdapat method tampilTabelOracle, tampilTabelMySql, dan selectTable. Dimana method tampilTabelOracle berfungsi untuk menampilkan tabel dalam Oracle. Method tampilTabelMySql berfungsi untuk menampilkan tabel dalam MySql. Method selectTable berfungsi untuk memanggil tabel yang dipilih. package Controller; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class DatabaseController { public ResultSet tampilTabelOracle(Connection conn) throws SQLException { Statement stmt; ResultSet rset; String query; stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI query = "select table_name from user_tables"; System.out.println("\nExecuting query: " + query); rset = stmt.executeQuery(query); return rset; } public ResultSet tampilTabelMYSql(Connection conn) throws SQLException { Statement stmt; ResultSet rset; String query; stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); query = "show tables"; System.out.println("\nExecuting query: " + query); rset = stmt.executeQuery(query); return rset; } public ResultSet selectTable(Connection conn, String namaTable) throws SQLException { Statement stmt; ResultSet rset; String query; stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); query = "select * from "+ namaTable; 174 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 175 System.out.println("\nExecuting query: " + query); rset = stmt.executeQuery(query); return rset; } } 5. Implementasi Kelas Seleksi Atribut.java Pada method SeleksiAtribut memiliki atribut getAtribut dan set atribut yang beripe String, juga getPilih dan setPilih yang bertipe Boolean. package Controller; public class SeleksiAtribut { private String atribut; private Boolean pilih; public SeleksiAtribut() { } public SeleksiAtribut(String atribut, Boolean pilih) { this.atribut = atribut; this.pilih = pilih; } public String getAtribut() { return atribut; } public Boolean getPilih() { PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 176 return pilih; } public void setAtribut(String atribut) { this.atribut = atribut; } public void setPilih(Boolean pilih) { this.pilih = pilih; } } 6. Implementasi Kelas CheckBoxTableModel.java Method CheckBoxTableModel berfungsi untuk menyeleksi atribut yang akan digunakan untuk proses deteksi. Fungsi ini dilakukan pada Halaman Utama. package Model; import Controller.SeleksiAtribut; import java.util.ArrayList; import java.util.List; import javax.swing.table.AbstractTableModel; public class CheckBoxTableModel extends AbstractTableModel{ String[] column = {"Atribut", "Pilih"}; SeleksiAtribut seleksi = new SeleksiAtribut("", false); List<SeleksiAtribut> list; PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI public CheckBoxTableModel() { list = new ArrayList<SeleksiAtribut>(); } public int getRowCount() { return list.size(); } public int getColumnCount() { return column.length; } @Override public String getColumnName(int col){ return column[col]; } public Object getValueAt(int rowIndex, int columnIndex) { switch (columnIndex){ case 0: return list.get(rowIndex).getAtribut(); case 1: return list.get(rowIndex).getPilih(); } return null; } @Override public Class getColumnClass(int columnIndex){ return getValueAt(0, columnIndex).getClass(); 177 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 178 } @Override public void setValueAt(Object value, int rowIndex, int columnIndex){ switch (columnIndex){ case 0: list.get(rowIndex).setAtribut(value.toString()); break; case 1: list.get(rowIndex).setPilih((Boolean) value); break; } fireTableCellUpdated(rowIndex, columnIndex); } @Override public boolean isCellEditable(int row, int column){ return true; } public void add(int a, SeleksiAtribut field_m){ list.add(a, field_m); fireTableCellUpdated(getRowCount() - 1, getRowCount() - 1); } public void removeRow(){ List<SeleksiAtribut> sa = new ArrayList<SeleksiAtribut>(); for (SeleksiAtribut select : list){ if(!select.getPilih()){ sa.add(select); } PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 179 } list = sa; fireTableDataChanged(); } } 7. Implementasi Kelas KoneksiDatabase.java Method KoneksiDataBase berfungsi untuk menginputkan data dari tabel basisdata baik dari MySQL maupun dari Oracle. Kemudian data akan di tampilkan pada tabel di Halaman Utama. package Model; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import oracle.jdbc.OracleDriver; public class KoneksiDataBase { private static String jdbcURL; private static String user; private static String password; private static Connection connection = null; public KoneksiDataBase() { } PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 180 public static Connection KoneksiDataBaseSQL(String url, String user, String password) { try { Class.forName("org.gjt.mm.mysql.Driver"); connection = DriverManager.getConnection(url, user, password); System.out.println("koneksi berhasil"); } catch (Exception ex) { System.out.println("message: " + ex.getMessage()); } return connection; } public static Connection KoneksiDataBaseOracle(String url, String user, String password) { try { DriverManager.registerDriver(new OracleDriver()); connection = DriverManager.getConnection(url, user, password); System.out.println("koneksi berhasil"); } catch (Exception ex) { System.out.println("message: " + ex.getMessage()); } return connection; } public boolean Connected() { if (connection != null) { return true; } else { return false; } } PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI public boolean OracleConnected(String url, String username, String password) { if (KoneksiDataBaseOracle(url, username, password) != null) { return true; } else { return false; } } public boolean SQLConnected(String url, String username, String password) { if (KoneksiDataBaseSQL(url, username, password) != null) { return true; } else { return false; } } public boolean getClosed() { if (Connected()) { try { connection.close(); connection = null; } catch (SQLException ex) { ex.printStackTrace(); } return true; } else { return false; } 181 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI } public String getJdbcURL() { return jdbcURL; } public void setJdbcURL(String jdbcURL) { this.jdbcURL = jdbcURL; } public String getUser() { return user; } public void setUser(String user) { this.user = user; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Connection getConnection() { return connection; } public void setConn(Connection connection) { 182 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 183 this.connection = connection; } public static void main(String[] args) { } } 8. Implementasi Kelas LociTabelModel.java Method LociTabelModel memiliki atribut List<DataLoci> dan label. Method ini berfungsi untuk mengeset tabel untuk menampilkan hasil deteksi outlier. package Model; import Controller.Verteks; import java.util.ArrayList; import java.util.List; import javax.swing.table.AbstractTableModel; public class LociTabelModel extends AbstractTableModel { private List<DataLoci> dlo = new ArrayList<DataLoci>(); String label; public LociTabelModel(List<DataLoci> dlo, String label) { this.dlo = dlo; label = label; } PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI public int getRowCount() { return dlo.size(); } public int getColumnCount() { return 3; } public Object getValueAt(int rowIndex, int columnIndex) { DataLoci dloci = dlo.get(rowIndex); switch (columnIndex) { case 0: return dloci.getLabel(); case 1: return dloci.getMdef(); case 2: return dloci.getKomdef(); default: return ""; } } @Override public String getColumnName(int column) { switch (column) { case 0: return "Nomor"; case 1: return "Mdef"; case 2: return "koMdef"; 184 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI default: return ""; } } @Override public boolean isCellEditable(int row, int col) { return true; } @Override public void setValueAt(Object val, int rowIndex, int columnIndex) { switch (columnIndex) { case 0: dlo.get(rowIndex).setLabel(val.toString()); break; case 1: dlo.get(rowIndex).setMdef((Double) val); break; case 2: dlo.get(rowIndex).setKomdef((Double) val); break; } fireTableCellUpdated(rowIndex, columnIndex); } } 185 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 9. 186 Implementasi Kelas HalamanAwal.form HalamanAwal merupakan halaman pertama yang akan tampil. Pada halaman ini terdapat fungsi yang mengubungkan ke Halaman Utama. package View; public class HalamanAwal extends javax.swing.JFrame { public HalamanAwal() { initComponents(); setLocationRelativeTo(this); setTitle("Halaman Awal"); } private void masukButtonActionPerformed(java.awt.event.ActionEvent evt) { HalamanUtama utama = new HalamanUtama(); utama.setVisible(true); this.dispose(); } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new HalamanAwal().setVisible(true); } }); } private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 187 private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JPanel jPanel1; private javax.swing.JButton masukButton; } 10. Implementasi Kelas HalamanBantuan.form HalamanBantuan berisi tentang petunjuk penggunaan sistem untuk melakukan pendeteksian outlier menggunakan algoritma Local Correlation Integral. Halaman ini akan tampil setelah pengguna menekan tombol ‘Bantuan’ pada halaman utama sistem. package View; import javax.swing.JOptionPane; public class HalamanBantuan extends javax.swing.JFrame { public HalamanBantuan() { initComponents(); setLocationRelativeTo(this); } private void tentangButtonActionPerformed(java.awt.event.ActionEvent evt) { HalamanTentang tentang = new HalamanTentang(); tentang.setVisible(true); this.dispose(); } PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 188 private void bantuanButtonActionPerformed(java.awt.event.ActionEvent evt) { HalamanBantuan bantuan = new HalamanBantuan(); bantuan.setVisible(true); this.dispose(); } private void keluarButtonActionPerformed(java.awt.event.ActionEvent evt) { int keluar = JOptionPane.showConfirmDialog(null, "Apakah anda yakin ingin keluar dari sistem?", "Konfirmasi", JOptionPane.YES_NO_OPTION); if (keluar == JOptionPane.YES_OPTION) { this.dispose(); } else if (keluar == JOptionPane.NO_OPTION) { return; } } private void kembaliButtonActionPerformed(java.awt.event.ActionEvent evt) { HalamanUtama utama = new HalamanUtama(); utama.setVisible(true); this.dispose(); } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new HalamanBantuan().setVisible(true); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI } }); } private javax.swing.JButton bantuanButton; private javax.swing.JButton jButton2; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel12; private javax.swing.JLabel jLabel14; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel4; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTextArea jTextArea1; private javax.swing.JButton keluarButton; private javax.swing.JButton kembaliButton; private javax.swing.JButton tentangButton; } 189 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 11. 190 Implementasi Kelas HalamanPilihDatabase.form HalamanPilihDatabase merupakan halaman yang akan tampil setelah pengguna menekan tombol ‘Pilih Database’ pada tab Preprosessing. Halaman ini berfungsi untuk menyambungkan sistem ke database untuk proses input data dari database. package View; import Model.KoneksiDataBase; import javax.swing.JOptionPane; public class HalamanPilihDatabase extends javax.swing.JFrame { public HalamanPilihDatabase() { initComponents(); setResizable(false); setLocationRelativeTo(this); } private void okButtonActionPerformed(java.awt.event.ActionEvent evt) { pilihDatabase(); } private void batalButtonActionPerformed(java.awt.event.ActionEvent evt) { this.dispose(); } private void pilihKoneksiComboBoxActionPerformed(java.awt.event.ActionEvent evt) { if (pilihKoneksiComboBox.getSelectedItem().equals("Oracle")){ dbNameTextField.setText(null); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 191 dbNameTextField.enable(); urlTextField.setText("jdbc:oracle:thin:@localhost:1521:XE"); } else if (pilihKoneksiComboBox.getSelectedItem().equals("MySql")){ dbNameTextField.setText(null); dbNameTextField.enable(); urlTextField.setText("jdbc:mysql://localhost:3306/"); } } public void pilihDatabase() { if (pilihKoneksiComboBox.getSelectedIndex() == 0) { if (userNameTextField.getText().isEmpty() || passwordField.getText().isEmpty() || urlTextField.getText().isEmpty()) { JOptionPane.showMessageDialog(null, "Username, Password, Nama Database, dan URL tidak boleh kosong!"); } else { String username = userNameTextField.getText(); String password = passwordField.getText(); String url = urlTextField.getText(); String database = dbNameTextField.getText(); KoneksiDataBase conn = new KoneksiDataBase(); boolean kon = conn.SQLConnected(url + database, username, password); if (kon == true) { JOptionPane.showMessageDialog(null, "Koneksi ke Database MySQL Berhasil"); HalamanPilihTabel pt = new HalamanPilihTabel(conn, pilihKoneksiComboBox.getSelectedItem().toString()); pt.setVisible(true); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 192 this.dispose(); } else { JOptionPane.showMessageDialog(null, "Username, Password, URL yang anda masukkan salah"); userNameTextField.setText(""); passwordField.setText(""); dbNameTextField.setText(""); urlTextField.setText(""); } } } else if (pilihKoneksiComboBox.getSelectedIndex() == 1) { if (userNameTextField.getText().isEmpty() || passwordField.getText().isEmpty() || dbNameTextField.getText().isEmpty() || urlTextField.getText().isEmpty()) { JOptionPane.showMessageDialog(null, "Username, Password, Nama Database, dan URL tidak boleh kosong!"); } else { String username = userNameTextField.getText(); String password = passwordField.getText(); String url = urlTextField.getText(); String database = dbNameTextField.getText(); KoneksiDataBase conn = new KoneksiDataBase(); boolean kon = conn.OracleConnected(url, username, password); if (kon == true) { JOptionPane.showMessageDialog(null, "Koneksi ke Database Oracle Berhasil"); HalamanPilihTabel pt = new HalamanPilihTabel(conn, pilihKoneksiComboBox.getSelectedItem().toString()); pt.setVisible(true); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 193 this.dispose(); } else { JOptionPane.showMessageDialog(null, "Username, Password, Nama Database, dan URL yang anda masukkan salah"); userNameTextField.setText(""); passwordField.setText(""); dbNameTextField.setText(""); urlTextField.setText(""); } } } } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new HalamanPilihDatabase().setVisible(true); } }); } private javax.swing.JButton batalButton; private javax.swing.JTextField dbNameTextField; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JButton okButton; private javax.swing.JPasswordField passwordField; PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 194 private javax.swing.JComboBox pilihKoneksiComboBox; private javax.swing.JTextField urlTextField; private javax.swing.JTextField userNameTextField; } 12. Implementasi Kelas HalamanPilihFile.form HalamanPilihFile akan tampil setelah pengguna menekan tombol ‘Pilih File’ pada tab Preprosessing. Halaman ini berfungsi untuk menginputkan data dengan format .xls atau .csv. Halaman ini berupa File Chooser. package View; public class HalamanPilihFile extends javax.swing.JFrame { public HalamanPilihFile() { initComponents(); setLocationRelativeTo(this); } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new HalamanPilihFile().setVisible(true); } }); } private javax.swing.JFileChooser jFileChooser1; } PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 13. 195 Implementasi Kelas HalamanPilihTabel.form HalamanPilihTabel merupakan halaman yang akan tampil setelah pengguna terhubung dengan database pada fungsi HalamanPilihDatabase. Setelah sistem terhubung ke database, pengguna dapat memilih tabel basisdata yang akan diinput datanya untuk proses deteksi. package View; import Controller.DatabaseController; import Model.KoneksiDataBase; import java.sql.ResultSet; import java.sql.SQLException; import java.util.logging.Level; import java.util.logging.Logger; public class HalamanPilihTabel extends javax.swing.JFrame { KoneksiDataBase koneksi; public HalamanPilihTabel(KoneksiDataBase koneksi, String database) { initComponents(); setLocationRelativeTo(this); tampilDaftarTabel(koneksi, database); } private HalamanPilihTabel() { } public void tampilDaftarTabel(KoneksiDataBase koneksi, String database) { this.koneksi = koneksi; PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 196 try{ DatabaseController dbc = new DatabaseController(); ResultSet rset; if (database.equals("Oracle")) { rset = dbc.tampilTabelOracle(koneksi.getConnection()); while (rset.next()) { pilihTabelCombo.addItem(rset.getString(1)); } } else if (database.equals("MySql")) { rset = dbc.tampilTabelMYSql(koneksi.getConnection()); while (rset.next()) { pilihTabelCombo.addItem(rset.getString(1)); } } } catch (SQLException ex) { Logger.getLogger(HalamanPilihTabel.class.getName()).log(Level.SEVERE, null, ex); } } private void batalButtonActionPerformed(java.awt.event.ActionEvent evt) { this.dispose(); } private void OKButtonActionPerformed(java.awt.event.ActionEvent evt) { PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI HalamanUtama utama = new HalamanUtama(koneksi, pilihTabelCombo.getSelectedItem().toString()); utama.setVisible(true); this.dispose(); } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new HalamanPilihTabel().setVisible(true); } }); } private javax.swing.JButton OKButton; private javax.swing.JButton batalButton; private javax.swing.JLabel jLabel1; private javax.swing.JComboBox pilihTabelCombo; } 197 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 14. 198 Implementasi kelas HalamanTentang.form HalamanTentang berisi pengembangan alat bantu Deteksi Outlier menggunakan algoritma Local Correlation Integral. Halaman ini akan tampil setelah pengguna menekan tombol ‘Tentang’ pada halaman utama sistem. package View; import javax.swing.JOptionPane; public class HalamanTentang extends javax.swing.JFrame { public HalamanTentang() { initComponents(); setLocationRelativeTo(this); } private void tentangButtonActionPerformed(java.awt.event.ActionEvent evt) { HalamanTentang tentang = new HalamanTentang(); tentang.setVisible(true); this.dispose(); } private void bantuanButtonActionPerformed(java.awt.event.ActionEvent evt) { HalamanBantuan bantuan = new HalamanBantuan(); bantuan.setVisible(true); this.dispose(); } private void keluarButtonActionPerformed(java.awt.event.ActionEvent evt) { PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 199 int keluar = JOptionPane.showConfirmDialog(null, "Apakah anda yakin ingin keluar dari sistem?", "Konfirmasi", JOptionPane.YES_NO_OPTION); if (keluar == JOptionPane.YES_OPTION) { this.dispose(); } else if (keluar == JOptionPane.NO_OPTION) { return; } } private void kembaliButtonActionPerformed(java.awt.event.ActionEvent evt) { HalamanUtama utama = new HalamanUtama(); utama.setVisible(true); this.dispose(); } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new HalamanTentang().setVisible(true); } }); } private javax.swing.JButton jButton2; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel10; private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel12; private javax.swing.JLabel jLabel13; PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI private javax.swing.JLabel jLabel14; private javax.swing.JLabel jLabel15; private javax.swing.JLabel jLabel16; private javax.swing.JLabel jLabel17; private javax.swing.JLabel jLabel18; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel4; private javax.swing.JButton keluarButton; private javax.swing.JButton kembaliButton; private javax.swing.JButton tentangButton; } 200 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 15. 201 Implementasi Kelas HalamanUtama.form HalamanUtama merupakan fungsi utama dari sistem pendeteksi outlier menggunakan algoritma Local Correlation Integral. Halaman ini merupakan interface utama ketika pengguna melakukan proses deteksi. package View; import Controller.DatabaseController; import Controller.Graph; import Controller.SeleksiAtribut; import Model.CheckBoxTableModel; import Model.KoneksiDataBase; import java.awt.CheckboxMenuItem; import java.awt.Component; import java.awt.Dimension; import java.awt.event.AdjustmentListener; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.ArrayList; import java.util.StringTokenizer; import java.util.Vector; import java.util.logging.Level; import java.util.logging.Logger; PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI import javax.swing.DefaultRowSorter; import javax.swing.JDesktopPane; import javax.swing.JFileChooser; import javax.swing.JOptionPane; import javax.swing.JTable; import javax.swing.filechooser.FileNameExtensionFilter; import javax.swing.table.DefaultTableColumnModel; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel; import javax.swing.table.TableModel; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; public class HalamanUtama extends javax.swing.JFrame { Graph graph; CheckBoxTableModel cekboxtable = new CheckBoxTableModel(); private DefaultTableModel model; public HalamanUtama() { initComponents(); setTitle("Halaman Utama"); setLocationRelativeTo(this); jDesktopPane1.getMaximumSize(); setResizable(false); cekboxtable.removeRow(); } 202 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 203 public HalamanUtama(KoneksiDataBase koneksi, String table) { initComponents(); setLocationRelativeTo(this); jDesktopPane1.getMaximumSize(); jTabbedPane1.setEnabledAt(1, false); pilihDataBase(koneksi, table); } private void pilihDatabaseButtonActionPerformed(java.awt.event.ActionEvent evt) { HalamanPilihDatabase db = new HalamanPilihDatabase(); db.setVisible(true); this.dispose(); } private void tentangButtonActionPerformed(java.awt.event.ActionEvent evt) { HalamanTentang tentang = new HalamanTentang(); tentang.setVisible(true); this.dispose(); } private void bantuanButtonActionPerformed(java.awt.event.ActionEvent evt) { HalamanBantuan bantuan = new HalamanBantuan(); bantuan.setVisible(true); this.dispose(); } PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 204 private void keluarButtonActionPerformed(java.awt.event.ActionEvent evt) { int keluar = JOptionPane.showConfirmDialog(null, "Apakah anda yakin ingin keluar dari sistem?", "Konfirmasi", JOptionPane.YES_NO_OPTION); if (keluar == JOptionPane.YES_OPTION) { this.dispose(); } else if (keluar == JOptionPane.NO_OPTION) { return; } } private void pilihFileButtonActionPerformed(java.awt.event.ActionEvent evt) { pilihFile(); } private void batalButtonActionPerformed(java.awt.event.ActionEvent evt) { for (int i = 0; i < seleksiTable.getRowCount(); i++) { seleksiTable.setValueAt(false, i, 1); } } private void tandaiSemuaButtonActionPerformed(java.awt.event.ActionEvent evt) { for (int i = 0; i < seleksiTable.getRowCount(); i++) { seleksiTable.setValueAt(true, i, 1); } } PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 205 private void hapusButtonActionPerformed(java.awt.event.ActionEvent evt) { hapusAtribut(); } private void submitButtonActionPerformed(java.awt.event.ActionEvent evt) { submitData(); } private void prosesButtonActionPerformed(java.awt.event.ActionEvent evt) { prosesDeteksi(); } private void hapusOutlierButtonActionPerformed(java.awt.event.ActionEvent evt) { DefaultTableModel dm = new DefaultTableModel(); HasilOutlierTable.setModel(dm); jumlahOutlierTextField.setText(""); lamaDeteksiTextField.setText(""); } private void simpanButtonActionPerformed(java.awt.event.ActionEvent evt) { simpanLoci(); } private void batalSeleksiButtonActionPerformed(java.awt.event.ActionEvent evt) { HalamanUtama utama = new HalamanUtama(); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 206 utama.setVisible(true); this.dispose(); } private void radiusTextFieldKeyReleased(java.awt.event.KeyEvent evt) { if (!radiusTextField.getText().matches("[0-9.]*")) { JOptionPane.showMessageDialog(null, "Nilai radius tidak boleh berisi huruf atau angka negatif!"); } } private void alphaTextFieldKeyReleased(java.awt.event.KeyEvent evt) { if (!alphaTextField.getText().matches("[0-9.]*")) { JOptionPane.showMessageDialog(null, "Nilai alpha tidak boleh berisi huruf atau angka negatif!"); } } private void konstantaTextFieldKeyReleased(java.awt.event.KeyEvent evt) { if (!konstantaTextField.getText().matches("[0-9.]*")) { JOptionPane.showMessageDialog(null, "Nilai konstanta tidak boleh berisi huruf atau angka negatif!"); } } public void pilihFile() { JFileChooser fileChooser = new JFileChooser(); fileChooser.setVisible(true); int returnValue = fileChooser.showOpenDialog(null); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI if (returnValue == JFileChooser.APPROVE_OPTION) { String namaFile = fileChooser.getSelectedFile().getPath(); String[] cut_namafile = namaFile.split("\\."); if (cut_namafile[1].equals("xls")) { File excel = fileChooser.getSelectedFile(); Vector columnName = new Vector(); Vector data = new Vector(); try { Workbook workbook = Workbook.getWorkbook(excel); Sheet sheet = workbook.getSheet(0); columnName.clear(); for (int i = 0; i < sheet.getColumns(); i++) { Cell cell = sheet.getCell(i, 0); columnName.add(cell.getContents()); } data.clear(); for (int j = 1; j < sheet.getRows(); j++) { Vector data2 = new Vector(); for (int i = 0; i < sheet.getColumns(); i++) { Cell cell = sheet.getCell(i, j); data2.add(cell.getContents()); } data2.add("\n"); data.add(data2); } } catch (Exception e) { e.printStackTrace(); } 207 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 208 DefaultTableModel model = new DefaultTableModel(data, columnName); dataPreprocessTable.setModel(model); dataPreprocessTable.setAutoCreateRowSorter(true); jumlahDataSeleksiTextField.setText("" + data.size()); pilihFileTextField.setText(excel.getPath()); for (int i = 0; i < model.getColumnCount(); i++) { SeleksiAtribut seleksiatribut = new SeleksiAtribut(); seleksiatribut.setAtribut(model.getColumnName(i)); seleksiatribut.setPilih(false); cekboxtable.add(i, seleksiatribut); } seleksiTable.setModel(cekboxtable); TableModel tablemodel = dataPreprocessTable.getModel(); dataOutlierTable.setModel(tablemodel); dataOutlierTable.setAutoCreateRowSorter(true); int jumlahDataOutlier = tablemodel.getRowCount(); jumlahDataOutlierTextField.setText(" " + jumlahDataOutlier); int jumlahDataSeleksi = tablemodel.getRowCount(); jumlahDataSeleksiTextField.setText(" " + jumlahDataSeleksi); } else if (cut_namafile[1].equals("csv")) { cekboxtable.removeRow(); File csv = fileChooser.getSelectedFile(); Vector columnName = new Vector(); Vector data = new Vector(); String line; try { PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 209 BufferedReader br = new BufferedReader(new FileReader(csv)); StringTokenizer st = new StringTokenizer(br.readLine(), ","); while (st.hasMoreElements()) { columnName.addElement(st.nextToken()); } while ((line = br.readLine()) != null) { StringTokenizer st2 = new StringTokenizer(line, ","); Vector row = new Vector(); while (st2.hasMoreTokens()) { row.addElement(st2.nextToken()); } data.addElement(row); } br.close(); DefaultTableModel model = new DefaultTableModel(data, columnName); dataPreprocessTable.setModel(model); dataPreprocessTable.setAutoCreateRowSorter(true); pilihFileTextField.setText(csv.getPath()); jumlahDataSeleksiTextField.setText("" + data.size()); for (int i = 0; i < model.getColumnCount(); i++) { SeleksiAtribut seleksiatribut = new SeleksiAtribut(); seleksiatribut.setAtribut(model.getColumnName(i)); seleksiatribut.setPilih(false); cekboxtable.add(i, seleksiatribut); } seleksiTable.setModel(cekboxtable); TableModel tablemodel = dataPreprocessTable.getModel(); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 210 dataOutlierTable.setModel(tablemodel); dataOutlierTable.setAutoCreateRowSorter(true); int jumlahDataOutlier = tablemodel.getRowCount(); jumlahDataOutlierTextField.setText(" " + jumlahDataOutlier); int jumlahDataSeleksi = tablemodel.getRowCount(); jumlahDataSeleksiTextField.setText(" " + jumlahDataSeleksi); } catch (Exception e) { } } else { JOptionPane.showMessageDialog(null, "File yang Anda pilih harus berformat .xls atau .csv"); } } } public void pilihDataBase(KoneksiDataBase kdb, String table) { try { DatabaseController dc = new DatabaseController(); ResultSet rset; rset = dc.selectTable(kdb.getConnection(), table); ResultSetMetaData rsmd = rset.getMetaData(); int coloumCount = rsmd.getColumnCount(); Vector headers = new Vector(); Vector data = new Vector(); headers.clear(); for (int i = 1; i <= coloumCount; i++) { headers.add(rsmd.getColumnName(i)); } data.clear(); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 211 while (rset.next()) { Vector data2 = new Vector(); for (int i = 1; i <= coloumCount; i++) { data2.add(rset.getString(i)); } data2.add("\n"); data.add(data2); } DefaultTableModel model = new DefaultTableModel(data, headers); dataPreprocessTable.setModel(model); dataPreprocessTable.setAutoCreateRowSorter(true); seleksiTable.setModel(model); seleksiTable.setAutoCreateRowSorter(true); cekboxtable = new CheckBoxTableModel(); for (int i = 0; i < model.getColumnCount(); i++) { SeleksiAtribut seleksiatribut = new SeleksiAtribut(); seleksiatribut.setAtribut(model.getColumnName(i)); seleksiatribut.setPilih(false); cekboxtable.add(i, seleksiatribut); } seleksiTable.setModel(cekboxtable); TableModel tableModel = dataPreprocessTable.getModel(); dataOutlierTable.setModel(tableModel); dataOutlierTable.setAutoCreateRowSorter(true); } catch (SQLException ex) { } jumlahDataSeleksiTextField.setText("" + dataPreprocessTable.getRowCount()); } PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 212 public void hapusAtribut() { for (int i = 0; i < seleksiTable.getRowCount(); i++) { if (seleksiTable.getValueAt(i, 1).equals(true)) { for (int j = 0; j < dataPreprocessTable.getColumnCount(); j++) { if (seleksiTable.getValueAt(i, 0).equals(dataPreprocessTable.getColumnName(j))) { TableColumn tcol = dataPreprocessTable.getColumnModel().getColumn(j); TableColumn tcol2 = dataOutlierTable.getColumnModel().getColumn(j); dataPreprocessTable.removeColumn(tcol); dataOutlierTable.removeColumn(tcol2); } } } } cekboxtable.removeRow(); } public void submitData() { TableModel tablemodel = dataPreprocessTable.getModel(); dataOutlierTable.setModel(tablemodel); dataOutlierTable.setAutoCreateRowSorter(true); jumlahDataOutlierTextField.setText("" + dataOutlierTable.getRowCount()); jTabbedPane1.setSelectedComponent(deteksiOutlierPanel); jTabbedPane1.setEnabledAt(1, true); } public void prosesDeteksi() { if (radiusTextField.getText().isEmpty()) { PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 213 JOptionPane.showMessageDialog(null, "Nilai radius tidak boleh kosong!"); } else if (alphaTextField.getText().isEmpty()) { JOptionPane.showMessageDialog(null, "Nilai alpha tidak boleh kosong!"); } else if (konstantaTextField.getText().isEmpty()) { JOptionPane.showMessageDialog(null, "Nilai konstanta tidak boleh kosong!"); } else { Double alpha; Double radius; alpha = Double.parseDouble(alphaTextField.getText()); radius = Double.parseDouble(radiusTextField.getText()); long t1 = System.nanoTime(); if (radius > 0 && alpha > 0 && alpha <= 1) { graph = new Graph(dataOutlierTable.getRowCount()); graph.setRadius(radius); graph.setAlpha(alpha); graph.inputData(dataOutlierTable); System.out.println("JARAK EUCLIDEAN"); graph.tampilJarakEuclidean(); System.out.println("RNEIGHBOR"); graph.tampilRNeighbor(); System.out.println("ARNEIGHBOR"); graph.tampilARNeighbor(); System.out.println("CARI LOCI"); graph.cariLoci(); System.out.println(""); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 214 HasilOutlierTable.setModel(graph.setDataLoci(dataOutlierTable.getColumn Name(0))); HasilOutlierTable.setAutoCreateRowSorter(true); jumlahOutlierTextField.setText("" + HasilOutlierTable.getRowCount()); long t2 = System.nanoTime(); lamaDeteksiTextField.setText("" + (t2 - t1) * java.lang.Math.pow(10, -9)); } else { JOptionPane.showMessageDialog(null, "Nilai radius harus bilangan real" + "\n" + "nilai alpha antara 0-1" + "\n" + "dan nilai konstanta harus bilangan bulat positif > 0"); } } } public void simpanLoci() { JFileChooser fileChooser = new JFileChooser(new File("E:/")); fileChooser.setFileFilter(new FileNameExtensionFilter("Microsoft Excel (*.xls)", "xls")); fileChooser.setFileFilter(new FileNameExtensionFilter("Microsoft Word (*.doc)", "doc")); fileChooser.setFileFilter(new FileNameExtensionFilter("Text Documents (*.txt)", "txt")); FileOutputStream file_output_stream; int returnValue = fileChooser.showSaveDialog(this); if (returnValue == JFileChooser.APPROVE_OPTION) { String filename = fileChooser.getSelectedFile().getPath(); String ext = fileChooser.getFileFilter().getDescription(); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 215 if (ext.equals("Microsoft Excel (*.xls)")) { File f; f = new File(filename + ".xls"); try { file_output_stream = new FileOutputStream(f); } catch (FileNotFoundException e) { e.printStackTrace(); return; } try { TableModel model = HasilOutlierTable.getModel(); FileWriter excel = new FileWriter(f); for (int i = 0; i < model.getColumnCount(); i++) { excel.write(model.getColumnName(i) + "\t"); } excel.write("\n"); for (int i = 0; i < model.getRowCount(); i++) { for (int j = 0; j < model.getColumnCount(); j++) { excel.write(model.getValueAt(i, j).toString() + "\t"); } excel.write("\n"); } excel.close(); } catch (IOException i) { JOptionPane.showMessageDialog(this, "Penyimpanan Gagal"); } } else if (ext.equals("Microsoft Word (*.doc)")) { File f; f = new File(filename + ".doc"); try { file_output_stream = new FileOutputStream(f); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 216 } catch (FileNotFoundException e) { e.printStackTrace(); return; } try { BufferedWriter bfw = new BufferedWriter(new FileWriter(f)); for (int i = 0; i < HasilOutlierTable.getColumnCount(); i++) { bfw.write(HasilOutlierTable.getColumnName(i)); bfw.write("\t"); } for (int i = 0; i < HasilOutlierTable.getRowCount(); i++) { bfw.newLine(); for (int j = 0; j < HasilOutlierTable.getColumnCount(); j++) { bfw.write(HasilOutlierTable.getValueAt(i, j).toString()); bfw.write("\t"); } } bfw.close(); } catch (IOException i) { JOptionPane.showMessageDialog(this, "Penyimpanan Gagal"); } } else if (ext.equals("Text Documents (*.txt)")){ File f; f = new File(filename + ".txt"); try { file_output_stream = new FileOutputStream(f); } catch (FileNotFoundException e) { e.printStackTrace(); return; } try { PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 217 BufferedWriter bfw = new BufferedWriter(new FileWriter(f)); for (int i = 0; i < HasilOutlierTable.getColumnCount(); i++) { bfw.write(HasilOutlierTable.getColumnName(i)); bfw.write("\t"); } for (int i = 0; i < HasilOutlierTable.getRowCount(); i++) { bfw.newLine(); for (int j = 0; j < HasilOutlierTable.getColumnCount(); j++) { bfw.write(HasilOutlierTable.getValueAt(i, j).toString()); bfw.write("\t"); } } bfw.close(); } catch (IOException i) { JOptionPane.showMessageDialog(this, "Penyimpanan Gagal"); } } JOptionPane.showMessageDialog(this, "Hasil Deteksi Outlier Telah Berhasil Disimpan di " + filename); } } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new HalamanUtama().setVisible(true); } }); } PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI private javax.swing.JTable HasilOutlierTable; private javax.swing.JTextField alphaTextField; private javax.swing.JButton bantuanButton; private javax.swing.JButton batalButton; private javax.swing.JButton batalSeleksiButton; private javax.swing.JTable dataOutlierTable; private javax.swing.JTable dataPreprocessTable; private javax.swing.JPanel deteksiOutlierPanel; private javax.swing.JButton hapusButton; private javax.swing.JButton hapusOutlierButton; private javax.swing.JDesktopPane jDesktopPane1; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel10; private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel12; private javax.swing.JLabel jLabel13; private javax.swing.JLabel jLabel14; private javax.swing.JLabel jLabel15; private javax.swing.JLabel jLabel16; private javax.swing.JLabel jLabel17; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; 218 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel4; private javax.swing.JPanel jPanel6; private javax.swing.JPanel jPanel7; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JScrollPane jScrollPane3; private javax.swing.JScrollPane jScrollPane4; private javax.swing.JTabbedPane jTabbedPane1; private javax.swing.JTextField jumlahDataOutlierTextField; private javax.swing.JTextField jumlahDataSeleksiTextField; private javax.swing.JTextField jumlahOutlierTextField; private javax.swing.JButton keluarButton; private javax.swing.JTextField lamaDeteksiTextField; private javax.swing.JButton pilihDatabaseButton; private javax.swing.JButton pilihFileButton; private javax.swing.JTextField pilihFileTextField; private javax.swing.JButton prosesButton; private javax.swing.JTextField radiusTextField; private javax.swing.JTable seleksiTable; private javax.swing.JButton simpanButton; private javax.swing.JButton submitButton; private javax.swing.JButton tandaiSemuaButton; private javax.swing.JButton tentangButton; } 219 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI LAMPIRAN 11 Outlier Plot 1. Data set Mahasiswa 2007-2008 Jalur Test Tertulis pada Semester 1. 2. Data set Mahasiswa 2007-2008 Jalur Test Tertulis pada Semester 2. 220 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3. Data set Mahasiswa 2007-2008 Jalur Test Tertulis pada Semester 3. 4. Data set Mahasiswa 2007-2008 Jalur Test Tertulis pada Semester 4. 221 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 5. Data set Mahasiswa 2007-2008 Jalur Prestasi pada Semester 1. 6. Data set Mahasiswa 2007-2008 Jalur Prestasi pada Semester 2. 222 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 7. Data set Mahasiswa 2007-2008 Jalur Prestasi pada Semester 3. 8. Data set Mahasiswa 2007-2008 Jalur Prestasi pada Semester 4. 223 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 9. 224 Data set Mahasiswa 2007-2008 Jalur Test Tertulis dan Jalur Prestasi pada Semester 1. 10. Data set Mahasiswa 2007-2008 Jalur Test Tertulis dan Jalur Prestasi pada Semester 2. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 225 11. Data set Mahasiswa 2007-2008 Jalur Test Tertulis dan Jalur Prestasi pada Semester 3. 12. Data set Mahasiswa 2007-2008 Jalur Test Tertulis dan Jalur Prestasi pada Semester 4. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 226 LAMPIRAN 12 Data Nilai Mahasiswa Angkatan 2007 dan 2008 1. Data set Mahasiswa 2007 – 2008 Jalur Test Tertulis Nomor ips1 ips2 ips3 ips4 nil11 nil12 nil13 nil14 nil15 21 3.72 3.48 3.36 3.65 3.20 2.40 2.40 2.80 2.00 22 2.89 3.21 3.33 3.36 2.40 2.00 2.00 2.80 2.00 23 2.56 2.77 2.52 3.13 2.40 1.60 2.00 2.80 2.00 24 3.28 2.75 2.90 3.00 2.80 2.40 2.80 2.40 2.40 25 1.89 2.20 2.21 1.95 2.40 2.00 2.40 2.40 2.80 26 1.44 2.42 2.53 1.96 4.00 2.00 3.60 2.40 2.80 27 4.00 3.52 3.43 3.70 2.40 2.40 1.60 1.60 2.80 28 1.72 1.65 1.53 1.68 1.20 0.80 3.20 1.20 0.40 29 2.89 3.18 3.04 2.95 2.00 2.00 3.20 2.00 2.80 30 2.94 3.27 2.96 2.81 2.80 2.00 2.00 2.00 1.60 31 2.94 2.59 1.55 2.35 2.40 1.60 2.40 1.20 2.80 32 2.44 2.63 2.00 2.67 2.00 2.00 2.40 2.00 2.00 33 1.72 2.65 2.43 2.24 2.80 2.40 3.20 3.20 0.80 34 2.80 2.91 2.80 3.33 2.40 2.00 2.00 1.60 2.00 35 2.90 2.50 3.10 2.75 1.60 2.80 3.20 2.80 2.00 36 1.40 1.64 1.82 1.07 2.40 1.60 2.80 3.60 2.80 37 2.65 2.40 2.17 2.75 1.60 1.60 2.80 1.20 2.40 38 2.65 3.23 2.79 3.30 2.40 1.60 2.40 1.60 2.00 39 3.35 2.91 2.45 0.83 2.40 2.40 2.00 3.20 2.40 40 2.70 2.86 2.32 2.70 1.60 2.40 2.80 2.80 1.20 41 2.55 2.68 3.15 2.64 2.40 2.00 1.60 1.60 1.60 42 3.10 3.08 2.95 3.05 2.40 2.80 3.60 1.60 2.80 43 2.45 2.40 2.44 2.26 2.40 2.80 3.60 2.00 2.80 44 2.55 2.41 2.47 2.68 2.80 1.60 2.80 1.60 2.40 45 2.75 2.59 2.79 3.32 2.80 2.00 2.40 2.80 2.80 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 227 46 2.25 1.55 1.31 0.31 3.60 2.40 2.40 2.40 2.40 47 2.70 2.36 2.68 0.05 2.80 2.40 2.40 2.00 2.00 48 3.15 3.00 3.24 2.33 2.00 3.20 2.00 2.80 2.00 49 2.85 2.68 3.37 3.09 2.40 1.60 2.00 2.80 2.00 50 2.35 2.40 0.59 2.23 2.40 2.40 2.80 1.20 3.60 51 2.05 1.50 2.40 2.00 2.00 2.00 2.00 1.60 2.80 52 2.85 2.64 2.84 2.75 2.40 2.00 2.00 2.40 2.00 53 2.35 2.20 2.94 2.09 2.40 0.80 2.00 2.00 3.20 54 3.15 3.20 2.72 3.05 2.80 3.20 2.00 2.40 2.00 55 3.10 3.32 3.72 3.42 2.00 2.00 3.20 1.60 2.80 56 2.70 3.44 3.39 2.33 2.40 2.00 3.60 2.80 2.00 57 2.05 1.55 2.33 2.70 2.00 2.00 2.40 2.40 2.00 58 2.30 2.61 2.50 2.50 1.20 2.00 1.60 0.80 2.00 59 2.80 2.88 2.39 2.44 2.40 2.00 3.20 1.60 2.80 60 2.15 2.26 2.33 2.06 2.40 1.60 3.20 1.20 2.00 61 2.90 2.28 2.39 1.93 2.00 2.00 3.60 1.60 3.20 62 3.25 3.16 3.11 2.56 2.40 2.40 3.20 2.80 1.60 63 3.45 3.60 3.39 3.50 2.80 2.40 2.80 1.20 2.80 64 2.30 3.13 3.00 3.05 1.60 2.40 3.60 2.40 1.60 65 2.30 2.39 2.62 2.94 2.80 0.80 2.80 2.00 2.80 66 2.85 3.28 3.50 3.63 2.80 2.80 2.40 2.40 2.00 67 2.20 2.30 1.28 0.00 2.80 2.00 1.20 1.60 1.60 68 1.55 1.00 1.72 0.00 2.80 1.60 2.00 2.40 1.20 69 1.65 1.67 2.07 1.85 2.40 2.00 1.20 2.00 1.60 70 3.20 3.04 2.94 3.14 2.80 2.00 3.60 2.00 3.20 71 3.10 2.60 2.89 2.72 2.40 2.80 1.60 2.00 2.40 72 2.05 1.28 1.73 0.82 2.40 3.20 3.60 2.80 3.20 73 2.65 1.87 2.00 1.56 2.80 2.40 2.40 1.60 2.00 74 2.35 1.04 0.19 0.92 3.20 2.00 3.60 3.20 1.60 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 2. Data set Mahasiswa 2007 – 2008 Jalur Prestasi Nomor ips1 ips2 ips3 ips4 final 1 2.06 2.32 2.91 3.00 2.71 2 2.72 2.50 2.96 2.38 2.71 3 3.33 3.48 3.78 3.48 2.78 4 2.39 3.00 2.43 2.82 2.86 5 2.11 2.71 2.43 2.45 2.95 6 3.00 2.96 2.61 3.29 2.70 7 3.72 3.56 3.43 3.67 3.15 8 3.44 3.04 2.88 3.48 2.85 9 2.17 2.70 3.09 3.63 2.88 10 3.89 3.75 3.00 3.62 3.08 11 2.89 3.68 2.88 3.76 2.92 12 3.11 3.08 2.78 3.48 2.73 13 2.00 2.00 2.29 3.00 3.08 14 3.06 2.50 2.57 2.78 2.73 15 1.67 2.24 2.52 2.16 2.72 16 3.89 3.63 3.57 3.62 2.99 17 2.61 0.32 0.69 2.85 2.72 18 2.83 2.55 3.09 3.17 2.79 19 3.72 3.74 2.87 3.52 2.77 20 3.72 3.42 3.65 3.71 2.85 75 2.40 2.65 2.57 3.24 2.95 76 0.85 2.29 2.21 2.00 2.85 77 2.65 2.75 2.11 2.74 2.74 78 2.85 3.27 2.91 2.73 2.93 79 1.85 1.71 2.40 2.06 2.98 80 2.95 2.91 3.16 3.25 2.80 81 3.35 2.48 3.00 2.14 3.00 82 2.65 2.14 2.45 2.64 2.92 228 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 83 3.35 3.09 3.42 3.25 3.11 84 2.60 3.00 2.90 3.10 2.83 85 3.50 2.92 3.27 3.04 2.85 86 3.10 2.80 3.68 3.57 3.22 87 2.25 2.05 2.29 1.83 2.80 88 2.65 2.77 2.14 0.94 2.89 89 3.65 3.74 3.70 3.90 2.97 90 3.25 3.35 2.67 3.25 2.86 91 3.40 3.00 2.73 2.47 2.92 92 2.60 1.73 3.00 2.10 2.98 93 2.50 2.82 3.35 3.57 2.87 94 1.90 1.35 2.46 1.20 2.77 95 2.45 3.00 3.25 3.70 2.98 96 2.20 1.90 2.17 2.30 2.77 97 2.30 3.00 3.24 3.00 2.72 98 3.55 3.32 3.19 3.15 3.22 99 2.45 2.55 2.44 3.15 2.81 100 3.05 3.04 3.26 3.58 2.86 101 2.60 2.64 2.58 3.33 2.87 102 3.15 3.20 2.89 3.37 2.98 103 3.20 3.52 3.37 3.52 3.19 104 2.80 3.00 3.14 3.05 2.94 105 2.60 2.73 3.05 3.38 3.06 106 2.05 1.95 2.63 2.35 2.83 107 3.30 3.92 3.76 3.78 3.33 108 2.70 2.32 3.00 2.78 2.85 109 2.85 1.73 2.56 2.76 3.08 110 2.40 2.75 3.05 3.32 2.89 111 3.45 3.36 2.95 2.82 3.05 112 2.60 2.55 3.00 2.96 2.87 229 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 113 2.65 2.14 2.22 3.11 2.78 114 2.75 3.00 3.21 3.53 2.75 115 2.75 3.36 3.33 3.13 2.92 116 2.40 2.20 2.06 2.22 2.73 117 2.60 1.70 2.00 2.76 2.89 118 3.45 3.24 3.48 3.57 3.06 119 2.65 2.95 2.48 3.15 2.83 120 2.85 2.82 3.14 3.42 2.81 121 2.55 2.74 2.94 2.53 2.69 122 2.30 2.43 2.28 1.47 3.05 123 3.35 3.04 3.00 3.20 2.83 124 1.45 0.44 2.47 2.65 2.90 125 3.30 3.16 3.22 3.25 2.77 126 3.20 3.40 3.72 3.10 2.81 230 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3. 231 Data set Mahasiswa 2007 – 2008 Jalur Test Tertulis dan Jalur Prestasi Nomor ips1 ips2 ips3 ips4 final 1 2.06 2.32 2.91 3.00 2.71 2 2.72 2.50 2.96 2.38 2.71 3 3.33 3.48 3.78 3.48 2.78 4 2.39 3.00 2.43 2.82 2.86 5 2.11 2.71 2.43 2.45 2.95 6 3.00 2.96 2.61 3.29 2.70 7 3.72 3.56 3.43 3.67 3.15 8 3.44 3.04 2.88 3.48 2.85 9 2.17 2.70 3.09 3.63 2.88 10 3.89 3.75 3.00 3.62 3.08 11 2.89 3.68 2.88 3.76 2.92 12 3.11 3.08 2.78 3.48 2.73 13 2.00 2.00 2.29 3.00 3.08 14 3.06 2.50 2.57 2.78 2.73 15 1.67 2.24 2.52 2.16 2.72 16 3.89 3.63 3.57 3.62 2.99 17 2.61 0.32 0.69 2.85 2.72 18 2.83 2.55 3.09 3.17 2.79 19 3.72 3.74 2.87 3.52 2.77 20 3.72 3.42 3.65 3.71 2.85 21 3.72 3.48 3.36 3.65 2.60 22 2.89 3.21 3.33 3.36 2.20 23 2.56 2.77 2.52 3.13 2.08 24 3.28 2.75 2.90 3.00 2.56 25 1.89 2.20 2.21 1.95 2.36 26 1.44 2.42 2.53 1.96 2.96 27 4.00 3.52 3.43 3.70 2.32 28 1.72 1.65 1.53 1.68 1.12 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 29 2.89 3.18 3.04 2.95 2.28 30 2.94 3.27 2.96 2.81 2.16 31 2.94 2.59 1.55 2.35 2.12 32 2.44 2.63 2.00 2.67 2.04 33 1.72 2.65 2.43 2.24 2.36 34 2.80 2.91 2.80 3.33 2.08 35 2.90 2.50 3.10 2.75 2.32 36 1.40 1.64 1.82 1.07 2.40 37 2.65 2.40 2.17 2.75 1.84 38 2.65 3.23 2.79 3.30 2.00 39 3.35 2.91 2.45 0.83 2.44 40 2.70 2.86 2.32 2.70 2.00 41 2.55 2.68 3.15 2.64 1.96 42 3.10 3.08 2.95 3.05 2.64 43 2.45 2.40 2.44 2.26 2.68 44 2.55 2.41 2.47 2.68 2.24 45 2.75 2.59 2.79 3.32 2.52 46 2.25 1.55 1.31 0.31 2.76 47 2.70 2.36 2.68 0.05 2.40 48 3.15 3.00 3.24 2.33 2.44 49 2.85 2.68 3.37 3.09 2.08 50 2.35 2.40 0.59 2.23 2.56 51 2.05 1.50 2.40 2.00 2.12 52 2.85 2.64 2.84 2.75 2.16 53 2.35 2.20 2.94 2.09 2.00 54 3.15 3.20 2.72 3.05 2.64 55 3.10 3.32 3.72 3.42 2.24 56 2.70 3.44 3.39 2.33 2.36 57 2.05 1.55 2.33 2.70 2.08 58 2.30 2.61 2.50 2.50 1.60 232 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 59 2.80 2.88 2.39 2.44 2.36 60 2.15 2.26 2.33 2.06 2.04 61 2.90 2.28 2.39 1.93 2.36 62 3.25 3.16 3.11 2.56 2.36 63 3.45 3.60 3.39 3.50 2.52 64 2.30 3.13 3.00 3.05 2.12 65 2.30 2.39 2.62 2.94 2.12 66 2.85 3.28 3.50 3.63 2.56 67 2.20 2.30 1.28 0.00 2.04 68 1.55 1.00 1.72 0.00 2.00 69 1.65 1.67 2.07 1.85 1.96 70 3.20 3.04 2.94 3.14 2.64 71 3.10 2.60 2.89 2.72 2.40 72 2.05 1.28 1.73 0.82 2.96 73 2.65 1.87 2.00 1.56 2.36 74 2.35 1.04 0.19 0.92 2.56 75 2.40 2.65 2.57 3.24 2.95 76 0.85 2.29 2.21 2.00 2.85 77 2.65 2.75 2.11 2.74 2.74 78 2.85 3.27 2.91 2.73 2.93 79 1.85 1.71 2.40 2.06 2.98 80 2.95 2.91 3.16 3.25 2.80 81 3.35 2.48 3.00 2.14 3.00 82 2.65 2.14 2.45 2.64 2.92 83 3.35 3.09 3.42 3.25 3.11 84 2.60 3.00 2.90 3.10 2.83 85 3.50 2.92 3.27 3.04 2.85 86 3.10 2.80 3.68 3.57 3.22 87 2.25 2.05 2.29 1.83 2.80 88 2.65 2.77 2.14 0.94 2.89 233 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 89 3.65 3.74 3.70 3.90 2.97 90 3.25 3.35 2.67 3.25 2.86 91 3.40 3.00 2.73 2.47 2.92 92 2.60 1.73 3.00 2.10 2.98 93 2.50 2.82 3.35 3.57 2.87 94 1.90 1.35 2.46 1.20 2.77 95 2.45 3.00 3.25 3.70 2.98 96 2.20 1.90 2.17 2.30 2.77 97 2.30 3.00 3.24 3.00 2.72 98 3.55 3.32 3.19 3.15 3.22 99 2.45 2.55 2.44 3.15 2.81 100 3.05 3.04 3.26 3.58 2.86 101 2.60 2.64 2.58 3.33 2.87 102 3.15 3.20 2.89 3.37 2.98 103 3.20 3.52 3.37 3.52 3.19 104 2.80 3.00 3.14 3.04 2.94 105 2.60 2.73 3.05 3.38 3.06 106 2.05 1.95 2.63 2.35 2.83 107 3.30 3.92 3.76 3.78 3.33 108 2.70 2.32 3.00 2.78 2.85 109 2.85 1.73 2.56 2.76 3.08 110 2.40 2.75 3.05 3.32 2.89 111 3.45 3.36 2.95 2.82 3.05 112 2.60 2.55 3.00 2.96 2.87 113 2.65 2.14 2.22 3.11 2.78 114 2.75 3.00 3.21 3.53 2.75 115 2.75 3.36 3.33 3.13 2.92 116 2.40 2.20 2.06 2.22 2.73 117 2.60 1.70 2.00 2.76 2.89 118 3.45 3.24 3.48 3.57 3.06 234 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 119 2.65 2.95 2.48 3.15 2.83 120 2.85 2.82 3.14 3.42 2.81 121 2.55 2.74 2.94 2.53 2.69 122 2.30 2.43 2.28 1.47 3.05 123 3.35 3.04 3.00 3.20 2.83 124 1.45 0.44 2.47 2.65 2.90 125 3.30 3.16 3.22 3.25 2.77 126 3.20 3.40 3.72 3.10 2.81 235