plagiat merupakan tindakan tidak terpuji plagiat

advertisement
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
DETEKSI OUTLIER
MENGGUNAKAN ALGORITMA BLOCK-BASED NESTED-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
Disusun Oleh :
Fiona Endah Kwa
NIM : 095314041
PROGRAM STUDI TEKNIK INFORMATIKA
JURUSAN TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2013
i
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
OUTLIER DETECTION
USING BLOCK-BASED NESTED-LOOP ALGORITHM
CASE STUDY : STUDENT ACADEMIC DATA
OF INFORMATICS ENGINEERING STUDY PROGRAM,
SANATA DHARMA UNIVERSITY
A THESIS
Presented as Partial Fulfillment of the Requirements
To Obtain the Sarjana Komputer Degree
In Informatics Engineering Study Program
By :
Fiona Endah Kwa
NIM : 095314041
INFORMATICS ENGINEERING STUDY PROGRAM
DEPARTMENT OF INFORMATICS ENGINEERING
FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2013
ii
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
iii
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
iv
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
HALAMAN PERSEMBAHAN
“I can do all things through Christ who strengthens me.”
(Philippians 4:13)
~ IF IT’S EASY, IT WON’T BE AMAZING~
Karya saya ini saya persembahkan teristimewa untuk :
Keluarga, Dosen & Sahabat
Terima kasih untuk kasih sayang, doa, motivasi, semangat
serta bantuan yang kalian berikan baik di saat susah
maupun senang.
v
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
vi
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
ABSTRAK
Penambangan data adalah proses mengekstrak informasi atau
pengetahuan dari data dalam jumlah yang besar. Secara umum, penambangan
data dapat diklasifikasikan dalam empat kategori yaitu deteksi dependensi,
identifikasi kelas, deskripsi kelas dan deteksi outlier. Tiga kategori pertama
berkaitan dengan pola yang dimiliki oleh banyak objek, atau pada objek dengan
persentase yang besar dalam dataset. Sebaliknya, kategori keempat berfokus pada
objek dengan persentase yang kecil, yang umumnya sering diabaikan atau
dihilangkan karena dianggap noise (Knorr & Ng, 1998).
Pada tugas akhir ini algoritma Block-based Nested-Loop digunakan untuk
deteksi outlier pada data numerik. Data yang digunakan adalah data akademik
mahasiswa Universitas Sanata Dharma Prodi Teknik Informatika Angkatan 2007
dan 2008. Data tersebut terdiri dari data nilai tes masuk mahasiswa yang diterima
melalui jalur tes tertulis maupun jalur prestasi dan nilai indeks prestasi dari
semester satu sampai empat.
Hasil penelitian ini yaitu sebuah perangkat lunak yang dapat digunakan
sebagai alat bantu untuk mendeteksi outlier menggunakan algoritma Block-based
Nested-Loop. Pengujian terhadap sistem ini terdiri dari pengujian blackbox,
pengujian review dan validitas oleh pengguna, pengujian efek perubahan nilai
atribut penambangan data dan pengujian waktu deteksi outlier berdasarkan
jumlah blok.
Berdasarkan hasil pengujian blackbox yang dilakukan, disimpulkan
bahwa sistem pendeteksi outlier ini dapat menghasilkan keluaran yang sesuai
dengan yang diharapkan pengguna dan mampu menangani error terhadap fungsi
– fungsi yang tidak berjalan sesuai aturan. Berdasarkan hasil pengujian review
dan validitas oleh pengguna disimpulkan bahwa sistem dapat menghasilkan data
yang dinyatakan sebagai outlier. Berdasarkan hasil pengujian efek perubahan
nilai atribut penambangan data disimpulkan bahwa pemilihan nilai atribut M dan
D mempengaruhi hasil deteksi outlier. Dari hasil pengujian waktu deteksi outlier
berdasarkan jumlah blok disimpulkan bahwa penggunaan blok-blok data dapat
mempercepat proses deteksi outlier.
Kata kunci : Penambangan data, Block-based Nested-Loop, deteksi outlier
vii
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
ABSTRACT
Data mining is the process of extracting information or knowledge from
large amounts of data. In general, data mining can be classified into four
categories: dependency detection, identification of classes, class descriptions and
outlier detection. The first three categories correspond to the pattern that applied
to many objects, or to a large percentage of objects in the dataset. The fourth
category, in contrast focuses on a very small percentage of data objects, which
are often ignored or discarded as noise (Knorr & Ng, 1998).
In this thesis, the Block-based Nested-Loop algorithm was used to
perform outlier detections on numerical data. The data used in this thesis are
academic data of students batch 2007 and 2008 of Informatics Engineering Study
Program of Sanata Dharma University. The data consists of student admission
data from regular admission track as well as students from outstanding track, and
student academic data (Grade Point Average) of those students from first
semester until fourth semester.
The results of this research is a software that can be used as a tool to
detect outliers using Block-based Nested-Loop algorithm. The testing of this
system consists of blackbox testing, validation testing by users, investigation of
the effects of attribute changes of M and D, and investigation of time needed to
detect outliers based on the number of blocks. M is the maximum number of
objects within the D-neighbourhood of an outlier, whereas D is the maximum
distance between any pair of objects that define as a neighbor.
Based on blackbox testing, it can be concluded that the outlier detection‟s
system could produce output as expected and handle any incorrect functions.
Based on user‟s validation, it can be concluded that the results of the system are
confirmed as outliers. Based on the investigation of the effects of attribute
changes, it can be concluded that the value of M dan D influence the number of
generated outliers. Based on investigation of time needed to detect outliers, it can
be concluded that data blocks usage could speed up the process of outlier
detection.
Keywords : data mining, Block-based Nested-Loop, outlier detection
viii
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
ix
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
KATA PENGANTAR
Puji syukur kepada Tuhan Yesus Kristus, atas segala berkat dan karunia
sehingga penulis dapat menyelesaikan skripsi ini dengan judul “Deteksi Outlier
Menggunakan Algoritma Block-based Nested-Loop Studi Kasus : Data
Akademik Mahasiswa Program Studi Teknik Informatika Universitas
Sanata Dharma”.
Penelitian ini berjalan dengan baik dari awal hingga akhir karena adanya
dukungan doa, semangat dan motivasi yang diberikan oleh banyak pihak. Untuk
itu, penulis ingin mengucapkan terima kasih kepada:
1. Ibu Paulina Heruningsih Prima Rosa, S.Si., M.Sc. selaku Dekan Fakultas
Sains dan Teknologi.
2. Ibu Ridowati Gunawan, S.Kom., M.T., selaku Ketua Program Studi
Teknik Informatika.
3. Ibu Paulina Heruningsih Prima Rosa, S.Si., M.Sc. selaku Dosen
Pembimbing yang telah dengan sabar membimbing dan memberikan
motivasi.
4. Ibu Ridowati Gunawan, S.Kom., M.T. dan Ibu Sri Hartati Wijono, S.Si.,
M.Kom. selaku dosen penguji atas kritik dan saran yang telah diberikan.
5. Bapak Iwan Binanto, M.Cs. selaku Dosen Pembimbing Akademik.
6. Seluruh Dosen yang telah mendidik dan memberikan ilmu pengetahuan
selama penulis menjalani studi di Universitas Sanata Dharma Yogyakarta.
7. Pihak sekretariat dan laboran yang turut membantu penulis menyelesaikan
skripsi ini.
x
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
8. Kedua orang tua terkasih, Papa Alex Kwa, BE, SE dan Mama Selvina
Yarangga untuk setiap doa, kasih sayang, perhatian serta dukungan yang
selalu diberikan kepada penulis.
9. Semua saudara tersayang, Kak Victor, Kak Sherli, Kak Febby, Kak Vani
dan Kak Jenie. Terima kasih sudah memberikan motivasi dan berbagai
masukan yang sangat membantu penulis dalam menyelesaikan skripsi ini.
10. Para sahabat tersayang, Nidya, Friska, Margaretha, Cristy, Phebe,
Mayanti dan Rico. Terima kasih untuk persahabatan yang indah dan doa
serta dukungan kalian bagi penulis.
11. Kedua rekan kerja skripsi ini, Setyo dan Tomy. Terima kasih telah saling
berbagi ilmu serta suka dan duka dari awal hingga akhir penyelesaian
skripsi ini.
12. Seluruh teman-teman kuliah TI 2009, terima kasih untuk kebersamaan
kita selama menjalani masa perkuliahan.
13. Teman-teman Tim Usher GKI Gejayan, terima kasih karena selalu
mendukung perjuangan penulis lewat doa setiap minggunya.
14. Pihak-pihak lain yang turut membantu penulis dalam menyelesaikan tugas
akhir ini, yang tidak dapat disebutkan satu per satu.
Penelitian skripsi ini masih memiliki banyak kekurangan. Untuk itu,
penulis sangat membutuhkan saran dan kritik untuk perbaikan di masa yang akan
datang. Semoga penelitian skripsi ini dapat membawa manfaat bagi semua pihak.
Yogyakarta, 23 Agustus 2013
Fiona Endah Kwa
xi
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
DAFTAR ISI
HALAMAN JUDUL……………………………………………………………...i
HALAMAN JUDUL (INGGRIS)………………………………………………...ii
HALAMAN PERSETUJUAN…………………………………………………..iii
HALAMAN PENGESAHAN……………………………………………………iv
HALAMAN PERSEMBAHAN…………………………………………………..v
PERNYATAAN KEASLIAN KARYA…………………………………………vi
ABSTRAK…………………………………………………………………..…..vii
ABSTRACT……………………………………………………………….……viii
LEMBAR PERNYATAAN PERSETUJUAN…………………………………..ix
KATA PENGANTAR……………………………………………………………x
DAFTAR ISI…………………………………………………………………….xii
DAFTAR TABEL……………………………………………………………...xvii
DAFTAR GAMBAR…………………………………………………………...xix
Bab 1……………………………………………………………………………...1
PENDAHULUAN………………………………………………………………...1
1.1
Latar Belakang ......................................................................................... 1
1.2
Rumusan Masalah .................................................................................... 4
1.3
Tujuan Penelitian ..................................................................................... 4
1.4
Batasan Masalah ...................................................................................... 5
1.5
Manfaat Penelitian ................................................................................... 5
1.6
Sistematika Penulisan .............................................................................. 6
1.6.1
Bab 1 Pendahuluan ........................................................................... 6
1.6.2
Bab 2 Landasan Teori ....................................................................... 6
1.6.3
Bab 3 Metode Penelitian .................................................................. 6
1.6.4
Bab 4 Analisis dan Perancangan Sistem .......................................... 7
1.6.5
Bab 5 Implementasi Sistem .............................................................. 7
1.6.6
Bab 6 Pengujian dan Analisis Hasil Pengujian ................................ 7
1.6.7
Bab 7 Kesimpulan dan Saran ........................................................... 8
1.6.8
Daftar Pustaka .................................................................................. 8
Bab 2……………………………………………………………………………...9
LANDASAN TEORI……………………………………………………………..9
2.1
Knowledge Discovery in Databases (KDD) ............................................ 9
xii
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
2.2
Outlier Detection ................................................................................... 11
2.2.1
Pengertian Outlier .......................................................................... 11
2.2.2
Penyebab Outlier ............................................................................ 12
2.2.3
Manfaat Deteksi Outlier ................................................................. 12
3.2.4
Metode Deteksi Outlier .................................................................. 13
2.2.5
Distance-Based Outlier Detection ................................................ 14
2.2.5.1 Algoritma Block-based Nested-Loop ............................................ 16
Bab 3…………………………………………………………………………….19
METODE PENELITIAN……………………………………………………….19
3.1
Data ........................................................................................................ 19
3.2
Pengolahan Data .................................................................................... 20
3.2.1
Pemrosesan Awal Data ................................................................... 20
3.2.2
Seleksi Data .................................................................................... 20
3.2.3
Transformasi Data .......................................................................... 21
3.2.4
Penambangan Data ......................................................................... 22
3.2.5
Evaluasi Pola yang Ditemukan ....................................................... 23
3.2.6
Presentasi Pengetahuan .................................................................. 24
3.3
Contoh Implementasi Algoritma Block-based Nested-Loop ................. 24
Bab 4…………………………………………………………………………….34
ANALISIS DAN PERANCANGAN SISTEM…………………………………34
4.1
Identifikasi Sistem ................................................................................. 34
4.2
Input Sistem, Proses Sistem dan Output Sistem .................................... 35
4.2.1
Input Sistem .................................................................................... 35
4.2.2
Proses Sistem .................................................................................. 37
4.2.3
Output Sistem ................................................................................. 39
4.3
Perancangan Struktur Data .................................................................... 40
4.4
Diagram Use Case ................................................................................. 45
4.5
Perancangan Sistem ............................................................................... 46
4.5.1
Diagram Konteks ............................................................................ 46
4.5.2
Diagram Aktivitas .......................................................................... 46
4.5.3
Diagram Kelas Analisis .................................................................. 47
4.5.4
Diagram Sequence .......................................................................... 48
4.5.3
Diagram Kelas Desain .................................................................... 49
4.5.4
Detail Algoritma Tiap Method Pada Tiap Kelas ............................ 56
xiii
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
4.5.6.1 Detail Algoritma Pada Method di Kelas HalamanUtama ............. 56
4.5.6.2 Detail Algoritma Pada Method di Kelas HalamanPilihDB ........... 67
4.5.6.3 Detail Algoritma Pada Method di Kelas HalamanPilihTabel ....... 68
4.5.6.4 Detail Algoritma Pada Method di Kelas DistribusiAtribut ........... 69
4.5.6.5 Detail Algoritma Pada Method di Kelas Graph ............................ 71
4.5.6.6 Detail Algoritma Pada Method di Kelas DatabaseConnection ..... 78
4.5.6.7 Detail Algoritma Pada Method di Kelas Database ........................ 80
4.5.6.8 Detail Algoritma Pada Method di Kelas CheckBoxTableModel .. 81
4.6
Perancangan Antarmuka ........................................................................ 82
4.6.1
Halaman Awal ................................................................................ 83
4.6.2
Halaman Utama (Preprocess) ........................................................ 83
4.6.3
Halaman Utama (Deteksi Outlier).................................................. 85
4.6.4
Halaman Distribusi Atribut ............................................................ 86
4.6.5
Halaman Pilih DB........................................................................... 87
4.6.6
Halaman Pilih Tabel ....................................................................... 88
4.6.7
Halaman Bantuan ........................................................................... 88
4.6.8
Halaman Konfirmasi Keluar.......................................................... .89
BAB 5……………………………………………………………………….…...90
IMPLEMENTASI SISTEM…………………………………………………..…90
5.1
Implementasi Antarmuka ....................................................................... 91
5.1.1
Implementasi Halaman Awal ......................................................... 91
5.1.2
Implementasi Halaman Utama ....................................................... 92
5.1.3
Implementasi Halaman Pilih DB .................................................... 96
5.1.4
Implementasi Halaman Pilih Tabel ................................................ 97
5.1.5
Implementasi Halaman Distribusi Atribut...................................... 99
5.1.6
Implementasi Halaman Bantuan................................................... 100
5.1.7
Implementasi Halaman Konfirmasi Keluar .................................. 100
5.1.8
Implementasi Pengecekan Masukan............................................. 101
5.1.9
Implementasi Halaman Open File ................................................ 104
5.2
Implementasi Struktur Data ................................................................. 105
5.2.1
Implementasi Kelas Vertex .......................................................... 105
5.2.2
Implementasi Kelas Graph ........................................................... 107
5.2.3
Implementasi Kelas Block ............................................................ 109
xiv
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
5.3
Implementasi Kelas.............................................................................. 110
5.3.1
Implementasi Kelas HalamanUtama ............................................ 110
5.3.2
Implementasi Kelas HalamanPilihDB ......................................... 123
5.3.3
Implementasi Kelas HalamanPilihTabel ...................................... 124
5.3.4
Implementasi Kelas HalamanDistribusiAtribut ........................... 126
5.3.5
Implementasi Kelas SeleksiAtribut .............................................. 127
5.3.6
Implementasi Kelas DatabaseConnection .................................... 128
5.3.7
Implementasi Kelas Database....................................................... 130
5.3.8
Implementasi Kelas CheckBoxTableModel ................................. 132
5.3.9
Implementasi Kelas BarChart....................................................... 134
5.3.10
Implementasi Kelas GraphController ........................................... 135
BAB 6…………………………………………………………………………..136
PENGUJIAN DAN ANALISIS HASIL PENGUJIAN………………………..136
6.1
Fase Implementasi Pengujian .............................................................. 136
6.1.1 Rencana Pengujian ............................................................................. 136
6.1.1.1 Pengujian Blackbox ..................................................................... 137
6.1.1.1.1 Pengujian DatabaseConnection ............................................ 137
6.1.1.1.2 Pengujian HalamanUtama .................................................... 138
6.1.1.1.3 Pengujian HalamanDistribusiAtribut .................................... 141
6.1.1.1.5 Pengujian HalamanPilihTabel .............................................. 142
6.1.1.1.6 Kesimpulan Hasil Pengujian Blackbox ................................. 142
6.1.1.2 Pengujian Review dan Validitas oleh Pengguna .......................... 143
6.1.1.2.1 Perbandingan Perhitungan Manual dan Sistem .................... 143
6.1.1.2.2 Hasil Deteksi dari Sistem untuk Pengujian Review dan
Validitas oleh Pengguna ...................................................................... 144
6.1.1.2.3 Kesimpulan Pengujian Review dan Validitas oleh ............... 147
Pengguna .............................................................................................. 147
6.1.1.3 Pengujian Efek Perubahan Nilai Atribut Penambangan Data ..... 150
6.1.1.3.1 Kesimpulan Pengujian Efek Perubahan Nilai Atribut
Penambangan Data .............................................................................. 154
6.1.1.4 Pengujian Perbandingan Waktu Deteksi Outlier Berdasarkan
Jumlah Blok ............................................................................................. 155
xv
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
6.1.1.4.1 Kesimpulan Pengujian Perbandingan Waktu Deteksi Outlier
Berdasarkan Jumlah Blok .................................................................... 157
6.2
Kelebihan dan Kekurangan Sistem ...................................................... 158
6.2.1
Kelebihan Sistem .......................................................................... 158
6.2.2
Kekurangan Sistem ....................................................................... 158
BAB 7…………………………………………………………………………..159
KESIMPULAN DAN SARAN………………………………………………...159
7.1
Kesimpulan .......................................................................................... 159
7.2
Saran .................................................................................................... 159
DAFTAR PUSTAKA………………………………………………………….161
LAMPIRAN……………………………………………………………………162
Lampiran 1 : Tabel Ringkasan Use Case ........................................................ 162
Lampiran 2 : Skenario Use Case..................................................................... 162
Lampiran 3 : Diagram Aktivitas ..................................................................... 166
Lampiran 4 : Tabel Diagram Kelas Analisis ................................................. 169
Lampiran 5 : Diagram Sequence .................................................................... 171
Lampiran 6 : Listing program ......................................................................... 176
xvi
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
DAFTAR TABEL
Tabel 3.1 Data Mentah dibagi ke dalam 4 Blok……………………………... 26
Tabel 4.1 Tabel Nama Atribut pada Data Akademik Mahasiswa…………… 37
Tabel 4.2 Tabel Kelas HalamanUtama………………………………………. 56
Tabel 4.3 Tabel Kelas HalamanPilihDB……………………………………... 67
Tabel 4.4 Tabel Kelas HalamanPilihTabel…………………………………... 68
Tabel 4.5 Tabel Kelas DistribusiAtribut……………………………………... 69
Tabel 4.6 Tabel Kelas Graph………………………………………………… 71
Tabel 4.7 Tabel Kelas DatabaseConnection…………………………………. 78
Tabel 4.8 Tabel Kelas Database………………………………………………80
Tabel 4.9 Tabel Kelas CheckBoxTableModel……………………………….. 81
Tabel 4.10 Tabel Kelas BarChart……………………………………………..82
Tabel 5.1 Tabel Nama Kelas yang Diimplementasikan dalam Sistem………. 90
Tabel 6.1 Tabel Rencana Pengujian…………………………………………..137
Tabel 6.2 Tabel Pengujian Kelas DatabaseConnection……………………... 138
Tabel 6.3 Tabel Pengujian Kelas HalamanUtama…………………………… 138
Tabel 6.4 Tabel Pengujian Kelas HalamanDistribusiAtribut………………... 141
Tabel 6.5 Tabel Pengujian Kelas HalamanPilihDB………………………….. 141
Tabel 6.6 Tabel Pengujian Kelas HalamanPilihTabel……………………….. 142
Tabel 6.7 Tabel Perbandingan Hasil Deteksi Outlier Mahasiswa Angkatan 2007
Jalur Tes Tertulis………………………………………………….143
xvii
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
Tabel 6.8 Tabel Nilai per Atribut Hasil Outlier Mahasiswa Angkatan 2007 Jalur
Tes Tertulis………………………………………………………. 144
Tabel 6.9 Tabel Jumlah Outlier Berdasarkan Hasil Deteksi Outlier pada Data
Mahasiswa Angkatan 2007 dan 2008 Jalur Tes Tertulis Semester 1
dengan Nilai M dan D yang Berubah-ubah (54 Mahasiswa)…….. 151
Tabel 6.10 Tabel Jumlah Outlier Berdasarkan Hasil Deteksi Outlier pada Data
Mahasiswa Angkatan 2007 dan 2008 Jalur Prestasi Semester 1 dengan
Nilai M dan D yang Berubah-ubah (72 mahasiswa)……………….152
Tabel 6.11 Tabel Jumlah Outlier Berdasarkan Hasil Deteksi Outlier pada Data
Mahasiswa Angkatan 2007 dan 2008 Jalur Tes dan Jalur Prestasi
dengan Nilai M dan D yang Berubah-ubah (126 Mahasiswa)…… 153
Tabel 6.12 Tabel Perbadingan Lama Deteksi Outlier Berdasarkan Jumlah Blok
pada Data Mahasiswa Angkatan 2007 dan 2008 Jalur Tes dan Jalur
Prestasi…………………………………………………………… 156
xviii
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
DAFTAR GAMBAR
Gambar 2.1 Langkah-langkah dalam KDD (Fayyad et al., 1996 )…………... 10
Gambar 3.1 Gudang data „data_mahasiswa‟………………………………… 20
Gambar 3.2 Data mentah untuk implementasi algoritma Block-based NestedLoop…………………………………………………………… 25
Gambar 3.3 Pengecekan tetangga pada first array antara blok 1 dan blok 1... 27
Gambar 3.4 Hasil akhir pengecekan blok 1 dan blok 1 dalam first array…… 28
Gambar 3.5 Pencarian tetangga dari data first array pada second array……..28
Gambar 3.6 Hasil akhir pengecekan blok 1 (first array) dan blok 2 (second
array)………………………………………………………….. 29
Gambar 3.7 Pencarian tetangga dari data first array pada second array……..30
Gambar 3.8 Hasil akhir pengecekan blok 1 (first array) dan blok 3 (second
array)………………………………………………………….. 31
Gambar 3.9 Hasil akhir pengecekan blok 1 (first array) dan blok 4 (second
array)………………………………………………………….. 32
Gambar 4.1 Proses Umum Sistem Pendeteksi Outlier Menggunakan Algoritma
Block-based Nested-Loop…………...………………………… 39
Gambar 4.2 Diagram Use Case………………………………………………. 45
Gambar 4.3 Diagram Konteks……………………………………………….. 46
Gambar 4.4 Diagram Kelas Analisis………………………………………… 47
Gambar 4.5 Diagram Kelas Desain………………………………………….. 49
Gambar 4.6 Tampilan Antarmuka Halaman Awal…………………………... 83
Gambar 4.7 Tampilan Antarmuka Halaman Utama (Tab Preprocess)……… 84
xix
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
Gambar 4.8 Tampilan Antarmuka Halaman Utama (Tab Deteksi Outlier)…..85
Gambar 4.9 Tampilan Antarmuka Halaman Distribusi Atribut………………86
Gambar 4.10 Tampilan Antarmuka Halaman Pilih DB……………………… 87
Gambar 4.11 Tampilan Antarmuka Halaman Pilih Tabel…………………… 88
Gambar 4.12 Tampilan Antarmuka Halaman Bantuan……………………….89
Gambar 4.13 Tampilan Antarmuka Halaman Konfirmasi Keluar…………… 89
Gambar 5.1 Antarmuka Halaman Awal………………………………………91
Gambar 5.2 Antarmuka Halaman Utama, tab Preprocess…………………… 92
Gambar 5.3 Antarmuka Halaman Utama, tab Preprocess(File .xls atau .csv)..93
Gambar 5.4 Antarmuka Halaman Utama, tab Preprocess (Seleksi atribut)…. 94
Gambar 5.5 Antarmuka Halaman Utama, tab Deteksi Outlier......................... 95
Gambar 5.6 Antarmuka Halaman Utama, tab Deteksi Outlier (hasil deteksi
outlier)………………………………………………………… 95
Gambar 5.7 Dialog Untuk Menyimpan Hasil Deteksi Outlier………………. 96
Gambar 5.8 Pesan Sukses Menyimpan File Hasil Deteksi Outlier………….. 96
Gambar 5.9 Antarmuka Halaman Pilih DB………………………………….. 97
Gambar 5.10 Pesan Sukses Melakukan Koneksi Ke Basis data……………... 97
Gambar 5.11 Antarmuka Halaman Pilih Tabel……………………………….98
Gambar 5.12 Antarmuka Halaman Utama, tab Preprocess (input tabel dari basis
data)…………………………………………………………… 98
Gambar 5.13 Antarmuka Halaman Distribusi Atribut……………………….. 99
Gambar 5.14 Antarmuka Grafik Distribusi Atribut………………………….. 99
Gambar 5.15 Antarmuka Halaman Bantuan…………………………………. 100
xx
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
Gambar 5.16 Antarmuka Halaman Konfirmasi Keluar……………………… 101
Gambar 5.17 Pesan Kesalahan (1)…………………………………………… 101
Gambar 5.18 Pesan Kesalahan (2)…………………………………………… 102
Gambar 5.19 Pesan Kesalahan (3)…………………………………………... 102
Gambar 5.20 Pesan Kesalahan (4)…………………………………………… 102
Gambar 5.21 Pesan Kesalahan (5)…………………………………………… 103
Gambar 5.22 Pesan Kesalahan (6)…………………………………………… 103
Gambar 5.23 Pesan Kesalahan (7)…………………………………………… 103
Gambar 5.24 Pesan Kesalahan (8)…………………………………………… 104
Gambar 5.25 Antarmuka Open File………………………………………….. 105
Gambar 6.1a Grafik Hasil Deteksi Outlier pada Data Mahasiswa Angkatan 2007
dan 2008 Jalur Tes Tertulis Semester 1 dengan Nilai M=4 dan D
Berubah-ubah…………………………………………………. 151
Gambar 6.1b Grafik Hasil Deteksi Outlier pada Data Mahasiswa Angkatan 2007
dan 2008 Jalur Tes Tertulis Semester 1 dengan Nilai M=5 dan D
Berubah-ubah…………………………………………………. 151
Gambar 6.2a Grafik Hasil Deteksi Outlier pada Data Mahasiswa Angkatan 2007
dan 2008 Jalur Tes Tertulis Semester 1 dengan Nilai D=1 dan M
Berubah-ubah…………………………………………………. 151
Gambar 6.2b Grafik Hasil Deteksi Outlier pada Data Mahasiswa Angkatan 2007
dan 2008 Jalur Tes Tertulis Semester 1 dengan Nilai D=2 dan M
Berubah-ubah…………………………………………………. 151
Gambar 6.3a Grafik Hasil Deteksi Outlier pada Data Mahasiswa Angkatan 2007
dan 2008 Jalur Prestasi Semester 1 dengan Nilai M=4 dan D
Berubah-ubah…………………………………………………. 152
xxi
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
Gambar 6.3b Grafik Hasil Deteksi Outlier pada Data Mahasiswa Angkatan 2007
dan 2008 Jalur Prestasi Semester 1 dengan Nilai M=5 dan D
Berubah-ubah…………………………………………………. 152
Gambar 6.4a Grafik Hasil Deteksi Outlier pada Data Mahasiswa Angkatan 2007
dan 2008 Jalur Prestasi Semester 1 dengan Nilai D=1 dan M
Berubah-ubah…………………………………………………. 152
Gambar 6.4b Grafik Hasil Deteksi Outlier pada Data Mahasiswa Angkatan 2007
dan 2008 Jalur Prestasi Semester 1 dengan Nilai D=2 dan M
Berubah-ubah…………………………………………………. 152
Gambar 6.5a Grafik Hasil Deteksi Outlier pada Data Mahasiswa Angkatan 2007
dan 2008 Semester 1 dengan Nilai M=4 dan D Berubah-ubah. 153
Gambar 6.5b Grafik Hasil Deteksi Outlier pada Data Mahasiswa Angkatan 2007
dan 2008 Semester 1 dengan Nilai M=5 dan D Berubah-ubah.. 153
Gambar 6.6a Grafik Hasil Deteksi Outlier pada Data Mahasiswa Angkatan 2007
dan 2008 Semester 1 dengan Nilai D=1 dan M Berubah-ubah.. 153
Gambar 6.6b Grafik Hasil Deteksi Outlier pada Data Mahasiswa Angkatan 2007
dan 2008 Semester 1 dengan Nilai D=2 dan M Berubah-ubah.. 153
xxii
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
Bab 1
PENDAHULUAN
1.1
Latar Belakang
Penelitian dalam bidang pendidikan menggunakan teknik penambangan
data telah banyak dilakukan saat ini. Penambangan data dalam bidang pendidikan
(educational data mining) berfokus pada pengembangan metode-metode untuk
mengekstrak knowledge dari data-data pendidikan. Data pendidikan dapat berupa
data pribadi atau akademik. Selain itu data pendidikan juga dapat berasal dari elearning system yang memiliki data dalam jumlah besar yang digunakan oleh
banyak institusi (Tair & El-Halees, 2012).
Knowledge Discovery in Databases (KDD) adalah proses mengekstrak
informasi dari data berdasarkan pada analisis dan interpretasi tertentu. KDD
terdiri dari empat proses utama yaitu preprocessing, data mining, pattern
evaluation, dan knowledge presentation (Han & Kamber, 2006). Dari keempat
tahap tersebut, penambangan data (data mining) merupakan tahapan yang
menjadi fokus dalam pengolahan data mentah (training dataset) menjadi bentuk
yang dapat dievaluasi. Ada dua jenis pendekatan dalam melakukan penambangan
data yaitu supervised dan unsupervised. Pendekatan supervised artinya
penambangan dilakukan pada data yang telah diketahui label kelasnya.
Pendekatan unsupervised merupakan kebalikan dari pendekatan supervised.
Beberapa metode yang menggunakan pendekatan supervised antara lain
klasifikasi, prediksi dan asosiasi. Sedangkan metode yang menggunakan
1
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
2
pendekatan unsupervised antara lain clustering, binning, dan histogram analysis.
Data yang telah ditambang menggunakan salah satu dari metode-metode di atas
selanjutnya akan dievaluasi untuk menghasilkan sebuah informasi (knowledge).
Salah satu metode penambangan data yaitu analisis klaster. Klaster
merupakan kumpulan objek atau data dalam sebuah kelompok yang serupa satu
sama lain tetapi berbeda atau tidak mirip dengan objek atau data pada klaster lain.
Data diklaster atau dikelompokkan dengan prinsip memaksimalkan kemiripan
intraclass dan meminimalkan kemiripan interclass. Artinya, data-data yang
berada dalam sebuah klaster memiliki tingkat kemiripan yang tinggi satu sama
lain, tetapi memiliki tingkat kemiripan yang rendah dengan data pada klaster
lainnya. Klastering sering disebut sebagai segmentasi data karena klastering
membagi sejumlah besar data ke dalam grup berdasarkan kemiripannya.
Algoritma Block-based Nested-Loop merupakan contoh algoritma yang
memiliki kemampuan untuk mendeteksi outlier dalam sekumpulan data. Tidak
seperti klastering, deteksi outlier dilakukan untuk menemukan data yang tidak
konsisten dengan data lainnya. Data dianggap tidak konsisten (outlier) apabila
data tersebut tidak memiliki tingkat kemiripan yang sesuai dengan data lainnya
(Han & Kamber, 2006). Dengan adanya deteksi outlier, kita dapat mengenali
adanya kesalahan dalam memasukkan data, kecurangan dalam menggunakan data
(fraud detection) atau adanya sebuah kejadian langka yang memiliki makna
tertentu dan perlu dianalisis lebih lanjut (rare events analysis). Algoritma ini juga
memiliki unjuk kerja yang baik saat diimplementasikan pada kumpulan data
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
3
dengan jumlah atribut yang banyak atau high dimensional datasets (Ghoting et
al., 2006).
Algoritma Block-based Nested-Loop dapat diimplementasikan pada
sekumpulan data numerik untuk mendeteksi adanya outlier. Salah satu contoh
data numerik yaitu data akademik mahasiswa yang berupa hasil tes masuk
universitas dan indeks prestasi semester (IPS). Sejumlah mahasiswa yang
memiliki data akademik yang 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 akademik yang unik dapat dihasilkan dari
nilai IPS mahasiswa yang sangat tinggi atau sangat rendah pada setiap semester.
Selain itu, data akademik yang unik juga berasal dari tinggi rendahnya nilai tes
masuk mahasiswa. Sebagai contoh, sejumlah mahasiswa dengan nilai IPS dan
nilai tes masuk yang tinggi akan tergabung dalam sebuah kelompok yang sama.
Kemudian sejumlah mahasiswa yang memiliki nilai IPS dan nilai tes masuk 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 di kampus.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
1.2
4
Rumusan Masalah
Pada penelitian ini, deteksi outlier akan dilakukan berdasarkan nilai tes
masuk dan IPS. Mahasiswa dengan data akademik yang unik atau tidak memiliki
kemiripan dengan mahasiswa lainnya akan masuk ke dalam kelompok outlier.
Pada penelitian ini juga dilakukan analisis mengenai penggunaan blok-blok data
terhadap lama deteksi outlier. Jadi, rumusan masalah dalam penelitian ini adalah :
1.
Mahasiswa manakah yang memiliki data akademik yang unik atau
berbeda pada tiap semester berdasarkan nilai tes masuk dan IPS?
2. Bagaimanakah pengaruh penggunaan blok-blok data terhadap waktu
deteksi outlier?
1.3
Tujuan Penelitian
Tujuan penelitian ini yaitu :
1.
Melakukan deteksi outlier pada data akademik mahasiswa Prodi Teknik
Informatika Universitas Sanata Dharma berupa hasil tes masuk dan IPS
semester satu sampai semester empat menggunakan algoritma Blockbased Nested-Loop.
2.
Menganalisis hasil deteksi outlier yang dihasilkan oleh algoritma Blockbased Nested-Loop.
3.
Menganalisis waktu yang diperlukan untuk melakukan deteksi outlier
berdasarkan jumlah blok data yang digunakan oleh algoritma Block-based
Nested-Loop.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
1.4
5
Batasan Masalah
Batasan masalah pada penelitian ini yaitu :
1.
Algoritma deteksi outlier yang digunakan yaitu algoritma Block-based
Nested-Loop.
2.
Data yang digunakan dalam penelitian ini merupakan data akademik
mahasiswa Prodi Teknik Informatika angkatan 2007 dan 2008 di
Universitas Sanata Dharma berupa hasil tes penerimaan mahasiswa baru
(nilai penalaran mekanik, nilai penalaran verbal, nilai hubungan ruang,
nilai Bahasa Inggris, nilai kemampuan numerik), nilai final dan nilai
indeks prestasi semester dari semester satu sampai semester empat.
3.
Hasil penelitian ini berupa kelompok mahasiswa outlier, jika ada.
1.5
Manfaat Penelitian
Manfaat penelitian ini, antara lain:
1.
Memperkenalkan salah satu algoritma penambangan data khususnya
untuk mendeteksi outlier yaitu algoritma Block-based Nested-Loop serta
keunggulannya dalam mendeteksi outlier.
2.
Membantu pihak Universitas Sanata Dharma dalam mendeteksi kejadian
langka berkaitan dengan keunikan data akademik mahasiswa.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
1.6
6
Sistematika Penulisan
1.6.1
Bab 1 Pendahuluan
Bab ini berisi latar belakang, rumusan masalah, tujuan penelitian, batasan
masalah, manfaat penelitian dan sistematika penulisan
1.6.2
Bab 2 Landasan Teori
Bab ini berisi teori yang digunakan dalam penulisan tugas akhir ini. Teori
pertama yang digunakan yaitu Knowledge Discovery in Databases (KDD). Teori
kedua yang digunakan yaitu Outlier Detection. Outlier Detection terdiri dari
pengertian outlier, penyebab outlier, manfaat deteksi outlier, metode deteksi
outlier, Distance-Based Outlier Detection dan Algoritma Block-based NestedLoop
1.6.3
Bab 3 Metode Penelitian
Bab ini berisi penjelasan mengenai langkah atau metode yang dilakukan
untuk menyelesaikan masalah dalam penelitian ini. Hal pertama yang dibahas
yaitu mengenai data. Kedua yaitu mengenai pengolahan data yang terdiri dari
pemrosesan awal data, seleksi data, penambangan data, evaluasi pola yang
ditemukan dan presentasi pengetahuan. Ketiga yaitu mengenai contoh
implementasi algoritma Block-based Nested-Loop.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
1.6.4
7
Bab 4 Analisis dan Perancangan Sistem
Bab ini berisi pembahasan tentang beberapa komponen. Komponen
pertama yaitu identifikasi sistem. Komponen kedua yaitu input sistem, proses
sistem dan output sistem. Komponen ketiga yaitu perancangan struktur data.
Komponen keempat yaitu diagram use case. Komponen kelima yaitu
perancangan sistem yang terdiri dari diagram konteks, diagram aktivitas, diagram
kelas analisis, diagram sequence, diagram kelas desain dan detail algoritma tiap
method pada tiap kelas. Komponen keenam yaitu perancangan antarmuka.
1.6.5
Bab 5 Implementasi Sistem
Bab ini berisi tentang implementasi antarmuka, implementasi pengecekan
masukan, implementasi struktur data dan implementasi kelas serta analisis dari
masing-masing tampilan program.
1.6.6
Bab 6 Pengujian dan Analisis Hasil Pengujian
Bab ini berisi pengujian serta analisis terhadap pengujian yang dilakukan
serta kelebihan dan kekurangan sistem. Pengujian terbagi menjadi tiga jenis yaitu
pengujian blackbox serta kesimpulannya, pengujian review dan validitas oleh
pengguna serta kesimpulannya, pengujian efek perubahan nilai atribut
penambangan data serta kesimpulannya dan pengujian perbandingan waktu
deteksi outlier berdasarkan jumlah blok.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
1.6.7
8
Bab 7 Kesimpulan dan Saran
Kesimpulan dan saran berisi tentang kesimpulan dan saran dari penulis
tugas akhir mengenai penelitian yang dilakukan.
1.6.8
Daftar Pustaka
Daftar pustaka berisi tentang referensi yang digunakan dalam penyusunan
tugas akhir.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
Bab 2
LANDASAN TEORI
Bab ini berisi penjelasan mengenai teori atau konsep yang terkait dengan
rumusan masalah dalam penelitian ini. Konsep yang dijelaskan yaitu Knowledge
Discovery in Databases (KDD) dan Outlier Detection. Setiap konsep atau teori
akan berisi penjelasan mengenai definisi, bagian-bagian serta peran masingmasing bagian tersebut dalam penelitian ini. Hal-hal tersebut akan diuraikan
dalam dua sub bab di bawah ini.
2.1
Knowledge Discovery in Databases (KDD)
Knowledge Discovery in Databases (KDD) adalah proses mengambil
informasi penting yang tersembunyi dalam sekumpulan data. KDD membantu
seseorang dalam mengambil keputusan berdasarkan informasi yang ditemukan
tersebut (Baradwaj & Pal, 2011). KDD terbagi menjadi lima tahap yaitu
selection, preprocessing, transformation, data mining, dan evaluation (Fayyad et
al., 1996). Setiap tahap dalam KDD memiliki peranan penting dan saling
berkaitan satu sama lain untuk mengekstrak knowledge dari data.
9
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
10
Gambar 2.1 Langkah-langkah dalam KDD (Fayyad et al., 1996 )
Selection merupakan proses seleksi data yang relevan untuk dianalisis dari
sebuah basis data. Data yang relevan artinya data tersebut sesuai untuk digunakan
dalam mencapai tujuan analisis data. Data yang telah diseleksi melalui proses ini
disebut sebagai target data. Target data selanjutnya masuk ke tahapan berikutnya
yaitu preprocessing.
Preprocessing merupakan proses menyiapkan data agar siap untuk
ditambang. Langkah-langkah dalam preprocessing yaitu data cleaning, data
integration, data transformation, data reduction dan data discretization. Kelima
langkah tersebut dilakukan secara berurutan. Langkah tertentu boleh dilewati saat
kondisi data telah memenuhi syarat yang ditentukan masing-masing langkah
tersebut. Saat telah melewati tahap preprocessing, data siap untuk ditambang.
Data mining atau penambangan data adalah proses mengekstrak informasi
atau pengetahuan dari data dalam jumlah yang besar. Secara umum,
penambangan data dapat diklasifikasikan dalam empat kategori yaitu deteksi
dependensi, identifikasi kelas, deskripsi kelas dan deteksi outlier. Tiga kategori
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
11
pertama berkaitan dengan pola yang dimiliki oleh banyak obyek atau pada obyek
dengan persentase yang besar dalam dataset. Berbagai penelitian penambangan
data mengenai aturan asosiasi, klasifikasi, klastering dan generalisasi konsep
termasuk dalam tiga kategori tersebut. Sebaliknya, kategori keempat berfokus
pada obyek dengan persentase yang kecil, yang umumnya sering diabaikan atau
dihilangkan karena dianggap noise (Knorr & Ng, 1998).
Evaluation merupakan tahap pembuatan pola atau pemetaan berdasarkan
hasil penambangan data. Tujuan dilakukannya tahap ini untuk membantu pihakpihak yang berkepentingan terhadap data yang dianalisis untuk memperoleh
gambaran tentang data tersebut. Pembuatan diagram atau pohon keputusan
merupakan contoh visualisasi hasil penambangan data. Visualisasi dapat
memberikan gambaran yang lebih mudah dipahami dibandingkan hasil sebuah
penambangan data. Setelah tahap visualisasi selesai maka akan diperoleh hasil
akhir analisis data yaitu knowledge.
2.2
Outlier Detection
2.2.1
Pengertian Outlier
Outlier dalam sekumpulan data merupakan data yang dianggap tidak
mirip atau tidak konsisten dengan data lainnya. Outlier merupakan hasil
observasi (data pengukuran) dalam suatu kumpulan data yang nilainya sangat
berbeda jika dibandingkan dengan sekumpulan data dari pengukuran lain
(Hawkins, 1980). Outlier juga merupakan data yang tidak mengikuti pola umum
atau model dari data lainnya yang berada dalam kumpulan yang sama. Outlier
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
12
terlihat berbeda jauh dan tidak konsisten dengan data lain (Han & Kamber,
2006).
2.2.2
Penyebab Outlier
Pertama, munculnya outlier dapat disebabkan oleh data pengukuran yang
salah. Sebagai contoh, munculnya data umur seseorang yaitu 999 tahun dapat
disebabkan oleh pengaturan otomatis (default) program. Pengaturan otomatis ini
diberlakukan pada data umur yang tidak direkam (missing values) (Han &
Kamber, 2006).
Kedua, kemunculan outlier juga dapat dikarenakan data pengukuran
berasal dari populasi lain. Contohnya yaitu gaji seorang pimpinan perusahaan
dapat dianggap sebagai outlier di antara gaji para karyawan di perusahaan
tersebut (Han & Kamber, 2006). Hal ini disebabkan adanya perbedaan yang
sangat mencolok antara gaji seorang pimpinan dan gaji karyawan di sebuah
perusahaan.
Ketiga, outlier berasal dari data pengukuran yang benar tetapi mewakili
peristiwa atau keadaan unik yang jarang terjadi. Sebagai contoh, terdapat sebuah
sekolah yang selalu menghasilkan lulusan dengan nilai yang sangat rendah setiap
tahun. Ketika terdapat seorang siswa yang lulus dari sekolah tersebut dengan nilai
yang sangat tinggi, maka siswa itu akan dianggap sebagai outlier.
2.2.3
Manfaat Deteksi Outlier
Sebagian
besar
algoritma
penambangan
data
berfokus
untuk
meminimalkan pengaruh outlier atau mengeliminasi outlier tersebut. Hal ini
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
13
dapat mengakibatkan hilangnya informasi penting yang tersembunyi dibalik
outlier tersebut. Outlier sebenarnya dapat menjadi hal yang menarik untuk
dianalisis lebih lanjut.
Deteksi outlier (outlier detection) adalah deteksi yang dilakukan pada
sekumpulan obyek untuk menemukan obyek yang memiliki tingkat kemiripan
yang sangat rendah dibandingkan dengan obyek lainnya. Deteksi outlier umumya
digunakan untuk menemukan kejanggalan dalam data, deteksi kecurangan data
atau untuk mengetahui adanya pola khusus dalam sekumpulan data. Deteksi
outlier sering dimanfaatkan untuk mendeteksi kecurangan penggunaan kredit
atau layanan telekomunikasi. Deteksi outlier juga berguna dalam bidang
pemasaran, yaitu untuk mengidentifikasi perilaku belanja konsumen dengan
tingkat pendapatan yang tinggi atau rendah. Dalam dunia kesehatan, deteksi
outlier digunakan untuk menemukan respon yang tidak biasanya atau berbeda
terhadap berbagai perawatan kesehatan (Han & Kamber, 2006). Di bidang
pendidikan, deteksi outlier dapat digunakan untuk mengetahui prestasi akademik
mahasiswa yang berbeda secara signifikan dari mahasiswa lainnya dalam
universitas yang sama (Tair & El-Halees, 2012).
3.2.4
Metode Deteksi Outlier
Algoritma klastering umumnya menghilangkan outlier dari data karena
dianggap noise, tetapi algoritma deteksi outlier justru menjadikan outlier menjadi
hasil dari eksekusinya. Ada beberapa metode yang dapat digunakan untuk
mendeteksi outlier. Metode-metode tersebut dibagi menjadi empat pendekatan
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
14
yaitu: pendekatan statistical distribution-based, pendekatan distance-based,
pendekatan density-based local outlier dan pendekatan deviation-based (Han &
Kamber, 2006).
Pendekatan statistical distribution-based mengasumsikan sebuah model
distribusi atau probabilitas dari sejumlah data yang diidentifikasi outliernya
menggunakan discordancy test. Pendekatan distance-based menentukan outlier
berdasarkan jarak antar obyek serta jumlah obyek menggunakan parameter pct
dan dmin. Pendekatan density-based local outlier, berfokus pada menemukan
outlier pada sejumlah data berdasarkan kedekatan atau kepadatan antara satu
obyek dengan obyek lainnya. Pendekatan density-based hampir sama dengan
distance-based tetapi mampu membedakan antara local outlier dan global
outlier. Pendekatan deviation-based tidak menggunakan perhitungan secara
statistik maupun jarak untuk mengidentifikasi obyek yang diduga sebagai outlier.
Pendekatan ini mengidentifikasi adanya outlier dengan menguji karakteristik
utama dari obyek dalam sebuah kelompok. Setiap outlier yang ditemukan
menggunakan pendekatan-pendekatan tersebut selanjutnya perlu diperiksa
kembali untuk diyakini kebenarannya. Pada penelitian ini, penulis menggunakan
pendekatan distance-based untuk melakukan deteksi outlier.
2.2.5 Distance-Based Outlier Detection
Menurut pendekatan distance-based, sebuah obyek O dalam dataset T
merupakan DB (p,D)-outlier jika setidaknya ada p obyek dalam T terletak pada
jarak yang lebih dari D terhadap O. Diasumsikan N adalah jumlah obyek dalam
dataset T, dan F merupakan fungsi jarak yang digunakan untuk menghitung jarak
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
15
antar obyek dalam T. Untuk sebuah obyek O, D-neighbourhood dari O memuat
sekumpulan obyek 𝑄 ∈ 𝑇 yang terletak pada jarak kurang dari D terhadap O
sehingga { Q ∈ T | F (O, Q) ≤ D}. Nilai fraction p merupakan persentase jumlah
obyek minimum dalam T yang harus ada di luar D-neighbourhood dari sebuah
outlier. Diasumsikan M merupakan jumlah obyek maksimum dalam Dneighbourhood dari sebuah outlier sehingga M = N(1 - p) (Knorr & Ng, 1998).
Sebagai contoh, terdapat sebuah dataset T dengan jumlah obyek N sebanyak 100
dan persentase jumlah outlier dalam data sekitar 10%. Berdasarkan data tersebut
maka persentase data bukan outlier p adalah 100 – 10% yaitu 90% atau 0.9.
Untuk memperoleh nilai M maka menggunakan perhitungan N(1 – p) sehingga M
= 100(1-0.9) yaitu 10. Artinya, pada dataset T jumlah obyek maksimum dalam
D-neighbourhood sebuah outlier adalah 10 obyek. Apabila sebuah obyek A
dalam dataset T dapat menemukan lebih dari 10 obyek yang jaraknya kurang dari
D terhadap dirinya maka A akan menjadi data bukan outlier sebaliknya A akan
menjadi outlier. Nilai M adalah jumlah obyek maksimum dalam Dneighbourhood sebuah outlier sehingga dapat dikurangi menjadi 9, 8, 7 atau
bahkan 1 sampai diperoleh hasil outlier yang dianggap paling tepat. Pada
pendekatan distance-based terdapat beberapa algoritma yang dapat digunakan
antara lain Index-Based, Block-based Nested-Loop dan Cell-Based (Han &
Kamber, 2006).
Jarak antar dua obyek dalam sebuah kumpulan data memiliki arti yang
penting dalam deteksi outlier menggunakan pendekatan distance-based. Jarak
antar dua obyek menjadi nilai yang akan dibandingkan dengan nilai parameter D.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
16
Untuk menghitung jarak antar obyek harus disesuaikan dengan tipe variabel yang
dimiliki. Tipe variabel yang berupa nilai numerik dan sifatnya multidimensi,
dapat dihitung jaraknya menggunakan pengukuran Euclidean distance (Han &
Kamber, 2006).
Euclidean distance didefinisikan sebagai berikut
𝑑(𝑖, 𝑗) =
(𝑥𝑖1 − 𝑥𝑗 1 )2 + (𝑥𝑖2 − 𝑥𝑗 2 )2 + … . +(𝑥𝑖𝑛 − 𝑥𝑗𝑛 )2
(2.1)
di mana i = obyek pertama, j = obyek kedua, xi = nilai obyek pertama, xj = nilai
obyek kedua dan n = dimensi obyek.
Pendekatan distance-based melibatkan penggunaan dua buah parameter
sebagai input. Penentuan nilai parameter p dan D dapat melibatkan beberapa kali
percobaan (trial and error) hingga mendapatkan nilai yang paling tepat.
Pemilihan nilai parameter p dan D dapat mempengaruhi hasil deteksi outlier.
2.2.5.1 Algoritma Block-based Nested-Loop
Algoritma Block-based Nested-Loop merupakan pengembangan dari
algoritma deteksi outlier lain yaitu Index-Based. Algoritma ini menghindari
penggunaan memori dalam membentuk indeks untuk menemukan seluruh
DB(p,D)-outliers. Algoritma ini menggunakan prinsip block-oriented, nestedloop design.
Diasumsikan total free memory dari komputer yang digunakan
sebanyak B bytes. Algoritma ini selanjutnya membagi free memory komputer
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
17
dalam dua bagian yang disebut first array sebanyak ½B dan second array
sebanyak ½B. Data kemudian dibagi ke dalam blok-blok tertentu. Algoritma
Block-based Nested-Loop akan mengatur proses masuk keluarnya blok ke dalam
memori. Setiap data yang ada dalam blok tertentu akan secara langsung dihitung
jaraknya dengan data lainnya. Untuk setiap data t dalam first array, jumlah
tetangganya akan dihitung. Dua data dikatakan saling bertetangga apabila jarak
keduanya kurang dari atau sama dengan D. Perhitungan jumlah tetangga untuk
setiap obyek akan berhenti saat nilainya telah melebihi M (Knorr & Ng, 1998). M
merupakan jumlah tetangga maksimum dalam D-neighbourhood sebuah outlier.
Jika jumlah tetangga sebuah data telah melebihi M artinya data tersebut tidak
termasuk outlier.
Pseudocode algoritma Block-based Nested-Loop adalah sebagai berikut (Knorr &
Ng, 1998):
1.
Isi first array (½B) dengan sebuah blok dari T
2.
Untuk setiap obyek ti, pada first array, do :
a. counti  0
b. Untuk setiap obyek tj dalam first array, jika dist(ti ,tj) ≤ D;
Tambahkan nilai counti dengan 1. Jika counti > M, tandai ti sebagai
non-outlier dan proses dilanjutkan ke ti berikutnya.
3.
Selama masih ada blok yang tersisa untuk dibandingkan dengan first array,
do:
a.
Isi second array dengan blok lainnya (tetapi pastikan blok yang
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
18
belum pernah dimasukkan ke dalam first array berada pada urutan
terakhir)
b.
Untuk setiap obyek ti dalam first array yang belum ditandai
(unmarked) do:
Untuk setiap obyek tj dalam second array, jika dist(ti ,tj) ≤
D:
Tambahkan nilai counti dengan 1. Jika counti > M,
tandai ti sebagai non-outlier dan proses dilanjutkan
ke ti berikutnya.
4.
Untuk setiap obyek ti dalam first array yang belum ditandai (unmarked),
tandai ti sebagai outlier.
5.
Jika blok dalam second array sudah pernah dimasukkan ke dalam first array
sebelumnya, berhenti; jika belum, tukar posisi nama dari first array dan
second array dan kembali ke langkah 2.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
Bab 3
METODE PENELITIAN
Bab ini berisi penjelasan mengenai langkah atau metode yang dilakukan
untuk menyelesaikan masalah dalam penelitian ini. Langkah penyelesaian
masalah tersebut meliputi data yang digunakan dalam penelitian, cara mengolah
data dan contoh implementasi algoritma Block-based Nested-Loop. Hal-hal
tersebut akan diuraikan dalam tiga sub bab di bawah ini.
3.1
Data
Pada penelitian ini data yang digunakan adalah data akademik mahasiswa
Universitas Sanata Dharma Prodi Teknik Informatika Angkatan 2007 dan 2008.
Data ini diperoleh dari gudang data akademik mahasiswa hasil penelitian Rosa
dkk (2011). Data diperoleh dalam bentuk skrip .sql. Dari skrip tersebut, data yang
digunakan dalam penelitian ini adalah data nilai hasil seleksi masuk mahasiswa
(jalur tes dan jalur prestasi) dan nilai indeks prestasi semester (IPS) pada
semester satu sampai semester empat. Total data akademik yang digunakan
dalam penelitian ini sebanyak 126 buah.
19
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
3.2
20
Pengolahan Data
Pengolahan data akademik dalam penelitian ini meliputi beberapa langkah
yaitu :
3.2.1
Pemrosesan Awal Data
Data mentah yang digunakan dalam penelitian ini dalam bentuk skrip .sql.
Sebelum mengolah data yang ada dalam skrip tersebut, skrip dijalankan terlebih
dahulu menggunakan SQLyog. Hasil yang diperoleh yaitu terdapat gudang data
dengan nama data_mahasiswa dan di dalamnya terdapat beberapa tabel yaitu
dim_angkatan, dim_daftarsmu, dim_fakultas, dim_jeniskel, dim_kabupaten,
dim_prodi, dim_prodifaks, dim_statustes dan fact_lengkap2. Setelah semua tabel
berhasil dibuat, proses pengolahan data dilanjutkan ke seleksi data.
Gambar 3.1 Gudang data ‘data_mahasiswa’
3.2.2
Seleksi Data
Pada tahap ini dilakukan seleksi terhadap data yang relevan dengan
penelitian. Berdasarkan data yang diperoleh, data yang akan dipakai adalah
kolom ips1, ips2, ips3, ips4, ips4, nil11, nil12, nil13, nil14, nil15 dan final.
Kolom-kolom tersebut seluruhnya berada pada tabel fact_lengkap2. Kolomkolom tersebut kemudian diseleksi lagi barisnya yaitu diambil hanya baris
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
21
dengan sk_prodi = 27. Baris dengan sk_prodi = 27 merupakan data mahasiswa
yang berasal dari Prodi Teknik Informatika. Data ini yang dipilih karena dapat
digunakan sebagai variabel numerik untuk mendeteksi outlier dan sesuai untuk
mencapai tujuan penelitian.
3.2.3
Transformasi Data
Data yang telah diseleksi masih berupa data yang belum tepat untuk
ditambang. Data tersebut belum tepat ditambang karena masih terdapat
perbedaan rentang nilai antara atribut nilai final, nilai tes masuk dan ips. Nilai
final memiliki rentang nilai antara 0-100. Nilai tes masuk memiliki rentang nilai
antara 0-10. Ips memiliki rentang nilai antara 0-4. Perbedaan rentang 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).
Min-max normalization didefinisikan sebagai berikut :
(3.1)
di mana v = nilai awal, minA = nilai minimum atribut A sebelum normalisasi,
maxA = nilai maksimum atribut A sebelum normalisasi, new_maxA = nilai
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
22
maksimum atribut A setelah normalisasi dan new_minA = nilai minimum atribut A
setelah normalisasi.
Penelitian ini menggunakan data berupa nilai tes masuk, nilai final dan
ips. Range data nilai tes masuk dan data nilai final disamakan dengan range data
ips. Contoh normalisasi data nilai final adalah sebagai berikut. Diketahui nilai
final awal v = 77.10, nilai minimum awal minA = 0, nilai maksimum awal maxA =
100, nilai minimum baru new_minA = 0 dan nilai maksimum baru new_minA = 4,
maka nilai final setelah normalisasi v’ =
77.10−0
100 −0
4 − 0 + 0 = 3.08
Contoh normalisasi data nilai tes masuk adalah sebagai berikut. Diketahui nilai
tes awal v = 8.00, nilai minimum awal minA = 0, nilai maksimum awal maxA = 10,
nilai minimum baru new_minA = 0 dan nilai maksimum baru new_minA = 4, maka
nilai tes setelah normalisasi v’ =
3.2.4
8.00 − 0
10 −0
4 − 0 + 0 = 3.20
Penambangan Data
Data yang telah melalui proses transformasi data selanjutnya dicari
outliernya menggunakan algoritma deteksi outlier yaitu algoritma Block-based
Nested-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 :
1. Input, yang terdiri dari :
a. Nilai hasil seleksi penerimaan mahasiswa baru.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
23
Untuk mahasiswa yang mengikuti jalur tes, nilai hasil seleksi yang
digunakan berasal dari lima jenis mata tes yaitu nilai penalaran
mekanik, nilai penalaran verbal, nilai hubungan ruang, nilai
Bahasa Inggris dan nilai kemampuan numerik serta nilai final.
Untuk mahasiswa yang mengikuti jalur prestasi, nilai hasil seleksi
yang digunakan berasal dari nilai final.
b. Nilai Indeks Prestasi Semester (IPS) pada semester 1 sampai
semester 4.
2. Output, yaitu sejumlah data yang masuk ke dalam kelompok outlier,
jika ada
3.2.5
Evaluasi Pola yang Ditemukan
Pada tahap ini, pengetahuan atau pola berupa outlier yang didapat dari
proses deteksi outlier akan dievaluasi dengan hipotesa yang telah dibentuk
sebelumnya. Hipotesa awal mengenai mahasiswa yang masuk ke dalam kategori
outlier yaitu mahasiswa dengan data akademik khusus atau unik dilihat dari hasil
seleksi masuk dan IPS setiap semester. Kesesuaian hasil deteksi outlier dengan
hipotesa awal menunjukan output yang baik dari proses penambangan data yang
dilakukan.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
3.2.6
24
Presentasi Pengetahuan
Tahap ini merupakan tahap akhir dari penelitian. Pola khusus yang
dihasilkan (outlier) perlu ditampilkan ke dalam bentuk yang mudah dimengerti
oleh pihak yang berkepentingan. Oleh sebab itu, pada tahap ini akan dilakukan
pembuatan sistem dengan antarmuka pengguna yang mudah dimengerti oleh
pihak universitas.
3.3
Contoh Implementasi Algoritma Block-based Nested-Loop
Pada penelitian ini, dilakukan deteksi outlier menggunakan algoritma
Block-based Nested-Loop dengan data akademik yang berasal dari gudang data
data akademik mahasiswa yang berasal dari penelitian Rosa dkk (2011). Data
yang awalnya dalam bentuk skrip .sql diubah ke dalam format .xls agar lebih
mudah untuk diolah. Data yang akan diolah berasal dari tabel fact_lengkap2.
Jumlah data yang digunakan sebanyak 13 baris. Data tersebut telah diseleksi
khusus untuk mahasiswa yang memiliki sk_prodi = 27 (Prodi Teknik
Informatika), angkatan 2007 dan statustes = T (jalur tes). Data yang digunakan
untuk analisis tersebut adalah seperti gambar 3.2 di bawah ini
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
25
Gambar 3.2 Data mentah untuk implementasi algoritma Block-based NestedLoop
Pada bagian ini, penjelasan mengenai langkah-langkah deteksi outlier
menggunakan algoritma Block-based Nested-Loop hanya akan ditampilkan
menggunakan data mahasiswa di atas pada semester satu saja. Untuk semester
tiga hingga semester empat hanya akan ditampilkan hasil deteksi outliernya saja.
Proses deteksi outlier menggunakan algoritma Block-based Nested-Loop adalah
sebagai berikut:
1.
Menentukan nilai parameter D = 2 dan M = 4
2.
Mengasumsikan jumlah blok = 4
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
3.
26
Membagi seluruh data ke dalam sejumlah blok. Jumlah blok = 4, maka
setiap
13
4
= 3 data dan sisa 1 data. Berdsarkan perhitungan tersebut, setiap
blok akan berisi 3 buah data. Perhitungan ini menyisakan 1 data yang belum
masuk ke dalam sebuah blok. Sisa data dapat dimasukkan ke dalam blok
yang mana saja. Dalam contoh ini, sisa data dimasukkan ke dalam blok ke-4.
Dengan demikian diperoleh hasil pembagian blok yaitu blok 1, blok 2, blok
3 (masing-masing berisi 3 data) dan blok 4 (berisi 4 data)
Tabel 3.1 Data mentah dibagi ke dalam 4 blok
4. First array diisi dengan data dari blok 1.
5. Setiap data dalam first array dihitung jaraknya terhadap setiap data lainnya
dalam first array menggunakan Euclidean distance dan nilainya dimasukkan
pada kolom Eucliden dist.
Setiap kali jarak telah dihitung, nilai jarak langsung dibandingkan dengan
nilai parameter D. Jika jarak ≤ D, maka kedua data dinyatakan sebagai
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
27
tetangga dan ditandai dengan angka 1 pada kolom Neighbor. Jika jarak > D,
maka dinyatakan sebagai bukan tetangga dan ditandai dengan angka 0.
Gambar 3.3 Pengecekan tetangga pada first array antara blok 1 dan blok 1
Menurut analisis di atas, pada data mahasiswa dengan nomor 73 ditemukan
tetangga sebanyak 2 buah yaitu mahasiswa dengan nomor 74 dan 75.
6. Setelah jumlah tetangga ditemukan, lalu dibandingkan dengan nilai parameter
M. Jika jumlah tetangga > M maka data tersebut dinyatakan sebagai bukan
outlier, jika sebaliknya maka data masih dinyatakan sebagai unmarked. Pada
contoh di atas, karena diperoleh jumlah tetangga = 2 yang artinya < M, maka
data masih diberi keterangan unmarked.
7. Selanjutnya, pengecekan dilakukan terhadap data lainnya dalam blok 1 yaitu
mahasiswa nomor 74 dan 75 (kembali ke langkah 5).
Hasil pengecekan dalam first array (blok 1 dan blok 1) diperoleh semua data
masih berstatus unmarked. Artinya, seluruh data tersebut masih dicek lagi
dalam pengecekan berikutnya pada iterasi selanjutnya.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
28
Gambar 3.4 Hasil akhir pengecekan blok 1 dan blok 1 dalam first array
Selanjutnya blok 2 dimasukkan ke second array.
8. Setiap data dalam first array yang masih unmarked, dicari tetangganya yang
berada dalam second array. Jumlah tetangga yang diperoleh pada perhitungan
sebelumnya akan ditambahkan ke dalam pengecekan ini.
Gambar 3.5 Pencarian tetangga dari data first array pada second array
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
29
Pada gambar di atas, terlihat bahwa mahasiswa nomor 73 mendapatkan 1 orang
tetangga pada pengecekan dengan blok 2. Jumlah tetangga ini dijumlahkan
dengan jumlah tetangga sebelumnya yaitu 2 orang sehingga menjadi 3 orang.
Mahasiswa nomor 73 masih berstatus unmarked pada tahap ini karena jumlah
tetangganya masih < M. Maka data mahasiswa ini akan dimasukkan lagi ke
dalam pengecekan selanjutnya.
9. Selanjutnya, pengecekan dilakukan terhadap data lainnya dalam blok 1 yaitu
mahasiswa nomor 74 dan 75 (kembali ke langkah 8).
Hasil akhir pengecekan antara blok 1 (first array) dan blok 2 (second array)
diperoleh mahasiswa nomor 73, 74 dan 75 akan dimasukkan ke dalam
pengecekan dengan blok selanjutnya karena masih ditandai sebagai unmarked.
Gambar 3.6 Hasil akhir pengecekan blok 1 (first array)
dan blok 2 (second array)
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
30
Selanjutnya blok 3 dimasukkan ke second array.
10. Setiap data dalam first array yang masih unmarked, dicari tetangganya yang
berada dalam second array. Jumlah tetangga yang diperoleh pada perhitungan
sebelumnya akan ditambahkan ke dalam pengecekan ini.
Gambar 3.7 Pencarian tetangga dari data first array pada second array
Pada gambar di atas, terlihat bahwa mahasiswa nomor 73 mendapatkan 1
tetangga. Jumlah tetangga ini dijumlahkan dengan jumlah tetangga sebelumnya
yaitu 3 orang sehingga menjadi 4 orang. Mahasiswa nomor 73 masih berstatus
unmarked pada tahap ini karena jumlah tetangganya masih kurang dari M. Maka
data mahasiswa ini akan dimasukkan lagi ke dalam pengecekan selanjutnya.
11. Selanjutnya, pengecekan dilakukan terhadap data lainnya dalam blok 1 yaitu
mahasiswa nomor 74 dan 75 (kembali ke langkah 10).
Hasil akhir pengecekan antara blok 1 (first array) dan blok 3 (second array)
diperoleh 2 data yang ditandai sebagai bukan outlier yaitu mahasiswa dengan
nomor 74 dan 75. Ketika mahasiswa 74 dicek dengan mahasiswa nomor 80,
jumlah tetangga mahasiswa nomor 74 telah mencapai M > 4. Jumlah tetangga
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
31
mahasiswa nomor 74 adalah 4 dari pengecekan sebelumnya dan ditambah 1 pada
tahap ini sehingga menjadi 5 orang. Data yang diberi label biru menunjukkan
data yang tidak ikut serta ditambahkan sebagai tetangga mahasiswa nomor 74
karena pengecekan berhenti saat M > 4. Kedua data ini tidak akan disertakan lagi
dalam pengecekan berikutnya pada iterasi selanjutnya.
Gambar 3.8 Hasil akhir pengecekan blok 1 (first array)
dan blok 3 (second array)
Selanjutnya blok 4 dimasukkan ke dalam second array.
12. Setiap data dalam first array yang masih unmarked, dicari tetangganya yang
berada dalam second array. Jumlah tetangga yang diperoleh pada perhitungan
sebelumnya akan ditambahkan ke dalam pengecekan ini.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
32
Gambar 3.9 Hasil akhir pengecekan blok 1 (first array)
dan blok 4 (second array)
Hasil akhir pengecekan antara blok 1 (first array) dan blok 4 (second array)
diperoleh data mahasiswa 73 yang ditandai sebagai bukan outlier yaitu. Ketika
mahasiswa 73 dicek dengan mahasiswa nomor 83, jumlah tetangga mahasiswa
nomor 73 telah mencapai M > 4. Jumlah tetangga mahasiswa nomor 73 adalah 4
dari pengecekan sebelumnya dan ditambah 1 pada tahap ini sehingga menjadi 5
orang. Data yang diberi label biru menunjukkan data yang tidak ikut serta
ditambahkan sebagai tetangga mahasiswa nomor 73 karena pengecekan berhenti
saat M > 4. Karena seluruh data dalam blok 1 telah dicek dengan seluruh blok
lainnya maka iterasi pegecekan outlier untuk data dalam blok 1 telah selesai.
13. Jika blok yang berada dalam second array belum pernah menjadi first array,
tukarkan isi kedua array tersebut dan proses pengecekan berjalan kembali
seperti pada langkah ke-4. Jika blok yang berada pada second array sudah
pernah menjadi first array, proses deteksi outlier dihentikan.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
33
Urutan pengecekan data pada kasus di atas adalah sebagai berikut:
1. Blok 1 dan Blok 1, kemudian dengan Blok 2, Blok 3, Blok 4
total ada 4 blok yang dibaca
2. Blok 4 dan Blok 4 (tidak perlu dibaca, sudah berada dalam array),
kemudian dengan Blok 1 (tidak perlu dibaca, sudah berada dalam array),
Blok 2, dan Blok 3
total ada 2 blok yang dibaca
3. Blok 3 dan Blok 3, kemudian dengan Blok 4, Blok 1, dan Blok 2
total ada 2 blok yang dibaca
4. Blok 2 dan Blok 2, kemudian dengan Blok 3, Blok 4, Blok 1
total ada 2 blok yang dibaca
Total ada 10 blok yang dibaca dalam pengecekan ini.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
Bab 4
ANALISIS DAN PERANCANGAN SISTEM
4.1
Identifikasi Sistem
Universitas Sanata Dharma melakukan seleksi penerimaan mahasiswa
baru setiap tahun. Seleksi penerimaan mahasiswa baru terbagi menjadi dua jalur
yaitu jalur prestasi dan jalur tes. Kedua jalur penerimaan mahasiswa baru tersebut
memiliki persyaratan yang harus dipenuhi oleh calon mahasiswa. Calon
mahasiswa yang mengikuti jalur prestasi diwajibkan melampirkan nilai raport
SMA saat kelas XI semester 1 dan semester 2. Untuk calon mahasiswa yang
mengikuti jalur tes, diwajibkan mengikuti tes tertulis yang terdiri dari lima jenis
tes yaitu tes penalaran mekanik, tes penalaran verbal, tes hubungan ruang, tes
kemampuan numerik dan tes Bahasa Inggris. Berdasarkan nilai final untuk jalur
prestasi dan nilai final serta nilai lima tes untuk jalur tes tersebut, dapat
ditentukan calon mahasiswa yang diterima menjadi mahasiswa di Universitas
Sanata Dharma.
Mahasiswa di Universitas Sanata Dharma menjalani masa perkuliahan
yang dibagi ke dalam beberapa semester. Setiap semester dilakukan evaluasi
untuk mengetahui tingkat pemahaman setiap mahasiswa. Tingkat pemahaman
mahasiswa ditunjukkan oleh Indeks Prestasi Semester (IPS). Setiap mahasiswa
memiliki IPS yang bervariasi terhadap mahasiswa lainnya. Selain itu setiap
mahasiswa juga dapat memiliki IPS yang sama atau berbeda-beda di setiap
semester.
34
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
35
Deteksi outlier bermanfaat dalam membantu pihak universitas dalam
menemukan data akademik yang unik. Mahasiswa yang memiliki nilai tinggi saat
mengikuti seleksi penerimaan mahasiswa baru belum tentu akan memiliki IPS
yang tinggi di setiap semester, demikian juga sebaliknya. Tetapi tidak menutup
kemungkinan juga bahwa ada mahasiswa yang selalu memiliki nilai tinggi atau
rendah sejak seleksi penerimaan mahasiswa baru hingga di setiap semester
selama perkuliahan. Dengan demikian, ada kemungkinan munculnya mahasiswa
dengan data akademik yang unik di setiap semester. Mahasiswa dengan data
akademik yang unik ini selanjutnya disebut sebagai outlier.
Sistem ini menggunakan pendekatan distance-based dengan algoritma
Block-based Nested-Loop untuk melakukan deteksi outlier. Data yang digunakan
penelitian ini untuk diolah menggunakan sistem deteksi outlier yaitu data
akademik mahasiswa Prodi Teknik Informatika angkatan 2007 dan 2008 di
Universitas Sanata Dharma berupa hasil tes penerimaan mahasiswa baru (nilai
penalaran mekanik, nilai penalaran verbal, nilai hubungan ruang, nilai Bahasa
Inggris dan nilai kemampuan numerik), nilai final dan nilai indeks prestasi
semester dari semester satu sampai semester empat. Data diperoleh dari gudang
data akademik mahasiswa hasil penelitian Rosa dkk (2011).
4.2
Input Sistem, Proses Sistem dan Output Sistem
4.2.1
Input Sistem
Sistem Pendeteksi Outlier Menggunakan Algoritma Block-based NestedLoop ini dapat menerima masukan data dari pengguna berupa file berformat .xls
dan .csv serta tabel dari basis data. Pengguna perlu memperhatikan kelengkapan
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
36
data yang diinputkan sehingga proses deteksi outlier yang dilakukan oleh sistem
dapat berjalan dengan benar dan keluaran yang dihasilkan juga tepat.
Sistem Pendeteksi Outlier Menggunakan Algoritma Block-based NestedLoop ini juga memerlukan masukan data berupa nilai M dan D. Nilai M dan D ini
diperlukan untuk melakukan deteksi outlier terhadap data file .xls, .csv atau tabel
dari basis data yang diinputkan pengguna. Penjelasan lebih lanjut dari nilai M dan
D dapat dijelaskan sebagai berikut:
1. Nilai M menunjukkan jumlah tetangga atau obyek maksimum dari
sebuah outlier dalam ketetanggaan-D (Knorr & Ng, 1998). Sebuah
data akan dinyatakan sebagai outlier apabila jumlah tetangganya
kurang dari atau sama dengan M. Sebaliknya, data yang jumlah
tetangganya lebih dari M akan dinyatakan sebagai bukan outlier.
Penentuan nilai M disesuaikan dengan jumlah data yang digunakan
serta persentase data yang diperkirakan sebagai outlier.
2. Nilai D menunjukkan jangkauan (range) nilai yang menjadi dasar
penentuan dua buah data merupakan tetangga atau tidak berdasarkan
jarak (euclidean distance) kedua data tersebut. Perhitungan jarak akan
dilakukan oleh sistem. Jika jarak dua data bernilai kurang dari atau
sama dengan D, maka keduanya merupakan tetangga. Pengguna
menentukan nilai D dengan memperhatikan range nilai setiap atribut
dari data yang diinputkan.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
37
Pada penelitian ini peneliti menggunakan data akademik mahasiswa
Prodi Teknik Informatika Universitas Sanata Dharma. Data yang digunakan ini
terbagi menjadi data akademik mahasiswa yang mengikuti jalur tes dan jalur
prestasi. Beberapa atribut yang digunakan dalam data akademik tersebut dapat
dilihat pada tabel 4.1 di bawah ini.
Tabel 4.1 Tabel Nama Atribut pada Data Akademik Mahasiswa
No.
1.
Nama
Atribut
Final
2.
Nil11
3.
Nil12
4.
Nil13
5.
6.
Nil14
Nil15
7.
Ips1
8.
Ips2
9.
Ips3
10.
Ips4
4.2.2
Penjelasan
Nilai
Atribut ini menyimpan nilai final mahasiwa
saat seleksi penerimaan mahasiswa baru
Atribut ini menyimpan hasil tes penalaran
mekanik
Atribut ini menyimpan hasil tes penalaran
verbal
Atribut ini menyimpan hasil tes hubungan
ruang
Atribut ini menyimpan hasil tes Bahasa Inggris
Atribut ini menyimpan hasil tes kemampuan
numerik
Atribut ini menyimpan nilai IPS mahasiswa
semester 1
Atribut ini menyimpan nilai IPS mahasiswa
semester 2
Atribut ini menyimpan nilai IPS mahasiswa
semester 3
Atribut ini menyimpan nilai IPS mahasiswa
semester 4
0 – 100
0 – 10
0 – 10
0 – 10
0 – 10
0 – 10
0–4
0–4
0–4
0-4
Proses Sistem
Sistem Pendeteksi Outlier Menggunakan Algoritma Block-based NestedLoop ini memiliki beberapa tahapan proses. Pertama, pengguna memasukkan
data yang akan diolah dalam bentuk file berformat .xls atau .csv. Pengguna juga
dapat memasukkan data dari basis data. Kedua, pengguna dapat melakukan
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
38
seleksi atribut serta melihat distribusi atribut. Seleksi atribut digunakan untuk
memilih atribut tertentu yang akan dihapus. Distribusi atribut digunakan untuk
melihat variasi nilai dalam setiap atribut berserta jumlahnya dalam bentuk tabel
maupun grafik. Tahap kedua ini merupakan tahap pilihan sehingga tidak harus
dikerjakan. Ketiga, pengguna harus memasukkan nilai parameter M dan D
sebelum proses deteksi outlier dilakukan. Kemudian sistem akan menghitung
jumlah blok yang diperlukan berdasarkan jumlah data yang dimasukkan, jumlah
atribut serta kapasitas memori Java Virtual Machine (JVM) yang tidak terpakai.
Setelah itu data dikelompokkan ke dalam blok yang telah dibuat. Kemudian,
setiap data akan dihitung jaraknya (Euclidean distance) dengan data lainnya. Dua
buah data dianggap sebagai tetangga apabila nilai Euclidean distance kurang dari
sama dengan nilai parameter D. Saat perhitungan tetangga sebuah data telah
mencapai M+1, maka data tersebut dianggap sebagai bukan outlier. Sebaliknya
jika hingga pengecekan dengan data terakhir jumlah tetangga sebuah data belum
mencapai M+1 maka data tersebut merupakan outlier. Tahapan proses di atas
dapat dilihat pada gambar 4.1 di bawah ini.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
39
Start
Data tipe .xls
Seleksi
atribut?
Ya
Proses seleksi
atribut
Ya
Proses distribusi
atribut
Data tipe .csv
Tidak
Data dari basis
data
Distribusi
atribut?
Tidak
Masukkan M dan D
Proses deteksi outlier
Tampilkan outlier
End
Gambar 4.1 Proses Umum Sistem Pendeteksi Outlier Menggunakan
Algoritma Block-based Nested-Loop
4.2.3
Output Sistem
Keluaran yang diperoleh dari sistem yang dibangun ini terbagi menjadi
dua bagian sebagai berikut:
1.
Proses input menampilkan :
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
2.
4.3
a.
Data yang dipilih dalam bentuk tabel data, jumlah data
b.
Daftar nama atribut
40
Proses deteksi outlier menampilkan :
a.
Outlier beserta daftar nilai untuk setiap atribut
b.
Jumlah data
c.
Jumlah outlier
d.
Lama deteksi outlier
Perancangan Struktur Data
Sistem Pendeteksi Outlier Menggunakan Algoritma Block-based Nested-
Loop ini menggunakan struktur data berupa graph. Pemilihan penggunaan
struktur data graph karena dapat membantu penyimpanan data dengan banyak
atribut serta untuk menghubungkan satu data dengan data lainnya. Setiap data
akan dianggap sebagai vertex. Setiap vertex memiliki label serta nilai. Nilai setiap
vertex disimpan dalam bentuk list karena setiap vertex dapat memiliki lebih dari
satu atribut.
Penggunaan algoritma Block-based Nested-Loop mengharuskan adanya
pembentukan blok-blok data untuk membantu proses load data ke memori. Setiap
blok berisi sekumpulan vertex yang jumlahnya disesuaikan dengan perhitungan
blok. Setiap blok memiliki nomor blok, isi blok, jumlah anggota, sisa dan status
first array. Nomor blok digunakan untuk membantu pertukaran blok selama
proses deteksi outlier berlangsung. Saat pembagian vertex ke dalam sejumlah
blok, ada kemungkinan terdapat sisa vertex karena jumlah data tidak habis dibagi
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
41
dengan jumlah blok. Sisa vertex ini akan dimasukkan ke blok tertentu. Karena
tidak ada aturan khusus mengenai penempatan vertex sisa tersebut, peneliti
menetapkan untuk memasukkannya ke dalam blok dengan nomor urut terakhir.
Status first array bertipe boolean dan digunakan sebagai penanda bahwa sebuah
blok sudah pernah menjadi first array. Status ini diperlukan sebab sesuai dengan
aturan dalam algoritma Block-based Nested-Loop, sebuah blok hanya dapat sekali
menjadi first array. Ilustrasi struktur data yang digunakan oleh sistem ini dapat
dilihat pada gambar di bawah ini.
Input data sejumlah 8 baris
dengan 3 atribut
Nama Atribut 1 Atribut 2 Atribut 3
A
....
....
....
B
....
....
....
C
....
....
....
D
....
....
....
E
....
....
....
F
....
....
....
G
....
....
....
H
....
....
....
Buat Graph (8)
Index
0
1
2
3
4
5
6
7
0
0
-1
-1
-1
-1
-1
-1
-1
1
-1
0
-1
-1
-1
-1
-1
-1
2
-1
-1
0
-1
-1
-1
-1
-1
3
-1
-1
-1
0
-1
-1
-1
-1
4
-1
-1
-1
-1
0
-1
-1
-1
5
-1
-1
-1
-1
-1
0
-1
-1
6
-1
-1
-1
-1
-1
-1
0
-1
7
-1
-1
-1
-1
-1
-1
-1
0
- Dibentuk matriks jarak (edge).
Karena data berjumlah 8 maka
dibentuk matriks 8x8. Untuk
pertemuan indeks yang sama
akan diberi nilai 0 dan pertemuan
indeks yang berbeda akan diberi
nilai -1.
- Dibentuk vertex
sebanyak 8 buah
kosong
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
Insert
Vertex
Label „A‟
List nilai
Vertex[0] = A
index
.
.
.
.
.
.
.
.
.
StatusUnmarked
= true
StatusNonOutlier
=false
Label „H‟
List nilai
Vertex[7] = H
StatusUnmarked
= true
StatusNonOutlier
=false
42
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
43
Hitung jumlah blok dan pembagian vertex ke dalam blok
Diasumsikan pada contoh kasus ini, diperoleh :
jumlah blok = 3
data per blok = 2
sisa = 2
sisa lalu dimasukkan ke blok terakhir
A
B
C
D
Blok 1
Blok 2
E
F
G
H
Blok 3
Insert edge dan pencarian outlier
First Array
Second Array
Blok 1
Status first array blok 1 harus false baru dimasukkan ke First Array
Blok 1
dan
Blok 2
Blok 1
dan
Blok 3
Untuk tiap vertex dalam blok 1 :
-jumlah tetangga <= M
-status unmarked = true
-status nonoutlier = false
Setiap vertex yang berada dalam blok 1 dihitung euclidean distance dan
jumlah tetangganya
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
44
Status first array blok 1 = true
First Array
Second Array
Blok 3
Status first array blok 3 harus false baru dimasukkan ke First Array
Blok 3
dan
Blok 1
Blok 3
dan
Blok 2
Untuk tiap vertex dalam blok 3 :
-jumlah tetangga <= M
-status unmarked = true
-status nonoutlier = false
Setiap vertex yang berada dalam blok 3 dihitung euclidean distance dan
jumlah tetangganya
Status first array blok 3 = true
First Array
Second Array
Blok 2
Status first array blok 2 harus false baru dimasukkan ke First Array
Blok 2
dan
Blok 3
Blok 2
dan
Blok 1
Untuk tiap vertex dalam blok 2 :
-jumlah tetangga <= M
-status unmarked = true
-status nonoutlier = false
Setiap vertex yang berada dalam blok 2 dihitung euclidean distance dan
jumlah tetangganya
Status first array blok 2 = true
Karena status first array blok 1 = true, maka blok 1 tidak dimasukkan lagi ke first
array. Hal ini menandakan seluruh blok telah dicek outliernya. Kemudian proses
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
45
pencarian outlier selesai. Lalu setiap vertex yang memiliki status non outlier =
false akan ditampilkan sebagai outlier.
4.4
Diagram Use Case
Diagram use case digunakan untuk menggambarkan interaksi antara
pengguna dengan sistem. Pengguna sistem ini sebanyak satu orang. Fungsi yang
dapat dijalankan oleh pengguna sistem ini adalah fungsi memasukkan data dalam
bentuk file .xls, .csv atau tabel dari basis data. Fungsi berikutnya itu seleksi
atribut dan distribusi atribut. Fungsi berikutnya yaitu fungsi proses pencarian
outlier dari data yang dimasukkan. Fungsi terakhir yaitu fungsi menyimpan hasil
deteksi outlier dalam bentuk file. Diagram use case dari sistem pendeteksi outlier
menggunakan algoritma Block-based Nested-Loop ini dapat dilihat pada gambar
4.2 di bawah ini.
Gambar 4.2 Diagram Use Case
Detail tabel ringkasan dan skenario use case dapat dilihat pada bagian
lampiran dalam tugas akhir ini pada lampiran 1 dan 2.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
4.5
46
Perancangan Sistem
4.5.1
Diagram Konteks
Data .xls, data .csv, tabel
dalam basis data, M, D
Pengguna
Outlier, jumlah outlier,
jumlah data,
lama deteksi outlier
Sistem Pendeteksi Outlier
Menggunakan Algoritma
Block-based Nested-Loop
Gambar 4.3 Diagram Konteks
4.5.2
Diagram Aktivitas
Diagram aktivitas digunakan untuk menunjukan aktivitas yang dikerjakan
oleh pengguna dan sistem dalam setiap use case yang disebutkan dalam gambar
4.1. Berikut adalah diagram aktivitas dari setiap use case:
1.
Diagram Aktivitas Input Data File .xls, .csv atau Tabel Dari Basis Data
2.
Diagram Aktivitas Pencarian Outlier
3.
Diagram Aktivitas Simpan Hasil Pencarian Outlier
4.
Diagram Aktivitas Seleksi Atribut
5.
Diagram Aktivitas Distribusi Atribut
Detail diagram aktivitas dari setiap use case dapat dilihat pada bagian
lampiran dalam tugas akhir ini pada lampiran 3.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
47
4.5.3
Diagram Kelas Analisis
Gambar 4.4 Diagram Kelas Analisis
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
48
Detail tabel diagram kelas analisis dapat dilihat pada bagian lampiran
dalam tugas akhir ini pada lampiran 4.
4.5.4
Diagram Sequence
Sistem Pendeteksi Outlier Menggunakan Algoritma Block-based NestedLoop ini memiliki beberapa sequence diagram dalam proses perancangannya.
Berikut adalah sequence diagram dari Sistem Pendeteksi Outlier Menggunakan
Algoritma Block-based Nested-Loop.
1.
Diagram Sequence Input Data File .xls, .csv atau Tabel Dari Basis Data
2.
Diagram Sequence Pencarian Outlier
3.
Diagram Sequence Simpan Hasil Pencarian Outlier
4.
Diagram Sequence Seleksi Atribut
5.
Diagram Sequence Distribusi Atribut
Untuk penjelasan detail dari masing – masing diagram sequence dapat
dilihat pada lampiran yang terdapat pada tugas akhir ini pada lampiran 5.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
4.5.3
Diagram Kelas Desain
Gambar 4.5 Diagram Kelas Desain
49
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
50
HalamanAwal
-titleLabel
: JLabel
-footer1Label
: JLabel
-footer2Label
: JLabel
-masukButton
: JButton
-icon
: JLabel
-halamanAwalDesktopPane
: JDesktopPane
-halamanAwalPanel
: Jpanel
+HalamanAwal()
: <<constructor>>
-masukButtonActionPerformed (java.awt.event.ActionEvent evt) : void
HalamanUtama
-atributDField
-atributDLabel
-atributMField
- atributMLabel
-bantuanButton
-buttonPanel
-checkAllButton
-deteksiOutlierTabel
-distAtributButton
-hapusAtributButton
-hapusAtributLabel
-hapusAtributTable
-hasilOutlierTextArea
-jTabbedPane1
-jumDataField
-jumDataLabel
-jumlahDataField
-jumlahDataLabel
-keluarButton
-namaAlgoLabel
-panelDeteksiOutlier
-panelPreprocess
-pathField
-pilihDBButton
-pilihFileButton
-preprocessTabel
-prosesButton
-simpanButton
-submitDataButton
-titleLabel
-titlePanel
-uncheckAllButton
cb_table
: JTextField
: JLabel
: JTextField
: JLabel
: JButton
: JPanel
: JButton
: JTable
: JButton
: JButton
: JLabel
: JTable
: JTextArea
: JTabbedPane
: JTextField
: JLabel
: JTextField
: JLabel
: JButton
: JLabel
: JPanel
: JPanel
: JTextField
: JButton
: JButton
: JTable
: JButton
: JButton
: JButton
: JLabel
: JPanel
: JButton
:
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
51
CheckBoxTableModel
fm
: SeleksiAtribut
con
: DatabaseConnection
+HalamanUtama()
: <<constructor>>
+HalamanUtama(DatabaseConnection db,
String namaTabel)
: <<constructor>>
+pilihFile()
: void
+pilihXLS(JfileChooser chooser, String nama_file, String pola, String pola2)
: void
+pilihCSV(JfileChooser chooser, String nama_file, String pola, String pola2)
: void
+tampilTabelBasisdata(DatabaseConnection db, String namaTabel) : void
+cekAtribut(String x, List<String> hapus)
: boolean
+cekAtribut2(String x, Vector kolom)
: boolean
+updateCellWidth(JTable t)
: void
+adjustRowSizes(JTable jTable)
: void
+adjustColumnSizes(JTable table, int column, int margin)
: void
+tandaiSemua()
: void
+batalTandai()
: void
+hapusAtribut()
: void
+distribusiAtribut()
: void
+submitData()
: void
+prosesData()
: void
+simpanHasil()
: void
Database
-connection
: Connection
+getConnOracle(String url, String user, String pwd)
: static boolean
+getConnMySQL(String url, String user, String pwd)
: static boolean
+displayTableOracle(Connection conn)
: ResultSet
+displayTableMySql(Connection conn)
: ResultSet
+displayTable(Connection conn, String namaTabel)
: ResultSet
DatabaseConnection
-connection
: static Connection
+setConnection(Connection aConnection)
: static void
+isConnectedOracle(String url, String user, String pwd)
: boolean
+isConnectedMySQL(String url, String user, String pwd)
: boolean
+connectToOracle(String url, String user, String pwd)
:
Connection
+connectToMySQL(String url, String user, String pwd)
:
Connection
+getConnection()
: Connection
+closeConnection(String url, String user, String pwd)
: boolean
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
CheckBoxTableModel
colom
: String[ ]
nama_atribut
: List<String>
fm
: SeleksiAtribut
lfm
: List<SeleksiAtribut>
+CheckBoxTableModel
: <<constructor>>
+getRowCount()
: int
+getColumnName(int col)
: String
+getValueAt(int rowIndex, int columnIndex)
: Object
+getColumnClass(int columnIndex)
: Class
+setValueAt(Object val, int rowIndex, int columnIndex) : void
+isCellEditable(int row, int col)
: boolean
+add(int x,SeleksiAtribut field_m)
: void
+removeRow()
: void
+removeRow2()
: void
SeleksiAtribut
-atribut
: List<String>
-atribut2
: String
-pilih
: Boolean
+SeleksiAtribut()
: <<constructor>>
+SeleksiAtribut(String vl, boolean st)
: <<constructor>>
+getPilih()
: boolean
+setPilih(Boolean pilih)
: void
+getAtribut()
: List<String>
+setAtribut(List<String> atribut) : void
+getAtribut2()
: String
+setAtribut2(String atribut2)
: void
GraphController
g
: Graph
+deteksiOutlier(int row)
: void
+tampilHasil(JTable t, double m, double d, String jumData, String path) :
String
Graph
edge
size
vertex
block
: double[ ][ ]
: int
: Vertex[ ]
: Block[ ]
52
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
+Graph(int a)
:
<<constructor>>
+insertVertex(String label, List<Double> nilai)
: void
+insertBlock(int no_urut, List<Integer> daftar_vertex)
: void
+insertEdge(int i, int j, double nilai)
: void
+euclidean(int a, int b)
: double
+NestedLoop(JTable tabel, double m, double d)
: void
+displayMatrix()
: void
+displayOutlier(JTable t, double m, double d, String jumData, String path)
: String
Block
-no_urut
: int
-jum_anggota
: int
-jum_blok
: int
-sisa
: int
-isi_blok
: List<Integer>
-firstArray
: boolean
+Block()
: <<constructor>>
+Block(int no_urut, List<Integer> dv)
<<constructor>>
+getNo_urut()
: int
+setNo_urut(int no_urut)
: void
+getJum_anggota()
: int
+setJum_anggota(int jum_anggota)
+getJum_blok()
: int
+setJum_blok(int jum_blok)
: void
+getSisa()
: int
+setSisa(int sisa)
: void
+isFirstArray()
: boolean
+setFirstArray(boolean firstArray) : void
+getIsi_blok()
: List<Integer>
+setIsi_blok(List<Integer> isi_blok)
Vertex
-label
: String
-unmarked
: boolean
-non_outlier
: boolean
-nilai
: List<Double>
-jumlah_tetangga
: int
+Vertex()
: <<constructor>>
+Vertex(String label, List<Double> nilai) : << constructor>>
+getLabel()
: String
:
: void
: void
53
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
+setLabel(String label)
: void
+getNilai()
: List<Double>
+setNilai(List<Double> nilai)
: void
+getJumlah_tetangga()
: int
+setJumlah_tetangga(int jumlah_tetangga) : void
+isUnmarked()
: boolean
+setUnmarked(boolean unmarked)
: void
+isNon_outlier()
: boolean
+setNon_outlier(boolean non_outlier)
: void
HalamanBantuan
-jDesktopPane1
: JDesktopPane
-jScrollPane1
: JScrollPane
-jTextArea1
: JTextArea
-keluarButton
: JButton
+HalamanBantuan()
: <<constructor>>
-keluarButtonActionPerformed(java.awt.event.ActionEvent evt) : void
HalamanDistribusiAtribut
-atributCombo
: JComboBox
-jDesktopPane1
: JDesktopPane
-jLabel2
: JLabel
-jLabel3
: JLabel
-jPanel1
: JPanel1
-jPanel2
: JPanel2
-keluarButton
: JButton
-lihatGrafikButton
: JButton
-tabelDistribusi
: JTable
model
: JTable
-count
: int
+ HalamanDistribusiAtribut(java.awt.Frame parent,
List<String> daftarAtribut, JTable tabel)
: <<constructor>>
-daftarAtribut(List<String> daftarAtribut, JTable tabel)
: void
-pilihAtribut()
: void
-viewGrafik()
: void
+getCount()
: int
+setCount(int count)
: void
BarChart
+tampil(int[][] v, String[][] n, String[][] t) : void
54
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
55
HalamanKonfirmasiKeluar
-jDesktopPane1
: JDesktopPane
-jPanel1
: JPanel
-konfirmasiLabel
: JLabel
-tidakButton
: JButton
-yaButton
: JButton
+HalamanKonfirmasiKeluar()
: <<constructor>>
-yaButtonActionPerformed(java.awt.event.ActionEvent evt)
: void
-tidakButtonActionPerformed(java.awt.event.ActionEvent evt)
: void
HalamanMissingValues
-jDesktopPane1
: JDesktopPane
-jPanel1
: JPanel
-missingValueTArea
: JTextArea
-tidakButton
: JButton
-yaButton
: JButton
model
: DefaultTableModel
+HalamanMissingValues(DefaultTableModel tabel)
: <<constructor>>
-yaButtonActionPerformed(java.awt.event.ActionEvent evt)
: void
-tidakButtonActionPerformed(java.awt.event.ActionEvent evt)
: void
HalamanPilihDB
-batalButton
: JButton
-databaseField
: JTextField
-databaseLabel
: JLabel
-kueriLabel
: JLabel
-okButton
: JButton
-passwordField
: JTextField
-passwordLabel
: JLabel
-pilihKoneksiCombo
: JComboBox
-pilihKoneksiDesktopPane
: JDesktopPane
- pilihKoneksiPanel
: JPanel
- titleLabel
: JLabel
- urlField
: JTextField
- usernameField
: JTextField
- usernameLabel
: JLabel
+HalamanPilihDB()
: <<constructor>>
-pilihBasisdata()
: void
-koneksi()
: void
-batalButtonActionPerformed(java.awt.event.ActionEvent evt)
: void
HalamanPilihTabel
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
56
-batal1Button
: JButton
-daftarTableCombo
: JComboBox
-jDesktopPane1
: JDesktopPane
-jLabel1
: JLabel
-jLabel2
: JLabel
-jPanel1
: JPanel
-okPilihTabelButton
: JButton
con
: DatabaseConnection
+HalamanPilihTabel(DatabaseConnection c, int db)
: <<constructor>>
-batallButtonActionPerformed(java.awt.event.ActionEvent evt) : void
-daftarTabel(int db)
: void
-pilihTabel()
: void
4.5.4
Detail Algoritma Tiap Method Pada Tiap Kelas
4.5.6.1 Detail Algoritma Pada Method di Kelas HalamanUtama
Tabel 4.2 Tabel Kelas HalamanUtama
Nama method
pilihFile()
Fungsi method
Menampilkan
dialog untuk
memilih file .xls
atau .csv
Algoritma method
1. Menampilkan dialog Open
File
2. Jika file yang pilih berformat
.xls,
panggil
method
pilihXLS()
3. Jika file yang pilih berformat
.csv,
panggil
method
pilihCSV()
pilihXLS(JfileChooser,
String, String, String)
Membaca file
dalam format .xls
dan
menampilkannya
ke dalam tabel data
4. Jika file yang dipilih selain
yang berformat .xls dan .csv,
menampilkan
pesan
peringatan
1. Membuat vector baru dengan
nama columnNames dan data
2. Inisialisasi row = 0
3. Selama row <
sheet.getRows(), ke langkah
4, jika tidak ke langkah 11
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
57
4. Membuat vector baru dengan
nama rows
5. Inisialisasi column = 0
6. Selama column <
sheet.getColumn(), ke
langkah 6, jika tidak ke
langkah 10
7. Jika row = 0, ke langkah 6,
jika tidak ke langkah 7
8. Cell (column, row) dari file
.xls ditambahkan ke vector
columnNames. column++,
lalu kembali ke langkah 6
9. Cell (column, row) dari file
.xls ditambahkan ke vector
rows. column++, lalu kembali
ke langkah 6
10. Jika row != 0, maka rows
ditambahkan ke vector data.
Lalu row++ dan kembali ke
langkah 3
11. Mengeset model tabel
preprocess dengan nama
kolom = vector
columnNames dan data =
vector data
12. Inisialisasi nilai i = 0
13. Selama i <
model.getColumnCount(), ke
langkah 13, jika tidak ke
langkah 19
14. Inisialisasi nilai j = 0
15. Selama j <
model.getRowCount(), ke
langkah 15, jika tidak ke
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
58
langkah 18
16. Jika i=0 ke langkah 16, jika
i!=0 ke langkah 17
17. Jika
model.getValue(j,0).isEmpty(
) = true, i =
model.getColumncount() -1
lalu break, jika false j++ lalu
ke langkah 14
18. Jika
model.getValue(j,i).isEmpty()
= true atau
model.getValue(j,i).matches
(pola) = true atau
model.getValue(j,i). matches
(pola2)= true, panggil
HalamanMissingValues,
i = model.getColumncount() 1 lalu break
Jika false semua, j++ lalu
kembali ke langkah 14
19. i++ lalu kembali ke langkah
12
20. Inisialisasi i = 0
pilihCSV(JfileChooser,
String, String, String)
Membaca file
dalam format .csv
dan
menampilkannya
ke dalam tabel data
21. Selama i <
model.getColumncount()
tambahkan nama kolom ke
cb_table
1. Membuat vector baru dengan
nama columnNames dan data
2. Membaca baris pertama dari
file .csv
3. Selama masih terdapat cell yg
berisi nilai tertentu,
menambahkan setiap nilai
cell pada baris pertama ke
vector columnNames. Jika
tidak ke langkah 4
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
59
4. Selama masih ada baris
selanjutnya, ke langkah 5 jika
tidak ke langkah 6
5. Selama masih terdapat cell yg
berisi nilai tertentu,
menambahkan setiap nilai
cell ke vector row. Jika tidak,
row ditambahkan ke vector
data lalu pindah ke baris
berikutnya dan kembali ke
langkah 4
6. Mengeset model tabel
preprocess dengan nama
kolom = vector
columnNames dan data =
vector data
7. Inisialisasi nilai i = 0
8. Selama i <
model.getColumnCount(), ke
langkah 8, jika tidak ke
langkah 12
9. Inisialisasi nilai j = 0
10. Selama j <
model.getRowCount(), ke
langkah 10, jika tidak ke
langkah 11
11. Jika
model.getValue(j,i).isEmpty()
= true atau
model.getValue(j,i).matches
(pola) = true atau
model.getValue(j,i). matches
(pola2)= true, panggil
HalamanMissingValues,
i = model.getColumncount() 1 lalu break
Jika false semua, j++ lalu
kembali ke langkah 9
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
60
12. i++ lalu kembali ke langkah 7
13. Inisialisasi i = 0
tampilTabelBasisdata
(DatabaseConnection,
String)
Membaca tabel dari
basis data dan
menampilkannya
ke dalam tabel data
14. Selama i <
model.getColumncount()
tambahkan nama kolom ke
cb_table
1. Mengambil tabel dari basis
data dengan memaggil
method
displayTable(db.getConnectio
n, namaTabel)
2. Membuat vector
columnName dan vector data
3. Inisialisasi i = 1
4. Selama i <= columnCount,
ambil nama kolom ke-i dari
basis data dan ditambahkan
ke columnName
5. Selama rs.next = true
kerjakan langkah 6-8
6. Inisialisasi i = 1, buat vector
data2
7. Selama i <= columnCount,
ambil data pada setiap baris
di kolom ke-I dan
ditambahkan ke data2
8. Tambahkan data2 ke dalam
data, kembali ke langkah 5
9. Mengeset model tabel
preprocess dengan nama
kolom = vector
columnNames dan data =
vector data
10. Inisialisasi nilai i = 0
11. Selama i <
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
61
model.getColumnCount(), ke
langkah 12, jika tidak ke
langkah 18
12. Inisialisasi nilai j = 0
13. Selama j <
model.getRowCount(), ke
langkah 14, jika tidak ke
langkah 17
14. Jika i=0 ke langkah 15, jika
i!=0 ke langkah 16
15. Jika
model.getValue(j,0).isEmpty(
) = true, i =
model.getColumncount() -1
lalu break, jika false j++ lalu
ke langkah 13
16. Jika
model.getValue(j,i).isEmpty()
= true atau
model.getValue(j,i).matches
(pola) = true atau
model.getValue(j,i). matches
(pola2)= true,
i = model.getColumncount() 1 lalu break
Jika false semua, j++ lalu
kembali ke langkah 13
17. i++ lalu kembali ke langkah
11
18. Inisialisasi i = 0
cekAtribut
(String, List<String>)
Mengecek namanama atribut yang
akan dihapus
berdasarkan tabel
19. Selama i <
model.getColumncount()
tambahkan nama kolom ke
cb_table
1. Inisialisasi i = 0
2. Selama i < hapus.size ke
langkah 3, jika tidak ke
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
atribut
62
langkah 4
3. Jika hapus.get(i).equals(x),
kembalikan nilai true
cekAtribut2
(String, Vector)
Mengecek namanama atribut yang
tidak dihapus dari
tabel data
4. Kembalikan nilai false
1. Inisialisasi i = 0
2. Selama i < kolom.size ke
langkah 3, jika tidak ke
langkah 4
3. Jika kolom.get(i).equals(x),
kembalikan nilai true
updateCellWidth
(JTable)
adjustRowSizes
(JTable)
Mengatur lebar cell
pada setiap kolom
dari tabel data agar
sesuai dengan
ukuran karakter
terpanjang
Mengatur ukuran
baris pada tabel
data
4. Kembalikan nilai false
1. Memanggil method
adjustRowSizes(t)
2. Inisialisasi i = 0
3. Selama i <
t.getColumnCount() panggil
method
adjustColumnSizes(t,i,2)
1. Inisialisasi row = 0
2. Selama row <
jTable.getRowCount() ke
langkah 3
3. maxHeight = 0
4. Inisialisasi column = 0
5. Selama column <
6. jTable.getColumnCount(),
bandingkan tinggi baris kerow, kolom ke-column
dengan maxHeight lalu
simpan nilai maksimum ke
maxHeight
7. Tentukan tinggi baris ke-row
dengan memanggil method
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
adjustColumnSizes
(JTable)
Mengatur ukuran
kolom pada tabel
data
63
jTable.setRowHeight(row,
maxheight) lalu kembali ke
langkah 2
1. Inisialisasi r = 0, lebar nama
kolom = width =
comp.getPreferredSize().widt
h
2. Selama r <
table.getRowCount, lebar
kolom pada baris ke-r =
currentWidth lalu ambil nilai
maksimum antara width dan
currentWidth kemudian
disimpan dalam width
tandaiSemua()
batalTandai()
hapusAtribut()
Memberi tanda
check pada semua
nama atribut pada
tabel atribut
Menghapus tanda
check pada semua
nama atribut pada
tabel atribut
Menghapus atribut
pada tabel data
sesuai dengan yang
diberi tanda pada
tabel atribut
3. Menentukan lebar kolom,
col.setWidth(width)
1. Inisialisasi i = 0
2. Selama i <
cb.table.getRowCount,
cb_table.setValueAt(true,i,1)
1. Inisialisasi i = 0
2. Selama i <
cb.table.getRowCount,
cb_table.setValueAt(false,i,1)
1. Membuat list bernama
hapus_atribut
2. Inisialisasi i = 0
3. Selama i <
cb_table.getRowCount, ke
langkah 4
4. Jika
cb_table.getValueAt(i,1).equa
ls(true), tambahkan
cb_table.getValueAt(i,0) ke
dalam hapus_atribut
5. Membuat vector
columnNames dan data
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
64
6. Inisialisasi i = 0
7. Selama i <
cb_table.getRowCount, ke
langkah 8
8. Jika method
cekAtribut(cb_table.getValue
At(i,0), hapus_atribut)
mengembalikan nilai false
maka
cb_table.getValueAt(i,0)
ditambahkan ke
columnNames
9. Inisialisasi i = 0
10. Selama i < row, buat vector
rows lalu ke langkah 11
11. Inisialisasi j = 0
12. Selama j < column, ke
langkah 13
13. Jika method
cekAtribut2(model.getColum
nName(j), columnNames)
mengembalikan nilai true
maka model.getValueAt(i,j)
ditambahkan ke rows
14. rows ditambahkan ke data,
kembali ke langkah 7
distribusiAtribut()
Menampilkan
distribusi atribut
dari data yang ada
di tabel data
15. Mengeset model tabel
preprocess dengan nama
kolom = vector
columnNames dan data =
vector data
1. Membuat list daftarAtribut
untuk menampung namanama atribut
2. jumlahAtribut =
preprocessTabel.getColumnC
ount() – 1
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
65
3. Inisialisasi i = 1
4. Selama i < jumlahAtribut,
tambahkan nama kolom ke-1
ke dalam daftarAtribut
submitData()
Menyalin data tabel
dan jumlah data
dari tab Preprocess
ke tab Deteksi
outlier
5. Mengirim daftarAtribut dan
preprocessTabel ke kelas
HalamanDistribusiAtribut
1. Mengambil model dari
preprocessTabel,
preprocessTable.getModel(),
lalu menyimpannya dalam
variabel model
2. Mengeset model
deteksiOutlierTabel = model
prosesData()
Mengirim data pada
tabel data serta nilai
D dan M untuk
proses pencarian
outlier
3. Berpindah ke tab deteksi
otulier dengan mengeset
jTabbedPane1.setSelectedCo
mponent(panelDeteksiOutlier
),
jTabbedPane1.setEnabledAt(
1, true)
1. Membuat pattern untuk
karakter angka dan/atau tanda
titik yaitu pola = [0-9.]*
2. Membuat pattern untuk
karakter tanda titik yaitu
pola2 = [.]*
3. Jika
jumDataField.getText().equal
s(“”), menampilkan pesan
bahwa data kosong
4. Jika isi field D dan/atau M
lebih dari 0 karakter dan
mengandung karakter selain
yang ada pada pola dan pola2,
tampilkan pesan bahwa nilai
M dan D harus berupa
bilangan bulat atau desimal
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
66
5. Jika isi field D dan/atau M
tidak diisi, tampilkan pesan
bahwa keduanya harus diisi
simpanHasil()
Menyimpan hasil
deteksi outlier
dalam bentuk file
.txt atau .doc
6. Jika langkah 3-4 bernilai
false, panggil method
tampilHasil()
(deteksiOutlierTabel, m, d,
jumDataField.getText(),
pathField.getText())
1. Membuka dialog Save File
2. Membaca lokasi
penyimpanan file
fileChooser.getSelectedFile().
getPath() dan disimpan dalam
variabel filename
3. Membaca format file yang
dipilih
fileChooser.getFileFilter().get
Description() dan disimpan
dalam variabel extension
4. Jika extension = "Microsoft
Word (*.doc)" maka format
file adalah .doc
5. Jika extension = "Text
Documents (*.txt)" maka
format file adalah .txt
6. Mengambil teks dari text area
hasilOutlierTextArea.getText
() lalu disimpan dalam
hasil_text_area
7. Menampung tiap baris dalam
hasil_text_area ke dalam
array baca
8. Inisialisasi i = 0
9. Selama i < baca.length, tulis
baca ke-I ke dalam file
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
67
4.5.6.2 Detail Algoritma Pada Method di Kelas HalamanPilihDB
Tabel 4.3 Tabel Kelas HalamanPilihDB
Nama method
pilihBasisdata()
koneksi()
Fungsi method
Menampilkan url dari
basis data tertentu
Melakukan login ke
basis data tertentu
Algoritma method
1. Jika
pilihKoneksiCombo.getSelec
tedIndex() == 0 maka
urlField.setText("jdbc:oracle:
thin:@localhost:1521:XE")
2. Jika
pilihKoneksiCombo.getSelec
tedIndex() == 1 maka
urlField.setText("jdbc:mysql:
//localhost:3306/")
1. Jika field username,
password, url dan/atau nama
database ada salah satu yang
kosong, muncul pesan
peringatan bahwa semua data
harus diisi, jika tidak ke
langkah 2
2. Jika
pilihKoneksiCombo.getSelec
tedIndex() == 0, maka
melakukan login ke basis
data Oracle dengan
memanggil
Database.getConnOracle(url,
username, password) lalu ke
langkah 3
Jika
pilihKoneksiCombo.getSelec
tedIndex() == 1, maka
melakukan login ke basis
data MySQL dengan
memanggil
Database.getConnMySQL(ur
l, username, password) lalu
ke langkah 3
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
68
3. Jika login berhasil, tampilkan
pesan sukses lalu tampilkan
form Halaman Pilih Tabel.
Jika tidak berhasil,
tampilakan pesan kesalahan
4.5.6.3 Detail Algoritma Pada Method di Kelas HalamanPilihTabel
Tabel 4.4 Tabel Kelas HalamanPilihTabel
Nama method
daftarTabel
(Connection, int)
Fungsi method
Menampilkan daftar
tabel yang terdapat
dalam basis data yang
dipilih pengguna
1.
Algoritma method
Jika db = 0, maka
memanggil tabel-tabel
dalam basis data Oracle
dengan memanggil
method
displayTableOracle(con.
getConnection())
Jika db = 1, maka
memanggil tabel-tabel
dalam basis data
MySQL dengan
memanggil method
displayTableMySql(con.
getConnection())
2.
pilihTabel()
Mengirim isi tabel
yang dipilih pengguna
ke tabel data pada
Halaman Utama
1.
2.
Mengisi daftar tabel
pada form Halaman
Pilih Tabel dengan
daftarTableCombo.addIt
em(rset.getString(1))
Mengambil nama tabel
yang dipilih pengguna
daftarTableCombo.getS
electedItem()
Mengirimkan nama
tabel ke kelas Halaman
Utama
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
4.5.6.4
69
Detail Algoritma Pada Method di Kelas DistribusiAtribut
Tabel 4.5 Tabel Kelas DistribusiAtribut
Nama method
daftarAtribut
(List<String>,
JTable)
Fungsi method
Menampilkan daftar
nama atribut yang ada
pada tabel data
pilihAtribut()
Menampilkan
distribusi atribut yang
dipilih pengguna dari
daftar atribut
1.
2.
1.
Algoritma method
Inisialisasi i = 0
Selama i <
daftarAtribut.size,
tambahkan daftar atribut
ke-i ke dalam
atributCombo
Membuat list bernama
listData
2.
Inisialisasi i = 1
3.
Selama i <
model.getColumnCount()
ke langkah 3
4.
Jika atribut yang dipilih
pengguna =
model.getColumnName(i)
maka inisialisasi j = 0
5.
Selama j <
model.getRowCount(),
masukkan seluruh data
pada kolom ke-i ke dalam
listData
6.
Menghapus duplikasi data
dalam listData dengan
memasukkan listData ke
dalam HashSet
Kemudian membersihkan
listData dengan
listData.clear()
Lalu memasukkan listData
yang telah dihilangkan
duplikasinya dengan
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
70
listData = new
ArrayList(hashSet)
7.
Inisialisasi k = 0
8.
Selama k < listData.size(),
inisialisasi l = 0 lalu ke
langkah 9
9.
Selama l <
model.getRowCount(),
jika listData.get(k) =
model.getValueAt(l,i)
maka setCount(count+1)
10. data[k][0] =
listData.get(k).toString()
data[k][1] =
String.valueOf(getCount()
)
setCount(0) lalu kembali
ke langkah 8
11. tabelDistribusi dibuat
dengan data = array data
dan nama kolom = array
columnName
viewGrafik()
Mengirim data atribut
ke kelas BarChart
untuk ditampilkan
grafik distribusi dari
atribut tersebut
1. Inisialisasi i = 0
2. Selama i <
tabelDistribusi.getRowC
ount(), ambil data pada
tabelDistribusi baris kei, kolom ke-0 lalu
masukkan ke array ass
dan baris ke-i, kolom
ke-1 lalu masukkan ke
array pars dan baris kei, kolom ke-1 dikonversi
ke nilai integer lalu
dimasukkan ke array
jum
3. Panggil method tampil
(jum,ass,ass) yang ada
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
71
di kelas BarChart
4.5.6.5 Detail Algoritma Pada Method di Kelas Graph
Tabel 4.6 Tabel Kelas Graph
Nama method
insertVertex
(String,
List<Double>)
insertBlock
(int, List<Integer>)
insertEdge
(int, int, double)
euclidean (int, int)
Fungsi method
Membuat vertex
Membuat blok
Mengisi nilai edge
Menghitung nilai
euclidean distance
antara dua data
Algoritma method
1. Membaca input method
berupa label dan list
nilai
2. Menambah size vertex,
vertex[size++] lalu
membuat vertex baru
dengan label dan nilai
yang diinputkan lewat
parameter
1. Membaca input method
berupa no_urut dan list
daftar_vertex
2. Membuat blok baru
pada index ke- no_urut
dan berisi vertex dalam
daftar_vertex yang
diinputkan lewat
parameter
1. Membaca nilai input
parameter yaitu i, j dan
nilai
2. Mengisi edge[i][j] dan
edge[j][i] dengan nilai
1. Membaca nilai input
parameter yaitu a dan b
2. Membuat list data1 dan
data2
3. data1 diisi dengan
vertex[a].getNilai, data2
diisi dengan
vertex[b].getNilai
4. total = 0, i = 0
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
72
5. Selama i < data1.size,
hitung total = total +
Math.pow(data1.get(i) data2.get(i), 2.0)
NestedLoop
(JTable, double,
double)
Melakukan proses
deteksi outlier dengan
nilai parameter M dan
D yang diinputkan
pengguna
6. Method ini lalu
mengembalikan nilai
1. Menerima input tabel, m
dan d
2. Membuat list
nilaiAtribut untuk
menampung data nilai
setiap vertex dan
variabel label bertipe
String untuk menyimpan
nama label dari setiap
vertex
3. Inisialisasi i = 0
4. Selama i < jumbaris,
buat listAtribut baru lalu
inisialisasi j = 0
5. Selama j < jumKolom,
Jika j=0 maka label =
model.getValueAt(i,
j).toString().
Jika j!= 0 maka
nilaiAtribut.add(Double.
parseDouble(model.get
ValueAt(i, j).toString()))
6. Menambahkan vertex
baru dengan memanggil
method
insertVertex(label,
nilaiAtribut)
7. Hitung jumlah blok
dengan perhitungan
int hitung_blok = (int)
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
73
(jumBaris * jumKolom
* byte_element * 2 /
availableMemory_JVM)
8. Jika hitung_blok <=1
maka jumlah_blok = 1,
data_per_blok =
jumBaris, sisa = 0
Jika
jumBaris%hitung_blok
!= 0 maka jumlah_blok
= hitung_blok,
data_per_blok =
jumBaris/jumlah_blok,
sisa =
jumBaris%jumlah_blok
Jika
jumBaris%hitung_blok
== 0 maka jumlah_blok
= hitung_blok,
data_per_blok =
jumBaris/jumlah_blok,
sisa = 0
9. Membuat list
daftar_vertex dan
inisialisasi counter = 0
10. Inisialisasi i = 0
11. Selama i < jumlah_blok
Jika i = jumlah_blok -1
&& sisa != 0 maka
data_per_blok =
data_per_blok + sisa
Membuat daftar_vertex
baru
Inisialisasi j = 0
Selama j <
data_per_blok,
tambahkan counter ke
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
74
list daftar_vertex
kemudian counter++
Membuat blok baru
dengan memanggil
method insertBlock(i,
daftar_vertex)
12. Inisialisasi list
first_array = null dan list
second_array = null
13. Inisialisasi i = 0
14. Selama i < jumlah_blok
Jika
block[selected_fristArra
y] belum pernah
menjadi first_array
maka isi blok tersebut
ditampung dalam
first_array
Inisialisasi j = 0
15. Selama j < jumlah_blok
Jika j = 0, maka size1
dan size2 = first_array
Jika j!= 0, maka isi blok
dari
block[selected_secondA
rray] ditampung dalam
second_array, size1 =
first_array.size() dan
size2 =
second_array.size()
Inisialisasi
counter_load_firstArray
= 0, k =
counter_load_firstArray
16. Selama k < size1, (saat k
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
75
= size1, ke langkah 19)
Jika
vertex[first_array.get(k)]
.isUnmarked() = true
maka index1 =
first_array.get(k)
Inisialisasi
counter_load_secondArr
ay = 0, l =
counter_load_secondArr
ay
Selama l < size2, (saat l
= size2, ke langkah 18)
Jika (k != l) || (k == l
&& j > 0), cek jika
pertama = true maka
index2 =
first_array.get(l), jika
pertama = false maka
index2 =
second_array.get(l)
Jika
edge[index1][index2]
== -1 maka isi nilai
edge dengan memanggil
method
insertEdge(index1,
index2,
euclidean(index1,
index2))
17. Jika
edge[index1][index2] >
0 &&
edge[index1][index2]
<= d && (((k != l)) || (k
== l && j > 0))
Maka tambahkan jumlah
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
76
tetangga dari
vertex[index1] dengan
cara
vertex[index1].setJumla
h_tetangga(vertex[index
1].getJumlah_tetangga()
+ 1)
Setelah menambahkan
cek apakah tetangga dari
vertex[index1] tersebut
telah mencapai M+1,
jika ya maka
vertex[index1].setNon_o
utlier(true) dan
vertex[index1].setUnma
rked(false), jika tidak
maka
vertex[index1].setUnma
rked(true)
Kembali ke langkah 17
18. Jika k == (size1 - 1),
artinya sebuah blok
telah dicek seluruh
anggotanya maka
pertama diberi nilai false
sehingga blok tersebut
tidak boleh dimasukkan
lagi ke dalam
first_array.
Kembali ke langkah 16
19. Jika i == 0 && j <
jumlah_blok – 1 maka
selected_secondArray++
Jika i != 0 && j > 1 &&
j != jumlah_blok – 1
Cek apakah
selected_secondArray
== block.length - 1 &&
j < jumlah_blok – 1, jika
ya maka
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
77
selected_secondArray =
0, jika
selected_secondArray <
block.length – 1 maka
selected_secondArray++
Jika i != 0 && j == 1
Cek apakah
selected_secondArray <
block.length - 1 && j <
jumlah_blok – 1, jika ya
maka
selected_secondArray++
, jika
selected_secondArray
== block.length - 1 &&
j < jumlah_blok – 1
maka
selected_secondArray =
0
Kembali ke langkah 15
20. Pada tahap ini dilakukan
pergantian tempat antara
first_array dan
second_array dengan
cara :
block[selected_firstArra
y].setFirstArray(true)
tukar =
selected_firstArray
selected_firstArray =
selected_secondArray
selected_secondArray =
tukar
displayOutlier
(Jtable, double,
double,
String, String)
Menampilkan hasil
deteksi outlier
Kembali ke langkah 14
1. t1 = System.nanoTime()
2. Memanggil method
NestedLoop(t,m,d)
3. t2 = System.nanoTime()
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
78
4. Inisialisasi i = 0
5. Selama i <
vertex.length, jika
vertex[i].isNonOutlier =
false maka tambahkan
jumlah outlier dengan 1
lalu tampilkan
vertex[i].getLabel
6. Inisialisasi j = 0
7. Selama j <
t.getColumnCount()
8. Inisialisasi k = 0
9. Selama k <
t.getRowCount()
10. Jika
vertex[i].getLabel()==t.
getValueAt(k, 0) maka
data pada baris-k
tersebut akan
ditampilkan
11. Menampilkan jumlah
data, jumlah outlier, dan
lama deteksi outlier =
((t2 - t1) *
java.lang.Math.pow(10,
-9))
4.5.6.6 Detail Algoritma Pada Method di Kelas DatabaseConnection
Tabel 4.7 Tabel Kelas DatabaseConnection
Nama method
isConnectedOracle
(String, String,
String)
Fungsi method
Mengecek apakah
sistem telah terhubung
dengan basis data
Oracle
Algoritma method
1. Jika
connectToOracle(url,
user, pwd) != null
mengembalikan nilai
true
2. Jika
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
isConnectedMySQL
(String, String,
String)
connectToOracle
(String, String,
String)
connectToMySQL
(String, String,
String)
Mengecek apakah
sistem telah terhubung
dengan basis data
MySQL
Melakukan koneksi ke
basis data Oracle
Melakukan koneksi ke
basis data MySQL
79
connectToOracle(url,
user, pwd) == null
mengembalikan nilai
false
1. Jika
connectToMySQL(url,
user, pwd) != null
mengembalikan nilai
true
2. Jika
connectToOracle(url,
user, pwd) == null
mengembalikan nilai
false
1. Membuat koneksi ke
basis data Oracle dengan
url, username dan
password yang
diinputkan
setConnection(DriverM
anager.getConnection(ur
l, user, pwd))
2. Jika berhasil maka
sistem telah terhubung
dengan basis data Oracle
1. Membuat koneksi ke
basis data MySQL
dengan url, username
dan password yang
diinputkan
setConnection(DriverM
anager.getConnection(ur
l, user, pwd))
2. Jika berhasil maka
sistem telah terhubung
dengan basis
dataMySQL
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
4.5.6.7
80
Detail Algoritma Pada Method di Kelas Database
Tabel 4.8 Tabel Kelas Database
Nama method
getConnOracle
(String, String,
String)
getConnMySQL
(String, String,
String)
displayTableOracle
(Connection)
Fungsi method
Mengirimkan url,
username dan
password yang
diinputkan pengguna
untuk login ke basis
data Oracle
Mengirimkan url,
username dan
password yang
diinputkan pengguna
untuk login ke basis
data MySQL
Menampilkan daftar
tabel yang ada dalam
basis data Oracle
Algoritma method
1. Mengecek apakah
sistem telah terkoneksi
dengan basis data Oracle
boolean ok =
kon.isConnectedOracle(
url, user, pwd)
2. Mengembalikan nilai ok
1. Mengecek apakah
sistem telah terkoneksi
dengan basis data Oracle
boolean ok =
kon.isConnectedOracle(
url, user, pwd)
2. Mengembalikan nilai ok
1. Membuat kueri untuk
menampilkan semua
tabel dalam basis data
Oracle yaitu query =
"select table_name from
user_tables"
2. Eksekusi kueri
displayTableMySQL
(Connection)
Menampilkan daftar
tabel yang ada dalam
basis data MySQL
3. Mengembalikan
ResultSet yang berisi
daftar tabel yang
dihasilkan kueri
1. Membuat kueri untuk
menampilkan semua
tabel dalam basis data
MySQL yaitu query =
"show tables"
2. Eksekusi kueri
3. Mengembalikan
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
displayTable
(Connection, String)
Menampilkan isi tabel
dari nama tabel yang
dipilih oleh pengguna
81
ResultSet yang berisi
daftar tabel yang
dihasilkan kueri
1. Membuat kueri untuk
menampilkan data dari
tabel dalam basis data
tertentu yaitu query =
"select * from
"+namaTabel
2. Eksekusi kueri
3. Mengembalikan
ResultSet berupa isi
tabel yang dihasilkan
kueri
4.5.6.8 Detail Algoritma Pada Method di Kelas CheckBoxTableModel
Tabel 4.9 Tabel Kelas CheckBoxTableModel
Nama method
add(int,
SeleksiAtribut)
removeRow()
removeRow2()
Fungsi method
Mengambil nama
seluruh atribut dari
tabel data untuk
ditambahkan ke dalam
tabel atribut
Menghapus nama
atribut yang telah di
hapus, dari tabel data,
pada tabel atribut
Membersihkan isi tabel
daftar atribut sebelum
data baru dimuat ke
Halaman Utama
Algoritma method
1. Membaca input
parameter x dan field_m
2. Menambahkan field_m
sebagai data pada index
ke-x ke dalam list lfm
1. Membuat ArrayList
bernama s
2. Selama seleksi atribut <
lfm,
Lakukan pengecekan
atribut mana saja yang
dipilih (akan dihapus)
Jika seleksi.getPilih() =
false maka seleksi
ditambahkan ke list s
3. lfm = s
1. Membuat ArrayList
bernama s
2. Selama seleksi atribut <
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
82
lfm,
Lakukan pengecekan
atribut mana saja yang
tidak dipilih (tidak
dihapus)
Jika seleksi.getPilih() =
false maka seleksi
dihapus dari list s
3. lfm = s
4.5.6.8
Detail Algoritma Pada Method di Kelas BarChart
Tabel 4.10 Tabel Kelas BarChart
Nama method
tampil(int[][],
String[][], String[][])
Fungsi method
Menampilkan grafik
distribusi dari atribut
yang dipilih pengguna
Algoritma method
1. Membaca nilai
parameter input yaitu
array v, array n dan
array t
2. Inisialisasi i = 0
3. Selama i < n.length,
data.setValue(v[i][1],
n[i][0], t[i][0])
4. Membuat chart dengan
data yang diinputkan
pada langkah 3
4.6
Perancangan Antarmuka
Sistem Pendeteksi Outlier Menggunakan Algoritma Block-based Nested-
Loop ini memiliki desain antarmuka yang digunakan untuk melakukan interaksi
dengan pengguna. Antarmuka sistem terdiri dari 7 tampilan yang terdiri dari
HalamanAwal, HalamanUtama, HalamanDistribusiAtribut, HalamanPilihDB,
HalamanPilihTabel,
HalamanBantuan
dan
HalamanKonfirmasiKeluar.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
83
HalamanUtama terbagi menjadi dua bagian yaitu Preprocess dan Deteksi Outlier.
Detail desain antarmuka dapat dijelaskan sebagai berikut:
4.6.1
Halaman Awal
Halaman Awal ini akan ditampilkan pertama kali saat pengguna
menjalankan sistem. Pada halaman ini terdapat sebuah tombol untuk masuk ke
dalam Halaman Utama.
Nama Sistem
ICON
Masuk
Gambar 4.6 Tampilan Antarmuka Halaman Awal
4.6.2
Halaman Utama (Preprocess)
Halaman Utama merupakan tampilan inti dari sistem ini. Di sebelah kiri
Halaman Utama terdapat tombol Bantuan dan Keluar. Tombol Bantuan
digunakan untuk melihat petunjuk penggunaan serta beberapa aturan yang
berkaitan dengan penggunaan sistem. Tombol Keluar digunakan untuk keluar
dari sistem ini.
Halaman Utama terbagi atas dua tab. Tab pertama bernama Preprocess.
Pada tab Preprocess ini, pengguna dapat menjalankan beberapa fungsi sistem. Di
bagian tengah Halaman Utama terdapat tombol Pilih File dan Pilih DB yang
digunakan untuk melakukan input data yang akan diolah. Pilih File digunakan
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
84
untuk membuka dialog Open File sehingga pengguna dapat memilih file .xls atau
.csv dan Pilih DB digunakan untuk menginputkan data tabel dari basis data.
Tombol Distribusi Atribut digunakan untuk membuka Halaman Distribusi
Atribut. Tombol Hapus, Tandai Semua, dan Batal Tandai Semua digunakan
untuk keperluan seleksi atribut. Pada Halaman Utama ini juga terdapat dua buah
tabel. Tabel yang letaknya di atas, digunakan untuk menampung data yang
diinputkan pengguna dan tabel yang di bawah untuk menampung daftar nama
atribut yang ada pada tabel di atas sehingga atribut tertentu dapat dihapus oleh
pengguna dengan terlebih dahulu memilih nama atribut pada tabel yang ada di
bagian bawah halaman ini. Tombol Submit digunakan untuk berpindah ke tab
Deteksi Outlier. Saat tombol Submit ditekan, maka tabel data dan jumlah data
pada tab Preprocess ini akan dikirim ke tabel data serta field jumlah data pada
tab Deteksi Outlier. Pada halaman ini juga jumlah data yang diinputkan akan
ditampilkan beserta lokasi atau sumber data yang diinputkan. Tampilan
Antarmuka Halaman Utama tab Preprocess dapat dilihat pada gambar 4.7 di
bawah ini.
Gambar 4.7 Tampilan Antarmuka Halaman Utama (Tab Preprocess)
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
4.6.3
85
Halaman Utama (Deteksi Outlier)
Bagian atau tab kedua dari Halaman Utama bernama Deteksi Outlier.
Pada tab ini, tabel data dan field jumlah datanya telah terisi secara otomatis
dengan data dari tab Preprocess. Pada tab ini terdapat dua buah field untuk input
data yaitu M dan D. Kedua field ini harus diisi saat akan menekan tombol Proses.
Tombol Proses digunakan untuk memulai proses deteksi outlier. Hasil deteksi
outlier lalu ditampilkan pada text area di bawah tabel. Pengguna dapat
menyimpan hasil deteksi outlier tersebut dengan cara menekan tombol Simpan.
Ketika tombol Simpan ditekan maka sistem akan menampilka dialog Save File.
Tampilan Antarmuka Halaman Utama tab Deteksi Outlier dapat dilihat pada
gambar 4.8 di bawah ini.
Gambar 4.8 Tampilan Antarmuka Halaman Utama (Tab Deteksi Outlier)
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
4.6.4
86
Halaman Distribusi Atribut
Halaman Distribusi Atribut ini ditampilkan saat pengguna menekan
tombol Distribusi Atribut pada Halaman Utama. Pada halaman ini, terdapat
JComboBox yang berisi daftar atribut yang berasal dari tabel data pada Halaman
Utama. Kemudian terdapat tabel Detail Isi Atribut yang akan menampilkan
distribusi dari setiap atribut. Isi tabel Detail Isi Atribut akan disesuaikan dengan
nama atribut yang dipilih dari JComboBox. Kemudian terdapat tombol Lihat
Grafik untuk menampilkan grafik distribusi atribut dan tombol Keluar untuk
menutup Halaman Distribusi Atribut dan kembali ke Halaman Utama. Tampilan
Antarmuka Halaman Distribusi Atribut dapat dilihat pada gambar 4.9 di bawah
ini.
Daftar Atribut :
Detail Isi Atribut
Nama
Lihat Grafik
Count
Keluar
Gambar 4.9 Tampilan Antarmuka Halaman Distribusi Atribut
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
4.6.5
87
Halaman Pilih DB
Halaman Pilih DB ini ditampilkan saat pengguna menekan tombol Pilih
DB pada Halaman Utama. Pada halaman ini terdapat JComboBox yang
digunakan untuk memilih basis data. Halaman ini juga berisi beberapa field yaitu
username, password, database dan url. Field-field tersebut digunakan untuk
melakukan login ke basis data yag dipilih dari JComboBox. Tombol OK
digunakan untuk melakukan koneksi ke basis data. Tombol Batal digunakan
untuk menutup Halaman Pilih DB ini dan kembali ke Halaman Utama. Tampilan
Antarmuka Halaman Pilih DB dapat dilihat pada gambar 4.10 di bawah ini.
Oracle
Username :
Password :
Database :
URL :
OK
Batal
Gambar 4.10 Tampilan Antarmuka Halaman Pilih DB
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
4.6.6
88
Halaman Pilih Tabel
Halaman Pilih Tabel ini ditampilkan saat pengguna telah berhasil
melakukan koneksi dari Halaman Pilih DB. Terdapat sebuah JComboBox pada
halaman ini yang digunakan untuk pengguna memilih tabel dari basis data.
Selanjutnya terdapat tombol OK yang digunakan untuk menginputkan data tabel
ke sistem lalu masuk ke Halaman Utama. Tombol Batal digunakan untuk kembali
ke Halaman Utama tanpa menginputkan data. Tampilan Antarmuka Halaman
Pilih Tabel dapat dilihat pada gambar 4.11 di bawah ini.
Nama tabel :
OK
Batal
Gambar 4.11 Tampilan Antarmuka Halaman Pilih Tabel
4.6.7
Halaman Bantuan
Halaman Bantuan ini ditampilkan saat pengguna menekan tombol
Bantuan di Halaman Utama. Jika ingin keluar dari halaman ini dan kembali ke
Halaman Utama maka pengguna menekan tombol Keluar. Tampilan Antarmuka
Halaman Bantuan dapat dilihat pada gambar 4.12 di bawah ini.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
89
Petunjuk dan Aturan Penggunaan Program
Keluar
Gambar 4.12 Tampilan Antarmuka Halaman Bantuan
4.6.8
Halaman Konfirmasi Keluar
Halaman Konfirmasi Keluar ini ditampilkan saat pengguna menekan
tombol Keluar di Halaman Utama. Jika pengguna yakin untuk keluar dari sistem,
maka menekan tombol YA. Jika tidak ingin keluar dari sistem dan kembali ke
Halaman Utama maka pengguna menekan tombol TIDAK. Tampilan Antarmuka
Halaman Konfirmasi Keluar dapat dilihat pada gambar 4.13 di bawah ini.
Konfirmasi keluar
YA
TIDAK
Gambar 4.13 Tampilan Antarmuka Halaman Konfirmasi Keluar
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
BAB 5
IMPLEMENTASI SISTEM
Pada bab ini berisi tentang implementasi sistem yang dibuat berdasarkan
pada analisis dan perancangan sistem dalam bab sebelumnya. Implementasi
aplikasi ini dilakukan dengan menggunakan NetBeans IDE 6.9.1 pada komputer
dengan spesifikasi processor Intel Core 2 Duo 2.00 Ghz, RAM 2.00 Gb.
Implementasi sistem terdiri dari implementasi antarmuka, implementasi struktur
data dan implementasi kelas. Daftar nama kelas yang diimplementasikan dalam
sistem ini dapat dilihat pada tabel 5.1 di bawah ini.
Tabel 5.1 Tabel Nama Kelas yang Diimplementasikan dalam Sistem
No
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Nama Kelas
HalamanAwal
HalamanUtama
HalamanPilihDB
Nama File Fisik
HalamanAwal.form
HalamanUtama.form
HalamanPilihDB.form
Nama File Executable
HalamanAwal. class
HalamanUtama.class
HalamanPilihDB.
class
HalamanPilihTabel HalamanPilihTabel.form
HalamanPilihTabel.
class
HalamanDistribusiA HalamanDistribusiAtribut.f HalamanDistribusiAtri
tribut
orm
but. class
HalamanBantuan
HalamanBantuan.form
HalamanBantuan.
class
HalamanKonfirmasi HalamanKonfirmasiKeluar HalamanKonfirmasiK
Keluar
.form
eluar. Class
HalamanMissingVal HalamanMissingValues.for HalamanMissingValue
ues
m
s. class
Vertex
Vertex.java
Vertex. class
Graph
Graph.java
Graph. class
Block
Block.java
Block.class
SeleksiAtribut
SeleksiAtribut.java
SeleksiAtribut. class
DatabaseConnection DatabaseConnection.java
DatabaseConnection.
class
Database
Database.java
Database. class
CheckBoxTableMo CheckBoxTableModel.java CheckBoxTableModel
90
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
16
17
5.1
del
BarChart
GraphController
BarChart.java
GraphController.java
91
. class class
BarChart. class
GraphController. class
Implementasi Antarmuka
Sistem Pendeteksi Outlier Menggunakan Algoritma Block-based Nested-
Loop telah selesai dibangun, maka pada bab ini akan ditampilkan antarmuka dari
sistem tersebut.
5.1.1
Implementasi Halaman Awal
Pada saat program pertama kali dijalankan maka akan ditampilkan form
seperti pada gambar 5.1 di bawah ini :
Gambar 5.1 Antarmuka Halaman Awal
Listing program terdapat pada lampiran 6.
Pada Halaman Awal ini terdapat tombol “Masuk” yang digunakan untuk
membuka Halaman Utama.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
92
5.1.2 Implementasi Halaman Utama
Halaman ini merupakan halaman inti dari aplikasi Sistem Pendeteksi
Outlier Menggunakan Algoritma Block-based Nested-Loop. Semua proses utama
aplikasi ini terdapat di dalam halaman ini. Bagian Halaman Utama yang akan
ditampilkan pertama kali yaitu tab Preprocess. Pada tab Preprocess, pengguna
dapat mempersiapkan data yang diinputkan agar siap diolah. Tampilan Halaman
Utama, tab Preprocess dapat dilihat pada gambar 5.2 di bawah ini.
Gambar 5.2 Antarmuka Halaman Utama, tab Preprocess
Jika pengguna ingin mengolah data berformat .xls atau .csv, maka pengguna
menekan tombol “Pilih File” untuk mencari data. Setelah dipilih maka akan
muncul tampilan antarmuka seperti gambar 5.3 dibawah ini:
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
93
Gambar 5.3 Antarmuka Halaman Utama, tab Preprocess
(File .xls atau .csv)
Pengguna dapat melakukan seleksi atribut dari data yang telah diinputkan dengan
memilih nama atribut yang bersangkutan pada tabel atribut. Pengguna dapat
memilih seluruh atribut dengan menekan tombol “Tandai Semua” atau
membatalkan semua atribut yang telah dipilih dengan menekan tombol “Batal
Tandai Semua”. Setelah pengguna menekan tombol “Hapus”, maka atribut yang
telah dipilih akan dihapus dari tabel data. Tampilan untuk menghapus atribut
dapat dilihat pada gambar 5.4 di bawah ini.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
94
Gambar 5.4 Antarmuka Halaman Utama, tab Preprocess
(Seleksi atribut)
Setelah data yang diinputkan telah siap untuk diproses untuk pencarian
outlier, pengguna menekan tombol “Submit” agar Halaman Utama secara
otomatis akan membuka tab Deteksi Outlier. Tampilan Halaman Utama tab
Deteksi Outlier dapat dilihat pada gambar 5.5 di bawah ini.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
95
Gambar 5.5 Antarmuka Halaman Utama, tab Deteksi Outlier
Pengguna lalu dapat memproses data untuk dicari outliernya pada halaman ini.
Pengguna harus memasukkan nilai M dan D sebelum menekan tombol “Proses”.
Saat proses deteksi outlier berhasil dilakukan, tampilannya akan menjadi seperti
gambar 5.6 di bawah ini.
Gambar 5.6 Antarmuka Halaman Utama, tab Deteksi Outlier (hasil
deteksi outlier)
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
96
Setelah hasil deteksi outlier ditampilkan, pengguna dapat menyimpan hasil
tersebut dengan menekan tombol “Simpan”. Hasil deteksi outlier ini dapat
disimpan ke dalam file berformat .txt atau .doc. Dialog yang ditampilkan untuk
menyimpan file dapat dilihat pada gambar 5.7 di bawah ini.
Gambar 5.7 Dialog Untuk Menyimpan Hasil Deteksi Outlier
Ketika file berhasil disimpan, akan muncul pesan konfirmasi seperti gambar 5.8
di bawah ini.
Gambar 5.8 Pesan Sukses Menyimpan File Hasil Deteksi Outlier
5.1.3
Implementasi Halaman Pilih DB
Halaman ini ditampilkan saat pengguna menekan tombol “Pilih DB” pada
Halaman Utama. Tampilan halaman Pilih DB dapat dilihat pada gambar 5.9 di
bawah ini.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
97
Gambar 5.9 Antarmuka Halaman Pilih DB
Pengguna dapat menginputkan data yang berasal dari sebuah tabel dalam basis
data. Halaman Pilih DB digunakan untuk login pengguna ke dalam basis data.
Pengguna harus memilih nama basis data, serta menginputkan seluruh data secara
lengkap dan benar kemudian menekan tombol “OK”. Pengguna dapat
membatalkan login ke basis data dengan menekan tombol “Batal”.
Ketika koneksi ke basis data berhasil, maka akan muncul dialog konfirmasi
seperti pada gambar 5.10 di bawah ini.
Gambar 5.10 Pesan Sukses Melakukan Koneksi Ke Basis data
5.1.4
Implementasi Halaman Pilih Tabel
Halaman ini ditampilkan saat pengguna telah berhasil melakukan koneksi
ke basis data. Tampilan halaman Pilih Tabel dapat dilihat pada gambar 5.10 di
bawah ini.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
98
Gambar 5.11 Antarmuka Halaman Pilih Tabel
Pada halaman Pilih Tabel, pengguna dapat memilih tabel yang berasal dari basis
data yang sebelumnya dipilih. Setelah memilih tabel dari daftar yang tersedia,
pengguna menekan tombol “OK” untuk memuat data dari basis data ke tabel data
pada Halaman Utama. Untuk membatalkan input data dari basis data dilakukan
dengan menekan tombol “Batal”.
Setelah memilih tabel yang diinginkan, tabel akan ditampilkan pada Halaman
Utama seperti gambar 5.12 di bawah ini.
Gambar 5.12 Antarmuka Halaman Utama, tab Preprocess
(input tabel dari basis data)
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
5.1.5
99
Implementasi Halaman Distribusi Atribut
Pengguna dapat melihat distribusi atribut dari data yang diinputkan
dengan menekan tombol “Distribusi Atribut” yang terdapat pada Halaman
Utama. Tampilan halaman distribusi atribut dapat dilihat pada gambar 5.13 di
bawah ini.
Gambar 5.13 Antarmuka Halaman Distribusi Atribut
Pengguna dapat melihat grafik distribusi atribut dengan menekan tombol “Lihat
Grafik” pada halaman distribusi atribut. Tampilan grafik distribusi atribut dapat
dilihat pada gambar 5.14 di bawah ini.
Gambar 5.14 Antarmuka Grafik Distribusi Atribut
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
5.1.6
100
Implementasi Halaman Bantuan
Pengguna dapat membuka halaman bantuan dengan menekan tombol
“Bantuan” pada halaman utama. Pada halaman bantuan, terdapat petunjuk
mengenai cara penggunaan sistem serta beberapa aturan yang penting untuk
diperhatikan oleh pengguna sebelum menggunakan sistem. Tampilan halaman
bantuan dapat dilihat pada gambar 5.15 di bawah ini.
Listing program terdapat pada lampiran 6.
Gambar 5.15 Antarmuka Halaman Bantuan
5.1.7
Implementasi Halaman Konfirmasi Keluar
Halaman konfirmasi keluar ini ditampilkan saat pengguna menekan
tombol “Keluar” pada halaman utama. Halaman ini ditampikan untuk
mengkonfirmasi lagi ke pengguna apakah telah yakin untuk keluar dari sistem.
Jika ingin keluar dari sistem, pengguna menekan tombol “YA”. Jika pengguna
masih ingin menggunakan sistem maka menekan tombol “TIDAK”. Tampilan
halaman konfirmasi keluar ini dapat dilihat pada gambar 5.16 di bawah ini.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
101
Gambar 5.16 Antarmuka Halaman Konfirmasi Keluar
Listing program terdapat pada lampiran.
5.1.8
Implementasi Pengecekan Masukan
Selain pemrosesan data, sistem ini juga menyediakan error handling
untuk mengatasi kesalahan dalam melakukan input ke dalam sistem. Berikut
adalah error handling yang dimiliki oleh Sistem Pendeteksi Outlier
Menggunakan Algoritma Block-based Nested-Loop.
1.
Ketika pengguna memilih sebuah file dengan format selain .txt dan .doc
untuk diinputkan ke sistem, maka akan muncul tampilan seperti gambar 5.17
di bawah ini.
Gambar 5.17 Pesan Kesalahan (1)
2.
Ketika pengguna belum melakukan input data yang lengkap (username,
password, nama basis data atau url) saat melakukan login ke basis data di
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
102
halaman pilih DB lalu menekan tombol OK, maka akan muncul tampilan
seperti gambar 5.18 di bawah ini.
Gambar 5.18 Pesan Kesalahan (2)
3.
Ketika pengguna menginputkan data yang salah (username, password, nama
basis data atau url) saat melakukan login ke basis data di halaman pilih DB
lalu menekan tombol OK, maka akan muncul tampilan seperti gambar 5.19
di bawah ini.
Gambar 5.19 Pesan Kesalahan (3)
4.
Ketika pengguna belum memasukkan nilai M atau D pada saat menekan
tombol Proses di halaman utama tab deteksi outlier, maka akan muncul
tampilan seperti gambar 5.20 di bawah ini.
Gambar 5.20 Pesan Kesalahan (4)
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
5.
103
Ketika pengguna memasukkan nilai M atau D berupa karakter selain angka
dan menekan tombol Proses di halaman utama tab deteksi outlier, maka akan
muncul tampilan seperti gambar 5.21 di bawah ini.
Gambar 5.21 Pesan Kesalahan (5)
6.
Ketika terdapat kesalahan seperti pemilihan lokasi penyimpanan file hasil
deteksi outlier, maka akan muncul tampilan seperti gambar 5.22 di bawah
ini.
Gambar 5.22 Pesan Kesalahan (6)
7.
Ketika pengguna menginputkan dari berupa file .xls, .csv atau tabel dari basis
data dan data tersebut mengandung minimal satu baris atau cell yang kosong
atau berisi karakter bukan angka, maka akan muncul tampilan seperti
gambar 5.23 di bawah ini.
Gambar 5.23 Pesan Kesalahan (7)
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
8.
104
Ketika pengguna menginputkan dari berupa file .xls, .csv atau tabel dari
basisdata dan pada data tersebut ada minimal sebuah label yang kosong
(kolom pertama dianggap sebagai label), maka akan muncul tampilan seperti
gambar 5.24 di bawah ini.
Gambar 5.24 Pesan Kesalahan (8)
Listing program dari setiap error handling dapat dilihat dalam listing
program implementasi dari setiap halaman dalam sistem ini. Khusus untuk
HalamanMissingValues, listring program terdapat pada lampiran 6.
5.1.9
Implementasi Halaman Open File
Halaman Open File adalah sebuah antarmuka untuk pengguna memilih
file .xls atau .csv yang akan diolah dalam proses deteksi outlier pada sistem ini.
Tampilan untuk open file dapat dilihat pada gambar 5.25 dibawah ini.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
105
Gambar 5.25 Antarmuka Open File
5.2
Implementasi Struktur Data
Sistem Pendeteksi Outlier Menggunakan Algoritma Block-based NestedLoop menggunakan struktur data graph. Setiap data yang dimasukkan akan
dianggap sebagai vertex. Setiap data akan dikelompokkan ke dalam block
tertentu. Pada bagian ini akan dijelaskan implementasi struktur data pada kelas
Vertex, kelas Graph dan kelas Block.
5.2.1 Implementasi Kelas Vertex
Dalam sistem ini, setiap data yang akan diolah menggunakan sistem ini
akan dianggap sebagai vertex. Setiap vertex memiliki atribut berupa label,
boolean unmarked, boolean non_outlier, List<Double> nilai dan jumlah tetangga.
Implementasi struktur data vertex dapat dilihat pada listing program di bawah ini.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
public class Vertex {
private String label;
private boolean unmarked = true;
private boolean non_outlier = false;
private List<Double> nilai;
private int jumlah_tetangga;
public Vertex() {
}
public Vertex(String label, List<Double> nilai) {
setLabel(label);
setNilai(nilai);
setUnmarked(unmarked);
setNon_outlier(non_outlier);
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public List<Double> getNilai() {
return nilai;
}
public void setNilai(List<Double> nilai) {
this.nilai = nilai;
}
106
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
107
public int getJumlah_tetangga() {
return jumlah_tetangga;
}
public void setJumlah_tetangga(int jumlah_tetangga) {
this.jumlah_tetangga = jumlah_tetangga;
}
public boolean isUnmarked() {
return unmarked;
}
public void setUnmarked(boolean unmarked) {
this.unmarked = unmarked;
}
public boolean isNon_outlier() {
return non_outlier;
}
public void setNon_outlier(boolean non_outlier) {
this.non_outlier = non_outlier; }}
5.2.2
Implementasi Kelas Graph
Dalam sistem ini, seluruh data yang diolah akan dibentuk menjadi sebuah
graph. Setiap graph memiliki atribut berupa double[ ][ ] edge, int size = 0,
Vertex[ ] vertex dan Block[ ] block. Implementasi struktur data graph dapat
dilihat pada listing program di bawah ini.
public Graph(int a) {
edge = new double[a][a];
vertex = new Vertex[a];
size = 0;
for (int i = 0; i < a; i++) {
for (int j = 0; j < a; j++) {
edge[i][j] = -1;
edge[j][i] = -1;
}
edge[i][i] = 0;
}
}
Gambar 5.26 Listing Programlas Gra
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
108
Method insertVertex() digunakan untuk menambahkan sebuah data sebagai
vertex. sebuah vertex memiliki label dan nilai dalam bentuk list bertipe double.
public void insertVertex(String label, List<Double> nilai) {
vertex[size++] = new Vertex(label, nilai);
.27 Listing
Program Kelas Graph (method insertVertex)
}
Method insertBlock() digunakan untuk menambahkan beberapa vertex ke
dalam sebuah blok tertentu. Setiap blok memiliki nomor urut.
public void insertBlock(int no_urut, List<Integer> daftar_vertex) {
block[no_urut] = new Block(no_urut, daftar_vertex);
}
ng Program Kelas Graph (method insertBlock)
Method insertEdge() digunakan untuk memasukkan komponen nilai setiap
vertex ke dalam matriks graph.
public void insertEdge(int i, int j, double nilai) {
edge[i][j] = edge[j][i] = nilai;
}
Gambar 5.29 Listing Program Kelas Graph (method insertEdge)
Method euclidean() digunakan untuk menghitung jarak antara dua vertex
menggunakan rumus euclidean distance. Method ini lalu mengembalikan nilai
jarak tersebut dengan format double.
public double euclidean(int a, int b) {
List<Double> data1 = new ArrayList<Double>();
List<Double> data2 = new ArrayList<Double>();
data1 = vertex[a].getNilai();
data2 = vertex[b].getNilai();
double total = 0;
for (int i = 0; i < data1.size(); i++) {
total = total + Math.pow(data1.get(i) - data2.get(i), 2.0);
}
return Math.sqrt(total);
}
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
5.2.3
109
Implementasi Kelas Block
Dalam sistem ini, seluruh data yang diolah akan dibentuk menjadi sebuah
graph dan dikelompokkan dalam block. Setiap block memiliki atribut berupa int
no_urut, int jum_anggota, int jum_blok, int sisa, List<Integer> isi_blok dan
boolean firstArray = false. Implementasi struktur data block dapat dilihat pada
listing program di bawah ini.
public class Block {
private int no_urut;
private int jum_anggota;
private int jum_blok;
private int sisa;
private List<Integer> isi_blok;
private boolean firstArray = false;
public Block() {
}
public Block(int no_urut, List<Integer> dv) {
setNo_urut(no_urut);
setIsi_blok(dv);
setFirstArray(firstArray);
}
public int getNo_urut() {
return no_urut;
}
public void setNo_urut(int no_urut) {
this.no_urut = no_urut;
}
public int getJum_anggota() {
return jum_anggota;
}
public void setJum_anggota(int jum_anggota) {
this.jum_anggota = jum_anggota;
}
public int getJum_blok() {
return jum_blok;
}
public void setJum_blok(int jum_blok) {
this.jum_blok = jum_blok;
}
public int getSisa() {
return sisa;
}
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
110
public void setSisa(int sisa) {
this.sisa = sisa;
}
public boolean isFirstArray() {
return firstArray;
}
public void setFirstArray(boolean firstArray) {
this.firstArray = firstArray;
}
public List<Integer> getIsi_blok() {
return isi_blok;
}
public void setIsi_blok(List<Integer> isi_blok) {
this.isi_blok = isi_blok;}}
5.3
Implementasi Kelas
Pada bagian ini terdapat beberapa listing program dari kelas-kelas utama
yang digunakan dalam sistem ini. Method-method yang ditampilkan dari setiap
kelas hanya method yang memuat fungsi utama sistem yang berkaitan dengan
algoritma Block-based Nested-Loop.
5.3.1
Implementasi Kelas HalamanUtama
Pada kelas HalamanUtama terdapat beberapa method yang berkaitan
dengan
fungsi
utama
antara
lain
pilihFile,
pilihXLS,
pilihCSV,
tampilTabelBasisdata, cekAtribut, cekAtribut2, hapusAtribut, distribusiAtribut,
submitData, prosesData dan simpanHasil.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
CheckBoxTableModel cb_table = new CheckBoxTableModel();
SeleksiAtribut fm;
DatabaseConnection con;
public HalamanUtama(DatabaseConnection db, String namaTabel) {
initComponents();
tampilTabelBasisdata(db, namaTabel);
}
public void pilihFile() {
JFileChooser chooser = new JFileChooser();
int returnVal = chooser.showOpenDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
String nama_file = chooser.getSelectedFile().getPath();
String[] potong = nama_file.split("\\.");
String pola = "[0-9.]*";
String pola2 = "[.]*";
if (potong[1].equals("xls")) { //FILE EXCEL
pilihXLS(chooser, nama_file, pola, pola2);
} else if (potong[1].equals("csv")) { //FILE CSV
pilihCSV(chooser, nama_file, pola, pola2);
} else {
JOptionPane.showMessageDialog(null, "File yang dipilih harus berformat .xls atau .csv");
}
}
}
public void pilihXLS(JFileChooser chooser, String nama_file, String pola, String pola2) {
cb_table.removeRow2();
File excelFile = chooser.getSelectedFile();
pathField.setText(nama_file);
Vector columnNames = new Vector();
Vector data = new Vector();
try {
Workbook workbook = Workbook.getWorkbook(excelFile);
Sheet sheet = workbook.getSheets()[0];
for (int row = 0; row < sheet.getRows(); row++) {
Vector rows = new Vector();
for (int column = 0; column < sheet.getColumns(); column++) {
if (row == 0) {
columnNames.addElement(sheet.getCell(column, row).getContents());
} else {
rows.addElement(sheet.getCell(column, row).getContents());
}
}
if (row != 0) {
data.addElement(rows);
}
}
111
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
112
hasilOutlierTextArea.setText(null);
DefaultTableModel model = new DefaultTableModel(data, columnNames);
preprocessTabel.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
preprocessTabel.setModel(model);
updateCellWidth(preprocessTabel);
jumlahDataField.setText("" + data.size());
distAtributButton.setEnabled(true);
for (int i = 0; i < model.getColumnCount(); i++) {
for (int j = 0; j < model.getRowCount(); j++) {
if (i == 0) {
if (model.getValueAt(j, 0).toString().isEmpty()) {
JOptionPane.showMessageDialog(null, "Label data Anda tidak
lengkap. Silahkan lengkapi label data "
+ "pada file asli Anda.");
i = model.getColumnCount() - 1;
break;
}
} else {
if (model.getValueAt(j, i).toString().isEmpty()
|| !model.getValueAt(j, i).toString().matches(pola)
|| model.getValueAt(j, i).toString().matches(pola2)) {
HalamanMissingValues m = new HalamanMissingValues(model);
m.setVisible(true);
i = model.getColumnCount() - 1;
break;
}
}
}
}
// AbstractTableModel dengan JCheckBox
for (int i = 0; i < model.getColumnCount(); i++) {
fm = new SeleksiAtribut();
fm.setAtribut2(model.getColumnName(i));
fm.setPilih(false);
cb_table.add(i, fm);
}
deteksiOutlierTabel.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
deteksiOutlierTabel.setModel(model);
updateCellWidth(deteksiOutlierTabel);
jumDataField.setText(jumlahDataField.getText());
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
113
hapusAtributTable.setModel(cb_table);
hapusAtributButton.setEnabled(true);
checkAllButton.setEnabled(true);
uncheckAllButton.setEnabled(true);
submitDataButton.setEnabled(true);
} catch (Exception e) {
}
}
public void pilihCSV(JFileChooser chooser, String nama_file, String pola, String
pola2) {
File csvFile = chooser.getSelectedFile();
pathField.setText(nama_file);
Vector columnNames = new Vector();
Vector data = new Vector();
String line;
try {
BufferedReader br = new BufferedReader(new FileReader(csvFile));
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());
}
data.addElement(row);
}
br.close();
DefaultTableModel model = new DefaultTableModel(data, columnNames);
preprocessTabel.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
preprocessTabel.setModel(model);
updateCellWidth(preprocessTabel);
pathField.setText(csvFile.getPath());
jumlahDataField.setText("" + data.size());
distAtributButton.setEnabled(true);
for (int i = 0; i < model.getColumnCount(); i++) {
for (int j = 0; j < model.getRowCount(); j++) {
if (model.getValueAt(j, i).toString().isEmpty()
|| !model.getValueAt(j, i).toString().matches(pola)
|| model.getValueAt(j, i).toString().matches(pola2)) {
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
114
JOptionPane.showMessageDialog(null, "Data Anda belum
lengkap. "
+ "Silahkan lengkapi data Anda pada file asli.");
i = model.getColumnCount() - 1;
break;
}
}
}
// AbstractTableModel dengan JCheckBox
List<String> isiData = new ArrayList<String>();
for (int i = 0; i < model.getColumnCount(); i++) {
fm = new SeleksiAtribut();
fm.setAtribut2(model.getColumnName(i));
fm.setPilih(false);
cb_table.add(i, fm);
}
deteksiOutlierTabel.setAutoResizeMode(JTable.AUTO_RESIZE_OF
F);
deteksiOutlierTabel.setModel(model);
updateCellWidth(deteksiOutlierTabel);
jumDataField.setText(jumlahDataField.getText());
hapusAtributTable.setModel(cb_table);
hapusAtributButton.setEnabled(true);
checkAllButton.setEnabled(true);
uncheckAllButton.setEnabled(true);
submitDataButton.setEnabled(true);
} catch (Exception e1) {
}
}
public void tampilTabelBasisdata(DatabaseConnection db, String namaTabel)
{
try {
Database con = new Database();
ResultSet rs;
rs = con.displayTable(db.getConnection(), namaTabel);
java.sql.ResultSetMetaData meta = rs.getMetaData();
int coloumCount = meta.getColumnCount();
Vector columnName = new Vector();
Vector data = new Vector();
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
115
columnName.clear();
for (int i = 1; i <= coloumCount; i++) {
columnName.add(meta.getColumnName(i));
}
data.clear();
while (rs.next()) {
Vector data2 = new Vector();
for (int i = 1; i <= coloumCount; i++) {
data2.add(rs.getString(i));
}
data2.add("\n");
data.add(data2);
}
DefaultTableModel model = new DefaultTableModel(data, columnName);
preprocessTabel.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
preprocessTabel.setModel(model);
updateCellWidth(preprocessTabel);
jumlahDataField.setText("" + data.size());
pathField.setText("TABEL : " + namaTabel);
cb_table.removeRow2();
String pola = "[0-9.]*";
String pola2 = "[.]*";
for (int i = 0; i < model.getColumnCount(); i++) {
for (int j = 0; j < model.getRowCount(); j++) {
if (i == 0) {
if (model.getValueAt(j, 0) == null) {
JOptionPane.showMessageDialog(null, "Label data Anda tidak
lengkap. Silahkan lengkapi label data pada file asli Anda.");
i = model.getColumnCount() - 1;
break;
}
} else {
if (model.getValueAt(j, i) == null
|| !model.getValueAt(j, i).toString().matches(pola)
|| model.getValueAt(j, i).toString().matches(pola2)) {
JOptionPane.showMessageDialog(null, "Data Anda belum lengkap.
"
+ "Silahkan lengkapi data Anda pada file asli.");
i = model.getColumnCount() - 1;
break;
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
}
}
}
}
List<String> isiData = new ArrayList<String>();
for (int i = 0; i < model.getColumnCount(); i++) {
fm = new SeleksiAtribut();
fm.setAtribut2(model.getColumnName(i));
fm.setPilih(false);
cb_table.add(i, fm);
}
deteksiOutlierTabel.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
deteksiOutlierTabel.setModel(model);
updateCellWidth(deteksiOutlierTabel);
jumDataField.setText(jumlahDataField.getText());
hapusAtributTable.setModel(cb_table);
hapusAtributButton.setEnabled(true);
checkAllButton.setEnabled(true);
uncheckAllButton.setEnabled(true);
submitDataButton.setEnabled(true);
} catch (Exception e) {
}
}
public boolean cekAtribut(String x, List<String> hapus) {
boolean y = false;
for (int i = 0; i < hapus.size(); i++) {
if (hapus.get(i).equals(x)) {
y = true;
}
}
return y;
}
public boolean cekAtribut2(String x, Vector kolom) {
boolean y = false;
for (int i = 0; i < kolom.size(); i++) {
if (kolom.get(i).equals(x)) {
y = true;
}
}
return y;
}
116
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
//http://stackoverflow.com/questions/13013989/how-to-adjust-jtable-columns-tofit-the-longest-content-in-column-cells
private void updateCellWidth(JTable t) {
adjustRowSizes(t);
for (int i = 0; i < t.getColumnCount(); i++) {
adjustColumnSizes(t, i, 2);
}
}
//http://stackoverflow.com/questions/13013989/how-to-adjust-jtable-columns-tofit-the-longest-content-in-column-cells
private void adjustRowSizes(JTable jTable) {
for (int row = 0; row < jTable.getRowCount(); row++) {
int maxHeight = 0;
for (int column = 0; column < jTable.getColumnCount(); column++) {
TableCellRenderer cellRenderer = jTable.getCellRenderer(row, column);
Object valueAt = jTable.getValueAt(row, column);
Component tableCellRendererComponent =
cellRenderer.getTableCellRendererComponent(jTable, valueAt, false, false, row,
column);
int heightPreferable =
tableCellRendererComponent.getPreferredSize().height;
maxHeight = Math.max(heightPreferable, maxHeight);
}
jTable.setRowHeight(row, maxHeight);
}
}
//http://stackoverflow.com/questions/13013989/how-to-adjust-jtable-columns-tofit-the-longest-content-in-column-cells
public void adjustColumnSizes(JTable table, int column, int margin) {
DefaultTableColumnModel colModel = (DefaultTableColumnModel)
table.getColumnModel();
TableColumn col = colModel.getColumn(column);
int width;
TableCellRenderer renderer = col.getHeaderRenderer();
if (renderer == null) {
renderer = table.getTableHeader().getDefaultRenderer();
}
Component comp = renderer.getTableCellRendererComponent(table,
col.getHeaderValue(), false, false, 0, 0);
117
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
118
width = comp.getPreferredSize().width;
for (int r = 0; r < table.getRowCount(); r++) {
renderer = table.getCellRenderer(r, column);
comp = renderer.getTableCellRendererComponent(table, table.getValueAt(r,
column), false, false, r, column);
int currentWidth = comp.getPreferredSize().width;
width = Math.max(width, currentWidth);
}
width += 2 * margin;
col.setPreferredWidth(width);
col.setWidth(width);
}
private void tandaiSemua() {
for (int i = 0; i < cb_table.getRowCount(); i++) {
cb_table.setValueAt(true, i, 1);
}
}
private void batalTandai() {
for (int i = 0; i < cb_table.getRowCount(); i++) {
cb_table.setValueAt(false, i, 1);
}
}
private void hapusAtribut() {
List<String> hapus_atribut = new ArrayList<String>();
for (int i = 0; i < cb_table.getRowCount(); i++) {
if (cb_table.getValueAt(i, 1).equals(true)) {
hapus_atribut.add(cb_table.getValueAt(i, 0).toString());
}
}
TableModel model = preprocessTabel.getModel();
int column = model.getColumnCount();
int row = model.getRowCount();
Vector columnNames = new Vector();
Vector data = new Vector();
for (int i = 0; i < cb_table.getRowCount(); i++) {
if (!cekAtribut(cb_table.getValueAt(i, 0).toString(), hapus_atribut)) {
columnNames.addElement(cb_table.getValueAt(i, 0));
}
}
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
for (int i = 0; i < row; i++) {
Vector rows = new Vector();
for (int j = 0; j < column; j++) {
if (cekAtribut2(model.getColumnName(j).toString(),
columnNames)) {
rows.addElement(model.getValueAt(i, j));
}
}
data.addElement(rows);
}
DefaultTableModel new_model = new DefaultTableModel(data,
columnNames);
preprocessTabel.setModel(new_model);
if (!data.isEmpty() && !columnNames.isEmpty()) {
updateCellWidth(preprocessTabel);
}
if (columnNames.isEmpty()) {
jumlahDataField.setText(null);
submitDataButton.setEnabled(false);
checkAllButton.setEnabled(false);
uncheckAllButton.setEnabled(false);
hapusAtributButton.setEnabled(false);
distAtributButton.setEnabled(false);
pathField.setText(null);
jTabbedPane1.setSelectedComponent(panelPreprocess);
jTabbedPane1.setEnabledAt(1, false);
}
cb_table.removeRow();
}
private void distribusiAtribut() {
List<String> daftarAtribut = new ArrayList<String>();
int jumlahAtribut = preprocessTabel.getColumnCount() - 1;
for (int i = 1; i <= jumlahAtribut; i++) {
daftarAtribut.add(preprocessTabel.getColumnName(i));
}
HalamanDistribusiAtribut distribusiDialog = new
HalamanDistribusiAtribut(this, daftarAtribut, preprocessTabel);
distribusiDialog.setVisible(true);
}
119
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
private void submitData() {
TableModel model = preprocessTabel.getModel();
deteksiOutlierTabel.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
deteksiOutlierTabel.setModel(model);
updateCellWidth(deteksiOutlierTabel);
jumDataField.setText(jumlahDataField.getText());
jTabbedPane1.setSelectedComponent(panelDeteksiOutlier);
jTabbedPane1.setEnabledAt(1, true);
}
//deteksi outlier
private void prosesData() {
String pola = "[0-9.]*";
String pola2 = "[.]*";
if (jumDataField.getText().equals("")) {
JOptionPane.showMessageDialog(null, "Anda belum memasukkan data");
atributDField.setText(null);
atributMField.setText(null);
jTabbedPane1.setSelectedComponent(panelPreprocess);
prosesButton.setEnabled(false);
} else if (atributDField.getText().length() > 0 &&
atributMField.getText().length() > 0
&& ((!atributDField.getText().matches(pola) ||
atributDField.getText().matches(pola2))
|| (!atributMField.getText().matches(pola) ||
atributMField.getText().matches(pola2)))) {
JOptionPane.showMessageDialog(null, "Nilai M dan D harus berupa
bilangan bulat atau desimal!");
atributDField.setText(null);
atributMField.setText(null);
prosesButton.setEnabled(false);
} else if (atributDField.getText().equals("") ||
atributMField.getText().equals("")) {
JOptionPane.showMessageDialog(null, "Nilai M dan D harus diisi!");
prosesButton.setEnabled(false);
} else {
double m = Integer.parseInt(atributMField.getText());
double d = Double.parseDouble(atributDField.getText());
GraphController g = new GraphController();
g.deteksiOutlier(deteksiOutlierTabel.getRowCount());
hasilOutlierTextArea.setText(g.tampilHasil(deteksiOutlierTabel, m, d,
jumDataField.getText(), pathField.getText()));
prosesButton.setEnabled(false);
atributDField.setText(null);
120
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
atributMField.setText(null);
simpanButton.setEnabled(true);
}
}
private void simpanHasil() {
JFileChooser fileChooser = new JFileChooser(new File("D:/"));
fileChooser.setFileFilter(new FileNameExtensionFilter("Microsoft Word
(*.doc)", "doc"));
fileChooser.setFileFilter(new FileNameExtensionFilter("Text Documents
(*.txt)", "txt"));
FileOutputStream file_output_stream;
int returnValue = fileChooser.showSaveDialog(this);
if (returnValue == JFileChooser.APPROVE_OPTION) {
String filename = fileChooser.getSelectedFile().getPath();
String extension = fileChooser.getFileFilter().getDescription();
File ff = new File(filename);
//buat file output stream
if (extension.equals("Microsoft Word (*.doc)")) {
ff = new File(filename + ".doc");
} else if (extension.equals("Text Documents (*.txt)")) {
ff = new File(filename + ".txt");
}
try {
file_output_stream = new FileOutputStream(ff);
} catch (FileNotFoundException fe) {
JOptionPane.showMessageDialog(this, "Penyimpanan Hasil Deteksi
Outlier Gagal! "
+ "Periksa kembali lokasi Anda akan menyimpan file");
//fe.printStackTrace();
return;
}
try {
//ambil teks dari JTextArea
String hasil_text_area = hasilOutlierTextArea.getText();
String[] baca = hasil_text_area.split("\\n");
FileWriter outFile = new FileWriter(ff);
PrintWriter out = new PrintWriter(outFile, true);
for (int i = 0; i < baca.length; i++) {
out.println("" + baca[i].toString());
}
file_output_stream.close();
} catch (IOException ie) {
JOptionPane.showMessageDialog(this, "Penyimpanan Hasil Deteksi
Outlier Gagal !");
121
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
122
atributMField.setText(null);
simpanButton.setEnabled(true); } }
private void simpanHasil() {
JFileChooser fileChooser = new JFileChooser(new File("D:/"));
fileChooser.setFileFilter(new FileNameExtensionFilter("Microsoft Word
(*.doc)", "doc"));
fileChooser.setFileFilter(new FileNameExtensionFilter("Text Documents
(*.txt)", "txt"));
FileOutputStream file_output_stream;
int returnValue = fileChooser.showSaveDialog(this);
if (returnValue == JFileChooser.APPROVE_OPTION) {
String filename = fileChooser.getSelectedFile().getPath();
String extension = fileChooser.getFileFilter().getDescription();
File ff = new File(filename);
//buat file output stream
if (extension.equals("Microsoft Word (*.doc)")) {
ff = new File(filename + ".doc");
} else if (extension.equals("Text Documents (*.txt)")) {
ff = new File(filename + ".txt");
}
try {
file_output_stream = new FileOutputStream(ff);
} catch (FileNotFoundException fe) {
JOptionPane.showMessageDialog(this, "Penyimpanan Hasil Deteksi
Outlier Gagal! "
+ "Periksa kembali lokasi Anda akan menyimpan file");
//fe.printStackTrace();
return; }
try {
//ambil teks dari JTextArea
String hasil_text_area = hasilOutlierTextArea.getText();
String[] baca = hasil_text_area.split("\\n");
FileWriter outFile = new FileWriter(ff);
PrintWriter out = new PrintWriter(outFile, true);
for (int i = 0; i < baca.length; i++) {
out.println("" + baca[i].toString());
}
file_output_stream.close();
} catch (IOException ie) {
JOptionPane.showMessageDialog(this, "Penyimpanan Hasil Deteksi
Outlier Gagal !");
}
JOptionPane.showMessageDialog(this, "Hasil Deteksi Outlier Telah Berhasil
Disimpan di " + filename); }
simpanButton.setEnabled(false);
}
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
123
5.3.2 Implementasi Kelas HalamanPilihDB
Pada kelas HalamanPilihDB terdapat beberapa dua method yang berkaitan
dengan fungsi login ke basis data yaitu pilihBasisdata dan koneksi.
private void pilihBasisdata() {
if (pilihKoneksiCombo.getSelectedIndex() == 0) {
databaseField.setText(null);
databaseField.setEnabled(false);
urlField.setText("jdbc:oracle:thin:@localhost:1521:XE");
} else if (pilihKoneksiCombo.getSelectedIndex() == 1) {
databaseField.setEnabled(true);
urlField.setText("jdbc:mysql://localhost:3306/");
} else {
urlField.setText(null);
}
}
private void koneksi() {
if (usernameField.getText().isEmpty() || passwordField.getText().isEmpty()
|| urlField.getText().isEmpty()
|| (databaseField.getText().isEmpty() &&
pilihKoneksiCombo.getSelectedIndex()==1)) {
JOptionPane.showMessageDialog(null, "Semua data/field di atas harus
diisi.");
} else {
if (pilihKoneksiCombo.getSelectedIndex() == 0) {
String username = usernameField.getText();
String password = passwordField.getText();
String url = urlField.getText();
boolean kon = Database.getConnOracle(url, username, password);
if (kon == true) {
JOptionPane.showMessageDialog(this, username+", Anda berhasil
melakukan koneksi ke basisdata");
DatabaseConnection db = new DatabaseConnection();
this.dispose();
HalamanPilihTabel dialog = new HalamanPilihTabel(db,
pilihKoneksiCombo.getSelectedIndex());
dialog.setVisible(true);
} else { JOptionPane.showMessageDialog(this,
"Username/Password/Nama basisdata/URL yang Anda masukkan salah!");
usernameField.setText("");
passwordField.setText("");
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
124
databaseField.setText("");
usernameField.requestFocus();
}
} else {
String username = usernameField.getText();
String password = passwordField.getText();
String url = urlField.getText() + databaseField.getText();
boolean kon = Database.getConnMySQL(url, username, password);
if (kon == true) {
JOptionPane.showMessageDialog(this, username+", Anda
berhasil melakukan koneksi ke basisdata");
DatabaseConnection db = new DatabaseConnection();
this.dispose();
HalamanPilihTabel dialog = new HalamanPilihTabel(db,
pilihKoneksiCombo.getSelectedIndex());
dialog.setVisible(true);
} else {
JOptionPane.showMessageDialog(this,
"Username/Password/URL yang Anda masukkan salah!");
usernameField.setText("");
passwordField.setText("");
databaseField.setText("");
usernameField.requestFocus();
}
}
}
}
5.3.3 Implementasi Kelas HalamanPilihTabel
Pada kelas HalamanPilihTabel terdapat dua method yang berkaitan
dengan fungsi membaca tabel dari sebuah basis data yaitu daftarTabel dan
pilihTabel.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
125
public HalamanPilihTabel(DatabaseConnection c, int db) {
this.con = c;
initComponents();
daftarTabel(db);
}
private void daftarTabel(int db) {
try {
Database dc = new Database();
ResultSet rset;
if (db == 0) {
rset = dc.displayTableOracle(con.getConnection());
while (rset.next()) {
daftarTableCombo.addItem(rset.getString(1));
}
} else if (db == 1) {
rset = dc.displayTableMySql(con.getConnection());
while (rset.next()) {
daftarTableCombo.addItem(rset.getString(1));
}
}
} catch (SQLException ex) {
Logger.getLogger(HalamanPilihTabel.class.getName()).log(Level.SEVERE,
null, ex);
}
}
private void pilihTabel() {
java.awt.Window window[] = java.awt.Window.getWindows();
for (int i = 0; i < window.length; i++) {
window[i].dispose();
window[i] = null;
}
HalamanUtama coba = new HalamanUtama(con,
daftarTableCombo.getSelectedItem().toString());
coba.setVisible(true);
jDesktopPane1.getMaximumSize();
}
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
126
5.3.4 Implementasi Kelas HalamanDistribusiAtribut
Pada kelas HalamanDistribusiAtribut terdapat tiga method yang berkaitan
dengan fungsi distribusi atribut dari yaitu daftarAtribut, pilihAtribut dan
viewGrafik.
JTable model;
private int count = 0;
public HalamanDistribusiAtribut(java.awt.Frame parent, List<String>
daftarAtribut,
JTable tabel) {
initComponents();
daftarAtribut(daftarAtribut, tabel);
}
private void daftarAtribut(List<String> daftarAtribut, JTable tabel) {
lihatGrafikButton.setEnabled(false);
model = tabel;
for (int i = 0; i < daftarAtribut.size(); i++) {
atributCombo.addItem(daftarAtribut.get(i).toString());
}
}
private void pilihAtribut() {
String pilihAtribut = atributCombo.getSelectedItem().toString();
String[] columnName = new String[2];
String[][] data = null;
List<String> listData = new ArrayList<String>();
for (int i = 1; i < model.getColumnCount(); i++) {
if (pilihAtribut.equalsIgnoreCase(model.getColumnName(i).toString())) {
columnName[0] = model.getColumnName(i).toString();
columnName[1] = "Count";
for (int j = 0; j < model.getRowCount(); j++) {
listData.add(model.getValueAt(j, i).toString());
}
HashSet hashSet = new HashSet(listData);
listData.clear();// Clearing arraylist1
listData = new ArrayList(hashSet);
data = new String[listData.size()][2];
// System.out.println("List data after removing : " + listData.toString());
for (int k = 0; k < listData.size(); k++) {
for (int l = 0; l < model.getRowCount(); l++) {
if (listData.get(k).toString().equalsIgnoreCase(model.getValueAt(l,
i).toString())) {
setCount(count + 1);
}
}
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
127
data[k][0] = listData.get(k).toString();
data[k][1] = String.valueOf(getCount());
// System.out.println("Count : " + getCount());
setCount(0);
}
}
}
DefaultTableModel d = new DefaultTableModel(data, columnName);
tabelDistribusi.setModel(d);
lihatGrafikButton.setEnabled(true);
}
private void viewGrafik() {
String ass[][];
String pars[][];
int jum[][];
int a = tabelDistribusi.getRowCount();
int b = tabelDistribusi.getColumnCount();
ass = new String[a][b];
pars = new String[a][b];
jum = new int[a][b];
for (int i = 0; i < a; i++) {
ass[i][0] = tabelDistribusi.getValueAt(i, 0).toString();
pars[i][1] = tabelDistribusi.getValueAt(i, 1).toString();
jum[i][1] = Integer.parseInt(pars[i][1]);
}
BarChart br = new BarChart();
br.tampil(jum, ass, ass);
}
5.3.5
Implementasi Kelas SeleksiAtribut
Pada kelas SeleksiAtribut terdapat method-method yang berkaitan dengan
fungsi seleksi atribut.
public class SeleksiAtribut {
private List<String> atribut;
private String atribut2;
private Boolean pilih;
public SeleksiAtribut(){
}
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
128
public SeleksiAtribut(String vl, boolean st) {
atribut2 = vl;
pilih = new Boolean(st);
}
public Boolean getPilih() {
return pilih;
}
public void setPilih(Boolean pilih) {
this.pilih = pilih;
}
public List<String> getAtribut() {
return atribut;
}
public void setAtribut(List<String> atribut) {
this.atribut = atribut;
}
public String getAtribut2() {
return atribut2;
}
public void setAtribut2(String atribut2) {
this.atribut2 = atribut2;
}
}
5.3.6
Implementasi Kelas DatabaseConnection
Pada kelas DatabaseConnection terdapat method-method yang digunakan
untuk menghubungkan sistem dengan basis data tertentu yang dipilih pengguna.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
129
public class DatabaseConnection {
private static Connection connection = null;
public static void setConnection(Connection aConnection) {
connection = aConnection;
}
public boolean isConnectedOracle(String url, String user, String pwd){
//closeConnection(url, user, pwd);
if (connectToOracle(url, user, pwd) != null) {
return true;
} else {
return false;
}
}
public boolean isConnectedMySQL(String url, String user, String pwd) {
//closeConnection(url, user, pwd);
if (connectToMySQL(url, user, pwd) != null) {
return true;
} else {
return false;
}
}
public Connection connectToOracle(String url, String user, String pwd) {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
setConnection(DriverManager.getConnection(url, user, pwd));
System.out.println("Koneksi Berhasil");
} catch (Exception e) {
System.out.println(e.getMessage());
}
return getConnection();
}
public Connection connectToMySQL(String url, String user, String pwd) {
try {
Class.forName("org.gjt.mm.mysql.Driver");
setConnection(DriverManager.getConnection(url, user, pwd));
System.out.println("Koneksi Berhasil");
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
130
} catch (Exception e) {
System.out.println(e.getMessage());
}
return getConnection();
}
public Connection getConnection() {
return connection;
}
public boolean closeConnection(String url, String user, String pwd) {
if (isConnectedMySQL(url, user,pwd)) {
try {
getConnection().close();
setConnection(null);
} catch (SQLException ex) {
ex.printStackTrace();
}
return true;
} else if (isConnectedOracle(url, user,pwd)) {
try {
getConnection().close();
setConnection(null);
} catch (SQLException ex) {
ex.printStackTrace();
}
return true;
} else {
return false;
}
}
5.3.7
Implementasi Kelas Database
Kelas Database merupakan kelas controller yang berisi method-method
untuk memanggil method-method pada kelas DatabaseConnection.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
131
public class Database {
private Connection connection;
public static boolean getConnOracle(String url, String user, String pwd) {
DatabaseConnection kon = new DatabaseConnection();
boolean ok = kon.isConnectedOracle(url, user, pwd);
return ok;
}
public static boolean getConnMySQL(String url, String user, String pwd) {
DatabaseConnection kon = new DatabaseConnection();
boolean ok = kon.isConnectedMySQL(url, user, pwd);
return ok;
}
public ResultSet displayTableOracle(Connection conn) throws SQLException {
Statement stmt;
ResultSet rset;
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 displayTableMySql(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 displayTable(Connection conn, String namaTabel) throws SQLException
{
Statement stmt;
ResultSet rset;
String query;
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
132
query = "select * from "+namaTabel;
// System.out.println("\nExecuting query: " + query);
rset = stmt.executeQuery(query);
return rset;
}
}
5.3.8
Implementasi Kelas CheckBoxTableModel
Kelas CheckBoxTableModel merupakan kelas yang berisi method-method
yang berkaitan dengan fungsi seleksi atribut.
public class CheckBoxTableModel extends AbstractTableModel {
String[] colom = {"Atribut", "Pilih"};
List<String> nama_atribut;
SeleksiAtribut fm = new SeleksiAtribut("", false);
List<SeleksiAtribut> lfm ;
public CheckBoxTableModel() {
lfm = new ArrayList<SeleksiAtribut>();
}
public int getRowCount() {
return lfm.size();
}
public int getColumnCount() {
return colom.length;
}
@Override
public String getColumnName(int col) {
return colom[col];
}
public Object getValueAt(int rowIndex, int columnIndex) {
switch (columnIndex) {
case 0:
return lfm.get(rowIndex).getAtribut2();
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
case 1:
return lfm.get(rowIndex).getPilih();
}
return null;
}
@Override
public Class getColumnClass(int columnIndex) {
return getValueAt(0, columnIndex).getClass();
}
@Override
public void setValueAt(Object val, int rowIndex, int columnIndex) {
switch (columnIndex) {
case 0:
lfm.get(rowIndex).setAtribut2(val.toString());
break;
case 1:
lfm.get(rowIndex).setPilih((Boolean) val);
break;
}
fireTableCellUpdated(rowIndex, columnIndex);
}
@Override
public boolean isCellEditable(int row, int col) {
return true;
}
public void add(int x,SeleksiAtribut field_m) {
lfm.add(x,field_m);
fireTableRowsInserted(getRowCount() - 1, getRowCount() - 1);
}
public void removeRow() {
List<SeleksiAtribut> s = new ArrayList<SeleksiAtribut>();
for (SeleksiAtribut seleksi : lfm) {
if (!seleksi.getPilih()) {
s.add(seleksi);
}
}
lfm=s;
fireTableDataChanged();
}
133
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
134
public void removeRow2() {
List<SeleksiAtribut> s = new ArrayList<SeleksiAtribut>();
for (SeleksiAtribut seleksi : lfm) {
if (!seleksi.getPilih()) {
s.remove(seleksi);
}
}
lfm=s;
fireTableDataChanged();
}
}
5.3.9
Implementasi Kelas BarChart
Kelas BarChart merupakan kelas yang berisi method tampil yang
digunakan untuk menampilkan grafik distribusi atribut.
public class BarChart extends JFrame {
public void tampil(int[][] v, String[][] n, String[][] t) {
setTitle("Grafik Distribusi Atribut");
DefaultCategoryDataset data = new DefaultCategoryDataset();
for (int i = 0; i < n.length; i++) {
data.setValue(v[i][1], n[i][0], t[i][0]);
}
JFreeChart jf = ChartFactory.createBarChart3D("Dataset Chart",
"dataset", "sum", data, PlotOrientation.VERTICAL, true, true, true);
ChartPanel cp = new ChartPanel(jf);
setLayout(new BorderLayout());
add(cp, "Center");
pack();
RefineryUtilities.centerFrameOnScreen(this);
this.setVisible(true);
}
}
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
135
5.3.10 Implementasi Kelas GraphController
Kelas GraphController merupakan kelas controller yang berisi methodmethod untuk memanggil method pada kelas Graph yang berkaitan dengan fungsi
deteksi outlier.
public class GraphController {
Graph g;
public void deteksiOutlier(int row) {
g = new Graph(row);
}
public String tampilHasil(JTable t, double m, double d, String jumData,
String path) {
return g.displayOutlier(t, m, d, jumData, path);
}
}
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
BAB 6
PENGUJIAN DAN ANALISIS HASIL PENGUJIAN
6.1 Fase Implementasi Pengujian
Pada bab ini akan dibahas mengenai tahap pengembangan sistem
pendeteksi outlier menggunakan algoritma Block-based Nested-Loop yaitu
pengujian sistem. Berikut merupakan tahap-tahap yang dilakukan dalam
pengujian sistem :
6.1.1 Rencana Pengujian
Pengujian terhadap sistem ini meliputi empat metode pengujian, yaitu
pengujian blackbox, pengujian efek perubahan nilai atribut penambangan data ,
pengujian review dan validasi oleh pengguna dan pengujian perbandingan waktu
deteksi outlier berdasarkan jumlah blok. Pengujian blackbox adalah pengujian
perangkat lunak dari aspek fungsional dengan tidak memperhatikan struktur
internal dari perangkat lunak yang diuji. Pengetahuan khusus mengenai struktur
internal dan pemrograman pada umumnya tidak diperlukan dalam pengujian
blackbox. Pengujian blackbox dilakukan untuk mengetahui apakah sebuah
perangkat lunak sudah berfungsi sesuai dengan yang diharapkan pengguna.
Pengujian efek perubahan nilai atribut penambangan data dilakukan dengan cara
mengubah nilai paramater yang dimiliki algoritma Block-based Nested-Loop,
yaitu nilai M dan D. Pengujian review dan validasi oleh pengguna dilakukan
dengan membandingkan hasil deteksi outlier yang diperoleh melalui sistem
dengan hasil deteksi outlier yang dilakukan oleh pengguna dalam hal ini Kaprodi
(Kepala Program Studi) Teknik Informatika Universitas Sanata Dharma.
136
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
137
Pengujian perbandingan waktu deteksi outlier berdasarkan jumlah blok dilakukan
untuk mengetahui pengaruh penggunaan blok-blok data terhadap waktu yang
diperlukan sistem dalam mendeteksi outlier. Berikut dapat dilihat rencana
pengujian sistem pada tabel 6.1 dibawah ini:
Tabel 6.1 Tabel Rencana Pengujian
Kelas Uji
DatabaseConnection
HalamanUtama
Halaman
DistribusiAtribut
HalamanPilihDB
HalamanPilihTabel
Butir Uji
Jenis
Pengujian
Cek koneksi ke dalam basis data Black Box
(MySQL)
Cek koneksi ke dalam basis data Black Box
(Oracle)
Menampilkan form HalamanUtama
Black Box
Menampilkan data dari file .xls
Black Box
Menampilkan data dari file .csv
Black Box
Menampilkan data dari tabel dalam Black Box
basis data
Melakukan seleksi atribut
Black Box
Menampilkan hasil deteksi outlier
Black Box
Menyimpan hasil deteksi outlier
Black Box
Menampilkan form
Black Box
HalamanDistribusiAtribut
Menampilkan daftar atribut beserta
Black Box
jumlahnya
Menampilkan grafik distribusi atribut Black Box
Menampilkan form HalamanPilihDB
Black Box
Mengecek kelengkapan input data
untuk login ke basis data
Menampilkan form
Black Box
HalamanPilihTabel
Menampilkan daftar tabel yang
Black Box
berasal dari basis data yang dipilih
pengguna
6.1.1.1 Pengujian Blackbox
6.1.1.1.1 Pengujian DatabaseConnection
Data pengujian dari kelas DatabaseConnection dapat dilihat pada tabel
6.2 di bawah ini.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
138
Tabel 6.2 Tabel Pengujian Kelas DatabaseConnection
Aktifitas
yang dilakukan
Input username,
password, nama
database, url benar
(MySQL)
Kasus dan Hasil Uji (Data Benar)
Yang Diharapkan
Pengamatan
Menampilkan
Pesan sukses
pesan sukses
berhasil
melakukan
ditampilkan
koneksi ke basis
data
Input
username, Menampilkan
Pesan
sukses
password, url benar pesan sukses
berhasil
(Oracle)
melakukan
ditampilkan
koneksi ke basis
data
Kasus dan Hasil Uji (Data Salah)
Aktifitas
Keluaran
Hasil yang
yang dilakukan
yang Diharapkan
Didapat
Input username,
Menampilkan
Pesan berhasil
password, nama
pesan peringatan
ditampilkan
database atau url ada
bahwa koneksi ke
yang salah (MySQL)
basis data gagal.
Input username,
Menampilkan
Pesan berhasil
password atau url ada pesan peringatan
ditampilkan
yang salah (Oracle)
bahwa koneksi ke
basis data gagal.
Kesimpulan
Diterima
Diterima
Kesimpulan
Diterima
Diterima
6.1.1.1.2 Pengujian HalamanUtama
Data pengujian dari kelas HalamanUtama dapat dilihat pada tabel 6.3 di
bawah ini.
Tabel 6.3 Tabel Pengujian Kelas HalamanUtama
Aktifitas
yang dilakukan
Input data dari file
bertipe .xls
Input data dari file
bertipe .csv
Input data dari
tabel dalam basis
Kasus dan Hasil Uji (Data Benar)
Keluaran yang
Hasil yang
Diharapkan
Didapat
Data tertampil ke
Data tertampil ke
dalam tabel
dalam tabel
Data tertampil ke
Data tertampil ke
dalam tabel
dalam tabel
Data tertampil ke
Data tertampil ke
dalam tabel
dalam tabel
Kesimpulan
Diterima
Diterima
Diterima
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
data
Memilih satu atau
lebih atribut yang
akan dihilangkan
lalu
menekan
tombol hapus
Menekan tombol
Tandai Semua
Atribut beserta
data dalam tabel
yang dipilih
terhapus
Semua atribut
akan ditandai
untuk dihapus
tombol Semua atribut
Tandai tidak ditandai
Menekan
Batal
Semua
Melakukan proses
deteksi outlier
menggunakan
algoritma NestedLoop
Menekan tombol
Simpan (.doc)
139
Data sesuai atribut Diterima
yang
terpilih
berhasil
dihapus
dari tabel
Semua
atribut Diterima
berhasil ditandai
Semua
atribut Diterima
berhasil
tidak
ditandai
Hasil deteksi outlier Diterima
beserta nilai
parameter M dan D
berhasil ditampilkan
Menampilkan
hasil deteksi
outlier beserta
nilai parameter M
dan D
File tersimpan
File
berhasil
sesuai dengan
disimpan
nama dan lokasi
yang ditentukan
pengguna dan
berformat .doc
Menekan tombol File tersimpan
File
berhasil
Simpan (.txt)
sesuai dengan
disimpan
nama dan lokasi
yang ditentukan
pengguna dan
berformat .txt
Kasus dan Hasil Uji (Data Salah)
Aktifitas
Keluaran
Hasil
yang
yang dilakukan
yang Diharapkan Didapat
Input data dari file Menampilkan
Pesan peringatan
bertipe .xls
pesan peringatan
berhasil
(terdapat baris
bahwa data yang
ditampikan
kosong)
dimasukan salah
(terdapat baris
kosong).
Input data dari file Menampilkan
Pesan peringatan
bertipe .xls
pesan peringatan
berhasil
(terdapat label
bahwa data yang
ditampikan
yang kosong)
dimasukan salah
(terdapat label
kosong).
Input data dari file Menampilkan
Pesan peringatan
Diterima
Diterima
Kesimpulan
Diterima
Diterima
Diterima
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
bertipe .xls (data
pesan peringatan
selain label berupa bahwa data yang
huruf)
dimasukan salah
(berformat bukan
angka).
Input data dari file Menampilkan
bertipe .xls (data
pesan peringatan
mengandung
bahwa data yang
sembarang
dimasukan salah
karakter)
(berformat bukan
angka).
Input data dari file Menampilkan
bertipe .csv
pesan peringatan
(terdapat baris
bahwa data yang
kosong atau
salah (terdapat
mengandung
baris kosong atau
karakter bukan
mengandung
angka)
karakter bukan
angka).
Input data dari
Menampilkan
tabel dalam basis
pesan peringatan
data (terdapat
bahwa data yang
baris kosong)
dimasukan salah
(terdapat baris
kosong).
Input data dari
Menampilkan
tabel dalam basis
pesan peringatan
data (terdapat
bahwa data yang
label kosong)
dimasukan salah
(terdapat label
kosong).
Input nilai D atau Menampilkan
M
ada
yang pesan peringatan
kosong
bahwa nilai D dan
M harus terisi
Input nilai D atau Menampilkan
M bukan angka pesan peringatan
atau mengandung bahwa nilai D dan
karakter
M harus berupa
angka
Menyimpan file Menampilkan
hasil
deteksi pesan peringatan
outlier pada lokasi bahwa lokasi
yang salah
penyimpanan file
salah
berhasil
ditampikan
Pesan peringatan
berhasil
ditampikan
Diterima
Pesan peringatan
berhasil
ditampikan
Diterima
Pesan peringatan
berhasil
ditampikan
Diterima
Pesan peringatan
berhasil
ditampikan
Diterima
Pesan peringatan Diterima
berhasil
ditampilkan
Pesan peringatan Diterima
berhasil
ditampilkan
Pesan peringatan Diterima
berhasil
ditampilkan.
140
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
6.1.1.1.3
141
Pengujian HalamanDistribusiAtribut
Data pengujian dari kelas HalamanDistribusiAtribut dapat dilihat
pada tabel 6.4 di bawah ini.
Tabel 6.4 Tabel Pengujian Kelas HalamanDistribusiAtribut
Kasus dan Hasil Uji (Data Benar)
Aktifitas
Keluaran yang
Hasil yang Didapat
yang dilakukan
Diharapkan
Memilih
nama Detail jumlah data
Detail jumlah data
atribut
dari atribut tertampil dari atribut terpilih
ke dalam tabel
berhasil ditampilkan
ke dalam tabel
Menekan tombol Detail jumlah data
Detail jumlah data
Lihat Grafik
tertampil dalam
berhasil
tertampil
bentuk diagram
dalam
bentuk
batang
diagram batang
Kasus dan Hasil Uji (Data Salah)
Aktifitas
Keluaran yang
Hasil yang Didapat
yang dilakukan
Diharapkan
6.1.1.1.4
Kesimpulan
Diterima
Diterima
Kesimpulan
Pengujian HalamanPilihDB
Data pengujian dari kelas HalamanPilihDB dapat dilihat pada
tabel 6.5 di bawah ini.
Tabel 6.5 Tabel Pengujian Kelas HalamanPilihDB
Aktifitas
yang dilakukan
Input username,
password, nama
database atau url
lengkap (MySQL)
Input username,
password atau url
lengkap (Oracle)
Aktifitas
Kasus dan Hasil Uji (Data Benar)
Keluaran yang
Hasil yang Didapat Kesimpulan
Diharapkan
Menampilkan pesan Pesan sukses berhasil Diterima
sukses melakukan
ditampilkan
koneksi
Menampilkan pesan Pesan sukses berhasil Diterima
sukses melakukan
ditampilkan
koneksi
Kasus dan Hasil Uji (Data Salah)
Keluaran yang
Hasil yang Didapat Kesimpulan
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
yang dilakukan
Input username,
password, nama
database atau url
ada yang kosong
(MySQL)
Input username,
password atau url
ada yang kosong
(Oracle)
Diharapkan
Menampilkan pesan
peringatan bahwa
semua data harus
terisi.
Menampilkan pesan
peringatan bahwa
semua data harus
terisi.
Pesan berhasil
ditampilkan
Diterima
Pesan berhasil
ditampilkan
Diterima
142
6.1.1.1.5 Pengujian HalamanPilihTabel
Data pengujian dari kelas HalamanPilihTabel dapat dilihat pada
tabel 6.6 di bawah ini.
Tabel 6.6 Tabel Pengujian Kelas HalamanPilihTabel
Aktifitas
yang dilakukan
Membuka
HalamanPilihTabel
Aktifitas
yang dilakukan
Kasus dan Hasil Uji (Data Benar)
Keluaran yang
Hasil yang
Diharapkan
Didapat
Menampilkan
Daftar table
daftar tabel yang
berhasil
berasal dari basis
ditampilkan
data yang dipilih
pengguna
Kasus dan Hasil Uji (Data Salah)
Keluaran yang
Hasil yang
Diharapkan
Didapat
Kesimpulan
Diterima
Kesimpulan
6.1.1.1.6 Kesimpulan Hasil Pengujian Blackbox
Berdasarkan hasil pengujian terhadap setiap fungsi sistem dengan
kasus uji di atas, disimpulkan bahwa sistem dapat menghasilkan keluaran yang
sesuai dengan yang diharapkan pengguna dan menangani error terhadap fungsi –
fungsi yang tidak berjalan sesuai aturan.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
143
6.1.1.2 Pengujian Review dan Validitas oleh Pengguna
6.1.1.2.1 Perbandingan Perhitungan Manual dan Sistem
Dataset yang digunakan yaitu data akademik mahasiswa Prodi Teknik
Informatika angkatan 2007 yang diterima melalui jalur tes tertulis. Atribut yang
digunakan terdiri dari ips1, ips2, ips3, ips4, nil11, nilai12, nil13, nil14 dan nil15.
Data
akademik
tersebut
diproses
melalui
perhitungan
secara
manual
menggunakan Microsoft Excel untuk ditemukan hasil outliernya. Hasil dari
perhitungan manual menggunakan algoritma Block-based Nested-Loop akan
dibandingkan dengan hasil deteksi outlier yang diperoleh dari Sistem Pendeteksi
Outlier Menggunakan Algoritma Block-based Nested-Loop.
Berikut adalah tabel perbandingan hasil deteksi outlier dari data
akademik mahasiswa Prodi Teknik Informatika angkatan 2007 sebanyak 13
mahasiswa yang diterima melalui jalur tes tertulis menggunakan perhitungan
manual dan perhitungan sistem.
Tabel 6.7 Tabel Perbandingan Hasil Deteksi Outlier
Mahasiswa Angkatan 2007 Jalur Tes Tertulis
Input
Parameter
(M, D)
Hasil Outlier
Semester
1, 2 dan
4
M=4;D=2
3
Hitung Manual
1.
2.
3.
1.
2.
3.
4.
Mhs-79
Mhs-81
Mhs-91
Mhs-79
Mhs-81
Mhs-89
Mhs-91
Sistem
1.
2.
3.
1.
2.
3.
4.
Mhs-79
Mhs-81
Mhs-91
Mhs-79
Mhs-81
Mhs-89
Mhs-91
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
144
Tabel 6.8 Tabel Nilai per Atribut Hasil Outlier
Mahasiswa Angkatan 2007 Jalur Tes Tertulis
No
Mhs-79
Mhs-81
Mhs-89
Mhs-91
Nil11
Nil12
Nil13
Nil14
Nil15
4.00
1.20
2.40
2.80
2.00
0.80
1.60
2.40
3.60
3.20
2.40
3.20
2.40
1.20
1.20
3.20
2.80
0.40
2.80
0.80
IPS1
1.44
1.72
2.94
1.72
IPS2
IPS3
IPS4
2.42
1.65
2.59
2.65
2.53
1.53
1.55
2.43
1.96
1.68
2.35
2.24
Berdasarkan tabel 6.7 di atas, dapat dilihat bahwa hasil deteksi
outlier yang diperoleh melalui perhitungan manual maupun sistem menghasilkan
outlier yang sama. Jadi, dapat disimpulkan bahwa sistem mampu menghasilkan
keluaran sesuai dengan yang diharapkan seperti pada perhitungan manual.
6.1.1.2.2 Hasil Deteksi dari Sistem untuk Pengujian Review
dan Validitas oleh Pengguna
Untuk meyakinkan bahwa hasil deteksi outlier yang diperoleh melalui
perhitungan oleh sistem adalah benar, maka hasil tersebut perlu dianalisis oleh
Kaprodi. Analisis dilakukan untuk mempertimbangkan apakah kumpulan nilai
yang dimiliki oleh mahasiswa yang dinyatakan sebagai outlier dapat diterima
sebagai kejadian langka di antara mahasiswa lainnya.
Kaprodi lalu dapat
menentukan mahasiswa mana saja yang sudah tepat atau belum tepat untuk
dimasukkan dalam kelompok outlier.
Dataset yang digunakan yaitu data akademik mahasiswa Prodi
Teknik Informatika angkatan 2007 dan 2008 yang diterima melalui jalur tes
tertulis dan jalur prestasi. Atribut yang digunakan terdiri dari ips1, ips2, ips3,
ips4, nil11, nilai12, nil13, nil14, nil15 dan final. Dataset dibagi menjadi tiga
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
145
variasi sebagai masukan sistem. Berikut adalah beberapa tabel hasil deteksi
outlier yang diperoleh dari sistem.
1. Data Mahasiswa Prodi Teknik Informatika Angkatan 2007 dan 2008
Jalur Tes (54 mahasiswa) semester 1 sampai semester 4
Atribut yang digunakan ips1, ips2, ips3, ips4, nil11, nil12, nil13, nil14,
nil15.
Ips1
Ips2
Ips3
Ips4
Nil1
Nil2
Nil3
Nil4
Nil5
Rata
2.61 2.56 2.53 2.46 2.43 2.10 2.59 2.13 2.24
-Rata
Standar
0.562 0.645 0.718 0.846 0.515 0.528 0.685 0.641 0.638
Deviasi
M = 5, D = 2
Hasil Outlier Semester 1 (2)
Nomor Ips1 Nil11 Nil12
Mhs-79
1.44
4.00
2.00
Mhs-81
1.72
1.20
0.80
Nil13
3.60
3.20
Nil14
2.40
1.20
Nil15
2.80
0.40
Hasil Outlier Semester 2 (3)
Nomor Ips2 Nil11 Nil12
Mhs-81
1.72
1.20
0.80
Mhs-119 1.28
2.40
3.20
Mhs-120 1.04
3.20
2.00
Nil13
3.20
3.60
3.60
Nil14
1.20
2.80
3.20
Nil15
0.40
3.20
1.60
Hasil Outlier Semester 3 (3)
Nomor Ips3 Nil11 Nil12
Mhs-81
1.53
1.20
0.80
Mhs-103 0.59
2.40
2.40
Mhs-120 1.04
3.20
2.00
Nil13
3.20
2.80
3.60
Nil14
1.20
1.20
3.20
Nil15
0.40
3.60
1.60
Hasil Outlier Semester 4 (6)
Nomor Ips4 Nil11 Nil12
Mhs-81
1.68
1.20
0.80
Mhs-97
0.05
2.80
2.40
Mhs-100 1.07
2.40
1.60
Mhs-107 0.00
2.80
2.00
Mhs-115 0.00
2.80
1.60
Mhs-119 0.82
2.40
3.20
Nil13
3.20
2.40
2.80
1.20
2.00
3.60
Nil14
1.20
2.00
3.60
1.60
2.40
2.80
Nil15
0.40
2.00
2.80
1.60
1.20
3.20
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
2. Data Mahasiswa Prodi Teknik Informatika Angkatan 2007 dan 2008
Jalur Prestasi (72 mahasiswa)
Atribut yang digunakan ips1, ips2, ips3, ips4, final
Rata-Rata
Standar Deviasi
Ips1
2.79
0.592
Ips2
2.74
0.694
Ips3
2.86
0.527
Ips4
2.98
0.620
Final
2.89
0.141
M = 5, D = 1
Hasil Outlier Semester 1 (1)
Nomor
Ips1
Final
Mhs-69
0.85
2.85
Hasil Outlier Semester 2 (2)
Nomor
Ips2
Final
Mhs-17
0.32
2.72
Mhs-37
0.44
2.90
Hasil Outlier Semester 3 (1)
Nomor
Ips3
Final
Mhs-17
0.69
2.72
Hasil Outlier Semester 4 (1)
Nomor
Ips4
Final
Mhs-51
0.94
2.89
3. Data Mahasiswa Prodi Teknik Informatika Angkatan 2007 dan 2008
Jalur Tes dan Jalur Prestasi (126 mahasiswa)
Atribut yang digunakan ips1, ips2, ips3, ips4, final
M = 5, D = 1
Rata-Rata
Standar Deviasi
Ips1
2.71
0.584
Ips2
2.66
0.677
Ips3
2.72
0.635
Ips4
2.76
0.764
Final
2.63
0.384
146
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
147
Hasil Outlier Semester 1 (2)
Nomor
Ips1
Final Status Tes
Mhs-69 0.85
2.85
P
Mhs-81 1.72
1.12
T
Hasil Outlier Semester 2 (3)
Nomor
Ips2
Final Status Tes
Mhs-17 0.32
2.72
P
Mhs-37 0.44
2.90
P
Mhs-81 2.61
1.12
T
Hasil Outlier Semester 3 (4)
Nomor
Ips3
Final Status Tes
Mhs-17 0.69
2.72
P
Mhs-81 1.53
1.12
T
Mhs-103 0.59
2.56
T
Mhs-120 0.19
2.56
T
Hasil Outlier Semester 4 (3)
Nomor
Ips4
Final Status Tes
Mhs-81 1.68
1.12
T
Mhs-107 0.00
2.04
T
Mhs-115 0.00
2.00
T
6.1.1.2.3 Kesimpulan Pengujian Review dan Validitas oleh
Pengguna
Kesimpulan yang diperoleh berdasarkan review yang dilakukan
oleh Kaprodi terhadap hasil outlier yang diperoleh melalui Sistem Pendeteksi
Outlier Menggunakan Algoritma Block-based Nested-Loop adalah sebagai
berikut:
1.
Kasus uji pertama menggunakan dataset mahasiswa Prodi Teknik
Informatika angkatan 2007 dan 2008 yang mengikuti jalur tes tertulis.
Hasil outlier yang diperoleh oleh sistem pada semester 1 hingga semester
4 yaitu 9 mahasiswa. Ada beberapa mahasiswa yang hanya muncul pada
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
148
satu atau dua semester saja tetapi ada pula yang muncul di setiap semester
seperti Mhs-81. Kaprodi menyetujui hasil outlier yang diperoleh sistem.
Menurut Kaprodi, mahasiswa-mahasiswa tersebut memang memiliki IPS
yang jauh lebih rendah dibandingkan mahasiswa lainnya. Jika
diperhatikan dari nilai tes masuk, Mhs-81 memiliki nilai tes masuk yang
jauh lebih rendah dibandingkan mahasiswa lainnya. Dengan demikian
dapat diterima bahwa 9 orang mahasiswa tersebut merupakan outlier pada
semester pertama hingga semester empat karena nilai-nilainya yang jauh
lebih rendah dibandingkan mahasiswa lainnya.
2.
Kasus uji kedua menggunakan dataset mahasiswa Prodi Teknik
Informatika angkatan 2007 dan 2008 yang mengikuti jalur prestasi. Hasil
outlier yang diperoleh oleh sistem pada semester 1 hingga semester 4
yaitu 4 mahasiswa. Ada beberapa mahasiswa yang hanya muncul pada
satu semester saja tetapi ada pula yang muncul dalam dua semester seperti
Mhs-17. Kaprodi menyetujui hasil outlier yang diperoleh sistem. Menurut
Kaprodi, mahasiswa-mahasiswa tersebut memang memiliki IPS yang
yang jauh lebih rendah dibandingkan mahasiswa lainnya. Jadi, dapat
diterima bahwa 4 orang mahasiswa tersebut merupakan outlier pada
semester pertama hingga semester empat karena nilai-nilainya yang jauh
lebih rendah dibandingkan mahasiswa lainnya.
3.
Kasus uji ketiga menggunakan dataset mahasiswa Prodi Teknik
Informatika angkatan 2007 dan 2008 jalur prestasi dan jalur tes tertulis.
Hasil outlier yang diperoleh oleh sistem pada semester 1 hingga semester
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
149
4 yaitu 8 mahasiswa. Seluruh mahasiswa yang muncul sebagai outlier
pada kasus uji ketiga ini memang menjadi outlier seperti pada kasus uji
pertama dan kedua sehingga hasil outlier ini dianggap konsisten dengan
kasus uji sebelumnya dan disetujui oleh Kaprodi.
4.
Menurut Kaprodi, mahasiswa yang menjadi outlier dapat dikarenakan
nilainya terlalu rendah dan tidak memiliki cukup teman yang nilainya
sama atau mendekati nilai mahasiswa tersebut. Penentuan outlier tidak
bisa didasarkan pada perbandingan nilai tes masuk dan IPS seorang
mahasiswa dengan dirinya sendiri tetapi seluruh komponen nilai yang
dimiliki seorang mahasiswa harus dibandingkan dengan mahasiswa
lainnya. Pendapat lain yang dinyatakan oleh Kaprodi yaitu mahasiswa
yang selalu menjadi outlier dari semester 1 hingga semester 4 karena
nilainya terlalu rendah tidak dapat dijadikan satu-satunya dasar untuk
menilai mahasiswa tersebut sebagai mahasiswa yang nilainya sudah tidak
dapat ditingkatkan lagi. Sebagai contoh, pada kasus uji pertama, Mhs-81
menjadi outlier selama empat semester awal karena nilainya terlalu
rendah. Tetapi berdasarkan pengamatan Kaprodi terhadap data akademik
mahasiswa tersebut, IPS Mhs-81 justru mengalami peningkatan pada
semester-semester berikutnya.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
150
6.1.1.3 Pengujian Efek Perubahan Nilai Atribut Penambangan Data
Pengujian terhadap Sistem Pendeteksi Outlier Menggunakan Algoritma
Block-based Nested-Loop dapat dilakukan dengan mengubah nilai parameter M
dan D. Berikut adalah beberapa hasil deteksi outlier yang diperoleh dari eksekusi
data akademik mahasiswa Prodi Teknik Informatika angkatan 2007 dan 2008
semester 1 yang diterima melalui jalur tes tertulis dan jalur prestasi sejumlah 126
mahasiswa menggunakan sistem dengan nilai parameter M dan D yang diubahubah.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
151
Tabel 6.9 Tabel Jumlah Outlier Berdasarkan Hasil Deteksi Outlier pada
Data Mahasiswa Angkatan 2007 dan 2008 Jalur Tes Tertulis Semester 1
dengan Nilai M dan D yang Berubah-ubah (54 Mahasiswa)
M = 4 M=5 M = 6 M = 7 M = 8 M = 9
D=1
D=2
D=3
D=4
D=5
42
2
0
0
0
46
2
0
0
0
48
3
0
0
0
51
4
0
0
0
52
4
0
0
0
53
4
0
0
0
Gambar 6.1a Grafik Hasil Deteksi Outlier
pada Data Mahasiswa Angkatan 2007 dan 2008
Jalur Tes Tertulis Semester 1
dengan Nilai M=4 dan D Berubah-ubah
Gambar 6.1b Grafik Hasil Deteksi Outlier
pada Data Mahasiswa Angkatan 2007 dan 2008
Jalur Tes Tertulis Semester 1
dengan Nilai M=5 dan D Berubah-ubah
Gambar 6.2a Grafik Hasil Deteksi Outlier
pada Data Mahasiswa Angkatan 2007 dan 2008
Jalur Tes Tertulis Semester 1
dengan Nilai D=1 dan M Berubah-ubah
Gambar 6.2b Grafik Hasil Deteksi Outlier
pada Data Mahasiswa Angkatan 2007 dan 2008
Jalur Tes Tertulis Semester 1
dengan Nilai D=2 dan M Berubah-ubah
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
152
Tabel 6.10 Tabel Jumlah Outlier Berdasarkan Hasil Deteksi Outlier pada
Data Mahasiswa Angkatan 2007 dan 2008 Jalur Prestasi Semester 1
dengan Nilai M dan D yang Berubah-ubah (72 mahasiswa)
M = 4 M=5 M = 6 M = 7 M = 8 M = 9
D=1
D=2
D=3
D=4
D=5
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
Gambar 6.3a Grafik Hasil Deteksi Outlier
pada Data Mahasiswa Angkatan 2007 dan 2008
Jalur Prestasi Semester 1
dengan Nilai M=4 dan D Berubah-ubah
Gambar 6.3b Grafik Hasil Deteksi Outlier
pada Data Mahasiswa Angkatan 2007 dan 2008
Jalur Prestasi Semester 1
dengan Nilai M=5 dan D Berubah-ubah
Gambar 6.4a Grafik Hasil Deteksi Outlier
pada Data Mahasiswa Angkatan 2007 dan 2008
Jalur Prestasi Semester 1
dengan Nilai D=1 dan M Berubah-ubah
Gambar 6.4b Grafik Hasil Deteksi Outlier
pada Data Mahasiswa Angkatan 2007 dan 2008
Jalur Prestasi Semester 1
dengan Nilai D=2 dan M Berubah-ubah
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
153
Tabel 6.11 Tabel Jumlah Outlier Berdasarkan Hasil Deteksi Outlier pada
Data Mahasiswa Angkatan 2007 dan 2008 Jalur Tes dan Jalur Prestasi
dengan Nilai M dan D yang Berubah-ubah (126 Mahasiswa)
M = 4 M=5 M = 6 M = 7 M = 8 M = 9
D=1
D=2
D=3
D=4
D=5
1
0
0
0
0
2
0
0
0
0
2
0
0
0
0
2
0
0
0
0
2
0
0
0
0
2
0
0
0
0
Gambar 6.5a Grafik Hasil Deteksi Outlier
pada Data Mahasiswa Angkatan 2007 dan 2008
Semester 1
dengan Nilai M=4 dan D Berubah-ubah
Gambar 6.5b Grafik Hasil Deteksi Outlier
pada Data Mahasiswa Angkatan 2007 dan 2008
Semester 1
dengan Nilai M=5 dan D Berubah-ubah
Gambar 6.6a Grafik Hasil Deteksi Outlier
pada Data Mahasiswa Angkatan 2007 dan 2008
Semester 1
dengan Nilai D=1 dan M Berubah-ubah
Gambar 6.6b Grafik Hasil Deteksi Outlier
pada Data Mahasiswa Angkatan 2007 dan 2008
Semester 1
dengan Nilai D=2 dan M Berubah-ubah
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
154
6.1.1.3.1 Kesimpulan Pengujian Efek Perubahan Nilai Atribut
Penambangan Data
Berdasarkan beberapa hasil deteksi outlier di atas, dapat disimpulkan
beberapa hal sebagai berikut:
1.
Jika nilai M tetap dan nilai D bertambah, jumlah outlier akan tetap atau
berkurang. Hal ini disebabkan jangkauan nilai (D) yang digunakan
sebagai batas nilai sebuah kelompok bukan outlier semakin bertambah
sedangkan jumlah tetangga (M) yang diperlukan tetap sehingga
mengurangi kemunculan outlier. Kondisi ini dapat dilihat pada gambar
6.1 di atas.
2.
Jika nilai D tetap dan nilai M bertambah, jumlah outlier akan tetap atau
bertambah. Hal ini disebabkan jangkauan nilai (D) yang digunakan
sebagai batas nilai sebuah kelompok bukan outlier tetap sedangkan
jumlah tetangga (M) yang diperlukan bertambah sehingga menambah
kemunculan outlier. Kondisi ini dapat dilihat pada gambar 6.2 di atas.
3.
Pemilihan nilai M dan D mempengaruhi hasil deteksi outlier. Pemilihan
nilai M dan D yang tepat dapat menghasilkan keluaran berupa outlier
yang tepat juga. Jika pemilihan nilai M dan D tidak sesuai maka akan ada
kemungkinan data yang sebenarnya bukan outlier terbaca oleh algoritma
Block-based Nested-Loop sebagai outlier demikian juga sebaliknya.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
155
6.1.1.4 Pengujian Perbandingan Waktu Deteksi Outlier Berdasarkan Jumlah
Blok
Pada penelitian ini penulis menggunakan algoritma Block-based NestedLoop dalam mendeteksi outlier. Algoritma Block-based Nested-Loop memiliki
prinsip block-oriented. Data-data yang diolah menggunakan algoritma ini akan
dimasukkan ke dalam blok-blok tertentu. Blok-blok data selanjutnya akan
bergantian masuk dan keluar dari memori selama proses deteksi outlier
berlangsung.
Setiap komputer memiliki memori dengan kapasitas tertentu. Setiap kali
ada proses load data ke memori maka kapasitas memori yang kosong akan
berkurang. Semakin banyak data yang diproses ke dalam memori maka akan
semakin banyak ruang memori yang dipakai. Algoritma Block-based NestedLoop dikhususkan untuk deteksi outlier pada data dalam jumlah besar. Ketika
kapasitas memori yang kosong kurang dari ukuran data yang akan di-load ke
memori maka data dibagi ke dalam blok-blok data agar dapat secara bergantian
masuk ke dalam memori. Selama sebuah data berada dalam memori, akan
dilakukan proses deteksi outlier terhadap data tersebut. Jadi, sebuah data tidak
perlu masuk berkali-kali ke dalam memori untuk dihitung jaraknya dengan data
lain maupun untuk perhitungan jumlah tetangganya.
Pengujian ini dimaksudkan untuk melihat pengaruh penggunaan blokblok data terhadap waktu yang diperlukan oleh algoritma Block-based NestedLoop untuk melakukan deteksi outlier. Data yang digunakan adalah data
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
156
akademik mahasiswa Prodi Teknik Informatika angkatan 2007 dan 2008 jalur
prestasi dan jalur tes sejumlah 126 mahasiwa.
Total kapasitas memori saat pengujian ini dilakukan adalah sebesar
19.890.176 bytes. Sebelum algoritma ini dijalankan, kapasitas memori yang
kosong sebesar 12.928.176 bytes. Saat algoritma ini dijalankan, ruang memori
yang digunakan dari awal hingga akhir algoritma Block-based Nested-Loop
berjalan adalah sebesar 7.305.400 bytes. Berdasarkan data tersebut terlihat bahwa
kapasitas memori yang tersedia melebihi jumlah data yang akan diproses. Hal ini
mengakibatkan jumlah blok data yang terbentuk hanya satu karena seluruh data
dapat langsung masuk ke memori secara bersamaan tanpa perlu dipecah ke dalam
beberapa blok. Oleh sebab itu, pada pengujian ini jumlah blok dijadikan
konstanta yang bernilai 1 dan 2 agar dapat dilihat perbandingan lama deteksi
outlier pada data yang dipecah ke beberapa blok dan yang hanya menggunakan
satu blok. Setiap pengujian dilakukan dengan terlebih dahulu melakukan restart
pada komputer agar kapasitas memori kosong yang digunakan pada saat eksekusi
program tetap sama. Berikut ini adalah tabel perbandingan lama deteksi outlier :
Tabel 6.12 Tabel Perbandingan Lama Deteksi Outlier
Berdasarkan Jumlah Blok
pada Data Mahasiswa Angkatan 2007 dan 2008 Jalur Tes dan Jalur Prestasi
Pengujian
1
2
3
4
5
6
7
8
Jumlah Blok
1
0.042789002 detik
0.020603497 detik
0.020371910 detik
0.022191141 detik
0.020390796 detik
0.022181388 detik
0.020535434 detik
0.020651433 detik
2
0.019838321 detik
0.020215153 detik
0.044256818 detik
0.020106247 detik
0.053300593 detik
0.011608695 detik
0.020707078 detik
0.020180457 detik
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
9
10
11
12
13
14
15
16
17
18
19
20
0.041769129 detik
0.020422828 detik
0.031415547 detik
0.020981882 detik
0.045891224 detik
0.035943643 detik
0.035923278 detik
0.020498897 detik
0.053786389 detik
0.020850795 detik
0.020401679 detik
0.020346456 detik
157
0.020130156 detik
0.022138491 detik
0.020115168 detik
0.020242460 detik
0.042321115 detik
0.020183024 detik
0.020449623 detik
0.020199662 detik
0.020142371 detik
0.041829481 detik
0.045726185 detik
0.019651582 detik
6.1.1.4.1 Kesimpulan Pengujian Perbandingan Waktu Deteksi Outlier
Berdasarkan Jumlah Blok
Hasil pengujian di atas menunjukkan bahwa deteksi outlier yang
dilakukan dengan menggunakan 2 blok data menghasilkan waktu deteksi outlier
yang lebih cepat dibandingkan dengan yang hanya menggunakan 1 blok data.
Dari 20 kali pengujian, algoritma Block-based Nested-Loop yang dijalankan
dengan membagi data ke dalam 2 blok ternyata mampu menghasilkan waktu
deteksi outlier yang lebih cepat dalam 14 kali pengujian atau sebesar 70%. Hal
ini membuktikan bahwa penggunaan blok-blok data memiliki pengaruh dalam
mempercepat proses deteksi outlier. Data yang digunakan pada penelitian masih
tergolong sedikit untuk kapasitas memori yang tersedia pada komputer yang
digunakan sehingga perbandingan lama deteksi outlier tidak begitu berbeda
antara yang menggunakan 1 blok dan 2 blok. Jika data yang digunakan memiliki
jumlah yang lebih besar, perbandingan lama deteksi outlier antara yang
menggunakan blok data dengan yang tidak akan lebih terlihat dengan jelas.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
158
6.2 Kelebihan dan Kekurangan Sistem
Sistem yang dibangun ini memiliki kelebihan dan kekurangan. Berikut
adalah kelebihan dan kekurangan dari sistem:
6.2.1
1.
Kelebihan Sistem
Sistem dapat membaca input data yang berasal dari basis data (Oracle
atau MySQL) serta file dengan format .xls dan .csv
2.
Sistem dapat melakukan seleksi atribut atau kolom terhadap data yang
diinputkan oleh pengguna.
3.
Sistem dapat menyimpan hasil deteksi outlier ke dalam file dengan format
.txt dan .doc
6.2.2
1.
Kekurangan Sistem
Sistem tidak dapat membaca input data berupa file dengan format selain
.xls dan .csv
2.
Sistem tidak dapat melakukan seleksi baris terhadap data yang diinputkan
pengguna.
3.
Sistem tidak dapat menangani error terhadap input data berformat .csv
yang di dalamya terdapat data yang kosong atau data yang tidak berformat
angka.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
BAB 7
KESIMPULAN DAN SARAN
7.1
Kesimpulan
Kesimpulan yang diperoleh sebagai hasil penyelesaian tugas akhir ini
adalah:
1.
Sistem Pendeteksi Outlier Menggunakan Algoritma Block-based NestedLoop yang merupakan alat bantu yang digunakan untuk melakukan
deteksi outlier pada sekumpulan data numerik telah berhasil dibangun.
2.
Algoritma Block-based Nested-Loop terbukti dapat mendeteksi outlier
dalam dataset.
3.
Pemilihan nilai atribut M dan D sangat berpengaruh terhadap hasil deteksi
outlier.
4.
Penggunaan blok-blok data dapat mempercepat proses deteksi outlier.
7.2
Saran
Berdasarkan hasil analisis pada tugas akhir ini, penulis memberikan saran
untuk perbaikan dan pengembangan program lebih lanjut antara lain:
1.
Program yang dibangun ini belum bisa menerima masukan selain file
berformat .xls, .csv dan tabel dari basis data sehingga format dataset tidak
bebas. Sistem ini bisa dilengkapi dengan tambahan pembaca data dari
format lain contohnya seperti .doc
159
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
2.
160
Program yang dibangun ini belum bisa menangani data yang kosong yang
berasal dari masukan data berupa file .csv. Sistem ini dapat
disempurnakan dengan penanganan data kosong atau missing values pada
data dengan format file .csv.
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
DAFTAR PUSTAKA
Baradwaj, Brijesh Kumar & Pal, Saurabh. 2011. Mining Educational Data to
Analyze Student‟s Performance Vol. 2 No 6. Hal 63-69.
Fayyad, Usama et al. 1996. From Data Mining to Knowledge Discovery in
Databases Vol. 17 No. 3. hal 37-54.
Ghoting, Amol et al. 2006. Fast Mining of Distance-Based Outliers in HighDimensional Datasets. Hal 609-613.
Han, Jiawei & Kamber, Micheline. 2006. Data Mining: Concepts and Techniques
2nd ed. San Francisco, CA: Morgan Kaufmann Publishers.
Hawakins, Douglas M. 1980. Identification of Outliers. London: Chapman and
Hall.
Khannedy,
Eko.
“Menampilkan
JCheckBox
Di
JTable”.
http://eecchhoo.wordpress.com/2010/07/15/menampilkan-jcheckbox-dijtable/. (diakses tanggal 10 Mei 2013)
Knorr, Edwin M & Ng., Raymond T. Algorithms for Mining Distance-Based
Outliers in Large Datasets. Hal 392-403
MadProgrammer. “How to Adjust JTable Columns to Fit The Longest Content in
Column Cells”. http://stackoverflow.com/questions/13013989/how-to-adjustjtable-columns-to-fit-the-longest-content-in-column-cells. (diakses tanggal 10
Mei 2013)
Rosa, Paulina Heruningsih Prima, Ridowati Gunawan, Sri Hartati Wijono. The
Development of Academic Data Warehouse as a Basis for Decision Making :
Case Study at XYZ University. Proceeding of International Conference on
Enterprise Information Systems and Applications, Universitas Islam
Indonesia, Yogyakarta, Indonesia, 2013.
Tair, Mohammed M. Abu & El-Halees, Alaa M. 2012. Mining Educational Data
to Improve Students‟ Performance: A Case Study Vol. 2 No. 2. Hal 140-146
161
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
LAMPIRAN
Lampiran 1 : Tabel Ringkasan Use Case
Tabel Deskripsi Use Case
Nomor
Use Case
NL-001
Nama Use Case
Deskripsi
Aktor
Input data file .xls,
.csv atau tabel dari
basis data
Use case ini menggambarkan proses
input data, dalam bentuk file .xls,
.csv atau .tabel dari basis data yang
akan digunakan untuk proses deteksi
outlier
Use case ini menggambarkan proses
pencarian outlier dalam data yang
telah diinputkan
Use case ini menggambarkan proses
simpan hasil pencarian outlier ke
dalam file .txt atau .doc
Use case ini menggambarkan proses
seleksi atribut dari data yang
diinputkan, sehingga atribut yang
tidak diperlukan dapat dihapus
Use case ini menggambarkan proses
distribusi atribut serta melihat grafik
distribusi atribut dari data yang
diinputkan
Pengguna
NL-002
Pencarian outlier
NL-003
Simpan hasil
pencarian outlier
NL-004
Seleksi atribut
NL-005
Distribusi atribut
Pengguna
Pengguna
Pengguna
Pengguna
Lampiran 2 : Skenario Use Case
Nama Use-case
ID Use-case
Prioritas
Pelaku Bisnis Utama
Deskripsi
Kondisi Awal
Urutan Aktivitas
Normal
Input data file .xls, .csv atau tabel dari basis data
NL-001
Tinggi
Pengguna
Use case ini menggambarkan proses input data
Pengguna membuka halaman utama
Aksi Aktor
Respon Sistem
Step 1: Menekan tombol
Pilih File
Step 2: Menampilkan
JFileChooser
Step 3 : Memilih data
yang akan diinputkan
162
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
163
dalam bentuk file .xls
atau .csv
Aktivitas Alternatif
Kondisi Akhir
Nama Use-case
ID Use-case
Prioritas
Pelaku Bisnis Utama
Deskripsi
Kondisi Awal
Urutan Aktivitas
Normal
Step 4 : Membaca file
yang dipilihh lalu
menampilkan data pada
tabel data, menampilkan
jumlah data dan
menampilkan nama
atribut pada tabel atribut.
Alt-Step 1: Jika pengguna ingin menginputkan data
berupa tabel dalam basis data, maka pengguna
menekan tombol Pilih DB.
Alt-Step 3 : Pengguna melakukan login ke basis data
dan memilih tabel yang berisi data yang akan
diinputkan.
Data berhasil dibaca lalu
ditampilkan pada tabel
data di halaman utama
beserta jumlah data dan
daftar nama atribut
dalam data.
Pencarian Outlier
NL-002
Tinggi
Pengguna
Use case ini menggambarkan proses pencarian outlier
Pengguna telah membuka file yang berisi data yang
akan diolah
Aksi Aktor
Respon Sistem
Step 1 : Menekan tombol
Submit
Step 3: Memasukkan
nilai parameter M dan D
lalu menekan tombol
Proses
Step 2: Menampilkan
halaman utama bagian
deteksi outlier dan
menampilkan data pada
tabel berserta jumlah
datanya.
Step 4 : Menampilkan
hasil pencarian outlier
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
164
Aktivitas Alternatif
Kondisi Akhir
Hasil deteksi outlier dari
data pengujian berhasil
ditampilkan
Nama Use-case
ID Use-case
Prioritas
Pelaku Bisnis Utama
Deskripsi
Simpan Hasil Pencarian Outlier
NL-003
Normal
Pengguna
Use case ini menggambarkan proses menyimpan hasil
pencarian outlier
Pengguna telah memperoleh hasil pencarian outlier
Aksi Aktor
Respon Sistem
Kondisi Awal
Urutan Aktivitas
Normal
Step 1 : Menekan tombol
Simpan
Step 3 : Memasukkan
nama file yang akan
disimpan, memilih
format file lalu menekan
tombol Save
Step 2 : Menampilkan
dialog untuk menyimpan
file
Step 4 : Menyimpan file
hasil pencarian outlier
Aktivitas Alternatif
Kondisi Akhir
File hasil pencarian
outlier berhasil disimpan
Nama Use-case
ID Use-case
Prioritas
Pelaku Bisnis Utama
Deskripsi
Seleksi Atribut
NL-004
Normal
Pengguna
Use case ini menggambarkan proses menyeleksi
atribut dari data yang diinputkan
Pengguna telah membuka file yang berisi data yang
akan diolah
Aksi Aktor
Respon Sistem
Kondisi Awal
Urutan Aktivitas
Normal
Step 1 : Memilih nama
atribut yang akan
dihapus lalu menekan
tombol hapus
Step 2 : Menghapus
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
165
atribut yang telah dipilh
dari tabel data
Aktivitas Alternatif
Kondisi Akhir
Atribut yang dipilih
berhasil dihapus
Nama Use-case
ID Use-case
Prioritas
Pelaku Bisnis Utama
Deskripsi
Distribusi Atribut
NL-005
Normal
Pengguna
Use case ini menggambarkan proses distribusi atribut
dari data
Pengguna telah membuka file yang berisi data yang
akan diolah
Aksi Aktor
Respon Sistem
Kondisi Awal
Urutan Aktivitas
Normal
Step 1 : Menekan tombol
Distribusi Atribut
Step 2 : Menampilkan
dialog distribusi atribut
Step 3 : Memilih atribut
dari daftar atribut
Aktivitas Alternatif
Kondisi Akhir
Step 4 : Menampilkan
detail isi atribut
Alt-Step 3 : Menekan tombol Lihat Grafik untuk
melihat grafik distribusi atribut
Distribusi atribut beserta
grafik berhasil
ditampilkan
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
Lampiran 3 : Diagram Aktivitas
1. Input data file .xls, .csv atau tabel dari basis data.
Pengguna
166
Sistem
Menekan tombol untuk
input data
file .xls atau .csv
tabel dari basis data
Menampilkan
JFileChooser
Menampilkan dialog
login ke basis data
Memasukkan username,
password dan/atau nama
basis data lalu memilih
nama tabel
Memilih file .xls atau .csv
Membaca data yang
dipilih lalu
menampilkannya pada
tabel data beserta
jumlahnya dan daftar
nama atribut
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
2. Pencarian outlier
Pengguna
Menekan tombol Submit
167
Sistem
Menampilkan halaman
utama bagian deteksi
outlier dan menampilkan
data pada tabel berserta
jumlah datanya.
Memasukkan nilai
parameter D dan M lalu
menekan tombol Proses
Menampilkan hasil deteksi
outlier
3. Simpan file hasil pencarian outlier
Pengguna
Menekan tombol Simpan
Sistem
Menampilkan dialog untuk
menyimpan file
Memasukkan nama file
yang akan disimpan,
memilih format file lalu
menekan tombol Save
Menyimpan file hasil
pencarian outlier
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
4. Seleksi Atribut
Pengguna
Memilih nama atribut lalu
menekan tombol Hapus
5. Distribusi Atribut
Pengguna
Menekan tombol
Distribusi Atribut
Memilih nama atribut
dari daftar atribut
Menekan tombol Lihat Grafik
168
Sistem
Menghapus atribut yang telah
dipilih dari tabel data
Sistem
Menampilkan dialog distribusi
atribut
Menampilkan
detail isi atribut
Menampilkan
grafik distribusi atribut
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
169
Lampiran 4 : Tabel Diagram Kelas Analisis
Tabel Kelas Analisis Input Data File .xls dan .csv
No Nama Kelas
1
Tipe
Deskripsi
HalamanUtama Boundary Kelas ini menyediakan halaman untuk
menginputkan data file .xls atau .csv
Tabel Kelas Analisis Input Data Tabel dari Basis Data
No Nama Kelas
Tipe
Deskripsi
1
Boundary
Kelas ini menyediakan halaman untuk
HalamanUtama
menginputkan tabel dari basis data
2
Halaman Pilih DB
Boundary
Kelas ini menyediakan tampilan untuk
memilih basis data dan memasukkan
data untuk login ke basis data tersebut
3
Database
Controller Kelas ini befungsi untuk mengirim data
login ke basis data tertentu ke kelas
DatabaseConnection
4
DatabaseConnection Entity
Kelas ini berfungsi untuk membangun
koneksi ke basis data
5
Halaman Pilih
Boundary
Tabel
Kelas ini berfungsi untuk menyediakan
halaman untuk memilih tabel yang
berasal dari basis data yang telah
terhubung dengan sistem
Tabel Kelas Analisis Pencarian Outlier
No Nama Kelas
Tipe
Deskripsi
1
Boundary
Kelas ini menyediakan halaman deteksi
HalamanUtama
outlier
2
Graph
Entity
Kelas ini berfungsi untuk menjalankan
algoritma Block-based Nested-Loop
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
3
Vertex
Entity
170
Kelas ini berfungsi untuk menyimpan
informasi setiap obyek vertex yang
terbentuk
4
Block
Entity
Kelas ini berfungsi untuk menyimpan
informasi setiap obyek block yang
terbentuk
5
GraphController Controller Kelas ini berfungsi untuk menghubungkan
kelas HalamanUtama dan Graph
Tabel Kelas Analisis Simpan Hasil Pencarian Outlier
No Nama Kelas
1
Tipe
Deskripsi
HalamanUtama Boundary Kelas ini menyediakan halaman deteksi
outlier yang di dalamnya terdapat tombol
untuk menyimpan hasil deteksi outlier.
Tabel Kelas Analisis Seleksi Atribut
No Nama Kelas
Tipe
Deskripsi
1
Boundary
Kelas ini menyediakan tampilan
HalamanUtama
untuk melakukan seleksi atribut
2
SeleksiAtribut
Entity
Kelas ini menyediakan methodmethod untuk mengelola informasi
setiap atribut
3
CheckBoxTableModel Controller Kelas ini menyediakan methodmethod untuk mengelola fungsi
seleksi atau hapus atribut
Tabel Kelas Analisis Distribusi Atribut
No Nama Kelas
Tipe
1
Boundary Kelas ini menyediakan tampilan
HalamanUtama
Deskripsi
yang di dalamnya terdapat tombol
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
171
untuk masuk ke dialog distribusi
atribut
2
HalamanDistribusiAtribut Boundary Kelas ini menyediakan tampilan
untuk melihat detail isi setiap
atribut serta grafik distrbusi atribut
3.
BarChart
Entity
Kelas ini berisi method untuk
membentuk sebuah grafik
distribusi atribut
Lampiran 5 : Diagram Sequence
<<boundary>>
HalamanUtama
Menekan tombol Pilih File
Pengguna
pilihFile()
Pengguna melihat data yang dipilih
Menekan tombol Submit
Gambar Diagram Sequence Input Data File xls atau .csv
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
172
Gambar Diagram Sequence Input Data Tabel dari Database
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
Gambar Diagram Sequence Pencarian Outlier
<<boundary>>
HalamanUtama
Menekan tombol Simpan
Pengguna
simpanHasil()
Menampilkan
konfirmasi file
berhasil disimpan
Gambar Diagram Sequence Simpan Hasil Pencarian Outlier
173
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
Gambar Diagram Sequence Distribusi Atribut
174
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
Gambar Diagram Sequence Seleksi Atribut
175
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
176
Lampiran 6 : Listing program
a. Kelas HalamanAwal
public class HalamanAwal extends javax.swing.JFrame {
/** Creates new form HalamanAwal */
public HalamanAwal() {
initComponents();
}
private void masukButtonActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_masukButtonActionPerformed
// TODO add your handling code here:
HalamanUtama utama = new HalamanUtama();
utama.setVisible(true);
this.dispose();
}//GEN-LAST:event_masukButtonActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLabel footer1Label;
private javax.swing.JLabel footer2Label;
private javax.swing.JDesktopPane halamanAwalDesktopPane;
private javax.swing.JPanel halamanAwalPanel;
private javax.swing.JLabel icon;
private javax.swing.JButton masukButton;
private javax.swing.JLabel titleLabel;
// End of variables declaration//GEN-END:variables
}
b. Kelas HalamanBantuan
public class HalamanBantuan extends javax.swing.JFrame {
/** Creates new form HalamanBantuan */
public HalamanBantuan() {
initComponents();
}
private void keluarButtonActionPerformed(java.awt.event.ActionEvent evt) {//GENFIRST:event_keluarButtonActionPerformed
// TODO add your handling code here:
HalamanBantuan.this.dispose();
}
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
private javax.swing.JDesktopPane jDesktopPane1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextArea jTextArea1;
private javax.swing.JButton keluarButton;
// End of variables declaration//GEN-END:variables
}
c. Kelas HalamanMissingValues
public class HalamanMissingValues extends javax.swing.JFrame {
DefaultTableModel model;
public HalamanMissingValues(DefaultTableModel tabel) {
initComponents();
model=tabel;
}
private void yaButtonActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_yaButtonActionPerformed
// TODO add your handling code here:
String pola = "[0-9.]*";
String pola2 = "[.]*";
for (int i = 0; i < model.getRowCount(); i++) {
for (int j = 1; j < model.getColumnCount(); j++) {
if (model.getValueAt(i, j)==null ||
!model.getValueAt(i, j).toString().matches(pola)
|| model.getValueAt(i, j).toString().matches(pola2)) {
model.setValueAt(0, i, j);
}
}
}
this.dispose();
}
private void tidakButtonActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_tidakButtonActionPerformed
// TODO add your handling code here:
this.dispose();
}
private javax.swing.JDesktopPane jDesktopPane1;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextArea missingValueTArea;
private javax.swing.JButton tidakButton;
private javax.swing.JButton yaButton;
// End of variables declaration//GEN-END:variables}
177
PLAGIAT
PLAGIATMERUPAKAN
MERUPAKANTINDAKAN
TINDAKANTIDAK
TIDAKTERPUJI
TERPUJI
d. Kelas HalamanKonfirmasiKeluar
public class HalamanKonfirmasiKeluar extends javax.swing.JFrame {
/** Creates new form HalamanKonfirmasiKeluar */
public HalamanKonfirmasiKeluar() {
initComponents();
}
private void yaButtonActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_yaButtonActionPerformed
// TODO add your handling code here:
System.exit(0);
}
private void tidakButtonActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_tidakButtonActionPerformed
// TODO add your handling code here:
this.hide();
}
private javax.swing.JDesktopPane jDesktopPane1;
private javax.swing.JPanel jPanel1;
private javax.swing.JLabel konfirmasiLabel;
private javax.swing.JButton tidakButton;
private javax.swing.JButton yaButton;
// End of variables declaration//GEN-END:variables
}
178
Download