PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DETEKSI OUTLIER MENGGUNAKAN ALGORITMA LOCAL OUTLIER PROBABILITY (LoOP) (STUDI KASUS DATA AKADEMIK MAHASISWA PROGRAM STUDI TEKNIK INFORMATIKA UNIVERSITAS SANATA DHARMA) Skripsi Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Komputer Program Studi Teknik Informatika Oleh : Erlita Octaviani 105314019 PROGRAM STUDI TEKNIK INFORMATIKA JURUSAN TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2014 i PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI OUTLIER DETECTION USING LOCAL OUTLIER PROBABILITY (LoOP) ALGORITHM (STUDY CASE STUDENTS ACADEMIC DATA OF INFORMATICS ENGINEERING STUDY PROGRAM OF SANATA DHARMA UNIVERSITY) A Thesis Presented as Partial Fullfillment of the Requirements To Obtain the Sarjana Komputer Degree In Study Program of Informatics Engineering By : Erlita Octaviani 105314019 INFORMATICS ENGINEERING STUDY PROGRAM DEPARTMENT OF INFORMATICS ENGINEERING FACULTY OF SCIENCE AND TECHNOLOGY SANATA DHARMA UNIVERSITY YOGYAKARTA 2014 ii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI H ALAMAN PERSETUJUAN SKRIPSI DETEKSI OUTLIER MENGGUNAKAN ALGORITMA LOCAL OUTLIER PROBABILITY (LoOP) (STUDI KASUS DATA AKADEMIK MAHASISWA PROGRAM STUDI TEKNIK INFORMATIKA UNIVERSITAS SANATA DHARMA) Oleh : Erlita Octaviani 105314019 Telah disetujui oleh : Dosen Pembimbing Tanggal ….. Desember 2014 Ridowati Gunawan, S.Kom., M.T. iii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI HALAMAN PENGESAHAN SKRIPSI DETEKSI OUTLIER MENGGUNAKAN ALGORITMA LOCAL OUTLIER PROBABILITY (LoOP) (STUDI KASUS DATA AKADEMIK MAHASISWA PROGRAM STUDI TEKNIK INFORMATIKA UNIVERSITAS SANATA DHARMA) Yang dipersiapkan dan disusun oleh : Erlita Octaviani 105314019 Telah dipertahankan di depan Panitia Penguji Pada tanggal 15 Desember 2014 Dan dinyatakan me menuhi syarat Susunan Panitia Penguji Tanda Tangan Ketua : P.H. Prima Rosa, S.Si., M.Sc. ………………… Sekretaris : Sri Hartati Wijono, S.Si., M.Kom. ………………… Anggota : Ridowati Gunawan, S.Kom., M.T. ………………… Yogyakarta, ….. Januari 2015 Fakultas Sains dan Teknologi Universitas Sanata Dharma Dekan, (Paulina Heruningsih Prima Rosa, S.Si., M.Sc.) iv PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI HALAMAN PERSEMBAHAN “Ada 7 hal yang menghancurkan kita : kekayaan tanpa kerja keras, kesenangan tanpa kesadaran, pengetahuan tanpa karakter, bisnis tanpa moralitas, ilmu pengetahuan tanpa kemanusiaan, ibadah tanpa pengorbanan, dan politik tanpa prinsip” (Mahatma Gandhi) “Dan bersabarlah, karena sesungguhnya Allah tiada menyia-nyiakan pahala orang-orang yang berbuat kebaikan” (Al-Qur’an 11:115) “Hidup adalah ‘pilihan’, segeralah tentukan ‘pilihanmu’ atau ‘pilihan’ akan menentukan hidupmu” (Nicholas Cage) - JUST DO IT - Karya ini saya persembahkan untuk : Allah SWT Orang tua tercinta Keluarga dan sahabat tersayang v 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, Erlita Octaviani vi PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI ABSTRAK Penambangan data merupakan ekstraksi pola terhadap data yang menarik dalam jumlah yang besar. Pola tersebut dikatakan menarik apabila tidak diketahui sebelumnya dan berguna bagi perkembangan ilmu pengetahuan. Data tersebut dapat diolah dengan berbagai teknik penambangan data seperti asosiasi, klasifikasi, clustering dan deteksi outlier. Deteksi outlier merupakan salah satu bidang penelitian yang penting dalam penambangan data. Penelitian tersebut bermanfaat untuk menemukan outlier yang mungkin berguna bagi pengguna. Outlier merupakan sebuah data yang berbeda dibandingkan dengan sifat umum yang dimiliki data lain pada suatu kumpulan data. Pada tugas akhir ini, pendeteksian outlier dilakukan menggunakan algoritma Local Outlier Probability (LoOP). Data yang digunakan adalah data akademik mahasiswa program studi Teknik Informatika Universitas Sanata Dharma, Yogyakarta tahun angkatan 2007 dan 2008. Data tersebut terdiri dari data numerik nilai hasil seleksi masuk mahasiswa yang diterima melalui jalur tes tertulis maupun jalur prestasi dan nilai indeks prestasi dari semester satu sampai empat. Hasil dari penelitian ini adalah sebuah perangkat lunak yang dapat digunakan sebagai alat bantu untuk mendeteksi outlier menggunakan algoritma Local Outlier Probability (LoOP). Kata kunci : penambangan data, deteksi outlier, Local Outlier Probability vii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI ABSTRACT Data mining is the extraction of the data are interesting patterns in large quantities. The pattern is said to be interesting if a previously unknown and useful for the development of science. Such data can be processed by a variety of data mining techniques such as association, classification, clustering and outlier detection. Outlier detection is one of the important research in the field of data mining. The study is useful for finding outliers that may be useful to the user. Outlier is a different data than the common properties owned by other data in a data set. In this thesis, outlier detection is done using algorithms Local Outliers Probability (Loop). The data used is the academic student of Computer Science Sanata Dharma University, Yogyakarta years of 2007 and 2008. The data consists of numeric data value of the student admission data from regular tracks and outstanding tracks and accomplishments of the semester index value of one to four. The results of this study is a software that can be used as a tool to detect outliers using Local Outliers Probability algorithm (LOOP). Keywords: data mining, outlier detection, Local Outliers Probability viii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH UNTUK KEPERLUAN KEPENTINGAN AKADEMIS Yang bertanda tangan di bawah ini, saya mahasiswa Universitas Sanata Dhama Nama : Erlita Octaviani Nomor Mahasiswa : 105314019 Demi pengembangan ilmu pengetahuan, saya memberikan kepada Perpustakaan Universitas Sanata Dharma karya ilmiah saya yang berjudul : DETEKSI OUTLIER MENGGUNAKAN ALGORITMA LOCAL OUTLIER PROBABILITY (STUDI KASUS DATA AKADEMIK MAHASISWA PROGRAM STUDI 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 royalti 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, Erlita Octaviani ix PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI KATA PENGANTAR Puji syukur penulis haturkan ke hadirat Tuhan Yang Maha Esa atas segala rahmat dan karunia-Nya, sehingga dapat menyelesaikan penelitian tugas akhir yang berjudul “Deteksi Outlier Menggunakan Algoritma Local Outlier Probability (Studi Kasus Data Akademik Mahasiswa Program Studi Teknik Informatika Universitas Sanata Dharma)”. Dalam menyelesaikan keseluruhan penyusunan tugas akhir ini, penulis telah banyak mendapatkan bantuan yang ternilai dari berbagai pihak. Oleh karena itu, pada kesempatan ini penulis dengan segala kerendahan hati ingin mengucapkan banyak terima kasih kepada : 1. Ibu Paulina Heruningsih Prima Rosa, S.Si., M.Sc. selaku Dekan Fakultas Sains dan Teknologi dan juga sebagai dosen penguji atas kritik dan saran yang telah diberikan.. 2. Ibu Ridowati Gunawan, S.Kom., M.T. selaku Ketua Program Studi Teknik Informatika serta selaku dosen pembimbing akademik yang selalu memberikan kesabaran, waktu, saran, dan motivasi kepada penulis. 3. Ibu Sri Hartati Wijono, S.Si., M.Kom. selaku Wakil Ketua Program Studi Teknik Informatika serta selaku dosen penguji atas kritik dan saran yang telah diberikan. 4. Ibu Agnes Maria Polina, S.Kom., M.Sc. selaku Dosen Pembimbing Akademik. 5. Semua dosen yang sudah membimbing penulis dan memberikan begitu banyak ilmu yang bermanfaat untuk penulis selama penulis belajar di Universitas Sanata Dharma Yogyakarta. 6. Pihak sekretariat dan laboran yang turut membantu penulis menyelesaikan tugas akhir ini. 7. Kedua orang tua tercinta, Bapak Sis Widyanto dan Ibu Sri Mulyani yang telah memberikan kasih sayang, perhatian, semangat, dan doa sehingga penulis dapat menyelesaikan Tugas Akhir ini. x PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 8. Adik-adik tersayang, Ernanda Rully Novrisanti dan Erwinsyah Rico Agusta yang telah memberikan semangat dan motivasi kepada penulis 9. Chandra Nurseta, terima kasih untuk selalu ada saat suka maupun duka, selalu memberikan semangat, doa dan motivasi kepada penulis 10. Ibu Chatarina Eny Murwaningtyas, M.Si. terima kasih banyak atas bantuan bimbingannya. 11. Daniel Tomi Raharjo, Setyo Resmi Probowati, Agustinus Dwi Budi, Queen Aurellia, terima kasih atas segala bantuan kepada penulis. 12. Felisitas Brillianti, Verena Pratita Aji, Yustina Ayu Ruwidati dan Fidelis Asterina. Terima kasih untuk persahabatan yang indah dan saling mendukung satu sama lain. 13. Kedua rekan skripsi ini, Felisitas Brillianti dan Yustina ayu Ruwidati. Terima kasih telah saling berbagi ilmu serta suka duka dari awal hingga akhir penyelesaian tugas akhir ini. 14. Seluruh teman-teman TI 2010 (HMPS 2010) terima kasih atas kebersamaan dan persaudaraan kita selama menjalani perkuliahan ini. 15. Semua pihak yang berperan baik secara langsung maupun tidak langsung yang tidak bisa disebutkan satu per satu. Penulis berharap, semoga tugas akhir ini dapat memberikan tambahan pengetahuan yang berguna kepada pembaca pada umumnya. Penulis menyadari tugas akhir ini masih memiliki kekurangan, oleh karena itu penulis mengharapkan kritik dan saran yang membangun demi kesempurnaan tugas akhir ini. Yogyakarta, 14 Januari 2015 Penulis xi PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DAFTAR ISI Halaman Judul ............................................................................................ i Halaman Judul (Bahasa Inggris) ............................................................... ii Halaman Persetujuan ................................................................................. iii Halaman Pengesahan ................................................................................... iv Halaman Persembahan ............................................................................... v Halaman Pernyataan .................................................................................. vi Abstrak ......................................................................................................... vii Abstract ........................................................................................................ viii Halaman Persetujuan Publikasi Karya Ilmiah ........................................ ix Kata Pengantar ........................................................................................... x Daftar Isi ...................................................................................................... xii Daftar Gambar ............................................................................................ xv Daftar Tabel.................................................................................................. xvii Daftar Rumus ............................................................................................... xix Daftar Lampiran .......................................................................................... xx BAB I BAB II PENDAHULUAN 1.1 Latar Belakang .................................................................... 1 1.2 Rumusan Masalah ............................................................... 4 1.3 Batasan Masalah ................................................................. 4 1.4 Tujuan Penelitian ................................................................ 4 1.5 Manfaat Penelitian .............................................................. 5 1.6 Metodologi Penelitian ......................................................... 5 1.7 Sistematika Penulisan ......................................................... 6 LANDASAN TEORI 2.1 Data Mining ........................................................................ 8 2.1.1 8 Pengertian Data Mining ........................................ xii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 2.2 2.3 BAB III BAB IV 2.1.2 Tahap Data Mining ............................................... 10 2.1.3 Teknik Data Mining ............................................. 13 Outlier ................................................................................. 17 2.2.1 Pengertian Outlier ................................................. 17 2.2.2 Dampak Outlier ..................................................... 18 2.2.3 Metode Pendekatan Outlier .................................. 19 Algoritma Local Outlier Probability .................................. 21 2.3.1 24 Contoh Perhitungan LoOP .................................... METODOLOGI PENELITIAN 3.1 Data yang dibutuhkan ......................................................... 28 3.2 Pengolahan Data ................................................................. 29 ANALISIS DAN PERANCANGAN SISTEM 4.1 4.2 4.3 4.4 4.5 Identifikasi Sistem .............................................................. 46 4.1.1 Diagram Use Case ................................................ 47 4.1.2 Narasi Use Case .................................................... 47 Perancangan Sistem Secara Umum .................................... 47 4.2.1 Input Sistem .......................................................... 47 4.2.2 Proses Sistem ........................................................ 51 4.2.3 Output Sistem ....................................................... 52 Perancangan Sistem ............................................................ 52 4.3.1 Diagram Aktivitas ................................................. 52 4.3.2 Diagram Kelas Analisis ........................................ 53 4.3.3 Diagram Sequence ................................................ 56 4.3.4 Diagram Kelas Desain .......................................... 56 4.3.5 Rincian Algoritma Setiap Method ........................ 57 Perancangan Struktur Data ................................................. 77 4.4.1 Graf ....................................................................... 78 4.4.2 Matriks Dua Dimensi ............................................ 79 Perancangan Antarmuka ..................................................... 80 xiii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB V BAB VI 4.5.1 Tampilan Halaman Awal ...................................... 80 4.5.2 Tampilan Halaman Utama .................................... 80 4.5.3 Tampilan Halaman Bantuan ................................. 82 4.5.4 Tampilan Halaman Tentang ................................. 83 4.5.5 Tampilan Halaman Keluar .................................... 84 4.5.6 Tampilan Halaman Pilih Database ....................... 84 4.5.7 Tampilan Halaman Pilih Tabel ............................. 85 4.5.8 Tampilan Halaman Pilih File ................................ 85 IMPLEMENTASI PENAMBANGAN DATA 5.1 Implementasi Antarmuka .................................................... 86 5.2 Implementasi Kelas ............................................................ 99 5.3 Implementasi Struktur Data ................................................ 100 PENGUJIAN DAN ANALISIS HASIL PENGUJIAN 6.1 Rencana Pengujian .............................................................. 104 6.2 Kelebihan dan Kekurangan Sistem ..................................... 125 BAB VII PENUTUP 7.1 Kesimpulan ......................................................................... 127 7.2 Saran ................................................................................... 127 DAFTAR PUSTAKA .................................................................................... 129 LAMPIRAN ................................................................................................... 131 xiv PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DAFTAR GAMBAR Gambar 2.1 Tahap data mining dalam proses KDD ................................. 10 Gambar 2.2 Data set outlier ....................................................................... 17 Gambar 3.1 Database “gudangdata” ......................................................... 29 Gambar 3.2 Tabel fact_lengkap2 dalam database gudangdata ................. 30 Gambar 3.3 Isi tabel fact_lengkap2 dalam database gudangdata ............. 31 Gambar 3.4 Perhitungan jarak mahasiswa angkatan 2007 jalur tes .......... 38 Gambar 3.5 Pencarian kdistance pada data mahasiswa angkatan 2007 jalur tes .................................................................................. Gambar 3.6 Pencarian kdistance neighborhood dari data mahasiswa angkatan 2007 jalur tes .......................................................... Gambar 3.7 40 Pencarian probability set distance dari data mahasiswa angkatan 2007 jalur tes .......................................................... Gambar 3.9 39 Perhitungan standard distance dari data mahasiswa angkatan 2007 jalur tes ......................................................................... Gambar 3.8 38 41 Perhitungan probability local outlier factor dari data mahasiswa angkatan 2007 jalur tes ....................................... 42 Gambar 3.10 Perhitungan agregat probability local outlier factor dari data mahasiswa angkatan 2007 jalur tes ....................................... 43 Gambar 3.11 Perhitungan local outlier probability dari data mahasiswa angkatan 2007 jalur tes .......................................................... 44 Gambar 4.1 Ilustrasi struktur data graf ...................................................... 78 Gambar 4.2 Tampilan Halaman Awal ....................................................... 80 Gambar 4.3 Tampilan Halaman Utama - Preprocessing ........................... 81 Gambar 4.4 Tampilan Halaman Utama - Deteksi ..................................... 82 Gambar 4.5 Tampilan Halaman Bantuan .................................................. 83 Gambar 4.6 Tampilan Halaman Tentang .................................................. 83 Gambar 4.7 Tampilan Halaman Konfirmasi Keluar ................................. 84 Gambar 4.8 Tampilan Halaman Pilih Database ........................................ 84 xv PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Gambar 4.9 Tampilan Halaman Pilih Tabel .............................................. 85 Gambar 4.10 Tampilan Halaman Pilih File ................................................. 85 Gambar 5.1 Implementasi halaman awal .................................................. 86 Gambar 5.2 Implementasi halaman utama tab preprocessing ................... 87 Gambar 5.3 Implementasi JFileChooser ................................................... 88 Gambar 5.4 Proses input data .................................................................... 88 Gambar 5.5 Implementasi seleksi atribut .................................................. 89 Gambar 5.6 Implementasi halaman utama tab deteksi outlier .................. 89 Gambar 5.7 Tampilan deteksi outlier ........................................................ 90 Gambar 5.8 Tampilan hasil seleksi LoOP ................................................. 90 Gambar 5.9 Tampilan save dialog ............................................................. 91 Gambar 5.10 Implementasi halaman pilih database ................................... 91 Gambar 5.11 Proses konfigurasi database .................................................. 92 Gambar 5.12 Proses koneksi berhasil .......................................................... 92 Gambar 5.13 Implementasi halaman pilih tabel .......................................... 93 Gambar 5.14 Hasil input data dari database ............................................... 93 Gambar 5.15 Implementasi halaman bantuan ............................................. 94 Gambar 5.16 Implementasi halaman tentang .............................................. 94 Gambar 5.17 Implementasi halaman konfirmasi keluar .............................. 95 Gambar 5.18 Error message input data ....................................................... 95 Gambar 5.19 Error message konfigurasi database ..................................... 96 Gambar 5.20 Error message input data ....................................................... 96 Gambar 5.21 Error message input data minpts kosong .............................. 97 Gambar 5.22 Error message input data minpts non numerik ..................... 97 Gambar 5.23 Error message input data lamda kosong ............................... 97 Gambar 5.24 Error message input data lamda non numerik ....................... 98 Gambar 5.25 Error message input data batas outlier kosong ..................... 98 Gambar 5.26 Error message input data batas outlier numerik ................................................................................ xvi 98 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DAFTAR TABEL Tabel 3.1 Contoh data atribut nil1 – nil5 sebelum dinormalisasi ............... 32 Tabel 3.2 Contoh data atribut nil1 – nil5 sesudah dinormalisasi ............... 33 Tabel 3.3 Contoh data atribut nilai final sebelum dinormalisasi ................ 34 Tabel 3.4 Contoh data atribut nilai final sesudah dinormalisasi ................ 35 Tabel 3.5 Data akademik mahasiswa angkatan 2007 jalur tes tertulis ....... 37 Tabel 4.1 Tabel keterangan diagram kelas analisis .................................... 53 Tabel 4.2 Ilustrasi matriks 2 dimensi ......................................................... 79 Tabel 4.3 Ilustrasi matriks 2 dimensi setelah perhitungan jarak antar verteks ......................................................................................... 79 Tabel 5.1 Implementasi kelas ..................................................................... 99 Tabel 6.1 Tabel rencana pengujian blackbox ............................................. 105 Tabel 6.2 Tabel pengujian input data ......................................................... 106 Tabel 6.3 Tabel pengujian koneksi basis data ............................................ 107 Tabel 6.4 Tabel pengujian seleksi atribut ................................................... 108 Tabel 6.5 Tabel pengujian deteksi outlier .................................................. 109 Tabel 6.6 Tabel pengujian simpan hasil deteksi outlier ............................. 111 Tabel 6.7 Tabel jumlah outlier mahasiswa Teknik Informatika angkatan 2007 dan 2008 jalur tes tertulis semester 1 dengan nilai minpts dan lamda yang berubah-ubah ................................................... 112 Tabel 6.8 Tabel Data Outlier Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Jalur Tes Tertulis Semester 1 dengan Nilai k yang berubah-ubah, Lamda = 1 dan batas outlier = 0,8 ............ 112 Tabel 6.9 Tabel jumlah outlier mahasiswa Teknik Informatika angkatan 2007 dan 2008 jalur prestasi semester 1 dengan nilai minpts dan lamda yang berubah-ubah ................................................... 113 Tabel 6.10 Tabel Data Outlier Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Jalur Prestasi Semester 1 dengan Nilai k yang berubah-ubah, Lamda = 1 dan batas outlier = 0,8 ..................... 113 xvii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Tabel 6.11 Tabel jumlah outlier mahasiswa Teknik Informatika angkatan 2007 dan 2008 jalur tes tertulis dan prestasi semester 1 dengan nilai minpts dan lamda yang berubah-ubah ............................... 114 Tabel 6.12 Tabel Data Outlier Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Jalur Tes Tertulis dan Jalur Prestasi Semester 1 dengan Nilai k yang berubah-ubah, Lamda = 1 dan batas outlier = 0,8 ................................................................................ 114 Tabel 6.13 Data nilai akademik mahasiswa Teknik Informatika angkatan Tahun 2007 yang diterima melalui jalur tes tertulis yang digunakan untuk perbandingan perhitungan manual dan sistem 116 Tabel 6.14 Hasil perhitungan manual ........................................................... 116 Tabel 6.15 Tabel hasil perhitungan sistem ................................................... 117 Tabel 6.16 Tabel hasil outlier untuk data mahasiswa Teknik Informatika Angkatan 2007 dan 2008 jalur tes tertulis ................................. 118 Tabel 6.17 Tabel hasil outlier untuk data mahasiswa Teknik Informatika Angkatan 2007 dan 2008 jalur prestasi ...................................... 119 Tabel 6.18 Tabel hasil outlier untuk data mahasiswa Teknik Informatika Angkatan 2007 dan 2008 jalur tes tertulis dan prestasi ............. 120 xviii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DAFTAR RUMUS Rumus 2.1 Rumus jarak Euclidean distance .............................................. 21 Rumus 2.2 Rumus standard distance.......................................................... 22 Rumus 2.3 Rumus probabilistic set distance ............................................. 23 Rumus 2.4 Rumus probabilistic local outlier factor ................................. 23 Rumus 2.5 Rumus agregat probabilistic local outlier factor ..................... 23 Rumus 2.6 Rumus local outlier probability ............................................... 23 Rumus 2.7 Rumus error function ............................................................... 23 Rumus 3.1 Rumus min-max normalization ................................................ 31 xix PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DAFTAR LAMPIRAN Lampiran 1 Diagram use case .................................................................... 132 Lampiran 2 Deskripsi use case ................................................................... 133 Lampiran 3 Narasi use case ........................................................................ 134 Lampiran 4 Proses umum sistem pendeteksi outlier .................................. 139 Lampiran 5 Diagram aktivitas .................................................................... 140 Lampiran 6 Diagram kelas analisis ............................................................ 145 Lampiran 7 Diagram sequence ................................................................... 146 Lampiran 8 Diagram kelas desain .............................................................. 150 Lampiran 9 Diagram kelas ......................................................................... 151 Lampiran 10 Listing Program ...................................................................... 157 Lampiran 11 Data set ................................................................................... 224 Lampiran 12 Outlier Plot Data Akademik Mahasiswa Teknik Informatika Angkatan 2007-2008 Jalur Tes Tertulis ............... 238 Lampiran 13 Outlier Plot Data Akademik Mahasiswa Teknik Informatika Angkatan 2007-2008 Jalur Prestasi ...................... 240 Lampiran 14 Outlier Plot Data Akademik Mahasiswa Teknik Informatika Angkatan 2007-2008 Jalur Tes Tertulis dan Jalur Prestasi ..................................................................................... 242 xx PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB I PENDAHULUAN 1.1 Latar Belakang Kebutuhan akan informasi yang akurat sangat dibutuhkan dalam kemajuan teknologi informasi sekarang ini. Namun kebutuhan informasi yang tinggi kadang tidak diimbangi dengan penyajian informasi yang memadai, sehingga sering kali informasi tersebut masih perlu digali ulang dari kumpulan data yang luas. Kemampuan teknologi informasi untuk mengumpulkan dan menyimpan berbagai jenis data jauh meninggalkan kemampuan untuk menganalisis, meringkas, dan mengekstrak knowledge dari data tersebut. Metode tradisional untuk menganalisis data yang ada tidak dapat menangani data dalam jumlah besar. Data mining adalah suatu istilah yang digunakan untuk menemukan pengetahuan yang tersembunyi dalam database. Data mining merupakan proses semi otomatik yang menggunakan teknik statistik, matematika, kecerdasan buatan, dan machine learning untuk mengekstraksi dan mengindentifikasi informasi pengetahuan potensial dan berguna yang tersimpan di dalam database besar (Turban et al. 2005). Data mining adalah bagian dari proses KDD (Knowledge Discovery in Databases) yang terdiri dari beberapa tahapan seperti pemilihan data, pra pengolahan, transformasi, data mining, dan evaluasi hasil (Maimon & Last, 2000). Deteksi outlier pada sekumpulan data adalah salah satu bidang penelitian yang terus berkembang dalam topik data mining. Penelitian ini sangat bermanfaat untuk mendeteksi adanya perilaku atau kejadian yang tidak normal seperti deteksi penipuan penggunaan kartu kredit, penggelapan asuransi, diagnosa medis, dan sebagainya. Berbagai macam metode telah dikembangkan baik berdasarkan teknik ataupun jenis data yang dijadikan obyek. Untuk set data numerik, ada banyak teknik yang telah dikembangkan seperti statistic based, distance 1 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 2 based, density based, clustering based, subspace based, dan lain-lain (Han & Kamber, 2006). Metode density based merupakan gagasan outlier berdasarkan bobot / derajat outlier berdasarkan nilai. Salah satu algoritma dengan metode density based adalah algoritma Local Outlier Probability (LoOP). Algoritma Local Outlier Probability (LoOP) adalah metode local density based yang menggunakan beberapa konsep statistik untuk menghasilkan skor akhir. Algoritma ini menggabungkan keunggulan dari kedua pendekatan tersebut. Metode local density based tidak menganggap data mengikuti setiap distribusi dan penalaran matematika pada model statistik. Skor LoOP merupakan probabilitas bahwa suatu titik tertentu adalah local density outlier. Probabilitas ini memungkinkan perbandingan yang mudah dari titik data dengan data yang sama ditetapkan serta seluruh set data yang berbeda (Kriegel et al. 2009). Dalam perkembangannya, teknik data mining juga digunakan untuk meneliti dalam berbagai bidang. Salah satunya adalah di bidang pendidikan. Banyak sekali penelitian dilakukan dalam bidang pendidikan. Universitas Sanata Dharma merupakan salah satu perguruan tinggi di kota Yogyakarta yang memiliki banyak data seperti data akademik mahasiswa yang meliputi data nilai tes Penerimaan Mahasiswa Baru (PMB) dan data nilai Indeks Prestasi per Semester (IPS). Untuk menjamin dan mempertahankan mutu, setiap prodi Universitas Sanata Dharma secara rutin melakukan evaluasi sisip program. Evaluasi ini untuk mengetahui kemampuan setiap mahasiswa dan untuk memutuskan apakah mahasiswa tersebut harus dipertahankan atau harus dikeluarkan (DO). Dalam memutuskan hasil evaluasi tersebut maka seorang Kaprodi harus memperhatikan riwayat akademik setiap mahasiswa dengan membandingkan nilai hasil tes PMB dengan nilai akademik semester 1 sampai 4. Banyak faktor yang menjadi penghalang bagi mahasiswa dalam mencapai dan mempertahankan nilai tinggi yang mencerminkan usaha mereka secara keseluruhan selama masa pembelajaran. Faktor tersebut dapat PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3 ditargetkan oleh pihak universitas sebagai tindakan mengembangkan strategi untuk meningkatkan prestasi mahasiswa dan meningkatkan kinerja akademik dengan cara memantau perkembangan kinerja mereka. Oleh karena itu, evaluasi kinerja merupakan salah satu dasar untuk memantau perkembangan prestasi mahasiswa. Algoritma Local Outlier Probability dapat diimplementasikan pada sekumpulan data numerik untuk mendeteksi adanya outlier. Salah satu contoh data numerik adalah data akademik mahasiswa yang berupa nilai hasil tes PMB dan nilai IPS. Sejumlah mahasiswa yang memiliki data akademik serupa satu sama lain berarti masuk ke dalam kelompok bukan outlier. Mahasiswa yang tidak memiliki kemiripan data akademik dengan mahasiswa manapun berarti memiliki data akademik yang unik dibandingkan mahasiswa lainnya. Mahasiswa ini akan dianggap sebagai outlier. Berdasarkan hasil deteksi outlier, pihak universitas dapat memperoleh informasi mengenai mahasiswa dengan data akademik yang berbeda atau unik dibandingkan mahasiswa lainnya. Data unik ini dapat dihasilkan dari nilai IPS mahasiswa yang sangat tinggi atau sangat rendah di tiap semester. Selain itu data akademik yang unik juga berasal dari tinggi rendahnya nilai tes PMB mahasiswa. Sebagai contoh, sejumlah mahasiswa dengan nilai IPS dan nilai tes PMB yang tinggi akan tergabung dalam sebuah kelompok yang sama. Kemudian sejumlah mahasiswa yang memiliki nilai IPS dan nilai PMB yang rendah juga akan tergabung dalam sebuah kelompok yang sama. Pihak universitas dapat menganalisis data diri mahasiswa tersebut untuk menemukan faktor tertentu yang berpengaruh pada keunikan data akademik mahasiswa tersebut. Oleh karena itu pada penelitian ini penulis ingin melakukan penelitian menggunakan algoritma Local Outlier Probability (LoOP) untuk mendeteksi outlier dari data nilai IPS mahasiswa dengan membandingkan hasil tes PMB mahasiswa tersebut. Data yang dipakai adalah data akademik PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4 mahasiswa Teknik Informatika Universitas Sanata Dharma angkatan 20072008. 1.2 Rumusan Masalah Berdasarkan latar belakang di atas, rumusan masalah dalam penelitian ini adalah : 1. Bagaimana algoritma Local Outlier Probability (LoOP) dapat mendeteksi outlier dari data nilai akademik mahasiswa? 1.3 Batasan Masalah Batasan masalah pada penelitian ini adalah sebagai berikut : 1. Penggunaan algoritma Local Outlier Probability (LoOP) yang digunakan sebagai sarana untuk mendeteksi outlier pada kumpulan data numerik nilai PMB dan nilai IPS mahasiswa Teknik Informatika Universitas Sanata Dharma. 2. Data yang digunakan adalah kumpulan data numerik nilai PMB dan nilai IPS mahasiswa Teknik Informatika Universitas Sanata Dharma angkatan 2007-2008. 1.4 Tujuan Penelitian Tujuan dari penelitian ini adalah sebagai berikut : 1. Menerapkan algoritma Local Outlier Probability (LoOP) untuk mendeteksi outlier pada kumpulan data numerik nilai PMB dan nilai IPS mahasiswa Teknik Informatika Universitas Sanata Dharma. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 1.5 5 Manfaat Penelitian Manfaat dari penelitian ini adalah sebagai berikut : 1. Menambah pengetahuan tentang kemampuan algoritma Local Outlier Probability (LoOP) dalam mendeteksi outlier dengan studi kasus data akademik mahasiswa Teknik Informatika Universitas Sanata Dharma. 2. Memberikan informasi kepada pihak Universitas dalam mendeteksi anomali data yang ada pada data akademik mahasiswa. 1.6 Metodologi Penelitian Metodologi yang digunakan dalam penelitian ini adalah : 1. Studi Pustaka Metode ini merupakan salah satu metode penelitian yang dilakukan dengan cara mempelajari hal-hal yang berkaitan dengan deteksi outlier menggunakan algoritma Local Outlier Probability (LoOP) dan mengumpulkan informasi yang didapat dari berbagai sumber, diantaranya adalah artikel, karya ilmiah terdahulu, dan website internet. 2. Teknik Data Mining Pada metode ini menggunakan metode KDD (Knowledge Discovery in Databases) yang dikemukakan oleh Jiawei Han dan Kamber. Langkahlangkahnya adalah sebagai berikut : a. Penggabungan Data (Data Integration) Proses menggabungkan data dari beberapa sumber agar data dapat terangkum ke dalam tempat penyimpanan atau satu tabel yang utuh. b. Seleksi Data (Data Selection) Proses pemilihan atribut-atribut yang relevan untuk dilakukan penambangan data. Sedangkan, atribut yang tidak sesuai akan dihilangkan. c. Transformasi Data (Data Transformation) Pada proses ini data yang sudah diseleksi selanjutnya ditransformasikan ke dalam bentuk yang sesuai untuk ditambang. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 6 d. Penambangan Data (Data Mining) Proses mengaplikasikan metode yang tepat untuk mendapatkan pola pada suatu kumpulan data. Dalam penelitian ini, metode yang digunakan adalah metode analisis outlier dengan menggunakan pendekatan density based. Algoritma yang digunakan untuk mendeteksi outlier adalah algoritma Local Outlier Probability (LoOP). e. Evaluasi Pola (Pattern Evaluation) Tahap ini merupakan bagian dari proses pencarian pengetahuan yang mencakup pemeriksaan apakah pola atau informasi yang ditemukan bertentangan dengan fakta atau hipotesa yang ada sebelumnya. f. Presentasi Pengetahuan (Knowledge Presentation) Pada tahap ini pola yang telah didapat selanjutnya direpresentasikan kepada pengguna ke dalam bentuk yang lebih mudah untuk dipahami. 1.7 Sistematika Penulisan Untuk mengetahui secara ringkas permasalahan dalam penulisan tugas akhir ini, maka digunakan sistematika penulisan yang bertujuan untuk mempermudah pembaca menelusuri dan memahami tugas akhir ini. BAB I PENDAHULUAN Pada bab ini penulis menguraikan tentang latar belakang secara umum, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metodologi penelitian serta sistematika penulisan secara keseluruhan. BAB II LANDASAN TEORI Bab ini berisi uraian tentang alur pikir dan perkembangan keilmuan topik kajian. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB III 7 METODOLOGI PENELITIAN Bab ini menjelaskan tentang metode yang dipakai dalam penelitian dan pembuatan aplikasi sebagai implementasi BAB IV ANALISIS DAN PERANCANGAN SISTEM Bab ini menjelaskan tentang analisa sistem dan perancangan sistem yang akan dibangun dalam penelitian ini. BAB V IMPLEMENTASI SISTEM Bab ini menjelaskan tentang implementasi sistem pendeteksi outlier menggunakan algoritma Local Outlier Probability menggunakan java. BAB VI PENGUJIAN DAN ANALISIS HASIL PENGUJIAN Bab ini menjelaskan pengujian setiap proses yang ada dalam sistem kemudian menjelaskan analisa dari hasil pengujian tersebut. BAB VII KESIMPULAN DAN SARAN Bab ini berisi kesimpulan yang dapat ditarik dari penelitian setelah melakukan uji coba dan analisa hasil. Kesimpulan ini merupakan jawaban dari rumusan masalah dalam penelitian ini. Pada bab ini juga berisi saran untuk pengembangan sistem ini. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB II LANDASAN TEORI 2.1 Data Mining 2.1.1 Pengertian Data Mining Data mining adalah serangkaian proses untuk menggali nilai tambah berupa pengetahuan yang selama ini tidak diketahui secara manual dari suatu kumpulan data (Pramudiono, 2007). Data mining didefinisikan sebagai proses menemukan pola-pola dalam data. Proses ini otomatis atau seringnya semi otomatis. Pola yang ditemukan harus penuh arti dan pola tersebut memberikan keuntungan, biasanya keuntungan secara ekonomi. Data yang dibutuhan dalam jumlah besar (Witten & Frank, 2005). Secara sederhana, data mining adalah penambangan atau penemuan informasi baru dengan mencari pola atau aturan tertentu dari sejumlah data yang sangat besar (Davies & Beynon, 2004). Data mining sering juga disebut knowledge discovery in database (KDD), adalah kegiatan yang meliputi pengumpulan, pemakaian data historis untuk menemukan keteraturan, pola atau hubungan dalam set data berukuran besar. Keluaran dari data mining ini bisa dipakai untuk memperbaiki pengambilan keputusan di masa depan (Santosa, 2007). Menurut Gatner Group, data mining adalah suatu proses menemukan hubungan yang berarti, pola dan kecenderungan dengan memeriksa dalam sekumpulan besar data yang tersimpan dalam penyimpanan, dengan menggunakan teknik pengenalan pola seperti teknik statistik dan matematika. Data mining merupakan bidang dari beberapa bidang keilmuan yang menyatukan teknik dari pembelajaran mesin, pengenalan pola, statistik, database dan visualisasi untuk penanganan permasalahan pengambilan informasi dari database yang besar (Larose, 2005). 8 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 9 Kemajuan luar biasa yang terus berlanjut dalam bidang data mining didorong oleh beberapa faktor antara lain (Larose, 2005) : a. Pertumbuhan yang cepat dalam kumpulan data. b. Penyimpanan data dalam data warehouse, sehingga seluruh perusahaan memiliki akses ke dalam database yang handal. c. Adanya peningkatan akses data melalui navigasi web dan intranet. d. Tekanan kompetisi bisnis untuk meningkatkan penguasaan pasar dalam globalisasi ekonomi. e. Perkembangan teknologi perangkat lunak untuk data mining (ketersediaan teknologi). f. Perkembangan yang hebat dalam kemampuan komputasi dan dan pengembangan kapasitas media penyimpanan. Hubungan yang dicari dalam data mining dapat berupa hubungan antara dua atau lebih dalam satu dimensi, misalnya dalam dimensi produk, kita dapat melihat keterkaitan pembelian suatu produk dengan produk yang lain. Selain itu hubungan juga dapat dilihat antara 2 atau lebih atribut dan 2 atau lebih obyek (Ponniah, 2001). Pemanfaatan data yang ada di dalam sistem informasi untuk menunjang kegiatan pengambilan keputusan, tidak cukup hanya mengandalkan data operasional saja, diperlukan suatu analisis data untuk menggali potensi-potensi informasi yang ada. Para pengambil keputusan berusaha untuk memanfaatkan gudang data yang sudah dimiliki untuk menggali informasi yang berguna membantu mengambil keputusan, hal ini mendorong munculnya cabang ilmu baru untuk mengatasi masalah penggalian informasi atau pola yang penting atau menarik dari data dalam jumlah besar. Data mining adalah kegiatan menemukan pola yang menarik dari data dalam jumlah besar, data dapat disimpan dalam database, data warehouse, atau penyimpanan informasi lainnya. Data mining berkaitan dengan bidang ilmu-ilmu lain seperti database system, data warehousing, PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 10 statistik, machine learning, information retrieval, dan komputasi tingkat tinggi. Selain itu data mining didukung oleh ilmu lain seperti neural network, pengenalan pola, spatial data analysis, image database, signal processing (Han & Kamber, 2006). Penggunaan teknik data mining diharapkan dapat memberikan pengetahuanpengetahuan yang sebelumnya tersembunyi di dalam gudang data sehingga menjadi informasi yang berharga. Menurut Bonnie O’Neil (1997, p522), Data mining adalah suatu proses yang mengubah data menjadi informasi dimana ini merupakan proses pencarian data dan relasi yang tersembunyi dalam data. 2.1.2 Tahap Data Mining Sebagai suatu rangkaian proses, data mining dapat dibagi menjadi beberapa tahap yang diilustrasikan di Gambar 2.1. Tahaptahap tersebut bersifat interaktif, pemakai terlibat langsung atau dengan perantaraan knowledge base. Menurut Jiawei Han dan Kamber, proses KDD digambarkan sebagai berikut : Gambar 2.1 Tahap data mining dalam proses KDD PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 11 Menurut para ahli, data mining merupakan sebuah analisa dari observasi data dalam jumlah besar untuk menemukan hubungan yang tidak diketahui sebelumnya dan metode baru untuk meringkas data agar mudah dipahami serta kegunaannya untuk pemilik data. Datadata yang ada, tidak dapat langsung diolah dengan menggunakan sistem data mining. Data terebut harus dipersiapkan terlebih dahulu agar hasil yang diperoleh dapat lebih maksimal, dan waktu komputasinya lebih minimal. Proses persiapan data ini sendiri dapat mencapai 60% dari keseluruhan proses dalam data mining. Adapun tahapan-tahapan yang harus dilalui dalam proses data mining antara lain : 1. Pembersihan data (Data Cleaning) Pembersihan data merupakan proses menghilangkan noise dan data yang tidak konsisten atau data tidak relevan. Pada umumnya data yang diperoleh, baik dari database suatu perusahaan maupun hasil eksperimen, memiliki isian-isian yang tidak sempurna seperti data yang hilang, data yang tidak valid atau juga hanya sekedar salah ketik. Selain itu, ada juga atribut-atribut data yang tidak relevan dengan hipotesa data mining yang dimiliki. Data-data yang tidak relevan itu juga lebih baik dibuang. Pembersihan data juga akan mempengaruhi performasi dari teknik data mining karena data yang ditangani akan berkurang jumlah dan kompleksitasnya. 2. Integrasi Data (Data Integration) Integrasi data merupakan penggabungan data dari berbagai database ke dalam satu database baru. Tidak jarang data yang diperlukan untuk data mining tidak hanya berasal dari satu database tetapi juga berasal dari beberapa database atau file teks. Integrasi data dilakukan pada atribut-aribut yang mengidentifikasikan entitas-entitas yang unik seperti atribut nama, jenis produk, nomor pelanggan dan lainnya. Integrasi data perlu dilakukan secara cermat karena kesalahan pada integrasi data bisa PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 12 menghasilkan hasil yang menyimpang dan bahkan menyesatkan pengambilan aksi nantinya. Sebagai contoh bila integrasi data berdasarkan jenis produk ternyata menggabungkan produk dari kategori yang berbeda maka akan didapatkan korelasi antar produk yang sebenarnya tidak ada. 3. Seleksi Data (Data Selection) Data yang ada pada database sering kali tidak semuanya dipakai, oleh karena itu hanya data yang sesuai untuk dianalisis yang akan diambil dari database. Sebagai contoh, sebuah kasus yang meneliti faktor kecenderungan orang membeli dalam kasus market basket analysis, tidak perlu mengambil nama pelanggan, cukup dengan id pelanggan saja. 4. Transformasi Data (Data Transformation) Data diubah atau digabung ke dalam format yang sesuai untuk diproses dalam data mining. Beberapa metode data mining membutuhkan format data yang khusus sebelum bisa diaplikasikan. Sebagai contoh beberapa metode standar seperti analisis asosiasi dan clustering hanya bisa menerima input data kategorikal. Karenanya data berupa angka numerik yang berlanjut perlu dibagibagi menjadi beberapa interval. Proses ini sering disebut transformasi data. 5. Penambangan Data (Data Mining) Merupakan suatu proses utama saat metode diterapkan untuk menemukan pengetahuan berharga dan tersembunyi dari data. 6. Evaluasi Pola (Pattern Evaluation) Untuk mengidentifikasi pola-pola menarik kedalam knowledge based yang ditemukan. Dalam tahap ini hasil dari teknik data mining berupa pola-pola yang khas maupun model prediksi dievaluasi untuk menilai apakah hipotesa yang ada memang tercapai. Bila ternyata hasil yang diperoleh tidak sesuai hipotesa ada beberapa alternatif yang dapat diambil seperti menjadikannya PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 13 umpan balik untuk memperbaiki proses data mining, mencoba metode data mining lain yang lebih sesuai, atau menerima hasil ini sebagai suatu hasil yang di luar dugaan yang mungkin bermanfaat. 7. Presentasi Pengetahuan (Knowledge Presentation) Merupakan visualisasi dan penyajian pengetahuan mengenai metode yang digunakan untuk memperoleh pengetahuan yang diperoleh pengguna. Tahap terakhir dari proses data mining adalah bagaimana memformulasikan keputusan atau aksi dari hasil analisis yang didapat. Ada kalanya hal ini harus melibatkan orang-orang yang tidak memahami data mining. Karenanya presentasi hasil data mining dalam bentuk pengetahuan yang bisa dipahami semua orang adalah satu tahapan yang diperlukan dalam proses data mining. Dalam presentasi ini, visualisasi juga bisa membantu mengkomunikasikan hasil data mining. 2.1.3 Teknik Data Mining Dengan definisi data mining yang luas, ada banyak jenis metode analisis yang dapat digolongkan dalam data mining. Pada dasarnya penggalian data dibedakan menjadi dua fungsionalitas, yaitu deskripsi dan prediksi. Berikut ini beberapa fungsionalitas penggalian data yang sering digunakan: 1. Association Rule Mining Association rules (aturan asosiasi) atau affinity analysis (analisis afinitas) berkenaan dengan studi tentang “apa bersama apa”. Sebagai contoh dapat berupa berupa studi transaksi di supermarket, misalnya seseorang yang membeli shampoo bersamaan dengan conditioner. Pada kasus ini berarti shampoo bersama dengan conditioner. Karena awalnya berasal dari studi tentang database transaksi pelanggan untuk menentukan kebiasaan suatu produk dibeli bersama produk apa, maka aturan asosiasi juga sering dinamakan market basket analysis. Aturan asosiasi ingin PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 14 memberikan informasi tersebut dalam bentuk hubungan “if-then” atau “jika-maka”. Aturan ini dihitung dari data yang sifatnya probabilistik (Santosa, 2007). Dengan pengetahuan tersebut pemilik pasar swalayan dapat mengatur penempatan barangnya atau merancang strategi pemasaran dengan memakai kupon diskon untuk kombinasi barang tersebut. Analisis asosiasi dikenal juga sebagai salah satu metode data mining yang menjadi dasar dari berbagai metode data mining lainnya. Khususnya salah satu tahap dari analisis asosiasi yang disebut analisis pola frekuensi tinggi (frequent pattern mining) menarik perhatian banyak peneliti untuk menghasilkan algoritma yang efisien. Penting tidaknya suatu aturan assosiatif dapat diketahui dengan dua parameter, support (nilai penunjang) yaitu prosentase kombinasi item tersebut. dalam database dan confidence (nilai kepastian) yaitu kuatnya hubungan antar item dalam aturan assosiatif. Analisis asosiasi didefinisikan suatu proses untuk menemukan semua aturan assosiatif yang memenuhi syarat minimum untuk support (minimum support) dan syarat minimum untuk confidence (minimum confidence) (Pramudiono, 2007). 2. Classification Klasifikasi adalah proses untuk menemukan model atau fungsi yang menjelaskan atau membedakan konsep atau kelas data, dengan tujuan untuk dapat memperkirakan kelas dari suatu obyek yang labelnya tidak diketahui. Model itu sendiri bisa berupa aturan “jika-maka”, berupa pohon keputusan, formula matematis atau neural network. Proses klasifikasi biasanya dibagi menjadi dua fase : learning dan test. Pada fase learning, sebagian data yang telah diketahui kelas datanya diumpankan untuk membentuk model perkiraan. Kemudian pada fase test model yang sudah terbentuk diuji dengan sebagian data lainnya untuk mengetahui akurasi dari model tsb. Bila akurasinya PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 15 mencukupi model ini dapat dipakai untuk prediksi kelas data yang belum diketahui. 3. Clustering Clustering termasuk metode yang sudah cukup dikenal dan banyak dipakai dalam data mining. Sampai sekarang para ilmuwan dalam bidang data mining masih melakukan berbagai usaha untuk melakukan perbaikan model clustering karena metode yang dikembangkan sekarang masih bersifat heuristic. Usaha-usaha untuk menghitung jumlah cluster yang optimal dan pengklasteran yang paling baik masih terus dilakukan. Dengan demikian menggunakan metode yang sekarang, tidak bisa menjamin hasil pengklasteran sudah merupakan hasil yang optimal. Namun, hasil yang dicapai biasanya sudah cukup bagus dari segi praktis. Tujuan utama dari metode clustering adalah pengelompokan sejumlah data/obyek ke dalam cluster (group) sehingga dalam setiap cluster akan berisi data yang semirip mungkin. Dalam clustering metode ini berusaha untuk menempatkan obyek yang mirip (jaraknya dekat) dalam satu klaster dan membuat jarak antar klaster sejauh mungkin. Ini berarti obyek dalam satu cluster sangat mirip satu sama lain dan berbeda dengan obyek dalam clustercluster yang lain. Dalam metode ini tidak diketahui sebelumnya berapa jumlah cluster dan bagaimana pengelompokannya (Santosa, 2007). 4. Outlier Analysis Database dapat mengandung obyek data yang tidak sesuai dengan sifat umum atau model data. Obyek data tersebut adalah outlier. Outlier merupakan obyek data yang tidak mengikuti perilaku umum dari data. Outlier dapat dianggap sebagai pengecualian atau noise. Analisis data outlier dinamakan outlier mining. Teknik ini berguna untuk fraud detection (deteksi penipuan) dan rare events analysis (analisis kejadian langka). Outlier dapat dideteksi dengan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 16 menggunakan tes statistik yang mengasumsikan distribusi atau probabilitas model data menggunakan distance measures, dimana obyek yang memiliki jarak yang jauh dari klaster-klaster lainnya dianggap outlier atau anomali. 5. Decision Tree Dalam decision tree tidak menggunakan vector jarak untuk mengklasifikasikan obyek. Seringkali data observasi mempunyai atribut-atribut yang bernilai nominal. Sebagai contoh obyeknya adalah sekumpulan buah-buahan yang bisa dibedakan berdasarkan atribut bentuk, warna, ukuran dan rasa. Bentuk, warna, ukuran dan rasa adalah besaran nominal, yaitu bersifat kategoris dan tiap nilai tidak bisa dijumlahkan atau dikurangkan. Dalam atribut warna ada beberapa nilai yang mungkin yaitu hijau, kuning, merah. Dalam atribut ukuran ada nilai besar, sedang dan kecil. Dengan nilai-nilai atribut ini, kemudian dibuat decision tree untuk menentukan suatu obyek termasuk jenis buah apa jika nilai tiap-tiap atribut diberikan (Santosa, 2007). Decision tree sesuai digunakan untuk kasus-kasus yang keluarannya bernilai diskrit. Walaupun banyak variasi model decision tree dengan tingkat kemampuan dan syarat yang berbeda, pada umumnya beberapa ciri yang cocok untuk diterapkannya decision tree adalah sebagai berikut : 1.) Data dinyatakan dengan pasangan atribut dan nilainya 2.) Label/keluaran data biasanya bernilai diskrit 3.) Data mempunyai missing value (nilai dari suatu atribut tidak diketahui) Dengan cara ini akan mudah mengelompokkan obyek ke dalam beberapa kelompok. Untuk membuat decision tree memperhatikan hal-hal berikut ini : 1. Atribut mana yang akan dipilih untuk pemisahan obyek. 2. Urutan atribut mana yang akan dipilih terlebih dahulu. 3. Struktur tree. perlu PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 17 4. Kriteria pemberhentian. 5. Pruning. 2.2 Outlier 2.2.1 Pengertian Outlier Outlier merupakan kumpulan data yang dianggap memiliki sifat yang berbeda, tidak konsisten dibandingkan dengan kebanyakan data lainnya (Han & Kamber, 2006). Adanya data outlier ini akan membuat analisis terhadap serangkaian data menjadi bias, atau tidak mencerminkan fenomena yang sebenarnya. Outlier adalah suatu data yang menyimpang dari sekumpulan data yang lain dan juga merupakan pengamatan yang tidak mengikuti sebagian besar pola dan terletak jauh dari pusat data (Soemartini, 2007). Analisis outlier dikenal juga dengan analisis anomali atau deteksi anomali atau deteksi outlier (nilai atributnya obyek tsb, signifikan berbeda dengan nilai atribut obyek lainnya ) atau exception mining. Gambar 2.2 data set outlier Beberapa penyebab adanya outlier, yaitu : Data berasal dari sumber yang berbeda Variasi natural data itu sendiri Error pada saat pengukuran atau pengumpulan data PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 18 Memang ada data-data ekstrim yang tidak dapat dihindarkan keberadaannya Sebagai ilustrasi, pada pendapatan toko roti “Amanah” pada bulan Januari sampai Agustus. Pada bulan Januari pendapatan sekitar Rp 150 ribu, Febuari Rp 300 ribu, Maret Rp 200 ribu, April Rp 150 ribu, Mei Rp 130 ribu, Juni Rp 200 ribu, Juli Rp 300 ribu, dan Agustus Rp 1 juta. Dari data tersebut sangat tampak bahwa nilai 1 juta relatif jauh dibandingkan pendapatan di bulan-bulan sebelumnya. 2.2.2 Dampak Outlier Deteksi outlier merupakan suatu teknik untuk mencari obyek dimana obyek tersebut mempunyai perilaku berbeda dibandingkan obyek-obyek pada umumnya. Deteksi outlier merupakan salah satu bidang penelitian yang penting dalam topik penambangan data. Penelitian ini bermanfaat untuk mendeteksi penyalahgunaan kartu kredit, deteksi adanya penyusupan pada jaringan komunikasi, analisis medis, segmentasi data pelanggan yang berkaitan dengan pemasaran barang. Keberadaan data outlier akan mengganggu dalam proses analisis data dan harus dihindari dalam banyak hal. Outlier dapat menyebabkan hal-hal berikut ini : Residual yang besar dari model yang terbentuk Varians pada data tersebut menjadi lebih besar Taksiran interval memiliki rentang yang lebar PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 19 2.2.3 Metode Pendekatan Outlier Menurut Jiawei Han dan Kamber, teknik data mining dapat digunakan untuk mendeteksi adanya suatu outlier pada sebuah dataset. Teknik data mining yang digunakan adalah metode deteksi outlier dengan menggunakan metode statistical distribution based, distance based, density based, dan deviation based. 1.) Statistical Distribution based Dalam metode ini data diasumsikan sebagai sebuah hipotesis kerja. Setiap data obyek di dalam dataset dibandingkan terhadap hipotesis kerja. Data yang dapat diterima maka akan masuk dalam hipotesis kerja, sedangkan data yang ditolak atau tidak sesuai dengan hipotesis kerja maka ditetapkan menjadi hipotesis alternatif (outlier). Kelebihan metode ini jika pengetahuan data akan jenis distribut data dan jenis uji yang diperlukan sudah cukup, maka pendekatan statistik sangat efektif. Akan tetapi kekurangan dari metode pendekatan ini adalah sulit untuk menemukan fungsi distribusi dan jenis uji yang tepat untuk data dikarenakan kebanyakan uji hanya cocok untuk single atribut. Selain itu juga ditemukan kesulitan dalam menentukan fungsi distribusi dan uji yang tepat untuk data berdimensi tinggi. 2.) Distance based Metode ini adalah sebuah metode deteksi outlier dengan menghitung jarak pada obyek tetangga terdekat (nearest neighbor). Di dalam pendekatan ini sebuah obyek melihat obyekobyek local neighborhod yang didefinisikan sebagai k-nearest neighbor. Jika ketetanggaan sebuah obyek relatif dekat maka obyek tersebut dikatakan normal, namun jika ketetanggaan antar obyek relative jauh maka obyek tersebut dikatakan tidak normal (outlier). PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 20 Kelebihan dari metode pendekatan ini adalah sederhana. Akan tetapi untuk menangani basis data yang besar akan memakan biaya besar, sangat bergantung dengan nilai parameter yang dipilih dan juga tidak dapat menangani kasus himpunan data yang memiliki kepadatan berbeda pada daerah berbeda. 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 sebuah parameter yaitu k, k adalah jangkauan atau jumlah tetangga terdekat yang digunakan untuk mendefinisikan local Neighborhood suatu obyek. 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 outlier. Kelebihan dari metode pendekatan ini adalah dapat digunakan untuk data yang kepadatannya berbeda. Namun pemilihan parameter juga menjadi satu penentu yang kuat dalam menentukan nilai kepadatan. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 2.3 21 Algoritma Local Outlier Probability Pada penelitian ini, penulis menggunakan algoritma Local Outlier Probability (LoOP) untuk mendeteksi adanya outlier dalam data akademik mahasiswa TI Universitas Sanata Dharma angkatan 2007-2008. Algoritma ini bekerja pada k-neighborhood obyek. LoOP adalah metode local density based yang menggunakan beberapa konsep statistik untuk menghasilkan skor akhir. Ini menggabungkan keunggulan dari kedua pendekatan tersebut. Metode local density based tidak menganggap data mengikuti setiap distribusi dan penalaran matematika pada model statistik. Skor LoOP merupakan probabilitas bahwa suatu titik tertentu adalah local density outlier. Probabilitas ini memungkinkan perbandingan yang mudah dari titik data dengan data yang sama ditetapkan serta seluruh set data yang berbeda (Kriegel et al. 2009). Langkah-langkah perhitungan LoOP adalah sebagai berikut. Normalisasi Faktor dinotasikan dengan . 1. Menghitung k-distance dari setiap obyek (o) Tujuan dari perhitungan k-distance ini adalah untuk menentukan tetangga dari o, secara sederhana k-distance dari sebuah obyek o adalah jarak maksimal dari obyek tertentu terhadap tetangga terdekatnya dan di notasikan dengan k-distance(o). Untuk menghitung k-distance, langkah awal adalah menghitung jarak masing-masing obyek dengan menggunakan rumus euclidean distance seperti di bawah ini : d(i,j) = ……(2.1) setelah menghitung jarak, kemudian menentukan besar k dimana data sebanyak k tersebut tidak lebih besar dari nilai kdistance(o). PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 22 2. Menghitung jumlah tetangga terdekat (k-distance neighborhood) dari setiap obyek o k-distance neighborhood suatu obyek o dinotasikan Nk-distance(o), atau Nk(o) dimana berisi setiap obyek dengan jarak tidak lebih besar dari kdistance (o). 3. Menghitung standard distance σ(o,S) atau standar deviasi dari jarak disekitar o Untuk konteks lokal o dalam S. Jika kita gunakan = sebaliknya erf-1 (galat), di mana erf menunjukkan kesalahan fungsi Gaussian, dalam estimasi kepadatan S, kita dapat mensimulasikan gagasan statistik klasik dan notasi outlier didefinisikan sebagai obyek yang menyimpang. Nilai-nilai secara empiris adalah 68-95-99.7 aturan (“three sigma”), nilai empiris itu adalah = 1 95%, dan = 3 = 68%, = 2 = = 99,7%. Jadi semakin besar nilai lamda maka akan semakin memperkecil ditemukan error / noise. Dalam hal ini disarankan menggunakan lamda 2. Untuk menghitung standard distance dari obyek di Nk(o) dengan rumus = σ(o,S) = ……(2.2) Keterangan : σ : standard distance / standar deviasi S : himpunan tetangga dari obyek o s : tetangga dari obyek o / anggota dari S |S| : banyak anggota dari himpunan S 4. Menghitung Probabilistic set distance (pdist) pdist(, o, S) Setelah ditemukan nilai standard distance, selanjutnya nilai tersebut akan digunakan untuk menghitung probabilistic set distance. Probabilistic set distance dapat memperkirakan tingkat kepadatan obyek o terhadap tetangganya. Parameter lamda memberikan control eror terhadap PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 23 kepadatan. Bagaimanapun, normalization factor () memberikan pengaruh terhadap skore LoOP. Rumus Probabilistic set distance (pdist) pdist(, o, Nk(o)) sebagai berikut : pdist(,o,S) = .σ(o, S) ……(2.3) 5. Menghitung Probabilistic Local Outlier Factor yang merupakan ratio perkiraan kepadatan plof(,S(o)) = -1 ……(2.4) 6. Menghitung agregat Probabilistic Local Outlier Factor nPLOF() = nPLOF() = . ……(2.5) keterangan : D : jumlah dataset dari obyek o 7. Menghitung Local Outlier Probability (LoOP) )) ……(2.6) LoOPS(o) = max (0, Rumus erf tersebut adalah erf(x) = dt ……(2.7) Pendekatan ini didasarkan pada dua asumsi sebagai berikut: 1. titik poinnya adalah pusat set neighborhood. 2. nilai jarak mensimulasi nilai positif dari distribusi normal. Asumsi pertama dilanggar terutama ketika titik poinnya adalah outlier. Pelanggaran ini akan mengakibatkan terlalu tinggi PLOF sebagai akibat dari peningkatan standard distance titik outlier. Efek ini sebenarnya diinginkan karena akan menekankan bahwa intinya adalah outlier. Asumsi kedua berbeda dengan metode statistik membuat asumsi hanya sekitar distribusi jarak dan bukan distribusi poin. Asumsi ini berlaku untuk kedua rumus jarak Manhattan dan jarak Euclidean sesuai dengan teorema limit sentral. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 24 Penambahan konsep statistik untuk metode kepadatan lokal membuat skor LoOP independen dari setiap distribusi. Hal ini membuat mampu menangani kelompok non-seragam seperti kelompok yang dihasilkan oleh model Gaussian yang ditangani buruk oleh LOF misalnya. 2.3.1 Contoh Perhitungan LoOP Diketahui sebuah data D memiliki 4 buah obyek dan dilambangkan sebagai obyek P1, P2, P3, P4. Masing-masing obyek tersebut memiliki jarak sebagai berikut : (k = 2) Berikut ini merupakan langkah penyelesaian persoalan di atas : 1. Mencari kdistance Langkah mencari kdistance adalah sebagai berikut : a. Menghitung jarak P1 terhadap semua obyek menggunakan rumus jarak ecluidean distance (tabel di atas merupakan data yang sudah dihitung jaraknya) b. Memilih jarak terkecil sebanyak nilai k, yaitu 2. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 25 c. Kemudian dari 2 jarak terkecil tersebut, pilih yang paling besar jaraknya. Jarak terbesar tersebut adalah kdistance. Obyek yang dekat dengan P1 urut dari kecil adalah P3 – P2. Jarak P1 ke P3 adalah 2 sedangkan jarak P1 ke P2 adalah 4. Maka kdistance(P1) = 4. 2. Menemukan kdistance neighborhood Maksudnya adalah mencari tetangga terdekat dimana besar jaraknya tidak lebih dari sama dengan kdistance(o) 3. Menghitung standard distance = Standard distance P1 = = 2,236068 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 26 4. Menghitung probabilistic set distance pdist( disini adalah 2. Maka pdist P1 = 2 x 2,236068 = 4,472136 5. Menghitung probabilistic PLOF PLOF,Nk(o)(o) = -1 Untuk menghitung PLOF perlu menghitung terlebih dahulu nilai jumlah pdist dari setiap tetangga terkait. Sebagai contoh menghitung ∑pdist P1. Perlu diingat bahwa tetangga P1 adalah P2 dan P3. Maka ∑pdist P1 = pdist P2 + pdist P3. PLOF P1 = = -0,24126 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 27 6. Menghitung agregat PLOF (nPLOF) nPLOF() = . nPLOF = 2 . = 0,794688 7. Menghitung derajat LoOP LoOPNk(o)(o) = max (0, LoOP P1 = max (0, )) )) = max (0, -33232) = 0 Jika derajat LoOP 0, maka obyek tersebut bukan outlier. Sebaliknya, jika derajat LoOP lebih dari 0, maka obyek tersebut dinyatakan sebagai outlier. Dari tabel di atas, yang termasuk outlier adalah obyek P2 dan P4. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB III METODOLOGI PENELITIAN Pada bab ini akan dijelaskan mengenai perancangan penelitian yang digunakan untuk mencapai tujuan dalam penelitian tugas akhir ini. Metodologi penelitian ini menggunakan metodologi penambangan data yaitu KDD (Knowledge Discovery in Database) yang dikemukakan oleh Jiawei Han dan Kamber. 3.1 Data yang dibutuhkan Dalam Kamus Besar Bahasa Indonesia, data diartikan sebagai kenyataan yang ada yang berfungsi sebagai bahan sumber untuk menyusun suatu pendapat, keterangan yang benar, dan keterangan atau bahan yang dipakai untuk penalaran dan penyelidikan. Data adalah catatan atas kumpulan fakta (Vardiansyah, 2008). Data merupakan bentuk jamak dari datum, berasal dari bahasa Latin yang berarti “sesuatu yang diberikan”. Dalam penggunaan sehari-hari data berarti suatu pernyataan yang diterima secara apa adanya. Pernyataan ini adalah hasil pengukuran atau pengamatan suatu variabel yang bentuknya dapat berupa angka, kata-kata, atau citra. Dalam tujuan pencarian fakta tersebut, pada penelitian ini penulis menggunakan data akademik mahasiswa teknik informatika Universitas Sanata Dharma Yogyakarta angkatan 2007-2008. Data ini bersifat numerik yang meliputi data nilai hasil seleksi masuk dan indeks prestasi semester satu sampai empat. Data tersebut diperoleh dari gudang data akademik mahasiswa Universitas Sanata Dharma Yogyakarta khususnya mahasiswa teknik informatika. Data penelitian ini diperoleh dari gudang data akademik mahasiswa program studi Teknik Informatika Universitas Sanata Dharma dalam bentuk skrip kueri sql. Dari skrip tersebut, data yang digunakan dalam penelitian adalah data nilai hasil seleksi masuk melalui jalur tes maupun prestasi, dan 28 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 29 nilai indeks prestasi semester dari semester satu hingga empat. Data akademik mahasiswa program studi Teknik Informatika angkatan 20072008 terdiri dari 126 buah. 3.2 Pengolahan Data Berikut ini merupakan tahap-tahap yang dilakukan dalam pengolahan data : 1. Penggabungan Data (Data Integration) Data mentah dalam skrip sql diekstrak ke dalam database. Lalu hasil ekstrak tersebut menghasilkan basis data bernama “gudangdata”. Dalam basis data ini terdiri dari beberapa tabel, yaitu tabel dim_angkatan, dim_daftarsmu, dim_fakultas, dim_jeniskel, dim_kabupaten, dim_prodi, dim_prodifaks, dim_statustes, dan factlengkap2. Gambar 3.1 Database “gudangdata” 2. Seleksi Data (Data Selection) Tahap selanjutnya adalah seleksi data dimana melakukan seleksi terhadap data yang relevan dengan penelitian. Dari database “gudangdata” tersebut tabel data yang akan dipakai untuk penelitian adalah hanya tabel fact_lengkap2. Tabel fact_lengkap2 dipilih karena memuat atribut yang dibutuhkan untuk penelitian, yaitu atribut nilai hasil seleksi tes masuk dan nilai indeks prestasi semester satu hingga empat. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 30 Gambar 3.2 Tabel fact_lengkap2 dalam database “gudangdata” Setelah seleksi terhadap tabel dalam database “gudangdata”, selanjutnya dilakukan seleksi terhadap data yang diperlukan dalam tabel fact_lengkap2. Langkah pertama adalah menyeleksi data mahasiswa yang berasal dari program studi Teknik Informatika, yaitu data mahasiswa yang memiliki data sk_prodi 27. Baris dengan sk_prodi 27 adalah data mahasiswa yang berasal dari program studi Teknik Informatika. Data ini yang dipilih karena dapat digunakan sebagai variabel numerik untuk mendeteksi outlier dan sesuai untuk mencapai tujuan penelitian. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 31 Gambar 3.3 Isi tabel fact_lengkap2 dalam database “gudangdata” Selanjutnya dilakukan seleksi terhadap kolom yang berada dalam tabel fact_lengkap2, kolom-kolom yang tidak dipakai antara lain : nomor, jumsttb, jummsttb, jumnem, jummtnem, sttb, sk_jeniskelamin, sk_status, sk_kabupaten, sk_daftarsmu, sk_prodi 3. Transformasi Data (Data Transformation) Pada tahap ini, data yang sudah diseleksi selanjutnya ditransformasikan kedalam bentuk yang sesuai untuk ditambang. Hal ini dikarenakan adanya perbedaan range nilai antara atribut satu dengan atribut lainnya. Nilai final memiliki range nilai antara 0-100. Nilai tes masuk memiliki range nilai antara 0-10. IPS memiliki range nilai antara 0-4. Perbedaan range nilai ini akan disamakan melalui proses transformasi data. Transformasi data dilakukan dengan menggunakan metode normalisasi. Metode normalisasi dilakukan dengan cara membuat skala pada data atribut. Salah satu jenis metode normalisasi yaitu min-max normalization (Han & Kamber, 2006). Normalisasi data untuk menyamaratakan persebaran nilai keseluruhan atribut dengan menggunakan rumus min-max normalization : ……(3.1) Keterangan : v = nilai lama yang belum dinormalisasi v’ = nilai yang sudah dinormalisasi PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 32 minA = minimum nilai dari atribut a maxA = maksimum nilai dari atribut a new_min = nilai minimum baru dari atribut a new_max = nilai maksimum baru dari atribut a Proses normalisasi data berikut ini berlaku untuk atribut nil11, nil12, nil13, nil14, dan nil15 menggunakan min-max normalization, semisal nil11 adalah 8.00 maka proses normalisasinya adalah : maxA = 10, minA= 0, new_maxA = 4, new_minA= 0, dan v = nil11 dalam hal ini bernilai 8.00, sehingga proses perhitungannya v1 = (8-0)/(10-0)*(40)+0 = 3.20. Sehingga hasil normalisasi nil11 adalah 3.20. 1. Normalisasi atribut nil11, nil12, nil13, nil14, dan nil15 Contoh data dibawah ini menggambarkan proses transformasi dari atribut nilai1, nilai2, nilai3, nilai 4 dan nilai 5. Tabel 3.1 merupakan tabel yang berisi data atribut nil11 – nil15 sebelum normalisasi. Tabel 3.1 Contoh Data Atribut nil11 sampai nil15 sebelum dinormalisasi Nomor nil11 nil12 nil13 nil14 nil15 ips1 1 7,00 5,00 5,00 5,00 4,00 2,94 2 3,00 2,00 8,00 3,00 1,00 1,72 3 6,00 4,00 5,00 7,00 5,00 2,56 4 5,00 5,00 6,00 5,00 5,00 2,44 5 6,00 4,00 6,00 3,00 7,00 2,94 6 6,00 5,00 6,00 6,00 7,00 1,89 7 6,00 6,00 4,00 4,00 7,00 4,00 8 10,00 5,00 9,00 6,00 7,00 1,44 9 8,00 6,00 6,00 7,00 5,00 3,72 10 7,00 6,00 8,00 8,00 2,00 1,72 11 7,00 6,00 7,00 6,00 6,00 3,28 12 6,00 5,00 5,00 7,00 5,00 2,89 13 5,00 5,00 8,00 5,00 7,00 2,89 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Data yang ada menggunakan pada rumus Tabel 3.1 kemudian min-max 33 dinormalisasi normalization sehingga menghasilkan data seperti pada Tabel 3.2 di bawah ini : Tabel 3.2 Contoh Data Atribut nil11 sampai nil15 setelah dinormalisasi Nomor nil11 nil12 nil13 nil14 nil15 ips1 1 2,80 2,00 2,00 2,00 1,60 3,72 2 1,20 0,80 3,20 1,20 0,40 2,89 3 2,40 1,60 2,00 2,80 2,00 2,56 4 2,00 2,00 2,40 2,00 2,00 3,28 5 2,40 1,60 2,40 1,20 2,80 1,89 6 2,40 2,00 2,40 2,40 2,80 1,44 7 2,40 2,40 1,60 1,60 2,80 4,00 8 4,00 2,00 3,60 2,40 2,80 1,72 9 3,20 2,40 2,40 2,80 2,00 2,89 10 2,80 2,40 3,20 3,20 0,80 2,94 11 2,80 2,40 2,80 2,40 2,40 2,94 12 2,40 2,00 2,00 2,80 2,00 2,44 13 2,00 2,00 3,20 2,00 2,80 1,72 2. Normalisasi atribut nilai Final Berikutnya adalah proses normalisasi data berikut berlaku untuk atribut final menggunakan min-max normalization, semisal nilai final adalah 67,80 maka proses normalisasinya adalah : maxA = 100, minA= 0, new_maxA = 4, new_minA= 0, dan v = final dalam hal ini bernilai 67,80 , sehingga proses perhitungannya v1= (67,80-0)/(100-0)*(4-0)+0 = 2.44. Sehingga hasil normalisasi nilai final yang awalnya bernilai 61.00 sekarang menjadi 2.712. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 34 Contoh data dibawah ini mengambarkan proses transformasi atribut nilai final. Tabel 3.3 merupakan tabel yang berisi data atribut nilai final sebelum normalisasi. Tabel 3.3 Contoh Data Atribut Nilai Final sebelum dinormalisasi Nomor Ips1 Ips2 Ips3 Ips4 Final 1 2,94 3,27 2,96 2,81 54,00 2 1,72 1,65 1,53 1,68 28,00 3 2,56 2,77 2,52 3,13 52,00 4 2,44 2,63 2,00 2,67 51,00 5 2,94 2,59 1,55 2,35 53,00 6 1,89 2,20 2,21 1,95 59,00 7 4,00 3,52 3,43 3,70 58,00 8 1,44 2,42 2,53 1,96 74,00 9 3,72 3,48 3,36 3,65 65,00 10 1,72 2,65 2,43 2,24 59,00 11 3,28 2,75 2,90 3,00 64,00 12 2,89 3,21 3,33 3,36 55,00 13 2,89 3,18 3,04 2,95 57,00 Data yang menggunakan ada pada rumus Tabel 3.3 min-max kemudian dinormalisasi normalization menghasilkan data seperti pada Tabel 3.4 di bawah ini : sehingga PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 35 Tabel 3.4 Contoh Data Atribut Nilai Final setelah dinormalisasi Nomor Ips1 Ips2 Ips3 Ips4 Final 1 2,94 3,27 2,96 2,81 2,16 2 1,72 1,65 1,53 1,68 1,12 3 2,56 2,77 2,52 3,13 2,08 4 2,44 2,63 2,00 2,67 2,04 5 2,94 2,59 1,55 2,35 2,12 6 1,89 2,20 2,21 1,95 2,36 7 4,00 3,52 3,43 3,70 2,32 8 1,44 2,42 2,53 1,96 2,96 9 3,72 3,48 3,36 3,65 2,60 10 1,72 2,65 2,43 2,24 2,36 11 3,28 2,75 2,90 3,00 2,56 12 2,89 3,21 3,33 3,36 2,20 13 2,89 3,18 3,04 2,95 2,28 Setelah nilai atribut nil11, nil12, nil13, nil14, nil15, dan final di normalisasikan dalam kisaran nilai 0.00 - 4.00 maka nilai yang sudah dinormalisasikan inilah yang nantinya akan digunakan sebagai input dalam proses deteksi outlier. 4. Penambangan Data (Data Mining) Data yang telah melalui proses transformasi data selanjutnya dicari outliernya menggunakan algoritma deteksi outlier yaitu algoritma Local Outlier Probability (LoOP). Data yang diteliti akan dibatasi pada data dua tahun angkatan di Universitas Sanata Dharma yaitu tahun angkatan 2007 dan 2008. Pada tahap ini, akan ditentukan juga variabel-variabel yang akan digunakan untuk menambang data. Variabel-variabel tersebut antara lain : PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 36 1.) Input, yang terdiri dari : a. Nilai hasil seleksi masuk mahasiswa, baik melalui jalur tes maupun jalur prestasi. Masukan tersebut diperoleh dari atribut yang ada pada tabel fact_lengkap2 yaitu yaitu nil11, nil12, nil13, nil14, nil15, dan final. Atribut nil11, nil12, nil13, nil14, dan nil15 hanya dimiliki oleh mahasiswa yang masuk melalui jalur tes tertulis. Sedangkan atribut final dimiliki oleh mahasiswa yang masuk melalui jalur tes tertulis maupun jalur prestasi. b. Indeks prestasi mahasiswa dari semester satu hingga empat. Masukan tersebut diperoleh dari atribut yang ada pada tabel fact_lengkap2 yaitu ips1, ips2, ips3, dan ips4. 2.) Output, yaitu : data mahasiswa yang menjadi outlier dari perhitungan yang diambil dari data numerik nilai hasil seleksi masuk dan nilai indeks prestasi selama empat semester. Pada penelitian ini menggunakan data akademik mahasiswa Teknik Informatika Universitas Sanata Dharma angkatan 2007-2008, dimana memiliki atribut ips1, ips2, ips3, ips4, nil11, nil12, nil13, nil14, nil15. Atribut ips1 merupakan nilai indeks prestasi semester 1, dan atribut nil11-nil15 merupakan nilai komponen tes PMB (berlaku untuk mahasiswa yang masuk melalui jalur tes). Tabel 3.5 merupakan data akademik mahasiswa angkatan 2007 yang masuk dan diterima di Universitas Sanata Dharma melalui jalur tes tertulis. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 37 Tabel 3.5 Data Akademik Mahasiswa Angkatan 2007 Jalur Tes Tertulis No ips1 ips2 ips3 ips4 nil11 nil12 nil13 nil14 nil15 1 2,94 3,27 2,96 2,81 2,80 2,00 2,00 2,00 1,60 2 1,72 1,65 1,53 1,68 1,20 0,80 3,20 1,20 0,40 3 2,56 2,77 2,52 3,13 2,40 1,60 2,00 2,80 2,00 4 2,44 2,63 2,00 2,67 2,00 2,00 2,40 2,00 2,00 5 2,94 2,59 1,55 2,35 2,40 1,60 2,40 1,20 2,80 6 1,89 2,20 2,21 1,95 2,40 2,00 2,40 2,40 2,80 7 4,00 3,52 3,43 3,70 2,40 2,40 1,60 1,60 2,80 8 1,44 2,42 2,53 1,96 4,00 2,00 3,60 2,40 2,80 9 3,72 3,48 3,36 3,65 3,20 2,40 2,40 2,80 2,00 10 1,72 2,65 2,43 2,24 2,80 2,40 3,20 3,20 0,80 11 3,28 2,75 2,90 3,00 2,80 2,40 2,80 2,40 2,40 12 2,89 3,21 3,33 3,36 2,40 2,00 2,00 2,80 2,00 13 2,89 3,18 3,04 2,95 2,00 2,00 3,20 2,00 2,80 Langkah 1 Menghitung k-distance Perhitungan data mahasiswa angkatan 2007 melalui jalur tes dengan membandingkan nilai per komponen dan mulai dari indeks prestasi semester 1. Mencari jarak dengan menggunakan rumus jarak ecluidian distance, yaitu = d(i,j) = ……(2.1) Gambar 3.4 merupakan hasil perhitungan jarak dari data akademik mahasiswa angkatan 2007 jalur tes menggunakan euclidean. rumus jarak PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 38 Gambar 3.4 Perhitungan jarak mahasiswa angkatan 2007 jalur tes Setelah menghitung jarak setiap obyek, maka selanjutnya dicari kdistance dari setiap obyek, dengan asumsi k = 10, k melambangkan jangkauan suatu obyek terhadap tetangganya, sehingga dicari 10 jarak terdekat dari sebuah obyek. Caranya dengan mengurutkan jarak dari yang terkecil sampai jarak terbesar. Lalu memilih sebanyak k, yaitu 10 obyek dengan jarak terkecil. Kemudian pilih jarak terbesar dari kesepuluh jarak tersebut. jarak terbesar tersebut adalah kdistance. Gambar 3.5 merupakan pencarian kdistance dari setiap obyek mahasiswa angkatan 2007 jalur tes. Gambar 3.5 Pencarian kdistance pada data mahasiswa angkatan 2007 jalur tes PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 39 Langkah 2 Menghitung jumlah tetangga terdekat (kdistance neighborhood) dari setiap obyek Setelah pencarian kdistance selesai, selanjutnya adalah mencari kdistance neighborhood dari data mahasiswa angkatan 2007 jalur tes. Gambar 3.6 merupakan pencarian kdistance neighborhood dari data mahasiswa angkatan 2007 jalur tes. Gambar 3.6 Pencarian kdistance neighborhood dari data mahasiswa angkatan 2007 jalur tes Dari data di atas dapat disimpulkan bahwa neighborhood (Nk) dari obyek P1 adalah P3, P4, P5, P6, P7, P9, P10, P11, P12 dan P13 dengan kdistance 2,273411533, dan seterusnya. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 40 Langkah 3 Menghitung standard distance (σ) = ……(2.2) Gambar 3.7 di bawah ini merupakan perhitungan standard distance dari mahasiswa angkatan 2007 jalur tes. Perhitungan ini menggunakan Microsoft excel. Gambar 3.7 Perhitungan standard distance dari mahasiswa angkatan 2007 jalur tes Misal pada obyek P1, stdev dari P1 adalah 1,56582 didapat dari : = == == 1,56582 Langkah 4 Menghitung Probabilistic set distance (pdist) pdist( ……(2.3) Dalam perhitungan ini penulis menggunakan = 2. Dalam melakukan beberapa percobaan, nilai tidak mempengaruhi jumlah outlier yang ditemukan. Catatan pentingnya, nilai harus dalam kisaran angka lebih dari 0. Penulis telah melakukan percobaan nilai sama dengan 1, 2, dan 3 dan jumlah outlier yang dihasilkan adalah sama. Gambar 3.8 di bawah ini merupakan perhitungan probability set distance dari mahasiswa angkatan 2007 jalur tes. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 41 Gambar 3.8 Perhitungan probability set distance dari data akademik mahasiswa angkatan 2007 jalur tes Contoh perhitungan pada obyek p1 adalah pdist( == 2 * 1,56582 == 3,13164 Langkah 5 Menghitung Probabilistic Local Outlier Factor (PLOF) PLOF,Nk(o)(o) = -1 ……(2.4) Sebelum menghitung PLOF, langkah utama adalah mencari pdist dari obyek s dimana s tersebut adalah anggota dari Nk(o) dimana Nk(o) adalah tetangga dari obyek itu sendiri. Maksudnya, adalah PLOF dari obyek P1 = -1 Nk(P1) = P3, P4, P5, P6, P7, P9, P10, P11, P12, P13 Gambar 3.9 di bawah ini merupakan perhitungan probability local outlier factor dari mahasiswa angkatan 2007 jalur tes. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 42 Gambar 3.9 Perhitungan probability local outlier factor dari data akademik mahasiswa angkatan 2007 jalur tes Perhitungannya = PLOF P1 -1 = -0,13072 Langkah 6 Menghitung nPLOF nPLOF() = . untuk menghitungan ......(2.5) nPLOF, yang pertama adalah dengan mengkwadratkan nilai PLOF lalu menjumlahkan totalnya. Gambar 3.10 di bawah ini merupakan perhitungan agregat probability local outlier factor dari mahasiswa angkatan 2007 jalur tes. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 43 Gambar 3.10 Perhitungan agregat probability local outlier factor dari mahasiswa angkatan 2007 jalur tes Total dari PLOF kwadrat adalah 1,123675. Kemudian perhitungannya adalah sebagai berikut : nPLOF() = . == 2 . == 0,61688 Langkah 7 Menghitung LoOP LoOPNk(o)(o) = max (0, ))……(2.6) Dalam menghitung LoOP dilakukan perhitungan step by step. Pertama dengan menghitung nilai . Lalu mencari nilai error function dari nilai tersebut. Rumus erf tersebut adalah erf(x) = dt ……(2.7) Gambar 3.11 di bawah ini merupakan perhitungan local outlier probability dari mahasiswa angkatan 2007 jalur tes. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 44 Gambar 3.11 Perhitungan local outlier probability dari mahasiswa angkatan 2007 jalur tes Hasil perhitungan di atas, nilai LoOP lebih dari 0 yang diasumsikan menjadi outlier pada semester 1 dari ke13 data di atas. Mahasiswa outlier tersebut adalah mahasiswa ke 2, ke 5, ke 7, ke 8, ke 9, dan ke 10. 5. Evaluasi Pola (Pattern Evaluation) Pada tahap ini dilakukan evaluasi terhadap pola yang telah didapat dari proses penambangan data, dimana hasil dari penambangan data tersebut akan dievaluasi dengan hipotesa yang telah dibentuk sebelumnya. Melalui sistem pendeteksi outlier akan diperoleh luaran berupa datadata outlier menggunakan algoritma Local Outlier Probability (LoOP) dan dianalisa kembali oleh pemilik data itu apakah hipotesa outlier yang mereka miliki sama atau tidak dengan hasil yang diperoleh sistem, sehingga dapat diketahui seperti apa tingkat keberhasilan pencarian outlier tersebut. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 6. 45 Presentasi Pengetahuan (Knowledge Presentation) Pada tahap ini pola yang telah didapat selanjutnya direpresentasikan kepada pengguna ke dalam bentuk sistem pendeteksi dengan antarmuka yang lebih mudah untuk dipahami. Melalui sistem pendeteksi outlier ini diharapkan pengguna dalam hal ini pihak internal Universitas Sanata Dharma dapat mencari tahu data-data yang bersifat langka dan berbeda dari kebanyakan data lainnya untuk selanjutnya dianalisa mengapa datadata tersebut bisa muncul. Tidak bisa dipungkiri bahwa outlier sendiri akan didefinisikan dan dianalisa oleh orang yang ahli dan mengerti tentang data itu. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB IV ANALISIS DAN PERANCANGAN SISTEM 4.1 Identifikasi Sistem Seperti halnya dengan Universitas lain, Universitas Sanata Dharma Yogyakarta juga membuka pendaftaran untuk penerimaan mahasiswa baru dalam tahunnya. Penerimaan mahasiswa baru ini melalui 2 jalur, yaitu jalur prestasi dan jalur tes tertulis. Untuk jalur prestasi syarat utama dari calon mahasiswa adalah mengirimkan nilai hasil belajar saat kelas XI semester 1 dan 2 di SMA/sederajat. Dari nilai tersebut dapat diolah rata-rata nilai yang kemudian menjadi nilai final calon mahasiswa. Sedangkan calon mahasiswa yang mendaftar melalui jalur tes tertulis akan diuji dalam 5 komponen tes, yaitu kemampuan penalaran numerik, penalaran verbal, hubungan ruang, bahasa Inggris, dan kemampuan numerik. Setelah itu akan didapat nilai tes per komponen tes yang akhirnya juga diolah menjadi nilai final. Nilai final dari jalur prestasi dan tes tersebut menjadi pertimbangan calon mahasiswa dapat diterima atau tidak. Mahasiswa baru yang diterima di Universitas Sanata Dharma diharuskan mengikuti kegiatan perkuliahan dan setiap semesternya akan memperoleh nilai indeks prestasi sebagai kalkulasi dadi prestasi akademiknya. Dalam hal ini dapat diidentifikasi apakah ada nilai indeks prestasi per semester ini akan berhubungan dengan nilai seleksi masuk mahasiswa. Hal ini dapat juga menjadi penelitian untuk menemukan kejadian langka dari nilai akademik siswa atau dapat disebut sebagai deteksi outlier. Dari nilai hasil seleksi masuk dan nilai indeks prestasi selama empat semester diharapkan dapat digunakan sebagai bahan untuk melihat kejadian langka pada data akademik mahasiswa. Sebuah sistem pendeteksi outlier yang akan dibangun diharapkan mampu untuk mengenali mahasiswa mana saja yang tergolong menjadi outlier dibandingkan dengan mahasiswa lain. Sistem pendeteksi ini menerapkan algoritma Local Outlier Probability (LoOP) yang merupakan 46 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 47 algoritma menggunakan pendekatan density based yang berguna untuk mencari outlier. 4.1.3 Diagram Use Case Dalam sebuah sistem, peranan pengguna sangat dibutuhkan karena pengguna sebagai pelaku utama yang menjalankan fungsi-fungsi yang ada dalam sebuah sistem tersebut. Hal ini yang disebut adanya interaksi antara sistem dengan pengguna sistem. Untuk menggambarkan interaksi tersebut digunakan sebuah diagram use case yang terlampir pada lampiran 1. Terdapat tiga fungsi utama yang dapat dijalankan oleh pengguna yaitu memasukkan data file excel atau database, mendeteksi outlier, dan menyimpan deteksi outlier. Ketiga fungsi tersebut saling berkaitan sehingga dalam menjalankan fungsi ini pengguna harus melakukannya secara beurutan. Untuk menyimpan hasil deteksi outlier, pengguna diharuskan melakukan deteksi outlier terlebih dahulu. sedangkan untuk mendeteksi outlier pengguna harus memasukkan file data excel atau database sebagai masukan untuk dapat dideteksi adanya outlier. 4.1.4 Narasi Use Case Untuk mengetahui deskripsi use case, dapat dilihat pada lampiran 2. Sedangkan narasi use case dapat dilihat pada bagian lampiran 3. 4.2 Perancangan Sistem Secara Umum 4.2.4 Input Sistem Sistem yang dibuat pada penelitian ini dapat menerima masukan berupa data bebas dari pengguna yang bertipe file excel (.xls), (.csv) atau data dalam table yang terdapat di dalam basis data. Dalam penelitian ini data yang digunakan adalah data dengan ukuran bebas, karena aplikasi yang akan dikembangkan bersifat universal, sehingga dapat mencari outlier di semua jenis data. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 48 Sistem ini juga membutuhkan sebuah inputan untuk memproses pencarian outlier, inputan tersebut yaitu : 1. Data akademik mahasiswa Teknik Informatika angkatan 20072008 Data yang digunakan dalam penelitian ini adalah data akademik mahasiswa Teknik Informatika angkatan 2007-2008 yang terdiri dari 126 buah. Mahasiswa tersebut diterima di Universitas Sanata Dharma melalui jalur prestasi dan jalur tes. Masing-masing jalur masuk tersebut akan dicari data yang outlier. Berikut ini merupakan rincian data yang akan digunakan dalam penelitian: a. Data Seleksi Masuk Jalur Prestasi No Nama Keterangan Range Atribut 1 nomor urut Nilai Atribut nomor ini merupakan alias 1 – 126 untuk menunjukkan obyek mahasiswa yang diurutkan dalam suatu nomor 2 nilai final Atribut rata-rata ini merupakan 0.00 – 4.00 nilai kognitif rapor siswa pada saat SMA/sederajat PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 49 b. Data Seleksi Masuk Jalur Tes No Nama Keterangan Range Atribut 1 nomor urut Nilai Atribut nomor ini merupakan alias menunjukkan 1 – 126 untuk obyek mahasiswa yang diurutkan dalam suatu nomor 2 nil11 Atribut ini merupakan 0.00 – 4.00 nilai komponen tes 1 3 nil12 Atribut ini merupakan 0.00 – 4.00 nilai komponen tes 2 4 nil13 Atribut ini merupakan 0.00 – 4.00 nilai komponen tes 3 5 nil14 Atribut ini merupakan 0.00 – 4.00 nilai komponen tes 4 6 nil15 Atribut ini merupakan 0.00 – 4.00 nilai komponen tes 5 7 nilai final Atribut ini merupakan nilai akhir hasil kalkulasi semua nilai tes 0.00 – 4.00 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 50 c. Data Indeks Prestasi Semester (IPS) No Nama Keterangan Range Atribut 1 nomor urut Nilai Atribut ini nomor merupakan alias menunjukkan 1 – 126 untuk obyek mahasiswa yang diurutkan dalam suatu nomor 2 ips1 Atribut nilai ini IP merupakan 0.00 – 4.00 mahasiswa semester 1 3 ips2 Atribut nilai ini IP merupakan 0.00 – 4.00 mahasiswa semester 1 4 ips3 Atribut nilai ini IP merupakan 0.00 – 4.00 mahasiswa semester 1 5 ips4 Atribut nilai ini IP merupakan 0.00 – 4.00 mahasiswa semester 1 2. k k adalah jangkauan atau jumlah tetangga terdekat yang digunakan untuk mendefinisikan local Neighborhood suatu obyek. 3. Lamda Lamda adalah sebuah normalization factor yang memberikan kontrol atas perkiraan kepadatan. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4.2.5 51 Proses Sistem Setelah data dimasukkan dan dilakukan pemrosesan data. Proses yang terjadi pada sistem deteksi outlier adalah : 1. Pengambilan Data Pada tahap ini mengambil data sesuai pilihan user, dapat berupa data yang disimpan dalam bentuk file excel (.xls), (.csv) atau mengambil data pada tabel dalam database dan selanjutnya ditampilkan pada tabel view. Setelah itu user melakukan seleksi atribut untuk melakukan proses deteksi outlier. 2. Perhitungan Jarak Obyek Data Setelah menyeleksi atribut dari data yang dimasukkan, selanjutnya melakukan perhitungan jarak antar obyek data menggunakan rumus eucliedean distance. Sehingga diperoleh jarak satu obyek dengan obyek yang lainnya. Perhitungan jarak memakai iterasi sebanyak jumlah data yang dimasukkan. 3. Pencarian Outlier berdasarkan parameter k dan lamda Pada tahap ini dilakukan proses pencarian outlier dengan menggunakan algoritma local outlier probability. Sistem menerima input parameter k dan . Dimana k adalah jumlah maksimum tetangga yang terdekat dengan obyek. Sedangkan inputan adalah untuk normalization factor yang memberikan kontrol atas perkiraan kepadatan. Proses umum yang ada pada sistem pendeteksi outlier menggunakan algoritma Local Outlier Probability dapat dilihat di lampiran 4 dalam tugas akhir ini. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4.2.6 52 Output Sistem Sistem yang dibuat merupakan sistem yang dapat mendeteksi adanya outlier dalam suatu data beserta atribut yang dimiliki data tersebut. berikut ini adalah keluaran yang dihasilkan sistem : 1. Proses input akan menampilkan : a. Sampel data yang akan dideteksi, beserta jumlah data (baris) dan jumlah atributnya. b. Daftar atribut yang akan dipakai untuk proses deteksi. 2. Proses deteksi outlier akan menampilkan : a. Hasil outlier untuk setiap data yang diuji beserta nilai atribut yang dimiliki. b. Parameter k dan yang digunakan dalam perhitungan algoritma Local Outlier Probability. c. Jumlah data. d. Jumlah outlier. e. Lama deteksi outlier. f. Label serta derajat LoOP yang bertujuan untuk memberikan peringkat outlier dari yang nilai LoOP paling tinggi ke nilai LoOP paling rendah. g. Ranking outlier. 4.3 Perancangan Sistem 4.3.6 Diagram Aktivitas Diagram aktivitas digunakan untuk menggambarkan alur aktivitas sekuensial yang dilakukan oleh pengguna dan sistem dalam setiap use case yang telah disebutkan pada lampiran 1. (Whitten & Bentley, 2005) Berikut ini adalah diagram aktivitas dari setiap use case : 1. Diagram Aktivitas Input Data File .xls dan .csv 2. Diagram Aktivitas Input Data Tabel Basis Data 3. Diagram Aktivitas Seleksi Atribut PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 53 4. Diagram Aktivitas Deteksi Outlier 5. Diagram Aktivitas Simpan Hasil Outlier Diagram aktivitas yang telah disebutkan di atas dipaparkan pada lampiran 5 dalam tugas akhir ini. 4.3.7 Diagram Kelas Analisis Diagram kelas analisis dapat dilihat di lampiran 6. Sedangkan keterangan diagram kelas analisis dapat dilihat pada Tabel 4.1 di bawah ini : Tabel 4.1 Tabel Keterangan Diagram Kelas Analisis No 1 Nama Kelas DataLoop Jenis Model Keterangan Kelas ini berfungsi untuk menyimpan data hasil outlier 2 koneksiDB Model Kelas ini berisi tentang atributatribut yang berfungsi untuk melakukan koneksi antara sistem dengan server basis data. Atribut tersebut antara lain : username, password, dan jdbc URL. 3 seleksiAtribut Model Kelas ini berfungsi untuk menyimpan daftar atribut yang ada dalam tabel preprocessing. Daftar atribut ini akan muncul di tabel seleksi di tab preprocessing. 4 Vertex Model Kelas ini berfungsi untuk menyimpan atribut-atribut yang digunakan dalam proses penghitungan pencarian outlier. 5 checkBoxTableModel Model Kelas ini berfungsi untuk mengatur pembuatan tabel seleksi PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 54 atribut di halaman utama pada tab preprocessing. 6 LoOPTabelModel Model Kelas ini berfungsi untuk mengatur format tabel untuk menampilkan tabel hasil deteksi outlier yang berisi label data, derajat loop, dan ranking 7 DBControl Control Kelas ini berfungsi mengatur konfigurasi database agar untuk koneksi sistem dapat terhubung dengan server database sehingga dapat mengakses tabel yang diinginkan pengguna. 8 graph Control Kelas ini berisi proses perhitungan yang ada dalam algoritma LoOP meliputi : perhitungan jarak antar data, standard distance, probabilistic distance, probabilistic LOF, agregat probabilistic LOF, dan derajat LoOP 9 HalamanAwal View Kelas ini menampilkan halaman saat pertama kali menjalankan sistem. 10 HalamanUtama View Kelas ini merupakan inti dari sistem, kelas ini menampilkan 2 tabbed pane yaitu preprocessing dan deteksi. Pada tab preprocessing pengguna dapat PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 55 menginput tabel lalu menyeleksi atribut yang akan digunakan untuk deteksi. Selanjutnya pada proses deteksi, pengguna menginputkan parameter k dan lamda lalu setelah diklik proses maka sistem akan menampilkan hasil outlier pada tabel. Selain itu pengguna juga dapat menyimpan hasil deteksi outlier tersebut. 11 HalamanPilihFile View Kelas ini digunakan untuk menampilkan direktori pada computer untuk menginputkan file inputan beripa xls atau csv 12 HalamanPilihDatabase View Kelas ini digunakan untuk login ke basisdata untuk mengambil tabel dalam basisdata tersebut 13 HalamanPilihTabel View Kelas ini berfungsi untuk menampilkan tabel dengan syarat pengguna sistem harus login ke basisdata. 14 HalamanTentang View Kelas ini menampilkan informasi umum mengenai sistem (nama sistem, pembuat, instansi, tahun) 15 HalamanBantuan View Kelas ini menampilkan informasi panduan sistem. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4.3.8 56 Diagram Sequence Menurut Whitten dan Bentley (2007), secara grafikal, Sequence Diagram merupakan diagram yang menggambarkan bagaimana obyek berinteraksi satu sama lain melalui pesan dalam eksekusi usecase atau operasi. Diagram ini mengilustrasikan bagaimana pesan dikirim dan diterima antara obyek dan urutan yang seperti apa. Diagram ini lebih detail dalam penggambaran aliran data, termasuk data yang dikirim ataupun diterima. Berikut ini merupakan sequence diagram yang terdapat dalam proses perancangan sistem perancangan outlier menggunakan algoritma Local Outlier Probability (LoOP) : 1. Diagram Sequence Input Data File Excel .xls dan .csv 2. Diagram Sequence Input Data Tabel Basis Data 3. Diagram Sequence Deteksi Outlier 4. Diagram Sequence Simpan Hasil Outlier 5. Diagram Sequence Seleksi Atribut Untuk penjelasan masing-masing diagram sequence dapat dilihat pada lampiran 7 yang terdapat dalam tugas akhir ini. 4.3.9 Diagram Kelas Desain Diagram kelas desain menunjukkan daftar kelas yang digunakan dalam sistem. Diagram kelas ini memuat semua kelas yang digunakan untuk menjalankan semua fungsi pada sistem serta hubungan apa saja yang terbentuk di antara kelas tersebut. Hubungan yang terbentuk bisa berupa associations, aggregation atau composition. Diagram kelas desain dapat dilihat pada lampiran 8 dalam tugas akhir ini. Untuk penjelasan tentang rincian atribut dan method yang terdapat dalam masing-masing kelas, dapat dilihat pada lampiran 9 dalam tugas akhir ini. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4.3.10 57 Rincian Algoritma Setiap Method 1. Rincian Algoritma pada Method dalam kelas koneksiDB Nama method koneksiSQL Fungsi method Mendapatkan (String, String, nilai String) 1. Deklarasi atribut baru jdbcURL username, password, Algoritma method bertipe static String, user bertipe dan static String, password bertipe url dari inputan static String dan conn bertipe pengguna Connection. inputan lalu tersebut 2. Membuat koneksi basis data SQL untuk login ke ke dalam method yang bernama basisdata SQL setConn(DriverManager.getConn ection(url, user, passw)). Parameter tersebut dicocokan dengan pengguna nilai dari dalam inputan form login koneksi database. 3. Jika inputan benar (sesuai), maka sistem berhasil terkoneksi dengan basisdata SQL lalu mencetak pada output “koneksi berhasil”. 4. Jika tidak sesuai, maka sistem akan mencetak pesan error. 5. Mengembalikan nilai getConn(). isConnected Melakukan 1. Cek apabila parameter pada koneksiSQL(url, user, (String, String, pengecekan method String) sistem passw) tidak sama dengan null sudah terkoneksi atau dalam kata lain terisi, maka dengan basis data kembalikan nilai true. apakah SQL 2. Jika tidak, maka kembalikan nilai false. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI koneksiOrcl Mendapatkan (String, String, nilai String) url, 1. Membuat koneksi basisdata oracle parameter user, dan passw yang didapat menggunakan method setConn(DriverManager.getConn ection(url, user, passw)). dari 2. Parameter tersebut inputan pengguna dengan ketika melakukan pengguna login koneksi database. untuk koneksi 58 nilai dicocokan dari dalam inputan form login ke 3. Jika inputan benar (sesuai), maka basisdata oracle sistem berhasil terkoneksi dengan basisdata SQL lalu mencetak pada output “koneksi berhasil”. 4. Jika tidak sesuai, maka sistem akan mencetak pesan error. 5. Mengembalikan nilai getConn(). isConnectedO racle Melakukan 1. Cek (String, pengecekan String, String) apakah apabila method parameter pada koneksiOrcl(url, user, sistem passw) tidak sama dengan null sudah terkoneksi atau dalam kata lain terisi, maka dengan basis data kembalikan nilai true. Oracle 2. Jika tidak, maka kembalikan nilai false. getClose( ) Memutuskan koneksi data basis 1. Cek apakah sistem masih terkoneksi dengan basis data. (menjalankan method isConnected( ) ). 2. Jika ya, maka tutup koneksi lalu beri nilai atribut conn menjadi null. Lalu kembalikan nilai true. 3. Jika tidak, maka kembalikan nilai PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 59 false. 2. Rincian Algoritma pada Method dalam kelas DBControl Nama method Fungsi method Algoritma method displayTableO Menampilkan racle(Connecti daftar tabel yang menampilkan daftar tabel, yaitu : on) ada pada basis Select data user_tables; sesuai Oracle 1. Deklarasi query table_name untuk from login 2. Mengeksekusi query. pengguna 3. Mengembalikan nilai result yang berisi tabel yang ada pada basis data Oracle. displayTable Menampilkan 1. Deklarasi query untuk MySql daftar tabel yang menampilkan daftar tabel, yaitu : (Connection) ada pada basis Show_tables; data SQL sesuai 2. Mengeksekusi query. login pengguna 3. Mengembalikan nilai result yang berisi tabel yang ada pada basis data Oracle. selectTable Menampilkan isi 1. Mendeklarasikan query (Connection, data tabel yang menampilkan isi tabel : String) dipilih pengguna Select * from table; untuk 2. Mengeksekusi query 3. Mengembalikan nilai result yang berarti menampilkan semua data dari tabel yang diinputkan oleh pengguna. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 60 3. Rincian Algoritma pada Method dalam kelas GraphNew Nama method Fungsi method Algoritma method addVertex Membuat vertex 4. Membaca nilai parameter dari (String, untuk method List<Double>) membentuk suatu graf addVertex yaitu parameter label bertipe String dan parameter nilai bertipe List<Double>. 5. Membuat vertex baru dengan parameter label dan nilai sesuai dengan inputan jumlahVertex addEdge (int, Membuat int, double) pada edge 1. Membaca nilai dari parameter vertex dalam graf awal bertipe integer, akhir bertipe integer, dan nilai bertipe double. 2. Inisialisasi parameter nilai sama dengan matriks[awal][akhir] = matriks[akhir][awal]. cariJarak (int, Mencari int) setiap jarak 1. Membuat variabel baru bernama obyek dengan perhitungan a dan b dengan tipe ArrayList Double. 2. Inisialisasi nilai ArrayList rumus Euclidean sebagai distance menyimpan nilai obyek awal. 3. Inisialisasi sebagai ArrayList nilai yang ArrayList ArrayList a b yang menyimpan nilai obyek tujuan. 4. Inisialisasi nilai atribut total bertipe Double bernilai 0.0; 5. Selama i = 0 dan I tidak lebih dari ukuran a, maka lakukan total PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 61 = total + Math.pow(a.get(i) – b.get(i)),2) 6. Kembalikan nilai akar dari total. inputData Menginputkan (jTable) data yang ada dalam jTable ke dalam 1. Selama i = 0 dan tidak lebih dari jumlah baris jTable, maka lakukan langkah 2 sampai 5. matriks 2. Membuat variabel baru bernama dalam graf label. 3. Membuat variabel baru bernama listNilai bertipe array list Double. 4. Selama j = 0 dan j tidak lebih dari jumlah kolom jTable, maka lakukan langkah di bawah ini : a. Cek apakah j bernilai 0, jika ya, maka lakukan b. b. Cek apakah value pada jTable bernilai kosong atau “ ”, jika ya, maka set label = “ ”. jika tidak, maka set label sama dengan data yang ada di dalam baris dan kolom tabel tersebut. c. Jika tidak, maka lakukan langkah d. d. Cek apakah value pada jTable bernilai kosong atau “ ”. jika ya, maka set label = “ ”. jika tidak, maka cek apakah data tersebut merupakan numeric? Jika ya, data maka masukkan data pada baris (i,j) PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 62 ke dalam arraylist nilai.jika data bukan numeric maka masukkan nilai 0,0 ke dalam arraylist nilai. 5. Panggil dengan method addVertex inputan label dan listNilai. 6. Selama I = 0 dan I tidak lebih dari jumlah baris dari jTable lakukan langkah dibawah ini : a. Selama j = i+1 dan j tidak lebih dari jumlah baris jTable, maka lakukan b. b. Cek apakah nilai I tidak sama dengan j. jika iya, maka jalankan method dengan addEdge memasukkan parameter I, j, dan hasil perhitungan dari method cariJarak(i,j). Kdistance (int, Mencari nilai 1. Selama i = 0 dan i tidak lebih int) dari dari panjang array vertexList, setiap obyek maka set semua flagKunjungan sesuai dengan Kdistance inputan k menjadi false. 2. Membuat variabel array bernama a bertipe Double. 3. Inisialisasi array a bernilai array yang panjangnya sesuai dengan jangkauan (k yang diinputkan pengguna). 4. Membuat variabel kDistance PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 63 bertipe double. 5. Membuat variabel temp1 bertipe double. 6. Jika indeks == -1 maka cetak “Data tidak ada” 7. Selama t=0 dan t tidak lebih dari panjang array a, maka lakukan : a. Selama i=0 dan I tidak lebih dari panjang arraylist vertexlist, maka lakukan b b. Cek apakah matriks[indeks][i] tidak sama dengan -1, tidak sama dengan 0 dan flagkunjungan bernilai false, maka lakukan c. c. Cek jika matriks[indeks][i] kurang dari nilai temp1, maka inisialisasi nilai temp1 adalah nilai dari matriks[indeks][i]. d. Set nilai array a[t] sama dengan temp1. e. Menjalankan method search2 dengan parameter temp1, indeks. 8. Selama i=0 dan I kurang dari panjang array a, maka cek apakah nilai kDistance kurang dari array a[i], jika ya maka set nilai kDistance sama dengan nilai array a[i]. 9. Kembalikan nilai kDistance. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI cariNeighborh Mencari tetangga 1. Membuat ood (Double, yang int) memiliki ArrayList 64 bertipe String bernama a. jarak kurang dari 2. Jika indeks sama dengan -1, sama dengan kdistance maka cetak “Tidak ada data”. 3. Selama i=0 dan I kurang dari panjang array list vertexlist, maka lakukan langkah berikut : a. Cek apakah matriks[indeks][i] tidak sama dengan -1, dan tidak sama dengan 0. Jika ya, lakukan b. b. Cek apakah matriks[indeks][i] kurang dari Kdistance(I, getk( ) +1). Jika yang maka lakukan c. c. Tambahkan vertexlist[i].getLabel( ) pada arraylist a. 4. Kembalikan nilai a. setKdistance Mengatur (String, int) variabel index bertipe integer lalu di set kDistance dalam bernilai search(label). vertex 1. Membuat variabel baru bernama 2. Set variabel kDistance vertexlist[index][i] pada dengan inputan parameter index dan jangkauan. setNeighborH Mengeset ood (String) variabel indeks bertipe integer lalu di set neighborhood bernilai search(label). dalam vertex 1. Membuat variabel baru bernama 2. Set variabel neighborhood pada PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 65 vertexlist[indeks] dengan inputan parameter vertexList[indeks].getAnggotaNe ighborHood(), indeks) Search Mencari posisi 1. Selama i=0 dan i kurang dari (String) indeks dalam verteksList panjang array list vertexList, maka lakukan 2. 2. Jika label bernilai sama dengan label dalam vertexList[i] maka kembalikan nilai i. 3. Kembalikan nilai -1 dimana artinya tidak terdapat data dalam vertexList. Search2 Mencari (Double, int) vertexList 1. Selama i=0 dan i kurang dari dan mengubah panjang array list vertexlist, maka lakukan 2. flagkunjungan menjadi true 2. Jika nilai dari matriks[indeks][i] sama dengan nilai jarak, maka atur flag kunjungan menjadi true. 4. Rincian Algoritma pada Method dalam kelas CheckBoxTableModel Nama method Add Fungsi method (int, Menambah data 1. Deklarasi atribut bernama list seleksiAtribut) ke dalam format tabel CheckBoxTable Model Algoritma method yang bertipe ArrayList SeleksiAtribut. 2. Menambahkan ke dalam list dengan inputan paramener int dan seleksiAtribut. 3. Menambahkan nilai field_m PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 66 sebagai data di index ke a ke dalam list. removeRow( ) Menghapus semua 1. Membuat atribut yang dihapus ArrayList bertipe seleksiAtribut bernama s. telah 2. Selama seleksi < list terpenuhi, ketika maka cek terhadap atribut yang melakukan akan dihapus tersebut telah seleksi atribut di terpilih. Jika !seleksi.getPilih() tabel seleksi == true, maka nilai seleksi ditambahkan pada ArrayList s. 3. Set nilai list menjadi s. 5. Rincian Algoritma pada Method dalam kelas HalamanUtama Nama method pilihFile( ) Fungsi method 1. Menampilkan JFileChooser untuk memilih file excel bertipe .xls dan .csv 2. Membaca file Algoritma method 1. Menampilkan JFileChooser open file 2. Mendapatkan nilai atribut nama_file yang dipilih 3. Deklarasi array bertipe String bernama potong_nama_file lalu untuk memberi nama file dengan menampilkan ke pemisah “\\” dalam tabel data 4. Jika preprocessing potong_nama_file[1].equals(“xls ”), maka lakukan langkah di bawah ini : a. Membuat vector baru bernama columnName. b. Membuat vector baru PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 67 bernama data. c. Membuat obyek baru yang bernama workbook yang berisi getWorkbook(fileExcel) d. Membuat obyek bernama sheet yang berisi getSheet(0). e. Menghapus columnName f. Selama i=0 dan i tidak lebih dari kolom dalam sheet, maka lakukan g dan h. g. Membuat cell baru dengan isi sheet.getCell(i,0). h. Menambahkan konten pada cell ke dalam columnName. i. Menghapus data j. Selama j=0 dan j tidak lebih dari cheet.getRows( ), maka lakukan langkah k – m. k. Membuat vector baru bernama data2. l. Selama i=0 dan i tidak lebih dari sheet.getColumns( ) maka cell diisi dengan cell pada baris ke i pada kolom ke j lalu cell.getContents() dimasukkan ke data2. m. Menambahkan data2 kedalam data. n. Membuat DefaultTableModel bernama model dengan isi baris berisi data dan kolom PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 68 berisi columnName. o. Atur tabel preprocess menjadi seperti model. p. Cetak data.size( ) ke dalam text field jumlah data. q. Cetak columnName.size( ) ke dalam text field jumlah atribut. r. Cetak fileExcel.getPath( ) ke dalam text file path data. s. Selama i=0 dan i kurang dari model.getColumnCount( maka setAtribut seleksiAtribut ) pada menjadi model.getColumnName(i) lalu setPilih(false) lalu atur tabel checkbox menjadi baris berisi i dan kolom berisi seleksiAtribut. t. Atur tabel seleksi atribut menjadi tabel check box. 5. Jika potong_nama_file.equals (“csv”) maka lakukan seperti langkah 4. 6. Jika tidak keduanya, tampilkan pesan eror. pilihDb Memanggil kelas 1. Membuat obyek baru bernama dc (koneksiDB, HalamanPilihDB String) untuk menghubungkan sistem dengan dari kelas DBControl. 2. Membuat variabel bernama rset bertipe ResultSet. 3. Membuat obyek bernama rsmd PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI database dan bertipe mengambil data menginisialisasi dari tabel rset.getMetaData( ). database ResultMetaData dengan 69 lalu nilai 4. Deklarasi variabel baru bernama columnCount bertipe int yang berisi nilai rsmd.getColumnCount( ). 5. Membuat vector bernama headers dan data. 6. Menghapus header. 7. Selama i=0 dan I tidak lebih dari sama dengan jumlah kolom, maka tambahkan pada header rsmd.getColumnName( ). 8. Hapus data. 9. Selama rset.next, lakukan langkah di bawah ini : a. Membuat vector baru bernama d. b. Selama i=1 dan I kurang dari sama dengan columnCount, maka tambahkan rset pada d. c. Tambahkan d pada data. 10. Membuat tabel model bernama model atur nilai baris adalah data dan nilai kolom adalah headers. 11. Setmodel tabel data preprocess. 12. Selama i=0 dan I kurang dari model.getColumnCount( ) lakukan langkah 13 – 16. 13. Membuat obyek dari kelas PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI seleksiAtribut 70 bernama seleksi_atribut. 14. Set atribut menjadil model.getColumnName(i). 15. setPilih(false) 16. tambahkan (I, selekci_atribut) pada tabel_checkbox. 17. Set model tabel seleksi atribut menjadi tabel checkbox. 18. Membuat obyek baru bernama model pada kelas TableModel lalu inisialisasikan dengan nilai tabel_DataPreprocess.getModel() 19. Cetak jumlah data 20. Cetak jumlah atribut submitData( ) Memasukkan 1. Membuat obyek baru bernama data dari tabel tableModel di kelas TableModel preprocess ke lalu diatur sebagai model dari tabel deteksi tabel preprocess. outlier 2. Jika jumlah kolom pada tableModel adalah 0, maka cetak “Anda belum memasukkan data !”. lalu atur textfield pathData adalah null. 3. Jika tidak, lakukan langkah 4 – 4. atur tabel deteksi menjadi setModel(tableModel). 5. Deklarasi variabel bernama baris bertipe int dengan inisialisasi tableModel.getRowCount( ). 6. Cetak jumlah baris deteksi. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI hapusAtribut() Menghapus 71 1. Selama i=0 dan I tidak lebih dari atribut yang ada nilai pada tabel data tabel_SeleksiAtribut.getRowCou preprocess untuk nt( ), maka lakukan langkah 2- proses seleksi atribut 2. Cek apakah tabel_SeleksiAtribut.getValueAt( i,1) samadengan true. Jika ya lakukan langkah di bawah ini : a. Selama j=0 dan j kurang dari jumlah kolom tabel seleksi atribut, maka lakukan b-f. b. Cek apakah tabel seleksi atribut berisi nama kolom dari tabel data preprocess. Jika ya lakukan langkah c-f. c. Membuat obyek baru bernama tcol di kelas TableColumn dengan inisialisasi nilai tabel_dataPreprocess.getColu mnModel().getColumn(j). d. Membuat obyek baru bernama tcol2 di kelas TableColumn dengan inisialisasi nilai tabel_deteksiOutlier.getColu mnModel().getColumn(j). e. Hapus kolom tcol pada tabel data preprocess f. Hapus kolom tcol2 pada tabel deteksi outlier. 3. Hapus baris tabel checkbox. prosesDeteksi Melakukan 1. Cek apakah text field k kosong, PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 72 pemanggilan jika ya, cetak “Nilai k tidak boleh pada kelas kosong”. Jika tidak, lakukan GraphNew untuk langkah 2. menampilkan hasil perhitungan 2. Cek apakah text field k tidak berisi numeric positif. Jika ya, cetak “Nilai k tidak boleh berisi huruf atau angka negative”. Jika tidak lakukan langkah 3. 3. Cek apakah text field lamda kosong, jika ya, cetak “Nilai lamda tidak boleh kosong”. Jika tidak, lakukan langkah 2. 4. Cek apakah text field lamda tidak berisi numeric positif. Jika ya, cetak “Nilai lamda tidak boleh berisi huruf negative”. atau angka Jika tidak lakukan langkah 3. 5. Cek apakah text field k dan text field lamda berisi numeric positif. Jika ya, lakukan langkah 66. Deklarasi variabel baru bernama k dan lamda. 7. Cek apakah nilai k dan lamda lebih dari 0. Jika ya lakukan langkah 8. Jika tidak munculkan pesan error. 8. Membuat obyek bernama graph di kelas GraphNew. 9. Memanggil method input data ke PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 73 dalam tabel_deteksiOutlier. 10. setk agar sesuai dengan inputan pengguna. 11. SetLamda agra sesuai dengan inputan pengguna. 12. Memanggil method tampilJarak untuk menampilkan hasil perhitungan jarak. 13. Memanggil method tampilNeighbor menampilkan untuk obyek yang menjadi tetangga obyek tersebut. 14. Memanggil method caristdev() untuk menampilkan hasil perhitungan standard deviasi. 15. Memanggil method caripdist() untuk menampilkan perhitungan hasil probabilistic distance. 16. Memanggil method jumlahpdist untuk menampilkan hasil perhitungan probabilistic LOF, agregat PLOF dan nilai LoOP. 17. Mencetak jumlah outlier. 18. Mencetak lama deteksi outlier. batasOutlier Untuk membatasi 1. Cek apakah text field batas nilai derajad outlier kosong, maka cetak LOOP “Nilai batas outlier tidak boleh kosong!”. Jika tidak lakukan langkah 2. 2. Cek apakah text field batas PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI outlier berisi data 74 numeric positif. Jika ya, lakukan langkah 3 - . jika tidak tampilkan “Nilai batas outlier tidak boleh mengandung karakter huruf!” 3. Atur model pada tabel deteksi dengan memanggil method setDataLoop2 dengan parameter kolom tabel deteksi dan nilai batas outlier. 4. Mengurutkan data hasil outlier. 5. Cetak jumlah hasil outlier. simpanLoOP() Menyimpan hasil 1. Menampilkan filechooser untuk outlier ke dalam lokasi penyimpanan file hasil file bertipe doc outlier. xls atau txt 2. Mengatur file filter agar hanya bisa disimpan dalam tipe file doc, xls, dan txt. 3. Deklarasi variabel bernama file_output_stream bertipe FileOutputStream. 4. Deklarasi variabel bernama returnValue bertipe int dengan inisialisasi fileChooser menampilkan kotak dialog simpan. 5. Cek apakah returnValue == JFileChooser.APPROVE_OPTI ON. Jika ya lakukan langkah 6 – 14. 6. Membuat variabel bernama PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 75 filename bertipe String berisi path data yang di pilih. 7. Membuat variabel ext berisi filter terhadap tipe file. 8. Cek apakah ext berisi Microsoft Excel (*.xls). jika ya lakukan langkah 9 - 12. 9. Membuat variabel bernama ff bertipe File. 10. Inisialisasi ff sama dengan file baru dengan nama file diikuti .xls 11. Menampilkan output ff. 12. Mengirimkan isi data tabel hasil outlier 13. Cek apakah ext berisi Microsoft Word (*.doc) jika ya lakukan seperti langkah 9-12. Jika tidak lakukan langkah 14. 14. Cek apakah ext bertipe .txt, jika ya lakukan seperti langkah 9-12. 15. Cetak “Hasil deteksi berhasil disimpan” 6. Rincian Algoritma pada Method dalam kelas HalamanPilihDB Nama method pilihDatabase( ) Fungsi method Menampilkan Algoritma method 1. Cek jika combo box pilih basisdata yang koneksi adalah indeks ke 0 tersedia dan yaitu mysql, maka lakukan memberikan langkah 2 – 4. akses kepada 2. Jika textfield username, PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 76 pengguna untuk password, dbname, atau url login ke basisdata kosong, yang dipilih pengisian kembali. pengguna 3. Jika maka textfield lakukan username, password, dbname, dan url diisi dengan benar, maka berhasil login ke basisdata yang dipilih, yaitu mysql. 4. Menampilkan pesan berhasil terkoneksi lalu menampilkan form halaman pilih tabel. 5. jika combo box pilih koneksi adalah indeks ke 1, yaitu oracle, maka lakukan langkah 6 -7 6. Jika textfield username, password, dbname atau url kosong, maka lakukan pengisian kembali. 7. Jika textfield username, password, dbname, dan url diisi dengan benar, maka berhasil login ke basisdata yang dipilih, yaitu oracle. 8. Menampilkan pesan berhasil terkoneksi lalu menampilkan form halaman pilih tabel. 7. Rincian Algoritma HalamanPilihTabel pada Method dalam kelas PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Nama method Fungsi method 77 Algoritma method tampilDaftarTabel Menampilkan daftar 1. Membuat obyek baru di kelas (kodensiDB, tabel dalam basis String) data yang dipilih pengguna DBControl bernama dbc. 2. Membuat obyek ResultSet bernama rset. 3. Jika basisdata oracle, maka tampilkan daftar tabel dalam oracle dengan menggunakan method displayTableOracle(koneksi.ge tConn()) 4. Jika basisdata mysql, maka tampilkan daftar tabel yang ada dalam basis data mysql dengan memanggil method displayTableMysql(koneksi.ge tConn()) 4.4 Perancangan Struktur Data Perancangan struktur data dalam sistem atau aplikasi sangat diperlukan untuk menggambarkan bagaimana sebuah data diolah dan disimpan dalam program. Konsep struktur data yang dipakai adalah konsep graf tak berarah dengan matriks 2 dimensi. Graf dapat memudahkan dalam memetakan obyek data beserta jarak sebuah obyek data dengan obyek yang lainnya. Konsep graf digunakan dalam menghubungkan satu obyek data dengan yang lain sehingga jika data tersebut saling terhubung maka dapat memudahkan perhitungan jarak antar data. Hal ini dikarenakan algoritma Local Outlier Probability mempertimbangkan sebuah data dinyatakan sebagai outlier berdasarkan jumlah tetangga yang dimiliki dalam nilai jangkauan tertentu. Graf memiliki vertex dan edge. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 78 Sebuah graf adalah sekumpulan vertex yang saling terhubung melalui edge. Setiap edge menghubungkan dua node. Namun, tidak semua node harus saling terhubung. Data akan dianalogikan sebagai vertex dimana vertex tersebut memiliki list yang nantinya dapat diisi dengan banyak nilai atribut pada sebuah obyek data. Jarak masing-masing obyek data dinyatakan dalam edge dan nilai edge dari satu vertex ke vertex lain disimpan dalam bentuk matriks dua dimensi. Berikut merupakan ilustrasi untuk perancangan struktur data yang akan digunakan dalam sistem pendeteksi outlier : 4.4.1 Graf Sebuah graf berisi kumpulan vertex yang saling terhubung melalui edge. Pada kasus ini obyek data mahasiswa dinyatakan sebagai vertex. Vertex tersebut akan berisi list yang nantinya dapat diisi dengan banyak nilai atribut pada sebuah obyek data. Pada gambar 3.5 dapat dilihat terdapat vertex mahasiswa 1, mahasiswa 2, dan mahasiswa 3 yang masing-masing memiliki atribut yang menampung nilai dalam bentuk list. Untuk masing-masing obyek mahasiswa akan terhubung dengan obyek data mahasiswa lain dan jarak antar obyek data mahasiswa tersebut dinyatakan sebagai edge. Ilustrasi struktur data graf dapat dilihat pada Gambar 4.1 di bawah ini. Verteks Mahasiswa[1] (List) nilai edge : 3,0014 edge : 3,0014 edge : 1,1244 Verteks Mahasiswa[2] (List) nilai edge : 1,1244 edge : 3,057 Verteks Mahasiswa[3] edge : 3,057 (List) nilai Gambar 4.1 Ilustrasi Struktur Data Graf PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 79 4.4.2 Matriks Dua Dimensi Jarak masing-masing obyek data akan disimpan dalam edge dan masing-masing nilai edge antar dua vertex lalu disimpan dalam matriks dua dimensi. Dalam kata lain matriks ini akan menyimpan vertex dan edge dari graf tersebut. Dimana vertex adalah representasi dari obyek data dan edge adalah representasi dari jarak antar obyek data. Awal graf dibentuk, edge antar obyek data mahasiswa dinyatakan dengan nilai -1, yang artinya jarak antar dua obyek mahasiswa tersebut masih belum ada atau dengan kata lain obyek tersebut tidak terhubung. Sedangkan edge yang bernilai 0 menyatakan jarak obyek data terhadap dirinya sendiri. Ilustrasi struktur data matriks 2 dimensi dapat dilihat pada Tabel 4.2 di bawah ini Tabel 4.2 Ilustrasi matriks dua dimensi Mahasiswa [1] Mahasiswa [2] Mahasiswa [3] Mahasiswa [1] 0 -1 -1 Mahasiswa [2] -1 0 -1 Mahasiswa [3] -1 -1 0 Kemudian dilakukan perhitungan jarak antar obyek data dengan menggunakan rumus jarak Euclidean Distance. Jarak dua obyek yang awalnya bernilai -1 akan diganti dengan hasil perhitungan rumus jarak tersebut. Sedangkan edge yang menyatakan jarak obyek terhadap obyek itu sendiri tetap bernilai 0. Ilustrasi perhitungan jarak pada matrks 2 dimensi digambarkan pada Tabel 4.3 di bawah ini : Tabel 4.3 Ilustrasi matriks dua dimensi setelah perhitungan jarak antar verteks Mahasiswa [1] Mahasiswa [2] Mahasiswa [3] Mahasiswa [1] 0 3,0014 1,1244 Mahasiswa [2] 3,0014 0 3,057 Mahasiswa [3] 1,1244 3,057 0 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4.5 80 Perancangan Antarmuka 4.5.1 Tampilan Halaman Awal Halaman awal merupakan tampilan awal ketika program pertama kali dijalankan. Pada halaman ini terdapat button ‘masuk’ yang berfungsi untuk menuju ke halaman selanjutnya yaitu halaman utama. Tampilan ini dapat dilihat pada Gambar 4.2 di bawah ini : SISTEM PENDETEKSI OUTLIER MASUK Erlita Octaviani 105314019 Universitas Sanata Dharma Yogyakarta Copyright © 2014 Gambar 4.2 Tampilan Halaman Awal 4.5.2 Tampilan Halaman Utama Halaman utama merupakan halaman dimana fungsi utama dari sistem pendeteksi outlier ini dilakukan oleh pengguna. Pada bagian sidebar halaman ini terdapat button ‘Bantuan’, button ‘Tentang’, dan button ‘Keluar’ sebagai jalan pintas sistem. Lalu pada halaman ini juga terdapat dua buah tabbed pane (tab), yaitu tab ‘Preprocessing’ dan tab ‘Deteksi Outlier’. Tab ‘Preprocessing’ berfungsi untuk mengimport file dalam excel dan database yang kemudian terjadi proses seleksi atribut. Selanjutnya tab ‘Deteksi Outlier’ memungkinkan pengguna untuk memasukkan nilai parameter k dan lamda untuk melakukan proses deteksi outlier. Setelah button proses diklik, maka terjadilah proses deteksi outlier PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 81 dan hasil outlier ditampilkan ke dalam tabel. Pengguna dapat menyimpan hasil outlier tersebut dalam format file .doc .xls atau .txt. Tampilan ini dapat dilihat pada Gambar 4.3 dan Gambar 4.4 di bawah ini : SISTEM DETEKSI OUTLIER MENGGUNAKAN ALGORITMA LOCAL OUTLIER PROBABILITY Preprosessing Deteksi Outlier Pilih Database Pilih File Tentang Bantuan Atribut 1 Atribut 2 Atribut 3 Atribut 4 Seleksi Atribut Jumlah Data Jumlah Atribut Atribut Atribut 1 Atribut 2 Tandai Semua Batal Seleksi Keluar Hapus SUBMIT BATAL Gambar 4.3 Tampilan Halaman Utama - Preprocessing PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 82 SISTEM DETEKSI OUTLIER MENGGUNAKAN ALGORITMA LOCAL OUTLIER PROBABILITY Preprosessing Deteksi Outlier Proses Algoritma Local Outlier Probability minPts lamda Proses Tentang Atribut 1 Atribut 2 Atribut 3 Atribut 4 Bantuan Jumlah Data Hasil Deteksi Outlier No Mahasiswa MDEF KOMDEF Keluar Jumlah Outlier SIMPAN HAPUS Lama Deteksi Gambar 4.4 Tampilan Halaman Utama – Deteksi 4.5.3 Tampilan Halaman Bantuan Halaman bantuan merupakan halaman yang berisi informasi petunjuk penggunaan Sistem Pendeteksi Outlier menggunakan algoritma Local Outlier Probability. Tampilan ini dapat dilihat pada Gambar 4.5 di bawah ini : PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 83 SISTEM DETEKSI OUTLIER MENGGUNAKAN ALGORITMA LOCAL OUTLIER PROBABILITY Petunjuk Penggunaan A. Petunjuk Preprocessing Tentang Bantuan B. Petunjuk Deteksi Outlier Keluar Gambar 4.5 Tampilan Halaman Bantuan 4.5.4 Tampilan Halaman Tentang Halaman Tentang berisi mengenai informasi sistem pendeteksi outlier seperti informasi pengembang, nama sistem, versi dan juga lisensi sistem. Halaman ini dapat diakses dengan memilih button ‘Tentang’ pada halaman utama. Tampilan ini dapat dilihat pada Gambar 4.6 di bawah ini : SISTEM DETEKSI OUTLIER MENGGUNAKAN ALGORITMA LOCAL OUTLIER PROBABILITY Tentang PENGEMBANGAN ALAT BANTU DETEKSI OUTLIER MENGGUNAKAN ALGORITMA LOCAL OUTLIER PROBABILITY Bantuan Dibuat oleh : ERLITA OCTAVIANI 105314019 Keluar PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2014 Gambar 4.6 Tampilan Halaman Tentang PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4.5.5 84 Tampilan Halaman Konfirmasi Keluar Halaman keluar yang muncul setelah pengguna menekan button ’Keluar’ pada Halaman Utama dan memunculkan dialog box apakah pengguna benar-benar akan keluar dari sistem atau tidak. Tampilan ini dapat dilihat pada Gambar 4.7 di bawah ini : Apakah anda ingin keluar dari sistem? YA TIDAK Gambar 4.7 Tampilan Halaman Konfirmasi Keluar 4.5.6 Tampilan Halaman Pilih Database Pada halaman pilih database, pengguna dapat memilih database yang akan digunakan dalam hal ini Oracle atau MySql. Kemudian memasukkan konfigurasi database seperti username, password, dan URL. Jika berhasil login ke dalam database maka pengguna dapat melihat daftar tabel yang ada pada database lalu memilihnya untuk dimasukkan sebagai data yang akan dicari outliernya. Tampilan ini dapat dilihat pada Gambar 4.8 di bawah ini : PILIH KONEKSI DATABASE Username Password Database Name Url OK BATAL Gambar 4.8 Tampilan Halaman Pilih Database PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4.5.7 85 Tampilan Halaman Pilih Tabel Halaman pilih tabel memungkinkan pengguna yang telah berhasil login ke dalam database untuk dapat memilih tabel sebagai masukan ke dalam sistem. Data tabel ini selanjutnya akan ditampilkan ke halaman utama. Tampilan ini dapat dilihat pada Gambar 4.9 di bawah ini : PILIH TABEL OK BATAL Gambar 4.9 Tampilan Halaman Pilih Tabel 4.5.8 Tampilan Halaman Pilih File Halaman Pilih File muncul ketika button ‘pilih file’ pada Halaman Utama diklik. Kemudian akan muncul jFileChooser. Pada jFileChooser ini pengguna dapat memilih file bertipe .xls maupun .csv. Tampilan ini dapat dilihat pada Gambar 4.10 di bawah ini : Look In: File Name: Files of type: OPEN CANCEL Gambar 4.10 Tampilan Halaman Pilih File PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB V IMPLEMENTASI SISTEM Bab ini menjelaskan tentang implementasi sistem deteksi outlier menggunakan algoritma Local Outlier Probability. Sistem ini dibuat sesuai dengan perancangan sistem sesuai dengan yang dicantumkan pada bab IV. Implementasi aplikasi ini menggunakan bahasa pemrograman Java menggunakan aplikasi pemrograman Netbeans IDE 6.9.1 pada computer dengan spesifikasi prosesor Intel® Core™2 Duo CPU T6500 @ 2.10 GHz 2.10 GHz, RAM 4GB dan hardisk 500 GB. 5.1 Implementasi Antarmuka Sistem Deteksi Outlier menggunakan algoritma Local Outlier Probability telah diimplementasikan menjadi sebuah aplikasi java yang siap digunakan. Berikut ini merupakan detail dari implementasi antarmuka dari sistem terkait : 5.1.1 Implementasi Antarmuka Halaman Awal Halaman awal adalah halaman pertama ketika menjalankan sistem. Pada halaman awal terdapat button “simpan” dan apabila diklik akan memasuki halaman utama. Gambar 5.1 merupakan implementasi dari halaman awal. Gambar 5.1 Implementasi halaman awal 86 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 87 5.1.2 Implementasi Antarmuka Halaman Utama Pada halaman utama sistem menampilkan button tentang (jika diklik akan memasuki halaman tentang), button bantuan (jika diklik akan memasuki halaman bantuan), button keluar (jika diklik akan muncul dialog box konfirmasi keluar untuk keluar dari sistem). Pada halaman utama tersedia 2 tabbed pane yaitu tab preprocessing dan tab deteksi outlier. Gambar 5.2 merupakan implementasi dari halaman utama. Gambar 5.2 Implementasi halaman utama tab preprocessing Tab preprocessing berfungsi untuk melakukan proses preprocessing pada data mining, yaitu proses input data lalu seleksi atribut. Pada tab ini pengguna dapat menginput data berupa excel dan basisdata. Ketika pengguna mengklik button “pilih file” maka sistem akan menjalankan halaman pilih file yang berupa JFileChooser. Pengguna dapat menginput file excel dengan tipe .xls dan .csv. Gambar 5.3 merupakan implementasi dari JFileChooser. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 88 Gambar 5.3 Implementasi JFileChooser Setelah memilih file, maka sistem akan menampilkan data tersebut ke dalam jTable. Proses input data dapat dilihat pada Gambar 5.4 di bawah ini : Gambar 5.4 Proses input data PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 89 Setelah itu melakukan seleksi atribut dengan memilih atribut yang akan dihapus. Sistem dapat menghapus lebih dari 1 atribut. Seleksi atribut dapat dilihat pada Gambar 5.5 di bawah ini : Gambar 5.5 Implementasi seleksi atribut Setelah sistem selesai melakukan seleksi atribut, maka selanjutnya adalah proses deteksi outlier. Dengan menekan button submt maka sistem akan memasuki tab deteksi outlier. Gambar 5.6 merupakan implementasi dari halaman awal pda tab deteksi outlier. Gambar 5.6 Implementasi halaman utama tab deteksi outlier Pada tab deteksi outlier terdapat text field untuk masukan parameter k dan lamda. Setelah pengguna menginputkan parameter, pengguna harus menekan button proses untuk memulai proses deteksi. Setelah PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 90 itu hasil deteksi akan ditampilkan dalam tabel hasil deteksi. Gambar 5.7 merupakan tampilan hasil deteksi outlier. Gambar 5.7 Tampilan hasil deteksi outlier Sistem dapat membatasi hasil outlier dengan cara menginputkan nilai textfield batas outlier. Gambar 5.8 merupakan tampilan hasil seleksi LoOP. Gambar 5.8 Tampilan hasil seleksi LoOP Sistem mampu menyimpan hasil deteksi outlier. Pengguna menekan button simpan lalu pengguna memilih lokasi penyimpanan, PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 91 menginput nama file dan ekstensi file. Maka sistem berhasil menyimpan hasil deteksi outlier. Gambar 5.9 Tampilan save dialog 5.1.3 Implementasi Antarmuka Halaman Pilih Database Halaman Pilih Database berfungsi untuk menginput data yang berasal dari tabel basis data. Pengguna menekan button pilih database pada halaman utama, lalu sistem akan menjalankan halaman pilih database. Pada halaman ini pengguna dapat memili database Oracle atau MySql. Gambar 5.10 merupakan implementasi dari halaman pilih database. Gambar 5.10 Implementasi Halaman Pilih Database PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 92 Setelah itu pengguna memilih koneksi database (Oracle atau MySql) lalu menginputkan username, password, database name dan URL untuk melakukan login koneksi ke database terkait. Gambar 5.11 merupakan proses konfigurasi database. Jika berhasil maka akan muncul tampilan seperti di Gambar 5.12. Gambar 5.11 Proses konfigurasi database Gambar 5.12 Proses koneksi berhasil Setelah memasukkan data konfigurasi database, jika berhasil maka muncul dialog box koneksi berhasil. Setelah itu pengguna memilih tabel untuk input data. Sistem menjalankan halaman pilih tabel bila telah berhasil terkoneksi dengan database. Gambar 5.13 merupakan implementasi dari halaman pilih tabel. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 93 Gambar 5.13 Implementasi halaman pilih tabel Ketika pengguna telah memilih tabel, maka data dalam tabel basis data tersebut akan terinput dalam jTable pada halaman utama. Gambar 5.14 merupakan hasil input data dari database. Gambar 5.14 Hasil input data dari database 5.1.4 Implementasi Antarmuka Halaman Bantuan Halaman ini berisi tentang informasi tentang prosedur penggunaan sistem pendeteksi outlier menggunakan algoritma Local Outlier Probability. Sistem dapat menjalankan halaman ini setelah button PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 94 “bantuan” diklik. Gambar 5.15 merupakan implementasi dari halaman bantuan. Gambar 5.15 Implementasi halaman bantuan 5.1.5 Implementasi Antarmuka Halaman Tentang Halaman ini memberikan informasi tentang nama sistem, nama pembuat, versi dan lisensi dari sistem pendeteksi outlier menggunakan algoritma Local Outlier Probability. Halaman ini dapat diakses apabila pengguna menekan button “tentang”. Gambar 5.16 merupakan implementasi dari halaman tentang. Gambar 5.16 Implementasi Halaman Tentang PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 95 5.1.6 Implementasi Antarmuka Konfirmasi Keluar Antarmuka ini muncul ketika pengguna menekan button keluar. Sistem akan menampilkan dialog box konfirmasi keluar untuk keluar dari sistem. Jika pengguna menekan button yes, maka akan keluar dari sistem. Akan tetapi jika pengguna memilik no, maka sistem akan kembali ke halaman utama. Gambar 5.17 merupakan implementasi dari halaman konfirmasi keluar. Gambar 5.17 Implementasi Konfirmasi Keluar 5.1.7 Implementasi Pengecekan Masukan Sistem ini dilengkapi dengan error handling sehingga ketika ada inputan yang tidak sesuai dengan sistem, sistem dapat menangani dan mengkonfirmasikan kepada pengguna tentang kesalahan tersebut. Penanganan error ini sangat penting agar tidak terjadi kesalahan dalam sistem. Berikut ini error handling yang terdapat pada sistem pendeteksi outlier dengan menggunakan algoritma Local Outlier Probability : 1. Tampilan pesan kesalahan input data Error message ini muncul apabila pengguna menginputkan file selain yang bertipe .xls atau .csv. Gambar 5.18 merupakan error mesaage ketika menginput suatu data. Gambar 5.18 Error message input data PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 2. 96 Tampilan pesan kesalahan konfigurasi database Tampilan error message ini akan muncul apabila pengguna salah dalam melakukan konfigurasi basis data. Gambar 5.19 merupakan error mesaage ketika melakukan konfigurasi database. Gambar 5.19 Error message konfigurasi database Apabila pengguna tidak lengkap dalam mengisi konfigurasi basis data, maka akan muncul seperti di bawah ini : Gambar 5.20 Error message input data 3. Tampilan pesan kesalahan input nilai k Tampilan error message pada input nilai k ini muncul apabila text field k tidak diisi dan atau diisi dengan nilai yang bukan numeric positif, contohnya diisi dengan nilai negative atau PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 97 karakter. Gambar 5.21 merupakan error mesaage ketika melakukan input data k kosong. Sedangkan Gambar 5.22 merupakan error mesaage ketika melakukan input k dengan huruf, karakter atau bilangan negative. Gambar 5.21 Error Message input data k kosong Gambar 5.22 error message input data k non numerik 4. Tampilan pesan kesalahan input nilai lamda Tampilan error message pada input nilai lamda ini muncul apabila text field lamda tidak diisi dan atau diisi dengan nilai yang bukan numeric positif, contohnya diisi dengan nilai negative atau karakter. Gambar 5.23 merupakan error mesaage ketika melakukan input lamda kosong. Sedangkan Gambar 5.24 merupakan error mesaage ketika melakukan input lamda dengan huruf, karakter atau bilangan negative. Gambar 5.23 Error Message input data lamda kosong PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 98 Gambar 5.24 Error Message input data lamda non numerik 5. Tampilan pesan kesalahan input nilai batas outlier Tampilan error message pada input nilai batas outlier ini muncul apabila text field batas outlier tidak diisi dan atau diisi dengan nilai yang bukan numeric positif, contohnya diisi dengan nilai negative atau karakter. Gambar 5.25 merupakan error mesaage ketika melakukan input batas outlier kosong. Sedangkan Gambar 5.24 merupakan error mesaage ketika melakukan input batas outlier dengan huruf, karakter atau bilangan negative. Gambar 5.25 Error Message input data batas outlier kosong Gambar 5.26 Error Message input data batas outlier non numerik PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 5.2 99 Implementasi Kelas Di dalam bagian ini akan dijelaskan mengenai hasil implementasi kelas dan algoritma yang telah dibuat dalam sistem sesuai dengan perancangan pada bab sebelumnya. Tabel 5.1 merupakan tabel implementasi kelas. Tabel 5.1 Implementasi Kelas No Nama Kelas Nama File Fisik Nama File Executable 1 koneksiDB koneksiDB.java koneksiDB.class 2 Graph Graph.java GraphNew.class 3 Vertex Vertex.java Vertex.class 4 seleksiAtribut seleksiAtribut.java seleksiAtribut.class 5 checkBoxTableModel checkBoxTableModel.java checkBoxTableModel.class 6 DBControl DBControl.java DBControl.class 7 DataLoop DataLoop.java DataLoop.class 8 DataLoopTableModel DataLoopTableModel.java DataLoopTableModel.class 9 HalamanAwal HalamanAwal.java HalamanAwal.class 10 HalamanUtama HalamanUtama.java HalamanUtama.class 11 HalamanPilihFile HalamanPilihFile.java HalamanPilihFile.class 12 HalamanPilihDB HalamanPilihDB.java HalamanPilihDB.class 13 HalamanPilihTabel HalamanPilihTabel.java HalamanPilihTabel.class 14 HalamanBantuan HalamanBantuan.java HalamanBantuan.class 15 HalamanTentang HalamanTentang.java HalamanTentang.class Listing program dari implementasi kelas di atas memuat atribut dan method dari kelas yang berkaitan dengan algoritma untuk fungsi-fungsi utama pada sistem pendeteksi outlier. Listing program dari implementasi kelas di atas dapat dilihat pada lampiran 10 dalam tugas akhir ini. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 5.3 100 Implementasi Struktur Data 5.3.1 Implementasi Kelas Vertex.java Kelas ini adalah kelas yang menyimpan setiap obyek data ke dalam vertex. Jadi dalam hal ini obyek data di representasikan menjadi sebuat vertex. Dalam kelas ini terdapat beberapa atribut yang berfungsi untuk menghitung dan melakukan proses deteksi outlier pada setiap obyek data. Sehingga nantinya setiap obyek data yang direpresentasikanke dalam vertex yang akan memiliki atribut-atribut tersebut. public class Vertex { private String label; List<Double> nilai; private boolean flagKunjungan = false; private Double kDistance; private List<String> neighborhood; private Double pDist; private Double pLOF; private Double nPLOF; private Double LOOP; private Double anggotaNeighborhood; Atribut yang pertama adalah label. Atribut ini digunakan untuk menyimpan label setiap obyek. Atribut yang kedua adalah atribut nilai yang bertipe List<Double>. Atribut ini berfungsi untuk menyimpan nilai yang akan dicari jarak melalui rumus Euclidean distance. Dalam hal ini setiap obyek bisa memliki nilai yang banyak. Atribut ketiga adalah atribut flagkunjungan yang bertipe Boolean. Atribut ini berfungsi untuk menandai tetangga dari suatu obyek yang memiliki jarak < kDistance. Atribut keempat adalah kDistance yang berfungsi untuk menyimpan jarakan jangkauan maksimum setiap obyek data. Atribut kelima adalah neighborhood bertipe List<String> yang berfungsi untuk menyimpan label tetangga suatu PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 101 obyek data. Atribut keenam adalah pDist yang berfungsi untuk menyimpan nilai hasil perhitungan pdist setiap obyek. Atribut ketujuh adalah pLOF yang berfungsi menyimpan nilai hasil perhitungan PLOF setiap obyek. Atribut kedelapan adalah nPLOF yang berfungsi menyimpan nilai hasil perhitungan nPLOF setiap obyek. Atribut kesembilan adalah LOOP berfungsi menyimpan nilai hasil perhitungan LoOP setiap obyek. Atribut kesepuluh adalah anggota Neighborhood berfungsi untuk menyimpan nilai dari neighborhood. 5.3.2 Implementasi Kelas Graph.java Kelas Graph.java berfungsi untuk membuat graf dan vertex dari setiap obyek data. Dalam kelas Graph, setiap vertex dihubungkan melalui edge sehingga setiap obyek selalu terhubung. Di dalam kelas ini sebuah graf dibuat melalui konstruktor dengan menggunakan parameter maxVertex. Artinya, sebuah graf tersebut dibuat dengan panjang vertex maksimum sesuai dengan input data pengguna yang masuk dalam jTable. Dalam konstruktor ini nilai awal sebuah edge diberi nilai -1 untuk hubungan dengan obyek satu dengan yang lainnya. Sedangkan nilai 0 unuk jarak obyek itu sendiri. Pada tahap ini vertex yang ada dalam graf belum memiliki nilai untuk setiap atributnya. public Graph(int maxVertex) { vertexList = new Vertex[maxVertex]; matriks = new Double[maxVertex][maxVertex]; neighborhood = new int[maxVertex][maxVertex]; max = maxVertex + 1; dist = new int[maxVertex]; arStdev = new Double[maxVertex]; nPdist = new Double[maxVertex]; arPLOF = new Double[maxVertex]; PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 102 arLOOP1 = new Double[maxVertex]; for (int i = 0; i < maxVertex; i++) { for (int j = 0; j < maxVertex; j++) { if (i == j) { matriks[i][j] = 0.0; } else { matriks[i][j] = -1.0; } } } } Setelah membuat graf, langkah selanjutnya adalah memasukkan vertex ke dalam graf. Dalam kelas ini, proses tersebut terjadi pada saat pembuatan method addVertex. Di dalam method tersebut pembuatan vertex dilakukan dengan inputan label dan nilai. Pada tahap ini setiap obyek dimasukkan ke dalam vertex beserta dengan atribut yang menjadi parameter yaitu label dan nilai. Sedangkan atribut yang lain diinputkan pada saat deteksi outlier. public void addVertex(String label, List<Double> nilai) { vertexList[jumlahVertex++] = new Vertex(label, nilai); } Setelah proses pembuatan vertex selesai, selanjutnya menghubungkan vertex tersebut dengan edge antar obyek. Nilai edge diinputkan melalui method bernama addEdge. Nilai edge merupakan nilai jarak yang dihitung menggunakan rumum Euclidean distance. Perhitungan rumus jarak juga terjadi dalam kelas Graph.java public void addEdge(int awal, int akhir, Double nilai) { matriks[awal][akhir] = matriks[akhir][awal] = nilai; } Perhitungan rumus jarak Euclidean terjadi dalam method cariJarak. Method ini memiliki parameter indexAwal dan indexAkhir yang PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 103 berfungsi untuk penanda dimana dimulai dan diakhir indeks yang dihitung jaraknya. public Double cariJarak(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); } return Math.sqrt(total); } PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB VI PENGUJIAN DAN ANALISIS HASIL PENGUJIAN Pada bab ini menjelaskan tentang tahap pengembangan sistem pendeteksi outlier menggunakan algoritma Local Outlier Probability yaitu pengujian sistem. Berikut ini merupakan tahap-tahap yang dilakukan dalam pengujian sistem : 6.1 Rencana Pengujian Pengujian sistem ini dibagi menjadi 3 metode, yaitu metode pengujian menggunakan black box, metode pengujian efek perubahan nilai atribut (k dan lamda) terhadap hasil deteksi outlier, metode pengujian reviewer dan validitas pengguna. Metode pengujian blackbox berkaitan dengan pengujian yang dilakukan pada antarmuka sistem. Meskipun dirancang untuk mengungkap kesalahan, pengujian black box digunakan untuk memperlihatkan bahwa fungsi-fungsi sistem dapat beroperasi, bahwa input diterima dengan baik dan output dihasilkan dengan tepat. Pengujian ini focus kepada persyaratan fungsional sistem. Metode pengujian efek perubahan nilai atribut terhadap hasil deteksi outlier dilakukan dengan cara mengubah nilai parameter k dan lamda. Kemudian membandingkan hasil outlier yang didapat dari perubahan nilai atribut tersebut. Metode pengujian reviewer dan validitas pengguna dilakukan dengan cara membandingkan hasil perhitungan secara manual dengan perhitungan dari sistem lalu membandingkan hasil tersebut dengan analisis yang dilakukan oleh pengguna, yaitu Kaprodi Teknik Informatika. Di bawah ini merupakan tabel rencana pengujian menggunakan metode blackbox. 104 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 105 Tabel 6.1 Tabel Rencana Pengujian Black-box No 1 Kelas Uji koneksiDB Butir Uji Jenis Pengujian Uji coba koneksi ke dalam Black-box basis data (Oracle dan MySql) 2 Halaman Utama Menampilkan data file Black-box file Black-box Menampilkan data dari tabel Black-box dengan extensi .xls Menampilkan data dengan ekstensi .csv basis data Melakukan seleksi atribut Black-box Melakukan deteksi outlier Black-box Melakukan pembatasan nilai Black-box derajad LoOP Menampilkan hasil deteksi Black-box outlier Menjalankan fungsi simpan Black-box hasil deteksi outlier 3 Halaman Database Pilih Menampilkan database form untuk pilih Black-box megatur konfigurasi (login) ke dalam database sesuai dengan pilihan pengguna 4 Halaman Tabel Pilih Menampilkan dari daftar database tabel setelah pengguna berhasil login ke database pengguna yang dipilih Black-box PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 106 6.2.1 Hasil Pengujian Black-box 1. Pengujian Input Data Berikut ini merupakan data pengujian untuk input data pada kelas HalamanUtama. Tabel 6.2 Tabel Pengujian Input Data Kasus dan Hasil Uji (Data Benar) No 1 Aktifitas yang Keluaran yang Hasil yang dilakukan diharapkan didapat Input data dari file Data berhasil tampil Data berhasil ekstensi .xls ke dalam tabel tampil ke dalam Kesimpulan Diterima tabel 2 Input data dari file Data berhasil tampil Data berhasil ekstensi .csv ke dalam tabel tampil ke dalam Diterima tabel 3 Input data dari Data berhasil tampil Data berhasil tabel dalam basis ke dalam tabel tampil ke dalam data Diterima tabel Kasus dan Hasil Uji (Data Salah) No 1 Aktifitas yang Keluaran yang Hasil yang dilakukan diharapkan didapat Input data dengan Menampilkan error Error message ekstensi file selain message bahwa berhasil tampil .xls atau .csv ekstensi data tidak sesuai Kesimpulan Diterima PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 107 2. Pengujian Koneksi Basisdata Dibawah ini adalah data pengujian input data pada HalamanPilihDB. Tabel 6.3 Tabel Pengujian Koneksi Basisdata Kasus dan Hasil Uji (Data Benar) No 1 Aktifitas yang Keluaran yang Hasil yang dilakukan diharapkan didapat input username, Menampilkan pesan Pesan berhasil password, bahwa koneksi ditampilkan database name, berhasil Kesimpulan Diterima dan url benar 2 input username, Menampilkan pesan Pesan berhasil password, dan url bahwa koneksi ditampilkan benar berhasil Diterima Kasus dan Hasil Uji (Data Salah) No 1 2 Aktifitas yang Keluaran yang Hasil yang dilakukan diharapkan didapat Text field Menampilkan pesan Pesan berhasil username, bahwa text field ditampilkan password, username, password, database name, database name, dan dan url ada yang URL tidak boleh kosong kosong Text field Menampilkan pesan Pesan berhasil username, bahwa text field ditampilkan password, dan url username, password, ada yang kosong database name, dan Kesimpulan Diterima Diterima URL tidak boleh kosong 3 input username, Menampilkan pesan Pesan berhasil Diterima PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI password, bahwa konfigurasi database name dan yang diinputkan 108 ditampilkan URL ada yang yang salah salah 4 input username, Menampilkan pesan password, dan URL bahwa konfigurasi ada yang yang yang diinputkan salah salah Pesan berhasil Diterima ditampilkan 3. Pengujian Seleksi Atribut Di bawah ini merupakan data pengujian untuk fungsi seleksi atribut. Tabel 6.4 Tabel Pengujian Seleksi Atribut Kasus dan Hasil Uji (Data Benar) No 1 Aktifitas yang Keluaran yang Hasil yang dilakukan diharapkan didapat Memilih salah satu Atribut yang dipilih Data sesuai atribut atau lebih atribut terhapus di dalam yang dipilih yang akan dihapus tabel seleksi dan terhapus dari tabel kemudian menekan tabel data preprocess Kesimpulan Diterima tombol hapus 2 Menekan tombol Semua atribut Semua atribut tandai semua ditandai untuk berhasil ditandai Diterima dihapus 3 Menekan tombol Tanda dari semua Semua atribut batal tandai semua atribut menjadi tidak dalam tabel tidak tertandai tertandai Diterima PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 109 4. Pengujian Deteksi Outlier Di bawah ini merupakan data pengujian untuk fungsi deteksi outlier pada kelas HalamanUtama. Tabel 6.5 Tabel Pengujian Deteksi Outlier Kasus dan Hasil Uji (Data Benar) No 1 Aktifitas yang Keluaran yang Hasil yang dilakukan diharapkan didapat Mengisi text field k Hasil deteksi outlier Hasil deteksi dengan inputan beserta atributnya outlier beserta angka positif lebih Kesimpulan Diterima atributnya dari 0 2 Mengisi text field Hasil deteksi outlier Hasil deteksi lamda dengan beserta atributnya outlier beserta inputan angka Diterima atributnya positif lebih dari 0 3 Mengisi text field Hasil deteksi outlier Hasil deteksi batas outlier beserta atributnya outlier beserta dengan inputan Diterima atributnya angka positif lebih dari 0 Kasus dan Hasil Uji (Data Salah) No 1 Aktifitas yang Keluaran yang Hasil yang dilakukan diharapkan didapat Text field k kosong Muncul error Error message message bahawa berhasil tampil Kesimpulan Diterima nilai k tidak boleh kosong 2 Text field k Muncul error Error message mengandung nilai - message bahawa berhasil tampil nilai k tidak boleh Diterima PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 110 berupa angka negative 3 Text field k Muncul error Error message mengandung message bahawa berhasil tampil karakter huruf nilai k tidak boleh Diterima berupa karakter huruf 4 Text field lamda Muncul error Error message kosog message bahawa berhasil tampil Diterima nilai lamda tidak boleh kosong 5 Text field lamda Muncul error Error message mengandung nilai - message bahawa berhasil tampil Diterima nilai lamda tidak boleh berupa angka negative 6 Text field lamda Muncul error Error message mengandung message bahawa berhasil tampil karakter huruf nilai lamda tidak Diterima boleh berupa karakter huruf 7 Text field batas Muncul error Error message outlier message bahawa berhasil tampil mengandung nilai batas outlier karakter huruf tidak boleh berupa karakter huruf Diterima PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 111 5. Pengujian Simpan Hasil Outlier Di bawah ini merupakan data pengujian untuk fungsi simpan hasil outlier. Tabel 6.6 Tabel Pengujian Simpan Hasil Outlier Kasus dan Hasil Uji (Data Benar) No 1 Aktifitas yang Keluaran yang Hasil yang dilakukan diharapkan didapat Menekan tombol File tersimpan di File tersimpan di simpan dan lokasi yang terpilih lokasi yang terpilih memilih ekstensi dan berekstensi .doc dan berekstensi file .doc 2 Kesimpulan Diterima .doc Menekan tombol File tersimpan di File tersimpan di simpan dan lokasi yang terpilih lokasi yang terpilih memilih ekstensi dan berekstensi .xls dan berekstensi .xls Menekan tombol File tersimpan di File tersimpan di simpan dan lokasi yang terpilih lokasi yang terpilih memilih ekstensi dan berekstensi .txt dan berekstensi .txt Diterima file .xls 3 Diterima file .txt 6.2.2 Kesimpulan Hasil Pengujian Black-box Berdasarkan hasil pengujian di atas, dapat disimpulkan bahwa sistem pendeteksi outlier ini dapat menangani error ketika fungsi yang dijalankan salah atau tidak sesuai dengan aturan pemakaiannya. Sedangkan secara fungsional sistem ini dapat berjalan dengan baik dan menghasilkan keluaran yang sesuai dengan yang diharapkan. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 112 6.2.3 Hasil Pengujian Efek Perubahan Nilai Atribut terhadap Nilai LoOP Pengujian terhadap Sistem Pendeteksi Outlier menggunakan Algoritma Local Outlier Probability dapat dilakukan dengan mengubah nilai input parameter k dan lamda. Berikut ini adalah tabel hasil deteksi outlier yang diperoleh dari eksekusi data akademik program studi Teknik Informatika tahun angkatan 2007 dan 2008 dengan data sebanyak 126 buah menggunakan nilai input parameter k dan lamda yang bervariasi. 1. Pengujian dengan Data Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Jalur Tes Tertulis Tabel 6.7 Tabel Jumlah Outlier Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Jalur Tes Tertulis Semester 1 dengan Nilai k dan Lamda yang Berubah-ubah k Lamda 10 20 30 40 50 1 36 36 31 28 24 2 36 36 31 28 24 3 36 36 31 28 24 Tabel 6.8 Tabel Data Outlier Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Jalur Tes Tertulis Semester 1 dengan Nilai k yang berubah-ubah, Lamda = 1 dan batas outlier = 0,8 Mahasiswa outlier peringkat kek 1 2 3 4 5 6 7 8 10 28 27 58 36 72 33 26 53 20 28 26 58 33 27 36 53 72 30 28 26 58 33 36 27 72 - 40 28 26 33 58 36 72 - - 50 28 26 33 58 36 - - - PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 113 2. Pengujian dengan Data Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Jalur Prestasi Tabel 6.9 Tabel Jumlah Outlier Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Jalur Prestasi Semester 1 dengan Nilai k dan Lamda yang Berubah-ubah k Lamda 10 20 30 40 50 1 38 39 34 36 40 2 38 39 34 36 40 3 38 39 34 36 40 Tabel 6.10 Tabel Data Outlier Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Jalur Prestasi Semester 1 dengan Nilai k yang berubah-ubah, Lamda = 1 dan batas outlier = 0,8 Mahasiswa outlier peringkat kek 1 2 3 4 5 6 7 8 9 10 76 109 124 15 105 - - - - 20 76 124 15 10 - - - - - 30 76 124 15 79 10 16 - - - 40 76 124 15 10 16 94 - - - 50 76 124 15 10 16 7 79 19 20 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 114 3. Pengujian dengan Data Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Tabel 6.11 Tabel Jumlah Outlier Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Jalur Tes dan Jalur Prestasi Semester 1 dengan Nilai k dan Lamda yang Berubah-ubah k Lamda 10 20 30 40 50 1 63 66 58 63 64 2 63 66 58 63 64 3 63 66 58 63 64 Tabel 6.12 Tabel Data Outlier Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Jalur Tes Tertulis dan Jalur Prestasi Semester 1 dengan Nilai k yang berubah-ubah, Lamda = 1 dan batas outlier = 0,8 Mahasiswa outlier peringkat kek 1 2 3 4 5 6 7 10 28 27 76 58 109 50 74 20 76 28 27 26 10 11 12 105 10 68 86 107 37 - 107 124 86 16 58 13 109 68 69 30 76 28 27 26 124 10 68 36 16 69 107 40 76 28 27 26 124 36 10 16 58 69 50 76 28 27 26 124 10 36 16 58 68 10 8 9 13 14 15 16 - - 50 74 - - - - - 68 79 7 107 - - 7 69 98 - - - 6.2.4 Kesimpulan Hasil Pengujian Efek Perubahan Nilai Atribut Penambangan Data Dari hasil pengujian perubahan nilai parameter k dan lamda pada tabel di atas, dapat ditarik kesimpulan sebagai berikut : 1. Jika nilai parameter k tetap dan lamda bertambah, maka jumlah outlier yang dihasilkan akan tetap. Tetapi terjadi perubahan nilai derajat LoOP. Semakin bertambah nilai lamda, maka nilai LoOP PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 115 akan semakin berkurang. Dalam hal ini, nilai lamda tidak mempengaruhi jumlah outlier. 2. Jika nilai parameter k berubah dan nilai lamda tetap, maka jumlah outlier yang didapatkan akan tetap atau semakin sedikit. Hal ini disebabkann karena semakin luas jangkauan k akan membuat kepadatan menjadi tinggi sehingga nilai LoOp akan cenderung kecil. 6.2.5 Hasil Pengujian Validitas dan Review oleh Pengguna 1. Perbandingan Perhitungan Manual dan Hasil Sistem Dataset yang digunakan adalah data akademik mahasiswa Teknik Informatika angkatan 2007 yang diterima melalui jalur tes tertulis. Atribut yang akan digunakan terdiri dari nilai ips1, ips2, ips3, ips4, nil11, nil12, nil13, nil14, dan nil15. Data akademik tersebut akan diproses dan dihitung secara manual menggunakan algoritma Local Outlier Probability. Kemudian dibandingkan dengan hasil deteksi outlier yang diperoleh dari Sistem Pendeteksi Outlier menggunakan Algoritma Local Outlier Probability. Berikut ini merupakan tabel perbandingan hasil deteksi outlier dari data akademik mahasiswa program studi Teknik Informatika angkatan tahun 2007 yang diterima melalui jalus tes tertulis perhitungan sistem. menggunakan perhitungan manual dan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 116 Tabel 6.13 Data Nilai Akademik Mahasiswa Teknik Informatika Angkatan Tahun 2007 yang Diterima melalui Jalur Tes Tertulis yang Digunakan untuk Perbandingan Perhitungan Manual dan Sistem Nomor alias IPS1 NIL11 NIL12 NIL13 NIL14 NIL15 P1 2,94 7,00 5,00 5,00 5,00 4,00 P2 1,72 3,00 2,00 8,00 3,00 1,00 P3 2,56 6,00 4,00 5,00 7,00 5,00 P4 2,44 5,00 5,00 6,00 5,00 5,00 P5 2,94 6,00 4,00 6,00 3,00 7,00 P6 1,89 6,00 5,00 6,00 6,00 7,00 P7 4,00 6,00 6,00 4,00 4,00 7,00 P8 1,44 10,00 5,00 9,00 6,00 7,00 P9 3,72 8,00 6,00 6,00 7,00 5,00 P10 1,72 7,00 6,00 8,00 8,00 2,00 P11 3,28 7,00 6,00 7,00 6,00 6,00 P12 2,89 6,00 5,00 5,00 7,00 5,00 P13 2,89 5,00 5,00 8,00 5,00 7,00 Dibawah ini merupakan tabel hasil perhitungan manual menggunakan nilai IPS1 dengan parameter nilai k:10 dan lamda:2. Tabel 6.14 Hasil Perhitungan Manual Nomor Alias LoOP Ranking P2 0,83929 1 P8 0,5582 2 P10 0,35173 3 P7 0,30735 4 P9 0,07554 5 P5 0,01798 6 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 117 Sedangkan di bawah ini merupakan tabel hasil perhitungan sistem menggunakan nilai IPS 1 dengan parameter nilai k:10 dan lamda:2. Tabel 6.15 Tabel Hasil Perhitungan Sistem Nomor Alias 2. LoOP Ranking P2 0.8392870141068225 1 P8 0.5582016327201078 2 P10 0.3517278388883547 3 P7 0.3073461492447487 4 P9 0.07553964885999132 5 P5 0.017982312265614975 6 Kesimpulan Hasil Perbandingan Perhitungan Manual dengan Perhitungan menggunakan Sistem Dari tabel perbandingan di atas dapat ditarik kesimpulan bahwa data yang dihasilkan dari perhitungan secara manual maupun secara sistem menghasilkan outlier dengan jumlah, ranking serta derajat LoOP yang tepat sama. Maka dari itu dapat ditarik kesimpulan bahwa sistem dapat dengan benar menghasilkan deteksi outlier yang sesuai dengan perhitungan manualnya. 3. Hasil Deteksi dari Sistem untuk Pengujian Review dan Validitas oleh Pengguna Pengujian ini dilakukan dengan tujuan untuk memastikan dan meyakinkan bahwa hasil deteksi outlier yang dihasilkan oleh sistem benar-benar ditetapkan sebagai outlier. Oleh karena itu perlu dilakukan analisis kepada Kaprodi Teknik Informatika sebagai pemilik data akademik mahasiswa Teknik Informatika untuk memperoleh kepastian bahwa mahasiswa yang dinyatakan sebagai outlier tersebut memiliki nilai yang menyimpang dari kebanyakan mahasiswa lain. Berikut ini merupakan hasil outlier PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 118 yang diperoleh sistem untuk 3 macam dataset yang digunakan pada pengujian review dan validitas. (detail dataset ada dalam lampiran ke 11). 1. Hasil outlier untuk data mahasiswa program studi Teknik Informatika angkatan 2007 dan 2008 jalur tes tertulis sebanyak 54 mahasiswa yang diperoleh dari semester 1 sampai 4 menggunakan atribut ips1, ips2, ips3, ips4, nil11, nil12, nil13, nil14, dan nil15 dengan menggunakan nilai k = 10, lamda = 2, dan batas outlier = 0,7. Tabel 6.16 Tabel Hasil Outlier untuk Data Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Jalur Tes Tertulis SEM 1 2 3 4 NO URUT IPS1 IPS2 IPS3 IPS4 NIL11 NIL12 NIL13 NIL14 NIL15 28 1,72 - - - 1,20 0,80 3,20 1,20 0,40 27 4,00 - - - 2,40 2,40 1,60 1,60 2,80 58 2,30 - - - 1,20 2,00 1,60 0,80 2,00 28 - 1,65 - - 1,20 0,80 3,20 1,20 0,40 26 - 2,42 - - 4,00 2,00 3,60 2,40 2,80 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 50 - - 0,59 - 2,40 2,40 2,80 1,20 3,60 28 - - - 1,68 1,20 0,80 3,20 1,20 0,40 2. Hasil outlier untuk data mahasiswa program studi Teknik Informatika angkatan 2007 dan 2008 jalur prestasi sebanyak 72 mahasiswa yang diperoleh dari semester 1 sampai 4 menggunakan atribut ips1, ips2, ips3, ips4, dan nilFinal dengan menggunakan nilai k = 10, lamda = 2 dan batas outlier = 0,7. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 119 Tabel 6.17 Tabel Hasil Outlier untuk Data Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 Jalur Prestasi SEMESTER NO URUT IPS1 IPS2 IPS3 IPS4 FINAL 76 0,8500 - - - 2,8480 109 2,8500 - - - 3,0764 17 - 0,3182 - - 2,7196 124 - 0,4444 - - 2,9000 86 - 2,8000 - - 3,2200 94 - 1,3529 - - 2,7700 107 - 3,9200 - - 3,3332 3 17 - - 0,6875 - 2,7196 4 88 - - - 0,9444 2,8880 94 - - - 1,2000 2,7700 107 - - - 3,7826 3,3332 98 - - - 3,1500 3,2200 89 - - - 3,9048 2,9712 1 2 3. Hasil outlier untuk data mahasiswa program studi Teknik Informatika angkatan 2007 dan 2008 jalur prestasi dan jalur tes sebanyak 126 mahasiswa yang diperoleh dari semester 1 sampai 4 menggunakan atribut ips1, ips2, ips3, ips4, dan nilFinal dengan menggunakan nilai k = 10, lamda = 2 dan batas outlier = 0,7. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 120 Tabel 6.18 Tabel Hasil Outlier untuk Data Mahasiswa Teknik Informatika Angkatan 2007 dan 2008 SEM 1 NO URUT 3 4 IPS1 IPS2 IPS3 IPS4 FINAL JALUR 28 0,99545 1,72 - - - 1,12 tes 27 0,98066 4,00 - - - 2,32 tes 76 0,95263 2,35 - - - 2,56 prestasi - - - 2,36 tes 58 2 LoOP 0,7 9856 2,70 109 0,76735 3,30 - - - 3,33 tes 28 0,98498 - 1,65 - - 1,12 tes 86 0,96146 - 3,00 - - 2,83 prestasi 124 0,92130 - 2,43 - - 3,05 prestasi 107 0,91761 - 2,73 - - 3,06 prestasi 58 0,91677 - 3,44 - - 2,36 tes 17 0,91131 - 2,24 - - 2,72 prestasi 28 0,99413 - - 1,53 - 1,12 tes 74 0,97364 - - 1,73 - 2,96 tes 58 0,86051 - - 3,39 - 2,36 tes 72 0,75236 - - 2,94 - 2,64 tes 50 0,73401 - - 3,24 - 2,44 tes 109 0,72072 - - 3,76 - 3,33 prestasi 55 0,72048 - - 2,94 - 2,00 tes 28 0,99889 - - - 1,68 1,12 tes 58 0,92100 - - - 2,33 2,36 tes 107 0,84765 - - - 3,38 3,06 prestasi 89 0,82381 - - - 1,83 2,80 prestasi 98 0,79150 - - - 2,30 2,77 prestasi 27 0,72837 - - - 3,70 2,32 tes PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4. 121 Kesimpulan Hasil Pengujian Review dan Validitas oleh Pengguna 1. Dari pengujian data akademik mahasiswa 2007-2008 jalur tes didapat hasil sebagai berikut : a. Pada semester 1 terdapat 3 mahasiswa yang dinyatakan sebagai outlier. Mahasiswa tersebut adalah mahasiswa dengan nomor 28, 27, dan 58. Mahasiswa nomor 28 dinyatakan sebagai outlier karena memiliki nilai IPS 1 dan nilai tes yang sangat rendah. Mahasiswa dengan nomor 27 dinyatakan sebagai outlier karena memiliki nilai IPS 1 yang sangat tinggi dan nilai tes yang cenderung rendah. Mahasiswa nomor 58 dinyatakan sebagai outlier karena memiliki nilai IPS 1 dan nilai tes yang cenderung rendah. b. Pada semester 2 mahasiswa outlier sebanyak 2 orang yaitu mahasiswa nomor 28 dan 26. Mahasiswa nomor 28 masih tetap dinyatakan sebagai outlier karena memiliki nilai IPS 2 yang cenderung rendah dan nilai tes yang sangat rendah. Sedangkan mahasiswa dengan nomor 26 dinyatakan sebagai outlier karena memiliki nilai IPS 2 yang cenderung rendah dan nilai tes yang cenderung tinggi. c. Pada semester 3, mahasiswa yang dinyatakan sebagai outlier sebanyak 3 orang yaitu mahasiswa nomor 28, 74, dan 50. Mahasiswa nomor 28 masih tetap dinyatakan sebagai outlier karena memiliki nilai IPS 3 dan nilai tes yang sangat rendah. Mahasiswa dengan nomor 74 dinyatakan sebagai outlier karena memiliki nilai IPS 3 yang sangat rendah dan nilai tes yang cenderung tinggi. Mahasiswa dengan nomor 50 dinyatakan sebagai outlier karena memiliki nilai IPS 3 yang sangat rendah dan nilai tes yang cenderung rendah. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 122 d. Pada semester 4 mahasiswa yang dinyatakan sebagai outlier ada 1 orang yaitu mahasiswa nomor 28. Mahasiswa ini ditetapkan menjadi outlier selama 4 semester ini. Mahasiswa ini memiliki nilai IPS 4 yang rendah dan nilai tes yang cenderung rendah. 2. Dari pengujian data akademik mahasiswa 2007-2008 jalur prestasi didapat hasil sebagai berikut : a. Pada perhitungan semester 1 ditemukan mahasiswa outlier sebanyak 2 orang yaitu mahasiswa dengan nomor 76 dan 109. Mahasiswa dengan nomor 76 dinyatakan sebagai outlier karena memiliki nilai IPS 1 yang sangat rendah dan nilai final yang rendah. Kemudian mahasiswa dengan nomor 109 dinyatakan sebagai outlier karena memiliki nilai IPS 1 yang cenderung rendah dan nilai final yang cenderung tinggi. b. Pada semester 2, terdapat 5 mahasiswa outlier yaitu mahasiswa dengan nomor 17, 124, 86, 94, dan 107. Mahasiswa nomor 17 dan 124 ditetapkan sebagai outlier karena memiliki nilai IPS 2 yang sangat rendah dan nilai final yang rendah. Mahasiswa dengan nomor 86 dinyatakan sebagai outlier karena memiliki nilai IPS 2 yang rendah dan nilai final yang cenderung tinggi. Mahasiswa dengan nomor 94 dinyatakan sebagai outlier karena memiliki nilai IPS 2 dan nilai final yang rendah. Mahasiswa dengan nomor 107 dinyatakan sebagai outlier karena memiliki nilai IPS 2 yang sangat tinggi dan nilai final yang cenderung tinggi. c. Pada semester 3 terdapat 1 mahasiswa outlier yaitu mahasiswa dengan nomor 17. Mahasiswa nomor 17 masih dinyatakan sebagai outlier karena memiliki nilai IPS 3 yang sangat rendah dan nilai final yang rendah. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 123 d. Pada semester 4 terdapat 5 mahasiswa outlier yaitu mahasiswa dengan nomor 88, 94, 107, 98, dan 89. Mahasiswa dengan nomor 88 dan 94 dinyatakan sebagai outlier karena memiliki nilai IPS 4 yang rendah dan nilai final yang cenderung rendah. Mahasiswa dengan nomor 107 dan 98 dinyatakan sebagai outlier karena memiliki nilai IPS 4 dan nilai final yang cenderung tinggi. Mahasiswa dengan nomor 89 dinyatakan sebagai outlier karena memiliki nilai IPS 4 yang sangat tinggi tetapi nilai final rendah. 3. Dari pengujian data akademik mahasiswa 2007-2008 jalur prestasi dan jalur tes didapat hasil sebagai berikut : a. Pada semester 1 terdapat 5 mahasiswa outlier yaitu mahasiswa dengan nomor 28, 27, 76, 58, dan 109. Mahasiswa dengan nomor 28, 27 dan 58 merupakan mahasiswa yang telah ditetapkan sebagai outlier pada pengujian sebelumnya yaitu ketika pengujian jalur tes. Sedangkan mahasiswa nomor 76 dan 109 telah ditetapkan sebagai outlier pada pengujian sebelumnya yaitu ketika pengujian jalur prestasi. Mahasiswa nomor 28 merupakan mahasiswa outlier kuat karena memiliki nilai IPS1 dan nilai final yang rendah sehingga nilai LoOPnya tinggi yaitu 0,9945. Mahasiswa dengan nomor 27 berpotensi menjadi outlier karena memiliki nilai IPS 1 yang lebih tinggi dari yang lainnya dan nilai final yang cenderung rendah. Mahasiswa dengan nomor 76 dan 58 dinyatakan sebagai outlier karena memiliki nilai IPS 1 dan nilai final yang cenderung rendah. Mahasiswa dengan nomor 109 dinyatakan sebagai outlier karena memiliki nilai IPS 1 dan nilai final yang cenderung tinggi. b. Pada semester 2, ditemukan 6 mahasiswa outlier yaitu mahasiswa dengan nomor 28, 86, 124, 107, 58 dan 17. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 124 Mahasiswa nomor 28 dan 58 telah ditetapkan sebagai outlier pada pengujian sebelumnya. Mahasiswa nomor 28 masih sebagai outlier terkuat dengan nilai LoOP yang tinggi. Mahasiswa nomor 86 dan 58 dinyatakan sebagai outlier karena memiliki nilai IPS 2 yang cenderung tinggi dan nilai final yang cenderung rendah. Mahasiswa nomor 124 dan 107 dinyatakan sebagai outlier karena memiliki nilai IPS 2 yang cenderung rendah dan nilai final yang cenderung tinggi. Mahasiswa dengan nomor 17 dinyatakan sebagai outlier karena memiliki nilai IPS 2 dan nilai final yang cenderung rendah. c. Pada semester 3 mahasiswa yang berpotensi sebagai outlier ada 7 orang yaitu 28, 74, 58, 72, 50, 109, dan 55. Mahasiswa dengan nomor 28, 74, dan 50 telah dinyatakan sebagai outlier pada pengujian data jalur tes. Mahasiswa nomor 58, 72 dan 55 tidak menjadi outlier pada pengujian sebelumnya namun pada penggabungan data, mahasiswa ini memiliki derajat LoOP yang tinggi sehingga masuk menjadi outlier. Mahasiswa dengan nomor 109 pada pengujian sebelumnya tidak dinyatakan sebagai outlier di semester 3. Tetapi pada proses penggabungan data ini membuat mahasiswa 109 memiliki peningkatan LoOP sehingga tergolong menjadi mahasiswa outlier. d. Pada semester 4, mahasiswa yang berpotensi sebagai outlier ada 6 yaitu mahasiswa nomor 28, 58, 107, 89, 98, dan 27. Mahasiswa nomor 28 masih ditetapkan sebagai outlier pada pengujian sebelumnya dan pada pengujian ini karena memiliki derajat LoOP yang sangat tinggi. Mahasiswa dengan nomo 58 dan 27 pada pengujian jalur prestasi di semester 4 tidak dinyatakan sebagai mahasiswa outlier tetapi pada pengujian ini membuat mahasiswa tersebut PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 125 mengalami peningkatan LoOP sehingga menjadi mahasiswa outlier. Mahasiswa dengan nomor 107, 89, dan 98 pada pengujian sebelumnya telah ditetapkan sebagai outlier dan pada pengujian ini masih menjadi outlier karena tingginya nilai derajat LoOP. 4. Dalam pengujian di atas, setiap semester menghasilkan hasil yang berbeda jumlah outlier, anggota outlier dan derajat LoOP. 5. Ketika data pengujian digabung, data hasil outlier menjadi berbeda dengan data pengujian saat dipisah. Sebagian besar hasil outlier nya sama, namun terkadang terdapat mahasiswa yang tadinya tidak memiliki nilai LOF yang tinggi, namun pada saat digabung memiliki nilai LOF yang cenderung tinggi. Hal itu terjadi karena pertambahan jumlah data dan perbedaan penggunaan atribut. 6. Dari hasil review dan analisa oleh Kaprodi Teknik Informatika, hasil deteksi outlier di atas sudah di verifikasi bahwa data di atas benar-benar termasuk mahasiswa outlier. Sehingga menurut Kaprodi, data hasil deteksi outlier tersebut diterima sebagai outlier. 6.2 Kelebihan dan Kekurangan Sistem Sistem pendeteksi outlier ini memiliki kelebihan dan kekurangan sebagai berikut : 6.2.1 Kelebihan Sistem Kelebihan Sistem Deteksi Outlier menggunakan Algoritma Local Outlier Probability adalah : 1. Sistem ini mampu menerima inputan data berupa file .xls, .csv, dan data tabel dari basis data (Oracle atau MySql). PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 126 2. Sistem ini mampu melakukan deteksi outlier menggunakan algoritma Local Outlier Probability dan dapat menghasilkan data outlier yang bisa diterima pengguna. 3. Sistem ini mampu mendeteksi outlier dengan inputan data atribut yang bersifat dinamis. 4. Sistem ini mampu menyimpan hasil deteksi outlier ke dalam file ekstensi .doc, .xls, .txt. 5. Sistem ini mampu membatasi nilai hasil deteksi outlier. 6. Sistem ini dapat melakukan seleksi atribut pada data yang akan diproses untuk dicari outliernya. 6.2.2 Kekurangan Sistem Kekurangan sistem ini adalah : 1. Sistem ini tidak dapat melakukan seleksi baris dari tabel data. Sistem hanya bisa melakukan seleksi data kolom. 2. Sistem ini hanya bisa menerima inputan berupa file .xls, .csv, dan tabel pada basis data Oracle atau MySql. 3. Sistem ini memiliki waktu lama deteksi yang lama dibandingkan dengan sistem menggunakan algoritma Local Correlation Integral dan Connectivity Outlier Factor. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB VII PENUTUP 7.1 Kesimpulan Dari hasil penelitian ini, dengan menggunakan algoritma Local Outlier Probability untuk melakukan deteksi outlier terhadap data akademik mahasiswa Teknik Informatika Universitas Sanata Dharma yang diterima melalui jalur tes dan prestasi, dapat diambil kesimpulan sebagai berikut : 1. Nilai jangkauan sangat mempengaruhi nilai derajat LoOP suatu obyek data dan mempengaruji jumlah hasil outlier. 2. Nilai atribut lamda tidak berpengaruh terhadap jumlah outlier yang dihasilkan tetapi mempengaruhi derajat nilai LoOP. 3. Hasil perhitungan manual dan sistem menghasilkan hasil deteksi outlier dengan hasil yang sama. 4. Algoritma Local Outlier Probability hanya memberikan hasil outlier sebagai kandidat data outlier. 7.2 Saran Berdasarkan hasil analisa dan pengujian pada tugas akhir ini, penulis memberika saran untuk perbaikan dalam pengembangan penelitian dan sistem secara lebih lanjut antara lain : 1. Sistem ini diharapkan dapat dikembangkan agar mampu menerima inputan file yang bertipe .arf, .dat, dan lain-lain. 2. Akan lebih baik jika sistem ini mampu melakukan seleksi baris tabel atau melakukan seleksi menggunakan kueri. 3. Hasil outlier dapat dikembangkan dalam bentuk grafik sehingga lebih interaktif. 4. Pengujian review dan validitas sangat penting dilakukan setelah pengguna melakukan deteksi outlier dengan sistem agar diperoleh hasil 127 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 128 outlier yang benar-benar valid. Pengujian ini dilakukan oleh pengguna yang ahli dan mengerti tentang data tersebut. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 129 DAFTAR PUSTAKA Amer, Mennatallah. 2011. Comparison of Unsupervised Anomaly Detection Techniques. Media Engineering and Technology German University in Cairo and Multimedia Analysis and Data Mining Competence Center German Research Center for Artificial Intelligence (DFKI GmbH) Kaiserslautern, Germany. Davies, and Paul Beynon (2004). Database Systems Third Edition, Palgrave Macmillan, New York. Han, Jiawei & Kamber, Micheline (2006). Data Mining Concepts and Techniques Second Edition. San Fransisco : Elsovier. Knorr, Edwin M. (2002). Outlier and Data Mining: Finding Exception in Data. The University of British Columbia. Kriegel, H-P.; Kroger, P.; Schubert, E.; Zimek, A. 2009. “Loop: local outlier probabilities”. Proceedings of the 18th ACM conference on Information and knowledge management, CIKM ’09. Larose, Daniel T. 2005. Discovering knowledge in Data : An Introduction to Data Mining, John Willey & Sons, Inc. Maimon, O. dan Last, M. (2000). Knowledge Discovery and Data Mining, The Info-Fuzzy Network (IFN) Methodology. Dordrecht : Kluwer Academic. O’niel, B.K., Dakin, J., Hardy, K., Schrader, M., and Other. (1997). Oracle Data Warehousing Unleashed. Sams Publishing; 1st edition. Ponniah, P. (2001). Data Warehouse Fundamentals : A comprehensive Guide for IT Professional, John Willey & Sons. Inc. Pramudiono, I. (2007). Pengantar Data Mining : Menimbang Permata Pengetahuan di Gunung Data. http://www.ilmukomputer.org/wpcontent/uploads/2006/08/iko-datamining.zip diakses pada tanggal 26 Oktober 2013 jam 14:54 WIB. Rosa, Paulina Heruningsih Prima, Ridowati Gunawan, Sri Hartati Wijono. (2013). The Development of Academic Data Warehouse as a Basis for Decision Making : A Case Study at XYZ University. Proceeding of International Conference on Enterprise Information System and Application. Universitas Islam Indonesia, Yogyakarta, Indonesia 2013. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 130 Santosa, Budi. (2007). “Data Mining Teknik Pemanfaatan Data untuk Keperluan Bisnis”, Graha Ilmu, Yogyakarta. Sembiring, RK. (2003), Analisis Regresi, edisi kedua, ITB. Bandung. Soemartini (2007). Pencilan (Outlier). Jurusan Statistika Fakultas MIPA UNPAD, Bandung. Turban, E., Rainer, R. K., Potter, R. E. and Other, A. N. (2005). Introduction to Information Technology. Hoboken : Wiley. Vardiansyah, Dani. (2008). Filsafat Ilmu Komunikasi: Suatu Pengantar, Indeks, Jakarta. Hal 3. Witten, I. H and Frank, E. (2005). Data Mining : Practical Machine Learning Tools and Techniques Second Edition. Morgan Kauffman : San Francisco. Whitten, J., & Bentley, L., (2005) Systems analysis and design methods (7th ed.). New York: McGraw-Hill/Irwin. Whitten, J., & Bentley, L., (2007) Systems analysis and design methods (8th ed.). New York: McGraw-Hill/Irwin. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L A M P I R A N 131 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI LAMPIRAN 1 Diagram Use Case DIAGRAM USE CASE Memasukkan data file excel atau database <<extends>> <<depends on>> Mendeteksi outlier user <<depends on>> Menyimpan hasil deteksi outlier Seleksi atribut 132 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 133 LAMPIRAN 2 Deskripsi Use Case Nomor Use Nama Use Case Deskripsi Aktor Case Memasukkan data Use Case ini menggambarkan proses berupa 1 Pengguna dokumen penginputan data oleh pengguna dari excel atau database file berformat .xls atau .csv atau data dari database untuk selanjutnya ditampilkan ke dalam Sistem Mendeteksi outlier 2 Use Case ini menggambarkan proses Pengguna pencarian outlier terhadap data yang telah dimasukkan oleh pengguna Menyimpan 3 deteksi outlier hasil Use case ini menggambarkan proses Pengguna penyimpanan hasil pencarian outlier dalam bentuk file berformat .doc atau .txt Seleksi atribut 4 Use case ini menggambarkan proses pemilihan atribut yang akan digunakan untuk proses pencarian outlier Pengguna PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 134 LAMPIRAN 3 Narasi Use Case 1.) Use Case Memasukkan data berupa dokumen excel atau database Aktor Pengguna Kondisi awal Pengguna telah masuk ke dalam sistem dan berada pada Halaman Utama (tab Preprocessing) Kondisi akhir Data yang dipilih tampil pada tabel data di Halaman Utama – tab Preprocessing Aktivitas normal Actor Action System Respons Langkah 1 Aktor memilih button ‘pilih file’ untuk memilih file excel berformat xls atau csv Langkah 2 Sistem menampilkan dialog box jFileChooser untuk memilih file Langkah 3 Aktor memilih file yang akan diproses kemudian mengklik button open Langkah 4 Sistem menampilkan data yang telah dipilih ke dalam Tabel Data pada Halaman Utama – tab Preprocessing beserta dengan jumlah data dan jumlah atribut Langkah 5 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 135 Aktor berhasil memasukkan data Aktivitas Alternatif Langkah 1a Aktor memilih button ‘Pilih Database’ Langkah 2a Sistem menampilkan dialog box pilih database Langkah 3a Aktor memilih jenis database dan memasukan konfigurasi database, kemudian memilh ok Langkah 4a Sistem menampilkan dialog bahwa koneksi database berhasil Langkah 5a Aktor memilih button OK Langkah 6a Sistem menampilkan dialog box pilih tabel Langkah 7a Aktor memilih tabel yang akan digunakan kemudian memilih button ok Langkah 8a Sistem menampilkan data ke dalam tabel utama di halaman PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 136 2.) Use Case Mendeteksi Outlier Aktor Pengguna Kondisi awal - Pengguna telah melakukan seleksi data atribut dan telah menekan tombol submit pada tab Preprocessing Kondisi akhir Pengguna berada pada tab Deteksi Outlier Pengguna dapat melihat hasil outlier dalam sebuah tabel Aktivitas normal Actor Action System Respons Langkah 1 Aktor masukkan nilai parameter k dan kemudian klik button ‘Proses’ Langkah 2 Sistem melakukan proses pencarian menggunakan outlier algoritma local outlier probability dan kemudian menampilkan hasilnya ke dalam sebuah tabel Langkah 3 Aktor berhasil mendeteksi outlier Aktivitas Alternatif - PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 137 3.) Use Case Menyimpan Hasil Outlier Aktor Pengguna Kondisi awal Pengguna telah melakukan deteksi outlier dan data hasil outlier telah tampil Kondisi akhir Hasil deteksi outlier dapat disimpan dalam file sesuai dengan format pilihan pengguna Aktivitas normal Actor Action System Respons Langkah 1 Aktor memilih button ‘simpan’ Langkah 2 Sistem menampilkan dialog box save file Langkah 3 Aktor memilih lokasi penyimpanan data Langkah 4 Aktor memasukkan nama file Langkah 5 Aktor memilih ekstensi file data Langkah 6 Aktor memilih button OK Langkah 7 Sistem menyimpan file hasil deteksi outlier ke dalam komputer Langkah 5 Aktor berhasil menyimpan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 138 hasil pencarian outlier Aktivitas Alternatif - 4.) Use Case Seleksi Atribut Aktor Pengguna Kondisi awal Pengguna telah menampilkan data ke dalam tabel data pada tab ‘Preprocessing’ pada Halaman Utama Kondisi akhir Atribut yang tidak digunakan dihapus dari tabel data Aktivitas normal Actor Action System Respons Langkah 1 Sistem menampilkan semua nama atribut di tabel seleksi atribut Langkah 2 Aktor memilih atribut yang tidak digunakan kemudian klik dan button ‘hapus’ Langkah 3 Sistem menghapus atribut yang telah dipilih Langkah 4 Aktor berhasil menyeleksi atribut Aktivitas Alternatif Langkah 2a Aktor ‘Tandai memilih button semua’ untuk menghapus semua atribut PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI LAMPIRAN 4 Proses Umum Sistem Pendeteksi Outlier menggunakan Algoritma Local Outlier Probability Start Data bertipe .xls Data bertipe .csv Pilih seleksi atribut? Data basis data Tidak Input parameter minPts Input parameter lamda Proses mendeteksi outlier Hasil deteksi outlier End Ya Proses menyeleksi atribut 139 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 140 LAMPIRAN 5 Diagram Aktivitas 6. Diagram Aktivitas Input Data File .xls dan .csv Pengguna Sistem Menjalankan HalamanUtama Menampilkan HalamanUtama Menekan button pilih file Menampilkan dialog box JFileChooser Memilih file excel Mengecek kesesuaian file (harus bertipe xls atau csv) Start Tidak sesuai sesuai Membaca dan menampilkan data ke dalam tabel data preprocessing beserta jumlah data, jumlah atribut dan daftar atribut dalam tabel seleksi End PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 7. 141 Diagram Aktivitas Input Data Tabel Basis Data Pengguna Sistem Start Menjalankan HalamanUtama - Preprocessing Menampilkan HalamanUtama - Preprocessing Menekan button Pilih DB Menampilkan Halaman PilihDB Memilih koneksi DB Melakukan login ke basis data dengan mengisi username, password, dbname Validasi login basis data Non valid valid Memilih tabel dalam basis data Menampilkan Halaman PilihTabel Menekan button OK Membaca dan menampilkan data ke tabel data preprocessing beserta jumlah data, jumlah atribut, dan daftar atribut dalam tabel seleksi End PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 8. 142 Diagram Aktivitas Seleksi Atribut Pengguna Sistem Start Menampilkan daftar atribut dalam tabel seleksi Memilih atribut yang akan dihapus dengan menandai baris atribut Menekan button hapus atribut Menghapus atribut yang ditandai Mengupdate atribut pada tabel data preprocessing End PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 9. 143 Diagram Aktivitas Deteksi Outlier Pengguna Sistem Start Menjalankan HalamanUtama – Deteksi Outlier Menampilkan HalamanUtama – Deteksi Outlier Memasukkan parameter minpts dan lamda Menekan button proses Mengecek kesesuaian data inputan (tidak boleh mengandung karakter dan bilangan negatif) Non valid valid Memproses perhitungan menggunakan algoritma LoOP Menampilkan hasil deteksi outlier dalam tabel deteksi beserta jumlah data dan lama deteksi End PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 10. Diagram Aktivitas Simpan Hasil Outlier Pengguna Sistem Start Menampilkan hasil deteksi pada tabel hasil outlier Menekan button simpan Menampilkan dialog JFileChooser untuk menyimpan file Memilih lokasi file penyimpanan, mengisi nama file, memilih ekstensi file (doc, xls atau txt) Menekan button save Menyimpan file End 144 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 145 LAMPIRAN 6 Diagram Kelas Analisis Pengguna HalamanAwal Halaman Utama HalamanPilihFile HalamanPilihDB CheckBoxTableModel DatabaseController SeleksiAtribut HalamanPilihDatabase KoneksiDataBase Verteks Graph LoopTableModel HalamanBantuan HalamanTentang DataLoop PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 146 LAMPIRAN 7 Diagram Sequence 1. Diagram Sequence Input Data Excel (.xls atau .csv) <<boundary>> Halaman Utama <<entity>> CheckBoxTableModel 1. Tekan button 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 tabel_DataPreprocess 10. Menampilkan data ke tabel_SeleksiAtribut <<entity>> Seleksi Atribut PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 2. 147 Diagram Sequence Pilih Database <<boundary>> HalamanUtama <<boundary>> HalamanPilihDB <<controller>> DBControl <<entity>> koneksiDB 1. Tekan button Pilih File 3. Menampilkan halaman pilih db 2. db.setVisible(true) 4.Memilih koneksi db, isi username, password, dbname, dan url 5.pilihDB() 6. selectTable(getConnection, table) 7.isConnectedSQL(), isConnectedOrcl() 8.isConnected(true) 9.showTable() 10.tampil HalamanPilihTable 11. memilih tabel 12. selectTable() 13. menampilkan data tabel_DataPreprocess 14. new CheckBoxTableModel() 15. setAtribut(columnName) 16. setPilih(false) 17. add(column, seleksiAtribut) 18. tampil data pada tabel_DataPreprocess 19. tampil data pada tabel_SeleksiAtribut <<boundary>> HalamanPilihTabel <<entity>> CheckBoxTableModel <<entity>> SeleksiAtribut PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3. Diagram Sequence Deteksi Outlier <<boundary>> HalamanUtama <<controller>> Graph <<entity>> Vertex <<entity>> LoopTabelModel 1. memasukkan parameter minpts dan lamda 2. klok button proses 3. inputData(jTable) 4. newGraph() 5. new Vertex() 6. setMinPts(minPts) 7. setLamda(lamda) 8. setDataLoop() 9. setLabe()l, setLoop() 10. setValueAt(), getValueAt() 11. TableModel 12. tampil outlier 4. 148 Diagram Sequence Simpan Outlier <<boundary>> Halaman Utama 1. Tekan button simpan 2. tampil save dialog 3. memilih lokasi penyimpanan 4. mengisi nama file 5. memilih tipe ekstensi file (xls, doc, txt) 6. menekan button save 7. simpanLOOP() 8. konfirmasi file berhasil disimpan <<boundary>> HalamanPilihTabel <<entity>> DataLoop PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 5. 149 Diagram Sequence Seleksi Atribut <<boundary>> Halaman Utama <<entity>> CheckBoxTableModel 1. Tandai atribut yang akan dihapus 2. klik button hapus atribut 3. hapusAtribut() 4. removeRow() 5. getpilih() 6. menampilkan data pada tabel_dataPreprocess yang telah diseleksi atributnya <<entity>> SeleksiAtribut PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 150 LAMPIRAN 8 Diagram Kelas Desain 1 <<boundary>> HalamanAwal memanggil 1 1 <<boundary>> HalamanUtama memanggil 1 <<boundary>> HalamanPilihFile 1 1 memanggil <<boundary>> HalamanPilihDB 1 1 <<entity>> CheckBoxTableModel 1 1 <<boundary>> HalamanBantuan 1 <<boundary>> HalamanTentang <<entity>> KoneksiDB 1…* memanggil 1 <<controller>> Graph memanggil 1 memanggil <<controller>> DBControl 1…* memanggil memanggil <<boundary>> HalamanPilihTable 1 memanggil memanggil 1 memanggil memiliki <<entity>> SeleksiAtribut 1…* 1…* memanggil <<entity>> Vertex 1 <<entity>> DataLoop 1 memanggil <<entity>> LoopTableModel PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI LAMPIRAN 9 Diagram Kelas Berikut ini merupakan rincian atribut dan method masing-masing kelas <<entity>> koneksiDB - jdbcURL : String - user : String - password : String - conn : Connection koneksiSQL( String, String, String) : Connection isConnectedSQL (String, String, String) : Boolean koneksiOrcl (String, String, String) : Connection isConnectedOracle (String, String, String) : Boolean isConnected( ) : Boolean getClosed( ) : Boolean setConn(Connection) : void getConn( ) : Connection setJdbcURL(String) : void getJdbcURL( ) : String setPassword(String) : void getPassword( ) : String setUser(String) : void getUser( ) : String 151 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI <<controller>> DBControl displayTableOracle(Connection) : ResultSet displayTableMySql(Connection) : ResultSet selectTable(Connection, String) : ResultSet <<entity>> Vertex - label : String - nilai : List<Double> - flagKunjungan : boolean - kDistance : Double - neighborhood : List<String> - pDist : Double - pLOF : Double - nPLOF : Double - LOOP : Double - anggotaNeighborhood : Double Vertex(String, List<Double>) : constructor setLabel(String) : void setNilai(List<Double>) : void setFlagKunjungan(Boolean) : void setKDistance(Double) : void setNeighborhood(List<String>) : void setpDist(Double) : void setPLOF(Double) : void setNPLOF (Double) : void setLOOP(Double) : void setAnggotaNeighborhood(Double) : void 152 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI getLabel( ) : String getNilai( ) : List<Double> getFlagKunjungan( ) : Boolean getKDistance( ) : Double getNeighborhood( ) : List<String> getPDist( ) : Double getPLOF( ) : Double getNPLOF( ) : Double getLOOP( ) : Double getAnggotaNeighborhood( ) : Double <<controller>> Graph - vertexList : Vertex[ ] - matriks : Double[ ] - jumlahVertex : int - k : int - dist : int[ ] - arStdev : Double[ ] - nPdist : Double[ ] - arPLOF ; Double[ ] - arLOOP1 : Double[ ] - neighborhood : int[ ][ ] - max : int - lamda : int Graph(int) : constructor setk(int) : void setMatriks(Double[ ][ ]) : void setVertexList(Vertex[ ]) : void setLamda(int) : void 153 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI getk( ) : int getLamda( ) : int getMatriks( ) : Double[ ][ ] getVertexList( ) : Vertex[ ] addVertex(String, List<Double>) : void addEdge(int, int, Double) : void cariJarak(int, int) : Double tampilJarak( ) : void search(String) : int search2(Double, int) : void Kdistance(int, int) : Double setKdistance(String, int) : void cariNeighborhood(Double, int) : List<String> setNeighborhood(String) : void setAnggotaNeighborhood(String, Double) : void cariAnggotaNeighborhood(int, Double) : Double tampilNeighbor( ) : void setJumlahAnggota( ) : void setPdist( ) : void caristdev( ) : void caripdist( ) : void cariLOOP( ) : void erf(Double) : Double inputData(JTable) : void setDataLoop(String) : LoOPTabelModel setDataLoop2(String, Double) : LoOPTabelModel 154 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI <<entity>> seleksiAtribut - atribut : String - pilih : Boolean seleksiAtribut(String, Boolean) : constructor setAtribut(String) : void setPilih(Boolean) : void getAtribut( ) : String) getPilih( ) : boolean <<controller>> CheckBoxTableModel - column : String[ ] - seleksi : seleksiAtribut - list : List<seleksiAtribut> CheckBoxTableModel( ) : constructor getRowCount( ) : int getColumnCount( ) : int getColumnName(int) : String getValueAt(int, int) : Object getColumnClass(int) : Class setValueAt(Object, int, int) : void isCellEditable(int, int) : Boolean add(int, seleksiAtribut) : void removeRow( ) : void 155 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI <<entity>> DataLoop - label : String - LoOP : Double - Ranking : int setLabel(String) : void setLoOP(Double) : void setRanking(int) : void getLabel( ) : String getLoOP( ) : Double getRanking( ) : int <<entity>> LoOPTabelModel - dlo : List<DataLoOP> LoOPTabelModel(List<DataLoop>, String) : constructor setValueAt(Object, int, int) : void isCellEditable(int, int) : boolean getValueAt(int, int) : Object getRowCount( ) : int getColumnCount( ) : int getColumnName(int) : String 156 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 157 LAMPIRAN 10 Listing Program 1. Implementasi Kelas koneksiDB.java Berikut ini merupakan implementasi dari atribut dan method pada kelas koneksiDB.java yang digunakan untuk melakukan koneksi pada basis data. package Model; import java.sql.*; public class koneksiDB { private static String jdbcURL; private static String user; private static String password; static Connection conn = null; public koneksiDB(){} public Connection koneksiSQL(String url, String user, String passw) { try { Class.forName("org.gjt.mm.mysql.Driver"); setConn(DriverManager.getConnection(url, user, passw)); System.out.println("koneksi berhasil"); } catch (Exception ex) { System.out.println("message: " + ex.getMessage()); } return getConn(); } public boolean isConnectedSQL(String url, String user, String passw) { if (koneksiSQL(url, user, passw) != null) { return true; } else { return false; } PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 158 } public Connection koneksiOrcl(String url, String user, String passw) { try { Class.forName("oracle.jdbc.driver.OracleDriver"); setConn(DriverManager.getConnection(url, user, passw)); System.out.println("koneksi berhasil"); } catch (Exception ex) { System.out.println("message: " + ex.getMessage()); } return getConn(); } public boolean isConnectedOracle(String url, String user, String passw) { if (koneksiOrcl(url, user, passw) != null) { return true; } else { return false; } } public boolean isConnected() { if (conn != null) { return true; } else { return false; } } public boolean getClosed() { if (isConnected()) { try { conn.close(); conn = null; PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI } catch (SQLException ex) { ex.printStackTrace(); } return true; } else { return false; } } public static Connection getConn() { return conn; } public static void setConn(Connection conn) { koneksiDB.conn = conn; } public static String getJdbcURL() { return jdbcURL; } public static void setJdbcURL(String jdbcURL) { koneksiDB.jdbcURL = jdbcURL; } public static String getPassword() { return password; } public static void setPassword(String password) { koneksiDB.password = password; } public static String getUser() { return user; } public static void setUser(String user) { koneksiDB.user = user; } } 159 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 2. 160 Implementasi Kelas Graph.java Di dalam kelas ini atribut dan method dibuat sesuai perancangan. Kelas ini merupakan kelas yang memuat perancangan struktur data yang berkaitan dengan algoritma seperti implementasi matriks dua dimensi dan graf. Selain itu pada method ini memuat proses perhitungan menggunakan algoritma Local Outlier Probability. package Controller; import Model.*; import java.util.*; import javax.swing.JTable; public class Graph { private Vertex vertexList[]; private Double matriks[][]; private int jumlahVertex = 0; private int k; private int dist[]; private Double arStdev[]; private Double nPdist[]; private Double arPLOF[]; private Double arLOOP1[]; private int neighborhood[][]; private int max; private int lamda; public Graph(int maxVertex) { vertexList = new Vertex[maxVertex]; matriks = new Double[maxVertex][maxVertex]; neighborhood = new int[maxVertex][maxVertex]; max = maxVertex + 1; dist = new int[maxVertex]; PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI arStdev = new Double[maxVertex]; nPdist = new Double[maxVertex]; arPLOF = new Double[maxVertex]; arLOOP1 = new Double[maxVertex]; for (int i = 0; i < maxVertex; i++) { for (int j = 0; j < maxVertex; j++) { if (i == j) { matriks[i][j] = 0.0; } else { matriks[i][j] = -1.0; } } } } public void setk(int k) { this.k = k; } public void setMatriks(Double[][] matriks) { this.matriks = matriks; } public void setvertexList(Vertex[] vertexList) { this.vertexList = vertexList; } public int getk() { return k; } public int getLamda() { return lamda; } public void setLamda(int lamda) { 161 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI this.lamda = lamda; } public Double[][] getMatriks() { return matriks; } public Vertex[] getvertexList() { return vertexList; } public void addVertex(String label, List<Double> nilai) { vertexList[jumlahVertex++] = new Vertex(label, nilai); } public void addEdge(int awal, int akhir, Double nilai) { matriks[awal][akhir] = matriks[akhir][awal] = nilai; } public Double cariJarak(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); } return Math.sqrt(total); } public void tampilJarak() { System.out.print("\t"); for (int i = 0; i < vertexList.length; i++) { System.out.print("" + vertexList[i].getLabel() + "\t"); } System.out.println(""); 162 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI for (int i = 0; i < matriks.length; i++) { System.out.print("" + vertexList[i].getLabel() + "\t"); for (int j = 0; j < vertexList.length; j++) { System.out.print("" + matriks[i][j] + "\t"); } } } public int Search(String label) { for (int i = 0; i < vertexList.length; i++) { if (label.equals(vertexList[i].getLabel())) { return i; } } return -1; } public void Search2(Double jarak, int indeks) { for (int i = 0; i < vertexList.length; i++) { if (matriks[indeks][i].equals(jarak)) { vertexList[i].setFlagKunjungan(true); } } } public Double Kdistance(int indeks, int jangkaun) { for (int i = 0; i < vertexList.length; i++) { vertexList[i].setFlagKunjungan(false); } Double[] a; a = new Double[jangkaun]; Double kDistance = 0.0; Double temp1 = Double.MAX_VALUE; 163 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 164 if (indeks == -1) { System.out.println("Data tidak ada"); } else { for (int t = 0; t < a.length; t++) { for (int i = 0; i < vertexList.length; i++) { if (matriks[indeks][i] != -1 && matriks[indeks][i] != 0 && vertexList[i].isFlagKunjungan() == false) { if (matriks[indeks][i] < temp1) { temp1 = matriks[indeks][i]; } } } a[t] = temp1; Search2(temp1, indeks); temp1 = Double.MAX_VALUE; } } for (int i = 0; i < a.length; i++) { if (kDistance < a[i]) { kDistance = a[i]; } } return kDistance; } public void setKdistance(String label, int jangkauan) { int index = Search(label); vertexList[index].setkDistance(Kdistance(index, jangkauan)); } public List<String> cariNeighborhood(Double k, int indeks) { List<String> a = new ArrayList<String>(); if (indeks == -1) { PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 165 System.out.println("Tidak ada data"); } else { for (int i = 0; i < vertexList.length; i++) { if (matriks[indeks][i] != -1 && matriks[indeks][i] != 0) { if (matriks[indeks][i] < Kdistance(i, (getk() + 1))) { a.add(vertexList[i].getLabel()); } } } } return a; } public void setNeighborhood(String label) { int indeks = Search(label); vertexList[indeks].setNeighborhood(cariNeighborhood(vertexList[indeks ].getAnggotaNeighborhood(), indeks)); } public void setAnggotaNeighborhood(String label, Double k) { int indeks = Search(label); vertexList[indeks].setAnggotaNeighborhood(cariAnggotaNeighborhood(i ndeks, k)); } public Double cariAnggotaNeighborhood(int indeks, Double k) { for (int i = 0; i < vertexList.length; i++) { vertexList[i].setFlagKunjungan(false); } Double AnggotaNeighbor = 0.0; Double temp1 = Double.MAX_VALUE; int anggotaNeighbor = 0; PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 166 if (indeks == -1) { System.out.println("Tidak ada kota dalam peta"); } else { for (int i = 0; i < vertexList.length; i++) { if (matriks[indeks][i] != -1 && vertexList[i].isFlagKunjungan() == false) { if (matriks[indeks][i] < Kdistance(i, (getk() + 1))) { temp1 = matriks[indeks][i]; anggotaNeighbor = anggotaNeighbor + dist[i]; } } } AnggotaNeighbor = temp1; Search2(temp1, indeks); temp1 = Double.MAX_VALUE; } return AnggotaNeighbor; } public void tampilNeighbor() { int n = 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 (matriks[i][j] != 0 && matriks[i][j] != -1) { if (matriks[i][j] < Kdistance(i, (getk() + 1))) { n = n + 1; System.out.println("anggota neighborhood[" + j + "]" + matriks[i][j] + "\t"); } } } PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI System.out.println("nk(o) [" + i + "] = " + n); System.out.println(""); n = 0; } } public void setJumlahAnggota() { int x = 0; Double stdev = 0.0; for (int i = 0; i < vertexList.length; i++) { for (int j = 0; j < vertexList.length; j++) { if (matriks[i][j] !=0 && matriks[i][j] != -1){ if (matriks[i][j] < Kdistance(i, (getk() + 1))) { x = x + 1; neighborhood[i][j] = j; } else { neighborhood[i][j] = max; } } } dist[i] = x; x = 0; } } public void setPdist(){ double stdev=0.0; double pdist = 0.0; Double temp1 = Double.MAX_VALUE; for (int i= 0; i < matriks.length; i++) { for (int j= 0; j < vertexList.length; j++) { if (matriks[i][j] != 0 && matriks[i][j] != -1){ temp1 = matriks[i][j]; 167 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI if (matriks[i][j] < Kdistance(i, (getk() +1))){ stdev = stdev + Math.pow(matriks[i][j], 2); } } } stdev = Math.sqrt((stdev / getk())); arStdev[i]=stdev; pdist = arStdev[i] * getLamda() ; nPdist[i] = pdist; stdev = 0; } } public void caristdev(){ Double stdev=0.0; Double temp1=Double.MAX_VALUE; for (int i= 0; i < matriks.length; i++) { for (int j= 0; j < vertexList.length; j++) { if (matriks[i][j] !=0 && matriks[i][j] != -1){ temp1 = matriks[i][j]; if(matriks[i][j] < Kdistance(i, (getk() +1))){ stdev = stdev + Math.pow(matriks[i][j], 2); } } } stdev = Math.sqrt((stdev / getk())); arStdev[i]=stdev; System.out.println("stdev [" + i + "] : " + stdev + "\t"); System.out.println(""); stdev = 0.0; } } 168 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI public void caripdist(){ Double pdist=0.0; Double temp1=Double.MAX_VALUE; for (int i= 0; i < matriks.length; i++) { pdist = arStdev[i] * getLamda(); System.out.println("pdist [" + i + "] : " + pdist + "\t"); } System.out.println(""); pdist = 0.0; } public void cariJumlahPdist() { Double sum = 0.0; Double jumlahPdist = 0.0; Double plof=0.0; Double plof2 = 0.0; Double jmlPLOF2=0.0; Double nplof = 0.0; Double loop1=0.0; Double loopx=0.0; for (int i = 0; i <matriks.length; i++) { setPdist(); for (int j= 0; j < neighborhood.length; j++) { if (matriks[i][j] != 0 && matriks[i][j] != -1){ if (matriks[i][j] < Kdistance(i, (getk() + 1))){ jumlahPdist = jumlahPdist + nPdist[j]; } } } sum = sum + jumlahPdist; plof = (((nPdist[i] * getk()) / jumlahPdist) - 1); arPLOF[i] = plof; 169 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI System.out.println("PLOF [" + i + "] : " + plof); System.out.print("\t"); plof2 = Math.pow(plof, 2); jmlPLOF2 = jmlPLOF2 +plof2; System.out.print("\t"); jumlahPdist = 0.0; plof=0.0; plof2=0.0; } int jmlMahasiswa = vertexList.length; nplof = lamda *(Math.sqrt(jmlPLOF2/jmlMahasiswa)); System.out.println("nplof = " +nplof); for (int i = 0; i <matriks.length; i++) { loopx = nplof * Math.sqrt(2); loop1 = (arPLOF[i] / loopx); arLOOP1[i] = loop1; System.out.println("hasil loop1 [" + i + "] : " + loop1); Double hasil_LOOP = erf(arLOOP1[i]); System.out.println("ERF [" + i + "] : " + hasil_LOOP); if(erf(arLOOP1[i])>0){ System.out.println("OUTLIER"); }else{ System.out.println("BUKAN OUTLIER"); } vertexList[i].setLOOP(hasil_LOOP); } } public static Double erf(Double z) { double t = 1.0 / (1.0 + 0.5 * Math.abs(z)); // use Horner's method 170 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 171 double ans = 1 - t * Math.exp( -z*z - 1.26551223 + t * ( 1.00002368 + t * ( 0.37409196 + t * ( 0.09678418 + t * (-0.18628806 + t * ( 0.27886807 + t * (-1.13520398 + t * ( 1.48851587 + t * (-0.82215223 + t * ( 0.17087277)))))))))); if (z >= 0) return ans; else return -ans; } 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(); listNilai.add(Double.parseDouble(jTableData.getValueAt(i, j).toString().replace(",", "."))); } } else { if (jTableData.getValueAt(i, j).toString().equals("")) { listNilai.add(0.0); } else if (jTableData.getValueAt(i, PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 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, cariJarak(i, j)); } } } } public LoOPTabelModel setDataLoop(String label) { List<DataLoop> dlc = new ArrayList<DataLoop>(); DataLoop dl; for (int i = 0; i < vertexList.length; i++) { if (vertexList[i].getLOOP()>0) { dl = new DataLoop(); dl.setLabel(vertexList[i].getLabel()); dl.setLoOP(vertexList[i].getLOOP()); dlc.add(dl); } } LoOPTabelModel ltm = new LoOPTabelModel(dlc, label); 172 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 173 return ltm; } public LoOPTabelModel setDataLoop2(String label, Double batasLoop) { List<DataLoop> dlp = new ArrayList<DataLoop>(); DataLoop dl; for (int i = 0; i < vertexList.length; i++) { if (vertexList[i].getLOOP()>= batasLoop) { dl = new DataLoop(); dl.setLabel(vertexList[i].getLabel()); dl.setLoOP(vertexList[i].getLOOP()); dlp.add(dl); } } LoOPTabelModel ltm = new LoOPTabelModel(dlp, label); return ltm; } } 3. Implementasi Kelas Vertex.java Kelas ini merupakan kelas yang digunakan utnuk menyimpan data obyek dalam bentuk vertex dimana sebuah vertex memiliki atribut label dan nilai dalam bentuk list. Atribut outlier bertipe Boolean digunakan untuk memberi nilai Boolean pada suatu vertex apakah vertex tersebut outlier atau tidak. package Model; import java.util.List; public class Vertex { private String label; List<Double> nilai; private boolean flagKunjungan = false; PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI private Double kDistance; private List<String> neighborhood; private Double pDist; private Double pLOF; private Double nPLOF; private Double LOOP; private Double anggotaNeighborhood; public Vertex(String label, List<Double> nilai1) { setLabel(label); setNilai(nilai1); } public void setLabel(String label) { this.label = label; } public void setLOOP(Double LOOP) { this.LOOP = LOOP; } public void setFlagKunjungan(boolean flagKunjungan) { this.flagKunjungan = flagKunjungan; } public void setkDistance(Double kDistance) { this.kDistance = kDistance; } public void setnPLOF(Double nPLOF) { this.nPLOF = nPLOF; } public void setNeighborhood(List<String> neighborhood) { this.neighborhood = neighborhood; } public void setNilai(List<Double> nilai) { 174 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI this.nilai = nilai; } public void setpDist(Double pDist) { this.pDist = pDist; } public void setpLOF(Double pLOF) { this.pLOF = pLOF; } public Double getLOOP() { return LOOP; } public boolean isFlagKunjungan() { return flagKunjungan; } public Double getkDistance() { return kDistance; } public String getLabel() { return label; } public Double getnPLOF() { return nPLOF; } public List<String> getNeighborhood() { return neighborhood; } public List<Double> getNilai() { return nilai; } public Double getpDist() { return pDist; 175 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 176 } public Double getpLOF() { return pLOF; } public Double getAnggotaNeighborhood() { return anggotaNeighborhood; } public void setAnggotaNeighborhood(Double anggotaNeighborhood) { this.anggotaNeighborhood = anggotaNeighborhood; } } 4. Implementasi Kelas seleksiAtribut.java Kelas ini merupakan kelas yang akan menyimpan atribut yang ada dalam jTable data yang diinputkan oleh pengguna. package Model; public class seleksiAtribut { private String atribut; private Boolean pilih; public seleksiAtribut(){} public seleksiAtribut(String vl, boolean st) { atribut= vl; pilih = new Boolean(st); } public String getAtribut() { return atribut; } public void setAtribut(String atribut) { this.atribut = atribut; PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 177 } public Boolean getPilih() { return pilih; } public void setPilih(Boolean pilih) { this.pilih = pilih; } } 5. Implementasi Kelas checkBoxTableModel.java Kelas ini digunakan untuk menampilkan tabel seleksi atribut beserta check box agar pengguna dapat memilih atribut mana saja yang ingin dihapus. package Model; import javax.swing.table.AbstractTableModel; import java.util.*; public class CheckBoxTableModel extends AbstractTableModel{ String[] column = {"Atribut", "Pilih"}; seleksiAtribut seleksi = new seleksiAtribut("", false); List<seleksiAtribut> list; public CheckBoxTableModel() { list = new ArrayList<seleksiAtribut>(); } public int getRowCount() { return list.size(); } public int getColumnCount() { return column.length; } PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 178 @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(); } @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){ PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 179 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> s = new ArrayList<seleksiAtribut>(); for (seleksiAtribut seleksi : list) { if (!seleksi.getPilih()) { s.add(seleksi); } } list = s; fireTableDataChanged(); } } 6. Implementasi Kelas DBControl.java Kelas ini digunakan untuk mengkoneksikan sistem dengan basis data. Di kelas ini juga terdapat method untuk menampilkan data yang ada di basis data agar dapat tampil di sistem. package Controller; import java.sql.*; public class DBControl { public ResultSet displayTableOracle(Connection conn) throws SQLException { Statement stmt; ResultSet rset; PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI String query; stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); query = "select table_name from user_tables"; System.out.println("\nExecuting query: " + query); rset = stmt.executeQuery(query); return rset; } public ResultSet displayTablaMySql(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 table) throws SQLException { Statement stmt; ResultSet rset; String query; stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); query = "select * from "+table; 180 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 181 System.out.println("\nExecuting query: " + query); rset = stmt.executeQuery(query); return rset; } } 7. Implementasi Kelas DataLoop.java Kelas ini digunakan untuk menyimpan hasil outlier dalam sistem. Atribut yang disimpan adalah label, derajat LoOP dan ranking. package Model; public class DataLoop { private String label; private Double LoOP; private int ranking; public String getLabel() { return label; } public void setLabel(String label) { this.label = label; } public Double getLoOP() { return LoOP; } public void setLoOP(Double LoOP) { this.LoOP = LoOP; } public int getRanking() { return ranking; } PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 182 public void setRanking(int ranking) { this.ranking = ranking; } } 8. Implementasi Kelas LoopTableModel.java Kelas ini digunakan untuk menyajikan hasil deteksi outlier ke dalam tabel. Dengan ini pengguna akan merasa lebih mudah dalam melihat hasil deteksi outlier dan bisa tahu ranking setiap mahasiswa outlier tersebut. package Model; import java.util.*; import javax.swing.table.AbstractTableModel; public class LoOPTabelModel extends AbstractTableModel{ private List<DataLoop> dlo = new ArrayList<DataLoop>(); public LoOPTabelModel(List<DataLoop> dlo, String label){ this.dlo=dlo; label = label; } public int getRowCount() { return dlo.size(); } public int getColumnCount() { return 3; } public Object getValueAt(int rowIndex, int columnIndex) { DataLoop dloop = dlo.get(rowIndex); switch(columnIndex){ case 0: return dloop.getLabel(); case 1: PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI return dloop.getLoOP(); case 2: return dloop.getRanking(); default: return ""; } } public String getColumnName(int column) { switch (column) { case 0: return "Mahasiswa"; case 1: return "LoOP"; case 2: return "Ranking"; default: return ""; } } 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).setLoOP((Double) val); break; 183 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 184 case 2: dlo.get(rowIndex).setRanking((Integer) val); } fireTableCellUpdated(rowIndex, columnIndex); } } 9. Implementasi Kelas HalamanAwal.form Halaman awal merupakan halaman pertama yang akan tampil ketika sistem dijalankan. Pada halaman ini terdapat fungsi yang menghubungkan ke halaman utama. package View; public class HalamanAwal extends javax.swing.JFrame { /** Creates new form HalamanAwal */ public HalamanAwal() { initComponents(); setTitle("Halaman Awal Sistem Pendeteksi Outlier Algoritma LoOP"); setLocationRelativeTo(this); } private void initComponents() { jDesktopPane1 = new javax.swing.JDesktopPane(); jPanel1 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); btnMasuk = new javax.swing.JButton(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 185 setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CL OSE); getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout()); getContentPane().add(jDesktopPane1, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, -1, -1)); jPanel1.setBackground(new java.awt.Color(247, 221, 221)); jLabel1.setFont(new java.awt.Font("Tahoma", 1, 18)); jLabel1.setText("SISTEM PENDETEKSI OUTLIER"); jLabel2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/image/logo.png"))); // NOI18N btnMasuk.setBackground(new java.awt.Color(255, 102, 255)); btnMasuk.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N btnMasuk.setText("MASUK"); btnMasuk.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnMasukActionPerformed(evt); } }); jLabel3.setFont(new java.awt.Font("Tahoma", 1, 12)); jLabel3.setText("Erlita Octaviani"); jLabel4.setFont(new java.awt.Font("Tahoma", 1, 12)); jLabel4.setText("105314019"); jLabel5.setText("Universitas Sanata Dharma Yogyakarta"); jLabel6.setText("Copyright © 2014"); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI javax.swing.GroupLayout jPanel1Layout = 186 new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment. LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout. Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(199, 199, 199) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout. Alignment.TRAILING, false) .addComponent(jLabel2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(btnMasuk, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(jPanel1Layout.createSequentialGroup() .addComponent(jLabel3) .addGap(9, 9, 9)) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup() .addGap(10, 10, 10) PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 187 .addComponent(jLabel4)))) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(160, 160, 160) .addComponent(jLabel5)) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(212, 212, 212) .addComponent(jLabel6)) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(111, 111, 111) .addComponent(jLabel1))) .addContainerGap(122, Short.MAX_VALUE)) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment. LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(33, 33, 33) .addComponent(jLabel1) .addGap(28, 28, 28) .addComponent(jLabel2) .addGap(18, 18, 18) .addComponent(btnMasuk, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(33, 33, 33) .addComponent(jLabel3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRE LATED) .addComponent(jLabel4) PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 188 .addGap(25, 25, 25) .addComponent(jLabel5) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRE LATED) .addComponent(jLabel6) .addContainerGap(30, Short.MAX_VALUE)) ); getContentPane().add(jPanel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 510, 400)); pack(); }// </editor-fold> private void btnMasukActionPerformed(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); } }); } // Variables declaration - do not modify private javax.swing.JButton btnMasuk; private javax.swing.JDesktopPane jDesktopPane1; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 189 private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JPanel jPanel1; // End of variables declaration } 10. Implementasi kelas HalamanBantuan.form Halaman ini berisi tentang petunjuk penggunaan sistem untuk melakukan deteksi outlier menggunakan algoritma Local Outlier Probability. 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(); setTitle("Halaman Bantuan"); setLocationRelativeTo(this); this.getMaximumSize(); } private void initComponents() { jDesktopPane1 = new javax.swing.JDesktopPane(); jPanel1 = new javax.swing.JPanel(); jLabel5 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); jPanel2 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); home = new javax.swing.JLabel(); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI jPanel3 = new javax.swing.JPanel(); jButton2 = new javax.swing.JButton(); jLabel2 = new javax.swing.JLabel(); btn_tentang = new javax.swing.JButton(); btn_bantuan = new javax.swing.JButton(); btn_keluar = new javax.swing.JButton(); jLabel3 = new javax.swing.JLabel(); jLabel14 = new javax.swing.JLabel(); jPanel4 = new javax.swing.JPanel(); jLabel4 = new javax.swing.JLabel(); jLabel7 = new javax.swing.JLabel(); jLabel8 = new javax.swing.JLabel(); jLabel17 = new javax.swing.JLabel(); jLabel20 = new javax.swing.JLabel(); jLabel9 = new javax.swing.JLabel(); jLabel10 = new javax.swing.JLabel(); jLabel18 = new javax.swing.JLabel(); jLabel19 = new javax.swing.JLabel(); jLabel21 = new javax.swing.JLabel(); jLabel11 = new javax.swing.JLabel(); jLabel13 = new javax.swing.JLabel(); jLabel15 = new javax.swing.JLabel(); jLabel16 = new javax.swing.JLabel(); jLabel22 = new javax.swing.JLabel(); jLabel23 = new javax.swing.JLabel(); jLabel24 = new javax.swing.JLabel(); jLabel25 = new javax.swing.JLabel(); jLabel26 = new javax.swing.JLabel(); jLabel27 = new javax.swing.JLabel(); jLabel29 = new javax.swing.JLabel(); jLabel30 = new javax.swing.JLabel(); 190 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 191 private void btn_tentangActionPerformed(java.awt.event.ActionEvent evt) { HalamanTentang tentang = new HalamanTentang(); tentang.setVisible(true); this.dispose(); } private void btn_bantuanActionPerformed(java.awt.event.ActionEvent evt) { HalamanBantuan bnt = new HalamanBantuan(); bnt.setVisible(true); this.dispose(); } private void homeMouseClicked(java.awt.event.MouseEvent evt) { HalamanUtama utm = new HalamanUtama(); utm.setVisible(true); this.dispose(); } private void btn_keluarActionPerformed(java.awt.event.ActionEvent evt) { int ask = JOptionPane.showConfirmDialog(null, "Apakah Anda yakin ingin " + "Keluar?", "Konfirmasi", JOptionPane.YES_NO_OPTION); if (ask == JOptionPane.YES_OPTION) { this.dispose(); } else if (ask == JOptionPane.NO_OPTION) { return; } } private javax.swing.JButton btn_bantuan; private javax.swing.JButton btn_keluar; private javax.swing.JButton btn_tentang; PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI private javax.swing.JLabel home; private javax.swing.JButton jButton2; private javax.swing.JDesktopPane jDesktopPane1; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel10; private javax.swing.JLabel jLabel11; 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 jLabel18; private javax.swing.JLabel jLabel19; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel20; private javax.swing.JLabel jLabel21; private javax.swing.JLabel jLabel22; private javax.swing.JLabel jLabel23; private javax.swing.JLabel jLabel24; private javax.swing.JLabel jLabel25; private javax.swing.JLabel jLabel26; private javax.swing.JLabel jLabel27; private javax.swing.JLabel jLabel29; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel30; 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; 192 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 193 private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel4; // End of variables declaration } 11. Implementasi Kelas HalamanPilihDB.form Halaman pilih database digunakan untuk menyambungkan sistem dengan koneksi database. package View; import Model.koneksiDB; import java.awt.Color; import javax.swing.JOptionPane; public class HalamanPilihDatabase extends javax.swing.JFrame { /** Creates new form PilihDatabase */ public HalamanPilihDatabase() { initComponents(); setTitle("Halaman Pilih Database"); setResizable(false); setLocationRelativeTo(this); Combo_pilihkoneksi.setSelectedIndex(-1); } public void pilihDatabase() { if (Combo_pilihkoneksi.getSelectedIndex() == 0) { if (TF_username.getText().isEmpty() TF_password.getText().isEmpty() || TF_URL.getText().isEmpty()) { if (TF_username.getText().isEmpty()) { || PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 194 TF_username.setBackground(Color.red); } if (TF_password.getText().isEmpty()) { TF_password.setBackground(Color.red); } if (TF_URL.getText().isEmpty()) { TF_URL.setBackground(Color.red); } if (TF_dbname.getText().isEmpty()) { TF_dbname.setBackground(Color.red); } JOptionPane.showMessageDialog(null, "Username, Password, URL tidak boleh kosong!"); } else { String username = TF_username.getText(); String password = TF_password.getText(); String url = TF_URL.getText(); String database = TF_dbname.getText(); koneksiDB conn = new koneksiDB(); boolean kon = conn.isConnectedSQL(url + database, username, password); if (kon == true) { JOptionPane.showMessageDialog(null, "Koneksi ke Database MySQL Berhasil"); HalamanPilihTabel pt = new HalamanPilihTabel(conn, Combo_pilihkoneksi.getSelectedItem().toString()); pt.setVisible(true); this.dispose(); } else { JOptionPane.showMessageDialog(null, Password, URL yang anda masukkan salah"); "Username, PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 195 TF_username.setText(""); TF_password.setText(""); TF_dbname.setText(""); TF_URL.setText(""); } } } else if (Combo_pilihkoneksi.getSelectedIndex() == 1) { if (TF_username.getText().isEmpty() || TF_password.getText().isEmpty() || TF_dbname.getText().isEmpty() || TF_URL.getText().isEmpty()) { if (TF_username.getText().isEmpty()) { TF_username.setBackground(Color.red); } if (TF_password.getText().isEmpty()) { TF_password.setBackground(Color.red); } if (TF_URL.getText().isEmpty()) { TF_URL.setBackground(Color.red); } if (TF_dbname.getText().isEmpty()) { TF_dbname.setBackground(Color.red); } JOptionPane.showMessageDialog(null, "Username, Password, URL tidak boleh kosong!"); } else { String username = TF_username.getText(); String password = TF_password.getText(); String url = TF_URL.getText(); String database = TF_dbname.getText(); koneksiDB conn = new koneksiDB(); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI boolean kon = conn.isConnectedOracle(url, 196 username, password); if (kon == true) { JOptionPane.showMessageDialog(null, "Koneksi ke Database Oracle Berhasil"); HalamanPilihTabel pt = new HalamanPilihTabel(conn, Combo_pilihkoneksi.getSelectedItem().toString()); pt.setVisible(true); this.dispose(); } else { JOptionPane.showMessageDialog(null, Password, URL yang anda masukkan salah"); TF_username.setText(""); TF_password.setText(""); TF_dbname.setText(""); TF_URL.setText(""); } } } } jLabel1 = new javax.swing.JLabel(); Combo_pilihkoneksi = new javax.swing.JComboBox(); TF_username = new javax.swing.JTextField(); TF_URL = new javax.swing.JTextField(); TF_dbname = new javax.swing.JTextField(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); TF_password = new javax.swing.JPasswordField(); btn_batal = new javax.swing.JButton(); "Username, PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 197 btn_OK = new javax.swing.JButton(); private void btn_OKActionPerformed(java.awt.event.ActionEvent evt) { pilihDatabase(); } private void btn_batalActionPerformed(java.awt.event.ActionEvent evt) { HalamanUtama utama = new HalamanUtama(); utama.setVisible(true); this.dispose(); } private void Combo_pilihkoneksiActionPerformed(java.awt.event.ActionEvent evt) { if (Combo_pilihkoneksi.getSelectedIndex() == 0){ TF_dbname.setText(null); TF_dbname.enable(); TF_URL.setText("jdbc:mysql://localhost:3306/"); } else if (Combo_pilihkoneksi.getSelectedIndex() == 1){ TF_dbname.setText(null); TF_dbname.enable(); TF_URL.setText("jdbc:oracle:thin:@localhost:1521:XE"); } else { TF_dbname.setText(null); } } } // Variables declaration - do not modify private javax.swing.JComboBox Combo_pilihkoneksi; private javax.swing.JTextField TF_URL; private javax.swing.JTextField TF_dbname; private javax.swing.JPasswordField TF_password; PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 198 private javax.swing.JTextField TF_username; private javax.swing.JButton btn_OK; private javax.swing.JButton btn_batal; 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; // End of variables declaration } 12. Implementasi Kelas HalamanPilihFile.form Pada halaman ini memungkinkan pengguna untuk menginput data .xls atau .csv. halaman ini berupa File Chooser. package View; public class HalamanPilihFile extends javax.swing.JFrame { /** Creates new form PilihFile */ public HalamanPilihFile() { initComponents(); setTitle("Halaman Pilih File"); setLocationRelativeTo(this); } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new HalamanPilihFile().setVisible(true); } }); } // Variables declaration - do not modify PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 199 private javax.swing.JFileChooser jFileChooser1; // End of variables declaration } 13. Implementasi Kelas HalamanPilihTabel.form Halaman ini merupakan halaman yang muncul jika pengguna berhasil login database. Maka sistem akan menampilkan tabel yang ada dalam basis data yang dipilih. package View; import Controller.DBControl; import java.sql.ResultSet; import java.sql.SQLException; import java.util.logging.Level; import java.util.logging.Logger; import Model.koneksiDB; public class HalamanPilihTabel extends javax.swing.JFrame { koneksiDB kd; public HalamanPilihTabel(koneksiDB kd, String db) { this.kd = kd; initComponents(); setLocationRelativeTo(this); comboPilih.setSelectedIndex(-1); try { DBControl dc = new DBControl(); ResultSet rset; if (db.equals("Oracle")) { rset = dc.displayTableOracle(kd.getConn()); while (rset.next()) { comboPilih.addItem(rset.getString(1)); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 200 } } else if (db.equals("MySql")) { rset = dc.displayTablaMySql(kd.getConn()); while (rset.next()) { comboPilih.addItem(rset.getString(1)); } } } catch (SQLException ex) { Logger.getLogger(HalamanPilihTabel.class.getName()).log(Level.SEVER E, null, ex); } } public void tampilDaftarTabel(koneksiDB koneksi, String database) { this.kd = kd; try{ DBControl dbc = new DBControl(); ResultSet rset; if (database.equals("Oracle")) { rset = dbc.displayTableOracle(koneksi.getConn()); while (rset.next()) { comboPilih.addItem(rset.getString(1)); } } else if (database.equals("MySql")) { rset = dbc.displayTablaMySql(koneksi.getConn()); while (rset.next()) { comboPilih.addItem(rset.getString(1)); } } } catch (SQLException ex) { PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 201 Logger.getLogger(HalamanPilihTabel.class.getName()).log(Level.SEVER E, null, ex); } } private void btn_OKActionPerformed(java.awt.event.ActionEvent evt) { HalamanUtama coba = new HalamanUtama(kd, comboPilih.getSelectedItem().toString()); coba.setVisible(true); this.dispose(); } private void btn_batalActionPerformed(java.awt.event.ActionEvent evt) { HalamanUtama utama = new HalamanUtama(); utama.setVisible(true); this.dispose(); } private javax.swing.JButton btn_OK; private javax.swing.JButton btn_batal; private javax.swing.JComboBox comboPilih; private javax.swing.JLabel jLabel1; } PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 202 14. Implementasi HalamanTentang.form Halaman ini menampilkan informasi pengembangan alat bantu deteksi outlier menggunakan algoritma Local Outlier Probability. package View; import javax.swing.JOptionPane; public class HalamanTentang extends javax.swing.JFrame { public HalamanTentang() { initComponents(); setTitle("Halaman Tentang"); setLocationRelativeTo(this); } private void homeMouseClicked(java.awt.event.MouseEvent evt) { HalamanUtama utama = new HalamanUtama(); utama.setVisible(true); this.dispose(); } private void btn_bantuanActionPerformed(java.awt.event.ActionEvent evt) { HalamanBantuan utama = new HalamanBantuan(); utama.setVisible(true); this.dispose(); } private void btn_tentangActionPerformed(java.awt.event.ActionEvent evt) { HalamanTentang utama = new HalamanTentang(); utama.setVisible(true); this.dispose(); } private void btn_keluarActionPerformed(java.awt.event.ActionEvent evt) { int ask = JOptionPane.showConfirmDialog(null, "Apakah Anda PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 203 yakin ingin " + "Keluar?", "Konfirmasi", JOptionPane.YES_NO_OPTION); if (ask == JOptionPane.YES_OPTION) { this.dispose(); } else if (ask == JOptionPane.NO_OPTION) { return; } } // Variables declaration - do not modify private javax.swing.JButton btn_bantuan; private javax.swing.JButton btn_keluar; private javax.swing.JButton btn_tentang; private javax.swing.JLabel home; private javax.swing.JButton jButton2; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel10; private javax.swing.JLabel jLabel11; 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 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; PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 204 private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel4; // End of variables declaration } 15. Implementasi Kelas HalamanUtama.form Kelas ini menyimpan tentang fungsi-fungsi utama dari dalam sistem yaitu proses pendeteksian. Berikut ini listing program dalam masing-masing kerja yaitu: package View; import Controller.Graph; import Controller.DBControl; import Model.seleksiAtribut; import Model.*; import java.awt.Component; import java.sql.*; import java.util.*; import javax.swing.*; import javax.swing.table.*; import java.io.*; import javax.swing.filechooser.FileNameExtensionFilter; import jxl.*; public class HalamanUtama extends javax.swing.JFrame { Graph graph; CheckBoxTableModel tabel_checkbox = new CheckBoxTableModel(); seleksiAtribut seleksi_atribut; /** Creates new form HalamanUtama */ public HalamanUtama() { PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 205 initComponents(); setTitle("Halaman Utama"); setLocationRelativeTo(this); jDesktopPane1.getMaximumSize(); jTabbedPane1.setEnabledAt(1, false); TF_pathData.setEditable(false); TF_jumlahData.setEditable(false); TF_jumlahAtribut.setEditable(false); tabel_checkbox.removeRow(); } public HalamanUtama(koneksiDB kd, String table) { initComponents(); setLocationRelativeTo(this); jDesktopPane1.getMaximumSize(); setExtendedState(MAXIMIZED_BOTH); jTabbedPane1.setEnabledAt(1, false); pilihDb(kd, table); } public void pilihFile() { JFileChooser fileChooser = new JFileChooser(); fileChooser.setVisible(true); int returnValue = fileChooser.showOpenDialog(null); if (returnValue == JFileChooser.APPROVE_OPTION) { String nama_file = fileChooser.getSelectedFile().getPath(); String[] potong_nama_file = nama_file.split("\\."); if (potong_nama_file[1].equals("xls")) { File fileExcel = fileChooser.getSelectedFile(); Vector columnName = new Vector(); Vector data = new Vector(); try { Workbook workbook = Workbook.getWorkbook(fileExcel); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 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(); //JOptionPane.showMessageDialog(null, "File yang Anda pilih tidak sesuai format. Pilih file berformat .xls"); } DefaultTableModel model = new DefaultTableModel(data, columnName); tabel_DataPreprocess.setModel(model); tabel_DataPreprocess.setAutoCreateRowSorter(true); TF_jumlahData.setText("" + data.size()); TF_jumlahAtribut.setText("" + columnName.size()); TF_pathData.setText(fileExcel.getPath()); for (int i = 0; i < model.getColumnCount(); i++) { seleksi_atribut = new seleksiAtribut(); seleksi_atribut.setAtribut(model.getColumnName(i)); 206 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI seleksi_atribut.setPilih(false); tabel_checkbox.add(i, seleksi_atribut); } tabel_SeleksiAtribut.setModel(tabel_checkbox); TableModel tableModel = tabel_DataPreprocess.getModel(); Tabel_deteksiOutlier.setModel(tableModel); Tabel_deteksiOutlier.setAutoCreateRowSorter(true); int baris = tableModel.getRowCount(); TF_jmlhBarisDeteksi.setText(" " + baris); int barisSeleksi = tableModel.getRowCount(); TF_jumlahData.setText(" " +barisSeleksi); } else if (potong_nama_file[1].equals("csv")) { tabel_checkbox.removeRow(); File fileCsv = fileChooser.getSelectedFile(); Vector columnNames = new Vector(); Vector data = new Vector(); String line; try { BufferedReader br = new BufferedReader(new FileReader(fileCsv)); StringTokenizer st = new StringTokenizer(br.readLine(), ","); while (st.hasMoreTokens()) { columnNames.addElement(st.nextToken()); } while ((line = br.readLine()) != null) { StringTokenizer st2 = new StringTokenizer(line, ","); Vector row = new Vector(); while (st2.hasMoreTokens()) { row.addElement(st2.nextToken()); } 207 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 208 data.addElement(row); } br.close(); DefaultTableModel model = new DefaultTableModel(data, columnNames); tabel_DataPreprocess.setModel(model); tabel_DataPreprocess.setAutoCreateRowSorter(true); TF_pathData.setText(fileCsv.getPath()); TF_jumlahData.setText("" + data.size()); TF_jumlahAtribut.setText("" + columnNames.size()); for (int i = 0; i < model.getColumnCount(); i++) { seleksi_atribut = new seleksiAtribut(); seleksi_atribut.setAtribut(model.getColumnName(i)); seleksi_atribut.setPilih(false); tabel_checkbox.add(i, seleksi_atribut); } tabel_SeleksiAtribut.setModel(tabel_checkbox); TableModel tableModel = tabel_DataPreprocess.getModel(); Tabel_deteksiOutlier.setModel(tableModel); Tabel_deteksiOutlier.setAutoCreateRowSorter(true); int baris = tableModel.getRowCount(); TF_jmlhBarisDeteksi.setText(" " + baris); int barisSeleksi = tableModel.getRowCount(); TF_jumlahData.setText(" " + barisSeleksi); } catch (Exception e) { } } else { JOptionPane.showMessageDialog(null, "File yang Anda pilih harus berformat .xls atau .csv"); } } PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI } public void pilihDb(koneksiDB kd, String table) { try { DBControl dc = new DBControl(); ResultSet rset; rset = dc.selectTable(kd.getConn(), 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(); while (rset.next()) { Vector d = new Vector(); for (int i = 1; i <= coloumCount; i++) { d.add(rset.getString(i)); } d.add("\n"); data.add(d); } DefaultTableModel model = new DefaultTableModel(data, headers); tabel_DataPreprocess.setModel(model); tabel_DataPreprocess.setAutoCreateRowSorter(true); tabel_SeleksiAtribut.setModel(model); tabel_SeleksiAtribut.setAutoCreateRowSorter(true); tabel_checkbox = new CheckBoxTableModel(); 209 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI for (int i = 0; i < model.getColumnCount(); i++) { seleksiAtribut seleksi_atribut = new seleksiAtribut(); seleksi_atribut.setAtribut(model.getColumnName(i)); seleksi_atribut.setPilih(false); tabel_checkbox.add(i, seleksi_atribut); } tabel_SeleksiAtribut.setModel(tabel_checkbox); TableModel tabelModel = tabel_DataPreprocess.getModel(); Tabel_deteksiOutlier.setModel(tabelModel); Tabel_deteksiOutlier.setAutoCreateRowSorter(true); } catch (SQLException ex) { } TF_jumlahData.setText(" " + tabel_DataPreprocess.getRowCount()); TF_jumlahAtribut.setText(" " + tabel_DataPreprocess.getColumnCount()); } public void submitData() { TableModel tableModel = tabel_DataPreprocess.getModel(); if (tableModel.getColumnCount() == 0) { JOptionPane.showMessageDialog(null, "Anda belum memasukkan data !"); TF_pathData.setText(null); } else { Tabel_deteksiOutlier.setModel(tableModel); Tabel_deteksiOutlier.setAutoCreateRowSorter(true); int baris = tableModel.getRowCount(); TF_jmlhBarisDeteksi.setText(" " + baris); jTabbedPane1.setSelectedComponent(panel_deteksi); jTabbedPane1.setEnabledAt(1, true); jTabbedPane1.setSelectedIndex(1); 210 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 211 } } public void hapusAtribut() { for (int i = 0; i < tabel_SeleksiAtribut.getRowCount(); i++) { //System.out.println(jTable1.getValueAt(i, 1)); if (tabel_SeleksiAtribut.getValueAt(i, 1).equals(true)) { for (int j = 0; j < tabel_DataPreprocess.getColumnCount(); j++) { if (tabel_SeleksiAtribut.getValueAt(i, 0).equals(tabel_DataPreprocess.getColumnName(j))) { TableColumn tcol = tabel_DataPreprocess.getColumnModel().getColumn(j); TableColumn tcol2 = Tabel_deteksiOutlier.getColumnModel().getColumn(j); tabel_DataPreprocess.removeColumn(tcol); Tabel_deteksiOutlier.removeColumn(tcol2); } } } } tabel_checkbox.removeRow(); } private void btn_tentangActionPerformed(java.awt.event.ActionEvent evt) { HalamanTentang tentang = new HalamanTentang(); tentang.setVisible(true); this.dispose(); } private void btn_bantuanActionPerformed(java.awt.event.ActionEvent evt) { HalamanBantuan bantu = new HalamanBantuan(); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 212 bantu.setVisible(true); this.dispose(); } private void btn_keluarActionPerformed(java.awt.event.ActionEvent evt) { int ask = JOptionPane.showConfirmDialog(null, "Apakah Anda yakin ingin " + "Keluar?", "Konfirmasi", JOptionPane.YES_NO_OPTION); if (ask == JOptionPane.YES_OPTION) { this.dispose(); } else if (ask == JOptionPane.NO_OPTION) { return; } } private void btn_pilihFileActionPerformed(java.awt.event.ActionEvent evt) { pilihFile(); } private void btn_pilihDBActionPerformed(java.awt.event.ActionEvent evt) { HalamanPilihDatabase db = new HalamanPilihDatabase(); db.setVisible(true); this.dispose(); } private void btn_tandaiActionPerformed(java.awt.event.ActionEvent evt) { for (int i = 0; i < tabel_SeleksiAtribut.getRowCount(); i++) { tabel_SeleksiAtribut.setValueAt(true, i, 1); } } private void PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 213 btn_batalSeleksiActionPerformed(java.awt.event.ActionEvent evt) { for (int i = 0; i < tabel_SeleksiAtribut.getRowCount(); i++) { tabel_SeleksiAtribut.setValueAt(false, i, 1); } } private void btn_hapusActionPerformed(java.awt.event.ActionEvent evt) { hapusAtribut(); TF_jumlahAtribut.setText("" + tabel_DataPreprocess.getColumnCount()); } private void btn_submitActionPerformed(java.awt.event.ActionEvent evt) { submitData(); } private void prosesDeteksi(){ if (TF_k.getText().equals("")) { JOptionPane.showMessageDialog(null, "Nilai k tidak boleh kosong !"); } else if (TF_lamda.getText().equals("")){ JOptionPane.showMessageDialog(null, "Nilai Lamda tidak boleh kosong !"); } else if ((TF_k.getText().matches("[0-9.]*")) && (TF_lamda.getText().matches("[0-9.]*"))){ int k, lamda; k = Integer.parseInt(TF_k.getText()); lamda = Integer.parseInt(TF_lamda.getText()); long t1 = System.nanoTime(); if (k > 0 && lamda > 0) { graph = new Graph(Tabel_deteksiOutlier.getRowCount()); graph.inputData(Tabel_deteksiOutlier); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 214 graph.setk(k); graph.setLamda(lamda); System.out.println("JARAK PER OBYEK MENGGUNAKAN EUCLIDEAN DISTANCE"); graph.tampilJarak(); System.out.println("DAFTAR TETANGGA TERDEKAT BERDASAR K"); graph.tampilNeighbor(); System.out.println("STANDARD DISTANCE TIAP OBYEK"); graph.caristdev(); System.out.println("PROBABILISTIC SET DISTANCE TIAP OBYEK"); graph.caripdist(); System.out.println("LOF - NPLOF - LOOP"); graph.cariJumlahPdist(); long t2 = System.nanoTime(); System.out.println(""); TabelHasilOutlier.setModel(graph.setDataLoop(Tabel_deteksiOutlier.get ColumnName(0))); TabelHasilOutlier.setAutoCreateRowSorter(true); DefaultRowSorter sorter = ((DefaultRowSorter) TabelHasilOutlier.getRowSorter()); ArrayList list = new ArrayList(); list.add(new RowSorter.SortKey(1, SortOrder.DESCENDING)); sorter.setSortKeys(list); sorter.sort(); for (int i= 0; i < TabelHasilOutlier.getRowCount(); i++) { TabelHasilOutlier.setValueAt(i+1, i, 2); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 215 } jmlOutlier.setText("" +TabelHasilOutlier.getRowCount()); lamaDeteksi.setText("" +((t2-t1)*java.lang.Math.pow(10, -9)) ); } else { JOptionPane.showMessageDialog(null, "Nilai k dan lamda harus > 0"); } } } private void btn_prosesActionPerformed(java.awt.event.ActionEvent evt) { prosesDeteksi(); } private void batasOutlier() { if(TF_batasOutlier.getText().equals("")){ JOptionPane.showMessageDialog(null, "Nilai batas outlier tidak boleh kosong"); } else if (TF_batasOutlier.getText().matches("[0-9.]*")){ try{ tabelHasilOutlier.setModel(graph.setDataLoop2(Tabel_deteksiOutlier.get ColumnName(0), Double.parseDouble(TF_batasOutlier.getText()))); TabelHasilOutlier.setAutoCreateRowSorter(true); DefaultRowSorter sorter = ((DefaultRowSorter) TabelHasilOutlier.getRowSorter()); ArrayList list = new ArrayList(); list.add(new RowSorter.SortKey(1, SortOrder.DESCENDING)); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 216 sorter.setSortKeys(list); sorter.sort(); for (int i = 0; i < TabelHasilOutlier.getRowCount(); i++) { TabelHasilOutlier.setValueAt(i + 1, i, 2); } } catch (Exception ie){ System.out.println(ie.getMessage()); JOptionPane.showMessageDialog(null, ie); } } else { JOptionPane.showMessageDialog(null, "Nilai batas outlier tidak boleh mengandung karakter huruf! "); } jmlOutlier.setText("" +TabelHasilOutlier.getRowCount()); long t1 = System.nanoTime(); long t2 = System.nanoTime(); lamaDeteksi.setText("" +(t2-t1)*java.lang.Math.pow(10, -9)); } private void Submit_batasActionPerformed(java.awt.event.ActionEvent evt) { batasOutlier(); } public void simpanLoOP() { JFileChooser fileChooser = new JFileChooser(new File("H:/")); fileChooser.setFileFilter(new FileNameExtensionFilter("Microsoft Excel (*.xls)", "xls")); fileChooser.setFileFilter(new FileNameExtensionFilter("Microsoft Word (*.doc)", "doc")); FileOutputStream file_output_stream; int returnValue = fileChooser.showSaveDialog(this); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 217 if (returnValue == JFileChooser.APPROVE_OPTION){ String filename = fileChooser.getSelectedFile().getPath(); String ext = fileChooser.getFileFilter().getDescription(); if(ext.equals("Microsoft Excel (*.xls)")){ File ff; ff= new File(filename + ".xls"); try{ file_output_stream = new FileOutputStream(ff); } catch (FileNotFoundException fe){ fe.printStackTrace(); return; } try { TableModel model = TabelHasilOutlier.getModel(); FileWriter excel = new FileWriter(ff); for (int i= 0; i < TabelHasilOutlier.getColumnCount(); i++) { excel.write(TabelHasilOutlier.getColumnName(i) + "\t"); } excel.write("\n"); for (int i= 0; i < TabelHasilOutlier.getRowCount(); i++) { for (int j= 0; j < TabelHasilOutlier.getColumnCount(); j++) { excel.write(TabelHasilOutlier.getValueAt(i, j).toString() + "\t"); } excel.write("\n"); } excel.close(); } catch (IOException ie){ JOptionPane.showMessageDialog(this, "Penyimpanan asil Deteksi Outlier Gagal !"); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 218 } } else if (ext.equals("Microsoft Word (*.doc)")){ File ff; ff = new File (filename + ".doc"); try{ file_output_stream = new FileOutputStream(ff); } catch (FileNotFoundException fe){ fe.printStackTrace(); return; } try { BufferedWriter bfw = new BufferedWriter(new FileWriter(ff)); for (int i = 0; i < TabelHasilOutlier.getColumnCount(); i++) { bfw.write(TabelHasilOutlier.getColumnName(i)); bfw.write("\t"); } for (int i = 0; i < TabelHasilOutlier.getRowCount(); i++) { bfw.newLine(); for (int j = 0; j < TabelHasilOutlier.getColumnCount(); j++) { bfw.write((TabelHasilOutlier.getValueAt(i, j)).toString()); bfw.write("\t"); } } bfw.close(); } catch (IOException ie){ JOptionPane.showMessageDialog(this, "Penyimpanan asil Deteksi Outlier Gagal !"); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 219 } } else { File ff; ff = new File(filename + ".txt"); try { file_output_stream = new FileOutputStream(ff); } catch (FileNotFoundException fe) { fe.printStackTrace(); return; } try { BufferedWriter bfw = new BufferedWriter(new FileWriter(ff)); for (int i = 0; i < TabelHasilOutlier.getColumnCount(); i++) { bfw.write(TabelHasilOutlier.getColumnName(i)); bfw.write("\t"); } for (int i = 0; i < TabelHasilOutlier.getRowCount(); i++) { bfw.newLine(); for (int j = 0; j < TabelHasilOutlier.getColumnCount(); j++) { bfw.write((TabelHasilOutlier.getValueAt(i, j)).toString()); bfw.write("\t"); } } bfw.close(); } catch (IOException ie) { JOptionPane.showMessageDialog(this, "Penyimpanan asil PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 220 Deteksi Outlier Gagal !"); } } //buat file output stream JOptionPane.showMessageDialog(this, "Hasil Deteksi Outlier Telah Berhasil Disimpan di " + filename); } } private void btn_simpanActionPerformed(java.awt.event.ActionEvent evt) { simpanLoOP(); } private void btn_batal2ActionPerformed(java.awt.event.ActionEvent evt) { HalamanUtama hlm = new HalamanUtama(); hlm.setVisible(true); this.dispose(); } private void btn_hpsActionPerformed(java.awt.event.ActionEvent evt) { DefaultTableModel dm = new DefaultTableModel(); TabelHasilOutlier.setModel(dm); TF_batasOutlier.setText(""); jmlOutlier.setText(""); lamaDeteksi.setText(""); } private void TF_kKeyReleased(java.awt.event.KeyEvent evt) { if (!TF_k.getText().matches("[0-9.]*")) { JOptionPane.showMessageDialog(null, "Nilai k tidak boleh berisi huruf atau angka negatif !"); } PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 221 } private void TF_lamdaKeyReleased(java.awt.event.KeyEvent evt) { if (!TF_lamda.getText().matches("[0-9.]*")) { JOptionPane.showMessageDialog(null, "Nilai Lamda tidak boleh berisi huruf atau angka negatif !"); } } private void TF_batasOutlierKeyReleased(java.awt.event.KeyEvent evt) { if (!TF_batasOutlier.getText().matches("[0-9.]*")) { JOptionPane.showMessageDialog(null, "Nilai batas outlier tidak boleh berisi huruf atau angka negatif !"); } } /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new HalamanUtama().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JScrollPane JScrollPane; private javax.swing.JButton Submit_batas; private javax.swing.JTextField TF_batasOutlier; private javax.swing.JTextField TF_jmlhBarisDeteksi; private javax.swing.JTextField TF_jumlahAtribut; private javax.swing.JTextField TF_jumlahData; PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI private javax.swing.JTextField TF_lamda; private javax.swing.JTextField TF_k; private javax.swing.JTextField TF_pathData; private javax.swing.JTable TabelHasilOutlier; private javax.swing.JTable Tabel_deteksiOutlier; private javax.swing.JButton btn_bantuan; private javax.swing.JButton btn_batal2; private javax.swing.JButton btn_batalSeleksi; private javax.swing.JButton btn_hapus; private javax.swing.JButton btn_hps; private javax.swing.JButton btn_keluar; private javax.swing.JButton btn_pilihDB; private javax.swing.JButton btn_pilihFile; private javax.swing.JButton btn_proses; private javax.swing.JButton btn_simpan; private javax.swing.JButton btn_submit; private javax.swing.JButton btn_tandai; private javax.swing.JButton btn_tentang; 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 jLabel18; private javax.swing.JLabel jLabel19; private javax.swing.JLabel jLabel2; 222 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 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.JPanel jPanel6; private javax.swing.JPanel jPanel7; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JScrollPane jScrollPane3; private javax.swing.JScrollPane jScrollPane4; private javax.swing.JTabbedPane jTabbedPane1; private javax.swing.JTextField jmlOutlier; private javax.swing.JTextField lamaDeteksi; private javax.swing.JPanel panel_deteksi; private javax.swing.JPanel panel_preprocess; private javax.swing.JTable tabel_DataPreprocess; private javax.swing.JTable tabel_SeleksiAtribut; // End of variables declaration } 223 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 224 LAMPIRAN 11 Dataset 1. Data set Mahasiswa 2007 – 2008 Jalur Test No ips1 ips2 ips3 ips4 nilai11 nilai12 nilai13 nilai14 nilai15 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 Urut PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 225 45 2,75 2,59 2,79 3,32 2,80 2,00 2,40 2,80 2,80 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 226 Tabel di bawah ini merupakan hasil deteksi outlier yang nilai LoOPnya > 0,5 Hasil deteksi semester 1 Mahasiswa LoOP Ranking 28 0.9460720242661907 1 27 0.7293475648594188 2 58 0.707001305355218 36 0.6348454185974922 4 72 0.6208361235159756 5 33 0.6171816521773266 6 26 0.6011646825849799 7 53 0.5378592166468659 8 3 Hasil deteksi semester 2 Mahasiswa LoOP Ranking 28 0.9541794950367649 1 26 0.7224519899880362 2 72 0.6671024245623864 3 58 0.6444155668441807 4 36 0.6400880292509055 5 33 0.624272581815079 68 0.5801833215520924 7 53 0.5606409157029926 8 74 0.5377224827379848 9 6 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Hasil deteksi semester 3 Mahasiswa LoOP Ranking 28 0.9310163559514605 1 74 0.783939430662315 2 50 0.7298947403567992 3 72 0.6398156133550297 4 58 0.6311023991290462 5 26 0.621480880541883 6 36 0.6088774873135172 7 53 0.5898795203603411 8 33 0.5389871343970449 9 46 0.5297962730593824 10 67 0.5140145686592166 11 Hasil deteksi semester 4 2. Mahasiswa LoOP Ranking 28 0.975913422837893 1 58 0.695518615545071 2 53 0.668437637465007 3 67 0.662756486377504 4 26 0.6228742212863605 5 33 0.602249289206009 6 69 0.521092805589497 7 Data set Mahasiswa 2007 – 2008 Jalur Prestasi No Urut 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 227 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 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 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 228 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,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 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 229 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 230 Tabel di bawah ini merupakan hasil deteksi outlier yang nilai LoOPnya > 0,5 Hasil deteksi semester 1 Mahasiswa LoOP Ranking 76 0.9991795267388751 1 109 0.7013765600083565 2 105 0.6905408597772048 3 124 0.5811944120626817 4 15 0.5464715773482339 5 Hasil deteksi semester 2 Mahasiswa LoOP Ranking 17 0.9872587789922596 1 124 0.9620326012635192 2 86 0.8165554095739557 3 94 0.800542573626661 4 107 0.7288853469664727 5 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Hasil deteksi semester 3 Mahasiswa LoOP Ranking 17 0.9999518638906684 1 Hasil deteksi semester 4 Mahasiswa LoOP 3. Ranking 88 0.9892867944835745 1 94 0.8767633653435601 2 107 0.7814926345959297 3 98 0.7762175503746969 4 89 0.7725739747747566 5 6 0.5952618263100738 6 122 0.5661949629488112 7 Data set Mahasiswa 2007 – 2008 No Urut 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 231 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 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 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 232 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 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 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 233 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 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 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 234 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 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 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 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 236 Tabel di bawah ini merupakan hasil deteksi outlier yang nilai LoOPnya > 0,5 Hasil deteksi semester 1 mahasiswa LoOP Ranking 28 0.9954540252321519 1 27 0.9806601547852323 2 76 0.9526317771888542 3 58 0.798564801477132 4 109 0.7673532211442452 5 50 0.646529759823802 6 74 0.646529759823802 7 105 0.6009075879658861 8 10 0.5788625030570833 9 68 0.5646701218186532 10 86 0.5631159504702734 11 107 0.5094858596416059 12 37 0.5067095180107015 13 Hasil deteksi semester 2 mahasiswa LoOP Ranking 28 0.9849855058715602 1 86 0.9614558944282396 2 124 0.9212992758983662 3 107 0.9176185753006165 4 58 0.9167652769999431 5 17 0.9113127134284866 6 83 0.6641952873024779 7 122 0.5985460481139291 8 68 0.5479380469874908 9 72 0.5163903752744907 10 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Hasil deteksi semester 3 mahasiswa LoOP Ranking 28 0.9941366960497773 1 74 0.9736499199333197 2 58 0.8605089505740078 3 72 0.7523693367354287 4 50 0.7340180488451497 5 109 0.7207268649680383 6 55 0.7204771128351042 7 107 0.6906463916070579 8 13 0.66997972367684 9 17 0.6636221605215429 10 98 0.6582622084445136 11 122 0.6005601746816651 12 3 0.5487299483708872 13 Hasil deteksi semester 4 mahasiswa LoOP Ranking 28 0.9988872372375899 1 58 0.9210022884932241 2 107 0.847657502786035 3 89 0.8238191171535213 4 98 0.7915070202459312 5 27 0.7283684152080447 6 68 0.6582434007671639 7 45 0.6376124011372428 8 67 0.6299856593211957 9 122 0.5463287612434127 10 69 0.5073037573422574 11 237 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 238 LAMPIRAN 12 Outlier Plot Data Akademik Mahasiswa Teknik Informatika Angkatan 20072008 Jalur Tes Tertulis 1. Berdasarkan IPS 1 2. Berdasarkan IPS 2 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3. Berdasarkan IPS 3 4. Berdasarkan IPS 4 239 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 240 LAMPIRAN 13 Outlier Plot Data Akademik Mahasiswa Teknik Informatika Angkatan 20072008 Jalur Prestasi 1. Berdasarkan IPS 1 2. Berdasarkan IPS 2 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3. Berdasarkan IPS 3 4. Berdasarkan IPS 4 241 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 242 LAMPIRAN 14 Outlier Plot Data Akademik Mahasiswa Teknik Informatika Angkatan 20072008 Jalur Tes Tertulis dan Prestasi 1. Berdasarkan IPS 1 2. Berdasarkan IPS 2 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3. Berdasarkan IPS 3 4. Berdasarkan IPS 4 243