Deteksi Outlier menggunakan algoritma Block Based Nested Loop studi kasus data akademik mahasiswa Program Studi Teknik Informatika Universitas Sanata Dharma

(1)

i

DETEKSI OUTLIER

MENGGUNAKAN ALGORITMA BLOCK-BASEDNESTED-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


(2)

ii

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


(3)

(4)

(5)

v

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


(6)

(7)

vii 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 bla ckbox, 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.


(8)

viii 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.


(9)

(10)

x

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


(11)

xi

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


(12)

xii 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


(13)

xiii

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


(14)

xiv

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


(15)

xv

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


(16)

xvi

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


(17)

xvii

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


(18)

xviii

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


(19)

xix

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 Nested-Loop……… 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


(20)

xx

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


(21)

xxi

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


(22)

xxii

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 1dengan Nilai M=4 dan D Berubah-ubah. 153 Gambar 6.5b Grafik Hasil Deteksi Outlier pada Data Mahasiswa Angkatan 2007

dan 2008 Semester 1dengan 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


(23)

1 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

e-learning 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


(24)

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


(25)

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


(26)

1.2 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

Block-based Nested-Loop.

2. Menganalisis hasil deteksi outlier yang dihasilkan oleh algoritma

Block-based Nested-Loop.

3. Menganalisis waktu yang diperlukan untuk melakukan deteksi outlier

berdasarkan jumlah blok data yang digunakan oleh algoritma Block-based


(27)

1.4 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


(28)

1.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

Nested-Loop

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


(29)

1.6.4 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


(30)

1.6.7 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


(31)

9 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

masing-masing 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


(32)

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


(33)

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

pihak-pihak 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


(34)

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


(35)

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


(36)

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


(37)

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 fractionp merupakan persentase jumlah obyek minimum dalam T yang harus ada di luar D-neighbourhood dari sebuah

outlier. Diasumsikan M merupakan jumlah obyek maksimum dalam

D-neighbourhood 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 datasetT 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

D-neighbourhood 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


(38)

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,

nested-loop design.

Diasumsikan total free memory dari komputer yang digunakan


(39)

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 countidengan 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:


(40)

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 arra y, jika dist(ti ,tj) ≤

D:

Tambahkan nilai countidengan 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


(41)

19 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


(42)

3.2 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 tersebut seluruhnya berada pada tabel fact_lengkap2.


(43)

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 :

di mana v = nilai awal, minA = nilai minimum atribut A sebelum normalisasi,

maxA = nilai maksimum atribut A sebelum normalisasi, new_maxA = nilai


(44)

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’ = 8.00 − 0

10 −0 4−0 + 0 = 3.20

3.2.4 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 :


(45)

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


(46)

3.2.6 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


(47)

Gambar 3.2 Data mentah untuk implementasi algoritma Block-based Nested-Loop

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


(48)

3. 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


(49)

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


(50)

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.


(51)

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 arra y) 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)


(52)

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 arra y) 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,


(53)

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


(54)

Gambar 3.9 Hasil akhir pengecekan blok 1 (first array) dan blok 4 (second array)

Hasil akhir pengecekan antara blok 1 (first arra y) 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


(55)

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


(56)

34 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


(57)

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

Nested-Loop ini dapat menerima masukan data dari pengguna berupa file berformat .xls


(58)

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

Nested-Loop 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


(59)

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. Nama

Atribut

Penjelasan Nilai

1. Final Atribut ini menyimpan nilai final mahasiwa saat seleksi penerimaan mahasiswa baru

0 – 100 2. Nil11 Atribut ini menyimpan hasil tes penalaran

mekanik

0 – 10 3. Nil12 Atribut ini menyimpan hasil tes penalaran

verbal

0 – 10 4. Nil13 Atribut ini menyimpan hasil tes hubungan

ruang

0 – 10 5. Nil14 Atribut ini menyimpan hasil tes Bahasa Inggris 0 – 10 6. Nil15 Atribut ini menyimpan hasil tes kemampuan

numerik

0 – 10 7. Ips1 Atribut ini menyimpan nilai IPS mahasiswa

semester 1

0 – 4 8. Ips2 Atribut ini menyimpan nilai IPS mahasiswa

semester 2

0 – 4 9. Ips3 Atribut ini menyimpan nilai IPS mahasiswa

semester 3

0 – 4 10. Ips4 Atribut ini menyimpan nilai IPS mahasiswa

semester 4

0 - 4

4.2.2 Proses Sistem

Sistem Pendeteksi Outlier Menggunakan Algoritma Block-based

Nested-Loop ini memiliki beberapa tahapan proses. Pertama, pengguna memasukkan

data yang akan diolah dalam bentuk file berformat .xls atau .csv. Pengguna juga


(60)

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


(61)

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 :

Data dari basis data Data tipe .csv

Start

Data tipe .xls

Proses seleksi atribut

Proses distribusi atribut Seleksi

atribut?

Distribusi atribut?

Masukkan M dan D

Proses deteksi outlier

Tampilkan outlier

End

Ya

Tidak

Ya


(62)

a. Data yang dipilih dalam bentuk tabel data, jumlah data

b. Daftar nama atribut

2. Proses deteksi outlier menampilkan :

a. Outlier beserta daftar nilai untuk setiap atribut

b. Jumlah data

c. Jumlah outlier

d. Lama deteksi outlier

4.3 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


(63)

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.

Nama Atribut 1 Atribut 2 Atribut 3 A . . . . . . . . . . . . B . . . . . . . . . . . . C . . . . . . . . . . . . D . . . . . . . . . . . . E . . . . . . . . . . . . F . . . . . . . . . . . . G . . . . . . . . . . . . H . . . . . . . . . . . .

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

Buat Graph (8) Input data sejumlah 8 baris dengan 3 atribut

- 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 kosong sebanyak 8 buah


(64)

A

Vertex[0] =

Label „A‟

List nilai

StatusUnmarked = true

StatusNonOutlier

=false index

. . . . . . . . .

H

Vertex[7] =

Label „H‟

List nilai

StatusUnmarked = true

StatusNonOutlier

=false Insert Vertex


(65)

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

E F G H Blok 1

Blok 2

Blok 3

Insert edge dan pencarian outlier

First Array Second Array

Blok 1

Blok 2 Blok 1

Blok 1 Blok 3 dan

dan

Status first array blok 1 harus false baru dimasukkan ke First Array

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


(66)

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 Status first array blok 1 = true

First Array Second Array

Blok 3

Blok 1 Blok 3

Blok 3 Blok 2 dan

dan

Status first array blok 3 harus false baru dimasukkan ke First Array

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

Status first array blok 2 = true First Array Second Array

Blok 2

Blok 3 Blok 2

Blok 2 Blok 1 dan

dan

Status first array blok 2 harus false baru dimasukkan ke First Array

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


(67)

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


(68)

4.5 Perancangan Sistem 4.5.1 Diagram Konteks

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.

Pengguna Sistem Pendeteksi Outlier

Menggunakan Algoritma Block-based Nested-Loop Data .xls, data .csv, tabel

dalam basis data, M, D Outlier, jumlah outlier, jumlah data,


(69)

4.5.3 Diagram Kelas Analisis


(70)

Detail tabel diagram kelas analisisdapat dilihat pada bagian lampiran

dalam tugas akhir ini pada lampiran 4.

4.5.4 Diagram Sequence

Sistem Pendeteksi Outlier Menggunakan Algoritma Block-based

Nested-Loop 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.


(71)

4.5.3 Diagram Kelas Desain


(72)

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 : JTextField -atributDLabel : JLabel -atributMField : JTextField - atributMLabel : JLabel -bantuanButton : JButton -buttonPanel : JPanel -checkAllButton : JButton -deteksiOutlierTabel : JTable -distAtributButton : JButton -hapusAtributButton : JButton -hapusAtributLabel : JLabel -hapusAtributTable : JTable -hasilOutlierTextArea : JTextArea -jTabbedPane1 : JTabbedPane -jumDataField : JTextField -jumDataLabel : JLabel -jumlahDataField : JTextField -jumlahDataLabel : JLabel -keluarButton : JButton -namaAlgoLabel : JLabel -panelDeteksiOutlier : JPanel -panelPreprocess : JPanel -pathField : JTextField -pilihDBButton : JButton -pilihFileButton : JButton -preprocessTabel : JTable -prosesButton : JButton -simpanButton : JButton -submitDataButton : JButton

-titleLabel : JLabel

-titlePanel : JPanel

-uncheckAllButton : JButton


(73)

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


(1)

Gambar Diagram Sequence Pencarian Outlier

Pengguna

<<boundary>> HalamanUtama

Menekan tombol Simpan

simpanHasil() Menampilkan

konfirmasi file berhasil disimpan


(2)

(3)

(4)

Lampiran 6 : Listing program

a. Kelas HalamanAwal

b. Kelas HalamanBantuan

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 }

public class HalamanBantuan extends javax.swing.JFrame { /** Creates new form HalamanBantuan */

public HalamanBantuan() { initComponents(); }

private void keluarButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_keluarButtonActionPerformed

// TODO add your handling code here: HalamanBantuan.this.dispose(); }


(5)

c. Kelas HalamanMissingValues

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 }

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;


(6)

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 }


Dokumen yang terkait

Deteksi outlier menggunakan Algoritma Local Correlation Integral (LOCI) : studi kasus data akademik mahasiswa Teknik Informatika Universitas Sanata Dharma.

0 0 258

Deteksi outlier menggunakan Algoritma Local Outlier Probability : studi kasus data akademik mahasiswa Program Studi Teknik Informatika Universitas Sanata Dharma.

0 5 265

Deteksi outlier menggunakan Algoritma Connectivity Based Outlier Factor : studi kasus data akademik mahasiswa Teknik Informatika Universitas Sanata Dharma.

0 4 252

Deteksi Outlier menggunakan algoritma Block-Based Nested-Loop : studi kasus data akademik mahasiswa Program Studi Teknik Informatika Universitas Sanata Dharma.

0 2 202

Deteksi Outlier menggunakan algoritma Naive Nested Loop : studi kasus data akademik mahasiswa Program Studi Teknik Informatika, Universitas Sanata Dharma, Yogyakarta.

2 3 236

Deteksi outlier menggunakan algoritma Block-based Nested Loop (studi kasus: data akademik mahasiswa prodi PS Universitas XYZ).

1 5 6

Deteksi outlier menggunakan algoritma Naive Nested Loop (studi kasus : data akademik mahasiswa program studi PS Universitas XYZ).

0 0 4

Deteksi outlier menggunakan Algoritma Connectivity Based Outlier Factor studi kasus data akademik mahasiswa Teknik Informatika Universitas Sanata Dharma

1 8 250

Deteksi outlier menggunakan Algoritma Local Outlier Probability studi kasus data akademik mahasiswa Program Studi Teknik Informatika Universitas Sanata Dharma

1 9 263

Deteksi Outlier menggunakan algoritma Naive Nested Loop : studi kasus data akademik mahasiswa Program Studi Teknik Informatika, Universitas Sanata Dharma, Yogyakarta - USD Repository

0 0 234