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 blok, ada kemungkinan terdapat sisa vertex karena jumlah data tidak habis dibagi
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 1
2 3
4 5
6 7
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
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
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
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
pencarian outlier selesai. Lalu setiap vertex yang memiliki status non outlier = false
akan ditampilkan sebagai outlier.
4.4 Diagram Use Case