Dynamic data mining for highly intercorrelated feature selection with Graphic Processing Unit Computing (GPU)

SELEKSI FITUR DINAMIS UNTUK PASANGAN ATRIBUT
BERKORELASI TINGGI MENGGUNAKAN KOMPUTASI
PARALEL BERBASIS GRAPHICS PROCESSING UNIT
(GPU)

ASTRIED SILVANIE

SEKOLAH PASCASARJANA
INSTITUT PERTANIAN BOGOR
BOGOR
2013

PERNYATAAN MENGENAI TESIS DAN
SUMBER INFORMASI SERTA PELIMPAHAN HAK
CIPTA
Dengan ini saya menyatakan bahwa tesis berjudul Seleksi Fitur Dinamis
untuk Pasangan Atribut Berkorelasi Tinggi menggunakan Komputasi
Paralel Berbasis Graphics Processing Unit (GPU) adalah benar karya saya
dengan arahan dari komisi pembimbing dan belum diajukan dalam bentuk
apa pun kepada perguruan tinggi mana pun. Sumber informasi yang berasal
atau dikutip dari karya yang diterbitkan maupun tidak diterbitkan dari

penulis lain telah disebutkan dalam teks dan dicantumkan dalam Daftar
Pustaka di bagian akhir tesis ini.
Dengan ini saya melimpahkan hak cipta dari karya tulis saya kepada
Institut Pertanian Bogor.
Bogor, November 2013

Astried Silvanie
NIM G651110351

RINGKASAN
ASTRIED SILVANIE. Seleksi Fitur Dinamis
untuk Pasangan Atribut
Berkorelasi Tinggi menggunakan Komputasi Paralel Berbasis Graphic Processing
Unit (GPU). Dibimbing oleh TAUFIK DJATNA dan HERU SUKOCO.
Seleksi fitur dengan fitur berkorelasi tinggi di dunia nyata harus dilakukan
pada data dinamis. Hal ini karena penyisipan, penghapusan transaksi dan
memperbarui terjadi terus menerus pada basis data. Transaksi ini membuat
dimensi data menjadi sangat besar dalam jumlah record dan sejumlah fitur.
Pertanyaannya adalah bagaimana kita melakukan seleksi fitur pada data yang
sangat besar dan terus berubah ini. Masalah ini harus diselesaikan dan salah satu

metode yang umum adalah untuk melakukan sampling dari basis data.
Dalam penelitian ini, metode random sampling digunakan untuk
mengekstraksi sinopsis keseluruhan data dalam basis data. Algoritma reservoir
digunakan untuk menginisialisasi sampel. Jenis sampel adalah backing sample
terdiri atas identitas, nilai prioritas dan time stamp. Ketika ada perubahan dalam
basis data, data lama dengan prioritas terendah dalam sampel akan diganti dengan
yang baru. Sampel sebagai representasi dari basis data dipertahankan memiliki
distribusi kelas yang sama dengan basis data menggunakan kullback leibler
divergence. Semua teknik dan algoritma digabungkan dan diimplementasikan
dalam bahasa SQL menggunakan MySQL 5.5. Sebagai hasilnya, proses
pengambilan sampel mengambil sejumlah kecil baru data sebagai representasi dari
database dengan distribusi kelas yang sama dengan basis data.
Proses sampling mengurangi dimensi dalam jumlah record dan diperlukan
metode lain untuk mempercepat seleksi fitur pada jumlah fitur yang besar. Dalam
penelitian ini, komputasi GPU paralel digunakan untuk mempercepat seleski fitur
yang memiliki dimensi besar. Algoritma seleksi fitur akan dibagi menjadi dua sub
masalah. Masalah ini adalah diskritasi dan komputasi geometri x-monotone.
Algoritma paralel diterapkan untuk masing-masing sub-masalah sejauh tidak ada
dependensi dan rekursif. Algoritma ditulis ke dalam program dengan bahasa C
CUDA. Program dibagi menjadi dua fungsi kernel yaitu kernel diskritasi dan

kernel x-monotone.
Uji coba dilakukan pada kumpulan data dengan tiga distribusi yaitu
seimbang, miring negatif dan positif miring. Percepatan rata-rata yang paralel
untuk satu pasang fitur adalah 1.5 kali untuk diskritasi dan 1.87 kali untuk xmonotone daripada sekuensial. Percepatan rata-rata yang paralel dapat mencapai
45, 190, 435, 780, 1225, 1770, 2415, 3160,4005, 4950 sepasang fitur adalah 8.2
kali daripada sekuensial. Akurasi diukur untuk setiap fungsi kernel dalam program
CUDA. Kernel diskritasi memiliki akurasi 81.76% dan kernel x-monoton
memiliki akurasi 85%. Seleksi fitur untuk 4950 pasangan dengan distribusi
seimbang membutuhkan 0.85 detik. Perhitungan yang sama pada negatif miring
dan miring positif adalah 1.66 dan 1.84 detik. Fakta-fakta ini menunjukkan
perhitungan pada data dengan distribusi miring membutuhkan durasi yang lebih
lama dari distribusi yang seimbang.
Kata kunci: sampel acak, kullback liebler divergence, general purpose
computing on graphics processing unit.

SUMMARY
ASTRIED SILVANIE. Dynamic Data mining for Highly Intercorrelated Feature
Selection with Graphic Processing Unit Computing (GPU). Supervised by
TAUFIK DJATNA and HERU SUKOCO.
Feature selection with correlated features in the real world should be

performed on dynamic data. This is due to insertion, deletion and updating
transactions occur continuously on the database. This transaction makes the
dimension of data becomes very large in number of records and number of
features. The question is how we do feature selection on very large data and is
constantly changing. This problem should be solved and one common method is
to perform the sampling on database.
In this research, random sampling method is used to extract the overall
synopsis of the data in the database. The reservoir algorithm used to initialize the
sample. Type of sample is backing sample composed of identities, priorities and
time stamp. When there is a change in the database, the old data in the sample
with the lowest priority will be replaced with a new one. Sample as a
representation of the database has maintained the same class distribution using the
kullback leibler divergence. All the techniques and algorithms are incorporated
and implemented in the SQL language using MySQL 5.5. As a result, the
sampling process of taking a small amount of new data as a representation of the
database with the same class distribution database.
Sampling process reduces the dimension of the required number of records.
We need other methods to speed up the feature selection on very large number of
features. In this research, parallel GPU computing is used to speed up feature
selection that have large dimensions. Feature selection algorithm is divided into

two sub problems. This problem is discreetization and computational geometry xmonotone. Parallel algorithm is applied to each sub problem as long as no
recursiveness and dependencies. The algorithm is written into the program with
the CUDA C language. The program is divided into two, which are discreetization
kernel function and x-monotone kernel function.
Tests performed on a data set with three distributions, which are balanced,
negatively skewed and positively skewed. Average acceleration doing with
parallel for one pair feature is 1.5 times to 1.87 times for discreetization and xmonotone rather than sequential. Average acceleration parallel for 45, 190, 435,
780, 1225, 1770, 2415, 3160, 4005, 4950 number of features pairs is 8.2 times
faster than sequential. Accuracy was measured for each kernel function in CUDA
programs. Discreetization kernel has accuracy of 81.76 % and an x-monotone
kernel has accuracy of 85 %. Feature selection for 4950 pairs with a balanced
distribution requires only 0.85 seconds. The same calculation on negative skewed
and positive skewed is 1.66 and 1.84 seconds. These facts show the calculation on
the data with skewed distribution requires a longer duration than a balanced
distribution.
Keywords: random sampling, kullback liebler divergence, general purpose
computing on graphics processing unit.

© Hak Cipta Milik IPB, Tahun 2013
Hak Cipta Dilindungi Undang-Undang

Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan
atau menyebutkan sumbernya. Pengutipan hanya untuk kepentingan pendidikan,
penelitian, penulisan karya ilmiah, penyusunan laporan, penulisan kritik, atau
tinjauan suatu masalah; dan pengutipan tersebut tidak merugikan kepentingan
IPB
Dilarang mengumumkan dan memperbanyak sebagian atau seluruh karya tulis ini
dalam bentuk apa pun tanpa izin IPB

SELEKSI FITUR DINAMIS UNTUK PASANGAN ATRIBUT
BERKORELASI TINGGI MENGGUNAKAN KOMPUTASI
PARALEL BERBASIS GRAPHICS PROCESSING UNIT
(GPU)

ASTRIED SILVANIE

Tesis
sebagai salah satu syarat untuk memperoleh gelar
Magister Komputer
pada
Program Studi Ilmu Komputer


SEKOLAH PASCASARJANA
INSTITUT PERTANIAN BOGOR
BOGOR
2013

Penguji pada Ujian : Dr Wisnu Ananta Kusuma, ST MT

Judul Tesis : Seleksi Fitur Dinamis untuk Pasangan Atribut Berkorelasi Tinggi
menggunakan Komputasi Paralel Berbasis Graphics Processing
Unit (GPU)
Nama
: Astried Silvanie
NIM
: G651110351

Disetujui oleh
Komisi Pembimbing

Dr Taufik Djatna, STP Msi

Ketua

Dr Heru Sukoco, SSi MT
Anggota

Diketahui oleh

Ketua Program Studi
Ilmu Komputer

Dekan Sekolah Pascasarjana

Dr Yani Nurhadryani, SSi MT

Dr Ir Dahrul Syah, MSc Agr

Tanggal Ujian:
13 September 2013

Tanggal Lulus:


PRAKATA
Alhamdulillah saya panjatkan kepada Allah Subhanahu wa ta’ala atas semua
ujian dan berkah yang telah diberikan selama penelitian ini dilakukan. Setiap ujian
yang hadir telah membentuk pribadi saya menjadi lebih tabah dan kuat. Setiap
masalah yang datang baik dari keluarga, keuangan, dan motivasi menyadarkan
saya pentingnya kemampuan beradaptasi. Kegagalan hanyalah langkah menuju
kesuksesan. So never give up, trust me i am an engineer !
Terima kasih penulis ucapkan kepada Bapak Dr Taufik Djatna, STP MSi dan
Bapak Dr Heru Sukoco, Ssi MT selaku pembimbing. Terima kasih juga buat Dr
Yani Nurhadryani, SSi MT selaku kaprodi ilmu komputer. Ungkapan terima kasih
juga disampaikan kepada ibu, dan kedua adik tercinta yang selalu mendukung
dalam keadaan sulit sekali pun. Ungkapan terima kasih tidak lupa disampaikan
pada Neny Rosmawarni, Galih Sidik, Azima, Fajar, Elfira, Nina, Iwan, Arif, GenT 4 dan seluruh pihak yang tidak bisa disebutkan namanya satu persatu, atas
segala doa dan bantuannya. Terima kasih pada seluruh rekan sekuliahan Pasca
Sarjana IPB. Terima kasih buat ibu Nining.
Terima kasih pada Birone Lynch (my J B) atas petunjuknya di masalah data
dinamis. Terima kasih pada Eric Brainville atas artikelnya mengenai bitonic
merge sorting di internet. Thank you for Karen my Philippines sister. Thank you
for my love Binti BrindAmour.

“Without engineer, Scientist is only philosopher talking about philosophy.
Thank to God, I am both !”

Bogor, Desember 2013

Astried Silvanie

DAFTAR ISI
DAFTAR TABEL
DAFTAR GAMBAR
DAFTAR LAMPIRAN
1 PENDAHULUAN
Latar Belakang
Perumusan Masalah
Tujuan Penelitian
Ruang Lingkup
Manfaat Penelitian
2 METODE
Pengolahan terhadap data dinamis
Data mining terhadap data dinamis


vii
vii
ix
1
1
2
2
2
3
3
3
3

Sampel

4

Inisialisasi Sampel

5

Kullback liebler Divergence

6

Proses Pemasukan Data

7

Proses Penghapusan Data

8

Proses Pembaharuan Data

10

Cara Kerja

10

Paralelisasi pada seleksi fitur
Seleksi Fitur

11
11

Perancangan Teknik Paralel menggunakan GPU

15

Kernel Diskritasi

18

Kernel X-Monotone

21

Integrasi Aplikasi dan Kernel

24

Uji Coba
Perangkat keras dan perangkat lunak
3 HASIL DAN PEMBAHASAN
Implementasi dan Hasil Metode Data mining Dinamis
Implementasi dan Hasil Algoritme Paralel dan Komputasi GPU
4 SIMPULAN DAN SARAN
Simpulan
Saran
DAFTAR PUSTAKA
LAMPIRAN

26
27
28
28
30
33
33
33
34
36

GLOSSARY (RINGKASAN ISTILAH)

38

DAFTAR TABEL
1
Tampilan data di backing sample

4

Input dan output kernel diskritasi

19

Input dan output kernel x-monotone

22

Hasil uji coba sampling terhadap data dinamis berdasarkan jumlah
transaksi, entropi dan nilai kullback liebler

29

Evaluasi kinerja untuk model pohon keputusan dari data dengan
distribusi seimbang dan tidak seimbang

30

Hasil uji coba komputasi paralel terhadap algoritme seleksi fitur
untuk satu pasangan fitur

30

Hasil uji coba perbandingan waktu eksekusi komputasi sekuensial
dan paralel dengan berberapa jumlah pasangan fitur

31

2
3
4
5
6
7

DAFTAR GAMBAR
1
Sekilas mengenai proses seleksi fitur terhadap data dinamis

4

Inisialisasi backing sample

5

Kode sumber fungsi Kullback Liebler Divergence

6

Algoritme pemasukan data baru ke basis data

7

Algoritme penghapusan data dari basis data

9

2
3
4
5
6
Algoritme pembaharuan data di basis data

10

Diskritasi dengan multidimensional equi-depth histogram

12

Multidimensional equi-depth histogram yang tiap bucket dihitung
jumlah record kelas target positif dan jumlah record target negatif

12

(a) area poligon tidak x-monotone; (b) area poligon x-monotone

12

Kalkulasi inner product untuk semua kolom

13

Komputasi botsum untuk semua kolom

13

Komputasi bot untuk semua kolom

13

7
8
9
10
11
12

13
14
15

Komputasi topsum untuk semua kolom

13

Komputasi top untuk semua kolom

14

Kalkulasi x-monotone

14

Kalkulasi convex hull

14

evaluasi area x monotone

15

Struktur memori CUDA dan cara kerja program CUDA

17

Rancangan program paralel untuk kasus seleksi fitur

18

Penentuan indeks pasangan fitur untuk tiap blok thread

18

Alokasi data dan kelas target ke tiap blok thread

19

Algoritme bitonic merge sort berdasarkan dua nilai data

20

Alokasi beberapa thread ke tiap bucket dari multidimensional equi-depth
histogram berukuran 3 x 3

20

Algoritme untuk menghitung jumlah record kelas target positif dan
negatif

21

Alokasi thread di tiap kolom untuk menghitung botsum, bot, topsum,
top secara paralel

22

Kalkulasi inner product untuk semua kolom secara paralel

22

Komputasi botsum semua kolom secara paralel

22

Komputasi bot untuk semua kolom secara paralel

22

Komputasi topsum untuk semua kolom secara paralel

23

Komputasi top untuk semua kolom secara paralel

23

Komputasi F-max untuk tiap kolom secara paralel

23

Komputasi nilai flatness secara paralel

24

Arsitektur aplikasi seleksi fitur

24

Alokasi ukuran data dinamis di kernel diskritasi

25

Pemanggilan kernel beserta jumlah blok thread, jumlah thread, ukuran
memori dinamis dan data

25

Pengambilan memori bersama dinamis untuk tiap variable di dalam blok

26

16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

37
38
39

Data dengan distribusi seimbang

26

Data dengan distribusi miring positif

27

Data dengan distribusi miring negatif

27

Pohon keputusan setelah 1000 transaksi terjadi terhadap basis data

28

Pohon keputusan setelah 500 transaksi terjadi terhadap basis data

29

Grafik waktu eksekusi dari proses pemasukan data, eksekusi kernel dan
mengeluarkan hasil eksekusi

32

Grafik waktu eksekusi proses eksekusi kernel

32

40
41
42
43

DAFTAR LAMPIRAN
1
Data set Pima Indisan Diabetes

36

Data set acak mengikuti pola Pima Indisan Diabetes dengan distribusi
kelas seimbang

36

Data set acak mengikuti pola Pima Indisan Diabetes dengan distribusi
kelas miring positif

37

Data set acak mengikuti pola Pima Indisan Diabetes dengan distribusi
kelas miring negatif

37

2
3
4

1 PENDAHULUAN

Latar Belakang
Seleksi fitur digunakan untuk memilih subset fitur yang relevan dengan
mengidentifikasikan dan membuang sebanyak mungkin informasi yang redundan
dan tidak relevan (Hall 2000; Alpaydin 2004). Hal ini dapat meningkatkan kinerja
model prediksi dengan dengan mengurangi efek dari kutukan dimensi,
meningkatkan kinerja generalisasi, mempercepat proses pembelajaran, dan
meningkatkan model penterjemahan (Hoi 2012). Djatna dan Morimoto (2008a,
2008b) menyatakan pentingnya memperhitungkan interkorelasi antara dua fitur
untuk menentukan kelas target. Mereka mengajukan algoritme seleksi fitur
dengan memilih pasangan fitur berkorelasi tinggi yang sangat relevan untuk
menentukan kelas target.
Penelitian mengenai seleksi fitur selama ini hanya digunakan dengan data
yang statik. Di dunia nyata data selalu berubah seiring dengan waktu disebut data
dinamis. Data dinamis terjadi karena transaksi pemasukan, penghapusan dan
pembaharuan data secara terus menerus terhadap basis data. Transaksi ini
membuat dimensi data menjadi semakin besar, baik dari jumlah fitur dan record.
Menurut Nasereddin (2009) data dinamis mempunyai karakter terus menerus,
tidak terbatas dan berkecepatan tinggi. Seleksi fitur terhadap data dimensi tinggi
yang selalu berubah memerlukan waktu lebih lama. Hal ini karena dibutuhkan
memindai ulang keseluruhan data setiap ada perubahan. Sehingga perlu digunakan
metode yang tepat agar seleksi fitur terhadap data dinamis menjadi lebih efisien.
Penelitian ini focus terhadap seleksi fitur yang diguankan untuk klasifikasi.
Sehingga selain efesiensi perlu diperhatikan kinerja seleksi fitur terhadap model
klasifikasi.
Metode sampel acak umum digunakan dalam penelitian-penelitian sebelum
untuk data dinamis (Babcock 2002; Braverman et al. 2009; Byung-Hoon et al.
2007; Gemulla 2008; Gibbons 1997; Vitter 1985). Penelitian ini menggunakan
sampel acak untuk mengekstrasi sinopsis dari basis data yang sangat besar.
Algoritme reservoir digunakan untuk inisialisasi sampel (Vitter 1985). Backing
sample merupakan teknik yang digunakan Gibbons (1997) untuk menjaga isi
sampel selalu terbaharui. Proses pergantian data di sampel memilih sampel yang
akan diganti berdasarkan nilai prioritas (Gemulla 2008). Semua teknik yang telah
disebutkan sebelumnya dapat digunakan secara bersama untuk menghasilkan
sampel acak yang selalu terbaharui.
Sebagai representasi dari basis data, penting untuk menjaga kesamaan
distribusi kelas antara sampel dan basis data. Alasannya karena distribusi kelas
mempunyai pengaruh pada performa model klasifikasi (Chawla 2010; Haibo
2009; Jason 2007; Prati 2008; Tang 2005; Xinjian 2008). Hal ini tidak dibahas
pada penelitian sebelum (Babcock 2002; Braverman et al. 2009; Byung-Hoon et
al. 2007; Gemulla 2008; Gibbons 1997; Vitter 1985). Kullback Liebler divergence
adalah ukuran statistik untuk mengukur model distribusi (Efren 2013). Nilai dari
Kullback Liebler dapat digunakan untuk melihat apakah distribusi sampel
mendekati distribusi basis data. Penggabungan teknik pengambilan sampel acak

2

dengan pengukuran distribusi menggunakan Kullback Liebler diharapkan dapat
memperoleh sampel yang mirip dengan basis data.
Teknik pengambilan sampel hanya memperkecil data dalam jumlah record.
Seleksi fitur Djanta dan Morimoto (2008a, 2008b) memeriksa semua kombinasi
pasangan fitur yang mungkin. Jika data mempunyai dimensi fitur yang sangat
besar akan menghasilkan jumlah pasangan yang sangat besar pula. Perlu dicarikan
solusi untuk mempercepat komputasi seleksi fitur. Solusi untuk mepercepat
komputasi adalah komputasi paralel. Komputasi paralel adalah penggunaan
komputer paralel untuk mereduksi waktu yang dibutuhkan untuk menyelesaikan
masalah komputasional tunggal (Quinn 2003). Komputasi paralel dapat
menggunaka multi core Central Processing Unit (CPU) atau many core Graphic
Processing Unit (GPU) mempunyai potensi yang besar untuk melakukan
komputasi paralel. Secara arsitektur GPU mempunyai lebih banyak inti (core) dari
CPU. Dalam penelitian Zhang et al. (2009, 2010, 2011) menggunakan komputasi
paralel dengan GPU untuk mempercepat komputasi terhadap data berjumlah
sangat besar. Menurut Che et al. (2008) GPU terbukti lebih cepat daripada
komputasi paralel menggunakan CPU.
Penelitian ini menggunakan algoritme reservoir, backing sample, priority
sampling, kullback liebler untuk mengambil sampel dari data dinamis. Sampel
berukuran lebih kecil dari basis data tetapi terbaharui dan mirip dengan basis data.
Seleksi fitur terhadap sampel lebih efisien karena dimensi baris lebih kecil.
Komputasi paralel dengan GPU digunakan untuk mempercepat seleksi fitur
terhadap data dengan dimensi fitur yang sangat tinggi.

Perumusan Masalah
Data di dunia nyata sangat dinamis sehingga seleksi fitur pada data statik tidak
lagi ideal. Data yang dinamis secara terus menerus merubah isi dan dimensi data.
Ukuran dimensi data adalah jumlah baris dan jumlah fitur. Proses seleksi fitur
terhadap data dinamis ini perlu memindai ulang keseluruhan data. Hal ini
memerlukan waktu dan terdapat kemungkinan data sudah berubah sebelum proses
memindai ulang selesai. Perlu dirancang algoritme untuk mengekstrasi data dari
data dinamis tersebut secara terus menerus dan perlu solusi untuk mempercepat
proses data mining.

Tujuan Penelitian
1. Merancang algoritme untuk mengolah data yang dinamis.
2. Merancang algoritme paralel yang dapat mempercepat seleksi fitur dengan
pasangan fitur berkorelasi tinggi.
3. Implementasi algoritme paralel dengan komputasi paralel berbasis graphic
processing unit (GPU).

Ruang Lingkup
1. Dataset yang digunakan mempunyai fitur predikator numerik dengan fitur
target boolean dan termasuk jenis kasus klasifikasi dalam data mining.

3

2. Algoritme seleksi fitur yang digunakan berdasarkan penelitian Djatna dan
Morimoto (2008a, 2008b).
3. Komputasi paralel menggunakan GPU dengan compute capability 1.1.

Manfaat Penelitian
1. Pembuatan kerangka untuk pengolahan data mining dinamis.
2. Menyediakan alternatif metode untuk menyediakan penyelesaian data
berdimensi tinggi dengan komputasi GPU.
3. Mempercepat proses seleksi fitur dalam data preprocessing.

2 METODE

Pengolahan terhadap data dinamis
Data mining terhadap data dinamis
Data dinamis adalah data yang selalu berubah atas proses pemasukan
(insert), pembaharuan (update) dan penghapusan (delete) data. Ketiga transaksi
ini membuat ukuran basis data semakin membesar dan tidak tetap. Data mining
terhadap data dinamis harus dijalankan secara kontinu. Beberapa penelitian
membahas data mining terhadap data dinamis (Babcock 2002; Braverman et al.
2009; Byung-Hoon et al. 2007; Gemulla 2008; Gibbons 1997; Vitter 1985).
Mereka menggunakan metode sampling. Idenya adalah mengektrasi sinopsis dari
basis data yang sangat besar ke dalam ukuran data yang lebih kecil disebut
sampel. Sampel menjadi representasi dari basis data. Sampel ini yang akan
menjadi data masukan bagi proses data mining. Penelitian ini berfokus pada data
mining untuk klasifikasi dengan kelas target binary. Fitur predikator yang
digunakan dalam penelitian ini adalah data bertipe numerik. Kelas target binary
mempunyai dua nilai yaitu positif dan negatif. Sebagai representasi dari basis
data, penting untuk menjaga kesamaan distribusi kelas antara sampel dan basis
data. Alasannya adalah karena bentuk distribusi kelas mempunyai pengaruh pada
model klasifikasi dan performa dari model klasifikasi (Chawla 2010; Haibo 2009;
Jason 2007; Prati 2008; Tang 2005; Xinjian 2008). Hal ini tidak dibahas pada
penelitian sebelum (Babcock 2002; Braverman et al. 2009; Byung-Hoon et al.
2007; Gemulla 2008; Gibbons 1997; Vitter 1985). Metode pengambilan sampel
secara acak tidak menjamin kesamaan distribusi kelas antara basis data dan
sampel. Penelitian ini menggunakan metode kullback liebler divergence untuk
mengukur kesamaan distribusi kelas antara sampel dan basis data. Metode ini
dibahas lebih lanjut pada bab lullback liebler divergence.
Data yang diolah disimpan dalam basis data menggunakan MySQL 5.5
sebagai DBMS. Jenis data set yang digunakan adalah data untuk proses klasifikasi
yang mempunyai hanya mempunyai dua nilai kelas target yaitu positive dan

4

negative. Proses seleksi fitur tidak dilakukan pada keseluruhan data dalam basis
data, tetapi hanya pada sampel. Sampel merupakan representasi dari keseluruhan
basis data. Data di dalam sampel akan menjadi data yang diolah untuk proses
seleksi fitur.

Gambar 1 Sekilas mengenai proses seleksi fitur terhadap data dinamis
Sumber : www.shutterstock.com
Sampel
Basis data berisi seluruh data dianggap sebagai populasi dari sampel. Proses
pengambilan sampel dilakukan dengan mengambil k record secara acak dari basis
data yang akan dimasukkan ke dalam sampel dinotasikan sebagai S. Salah satu hal
penting adalah menjaga sampel selalu terbaharui dengan menggunakan teknik
pengambilan backing sampling seperti dalam penelitian Gibbons (1997). Backing
sample berisi data sampel acak dari basis data dan selalu terbaharui dengan
adanya transaksi penyisipan, penghapusan dan pembaharuan dalam basis data.
Record mewakili tiap baris dalam basis data. Model backing sample terdiri atas k
record dinotasikan sebagai bs = {ei }i = 1− k . Backing sample hanya menyimpan id
record dinotasikan idi , prioritas dinotasikan priorityi dan timestamp dinotasikan

ti . Setiap record dalam backing sample mengandung ei = {idi , priorityi , ti }i = 1−k .
Prioritas adalah nilai riil acak antara 0 dan 1 yang diberikan pada masing-masing
record dalam sampel (Gemulla 2008). Ketika terjadi transaksi pemasukan dan
penghapusan record terhadap basis data, salah satu record dalam sampel akan
dihapus. Record yang dihapus dari sampel adalah record yang mempunyai
prioritas terendah. Backing sample dalam basis data disimpan sebagai tabel
seperti pada Tabel 1.
Tabel 1 Tampilan data di backing sample
ID
1
2
3
4
7
10

Priority
0.935062
0.815487
0.62152
0.971812
0.47245
0.539886

TimeStamp
2013-10-01 00:13:52
2013-10-01 00:13:53
2013-10-01 00:13:43
2013-10-01 00:13:53
2013-10-01 00:13:43
2013-10-01 00:13:52

5

Inisialisasi Sampel
Pada saat awal backing sample kosong tanpa record. Algoritme reservoir
sampling digunakan untuk mengambil k data secara acak dari basis data (Vitter
1985). Dalam penelitian ini, untuk inisalisasi sampel dibuat algoritme yang sejenis
dengan reservoir sampling tetapi bedanya algoritme ini dapat mempertahankan
kesamaan distribusi kelas antara basis data dan sampel. Gambar 2 di bawah ini
menjelaskan logika dari proses pembentukan sampel pada saat inisialisasi.
/* ni as the counter of each class i
* currentPos as the position of record
* Pi as distribution of each class in database
*/
Declare ni.
Declare currentPos.
Set ni to zero.
Set currentPos to zero.
Calculate Pi.
WHILE NOT EOF DO
Generate an integer random number r
with interval value 1 to t.
Skip as much as r records.
currentPos = currentPos + r.
FOR i = 1 TO m DO
IF (ni/k) < Pi AND i == Class index currentPos record
THEN
Add record of currentPos from database
to backing sample.
Increment ni.
BREAK FOR.
END IF
END FOR
END WHILE
IF sample size is not k THEN
FOR i = 1 to m
IF (ni/k) < Pi THEN
w = (Pi – (ni/k)) * k
Sample_temp = select id from database
where id is not in sample and class index = i.
FOR j = 1 TO w
Add record of position j from sample_temp
to backing sample.
Increment ni.
END FOR
Sample_temp = null
END IF
END FOR
END IF

Gambar 2 Inisialisasi backing sample
Nilai t adalah nilai maksimum proses pelewatan record ketika proses pindai
terjadi bernilai floor (ukuran _ populasi ( ukuran _ sampel + 1)) . Hal ini akan

6

membuat proses pelewatan dilakukan hanya (k+1) kali. Alasannya agar proses
pelewatan tidak melebihi akhir dari tabel. Algoritme harus memindai ulang basis
data jika jumlah sampel di bawah k record. Setelah proses ini sampel akan terdiri
dari k record dan mempunyai distribusi kelas yang sama dengan basis data.

Kullback liebler Divergence
Distribusi kelas dapat berbentuk seimbang (balance) dan tidak seimbang
(imbalance). Sebuah dataset dengan distribusi kelas seimbang (balance) terjadi
ketika persentase masing-masing kelas adalah (100/n), dimana n adalah jumlah
kelas. Jika persentase tidak persis sama maka dataset ini disebut tidak seimbang
(imbalance). Ketika distribusi kelas mempunyai secara signifikan condong pada
kelas tertentu maka data disebut miring (skew).
Kullback liebler (KL) divergence adalah ukuran dalam statistik untuk
menunjukkan seberapa dekat probabilitas distribusi p = {pi} adalah sebuah model
distribusi q = {qi}, di mana p adalah populasi dan q adalah sampel (Efren 2013).
Penelitian ini menggunakan divergensi KL untuk mengukur persamaan distribusi
kelas antara populasi dan sampel. Jika kita memiliki sebanyak l jumlah kelas
target maka Kullback liebler divergence didefinisikan sebagai berikut:
l
p
DKL ( p || q ) = ∑ pi log 2 ( i )
qi
i =1
(1)
Jika pi = mpi dan qi = mqi maka KL divergence dapat didefinisikan dalam
np

nq

rumus 1. Nilai i menunjukkan indeks kelas yaitu 1 dan 2 untuk kelas positif dan
negatif. Nilai mp adalah jumlah kelas i dalam populasi. Nilai mq adalah jumlah
kelas i dalam sampel. Nilai np adalah jumlah record dalam populasi dan ns
adalah jumlah record dalam sampel.
 mpi 
l
 np 
mp
(2)

DKL ( p || q ) = ∑ i log 2 
 mqi 
i =1 np
 nq 


Perhitungan Kullback liebler divergence tersebut diimplementasikan dalam
fungsi di MySQL (lihat Gambar 3). Fungsi ini akan dipanggil pada kode sql
lainnya untuk menghitung nilai Kullback liebler divergence antara sampel dan
basis data.
i

i

CREATE FUNCTION fKLDistance(p1 float, p2 float,
q1 float, q2 float) RETURNS double
BEGIN
return ( (p1*flog2(p1/q1)) + (p2*flog2(p2/q2)) );
END

Gambar 3 Kode sumber fungsi Kullback Liebler Divergence
Ada dua transaksi yang akan mengubah distribusi kelas, yaitu transaksi
pemasukan (insert) dan penghapusan (delete) data. Kedua transaksi tersebut
terhadap basis data akan mengubah nilai pi ke pi ' dan nilai qi ke qi ' . Demi

7

menjaga kemiripan distribusi kelas antara populasi dan sampel, nilai KL
divergence harus mendekati nol. Logika dari proses penggunaan KL divergence
untuk menjaga distribusi data adalah sebagai berikut :
i.
Pemasukan record kelas j akan mengubah distribusi sebagai berikut : jika
nilai KL divergence mendekati nol maka tidak perlu mengubah distribusi
kelas di sampel. Kebalikannya, distribusi sampel harus diubah. Caranya
adalah dengan menambah record kelas j dan menghapus record dari kelas
lain di sampel.
mpi + 1
mqi + 1


i
j
i
k
=
=


np + 1
nq


pi ' = 
qi ' = 
mpi
i ≠ j
i ≠ k mqi − 1


np + 1
nq
(3)
ii.
Penghapusan record kelas j akan mengubah distribusi sebagai berikut : Jika
nilai KL divergence mendekati nol maka tidak perlu mengubah distribusi
kelas di sampel. Kebalikannya, distribusi sampel harus diubah. Caranya
adalah dengan menghapus record kelas k dan menambah record dari kelas
lain di sampel.
mpi − 1
mqi − 1


i
j
i
k
=
=


np − 1
nq


pi ' = 
qi ' = 
mpi
i ≠ j
i ≠ k mqi + 1


np − 1
nq
(4)

Proses Pemasukan Data
Ketika masuk satu record baru untuk kelas j (newRecj) ke dalam basis data
akan terjadi salah satu dari beberapa aktivitas berikut :
• newRecj akan menggantikan record kelas j dengan prioritas terendah di
sampel.
• newRecj akan dimasukkan ke dalam sampel dan sampel akan menghapus satu
record kelas bukan j dengan prioritas terendah di sampel.
Algoritme di Gambar 4 menunjukkan detail logika untuk proses pemasukan data
baru ke basis data.
/* c1 for class occurrence for positive class in database
* c2 for class occurrence for negative class in database
* d1 for class occurrence for positive class in sample
* d2 for class occurrence for negative class in sample
* kl for Kullback Liebler divergence
* np for number of records in database
* ns for number of records in sample
* i for the current class of new inserted record
*/

Gambar 4 Algoritme pemasukan data baru ke basis data

8

Declare c1,c2,d1,d2,kl,np,ns,i.
Set kl = fkl(c1/np, c2/np, d1/ns, d2/ns)
IF kl >= 0 AND kl = 0 AND kl = 0 AND kl = 0 AND kl = 0 AND kl = 0 AND kl = 0 AND kl Ebest THEN
Ebest = Entropy
ChooseStampPoint = MidPoint
END
END WHILE

Gambar 16 Kalkulasi convex hull

15

Setiap area x-monotone di muldimensional equi-depth histogram dapat
direpresentasikan dengan dua vektor, yaitu vektor τ(R) = {t0, t1,…, tm-1} dan β(R)
= {b0, b1,…,bm-1}. τ(R) adalah urutan bagian atas indeks Y dan β(R) adalah urutan
bagian bawah indeks Y. Nilai m menunjukkan banyak kolom pada
multidimensional equi-depth histogram. Pada Gambar 17 nilai m adalah jumlah
kolom yaitu 13 terhitung dari kiri ke kanan. Tiap area x-monotone dievaluasi
dengan fungsi flatness seperti dijelaskan pada rumus 7. Dimana µ adalah rata-rata
dari vektor τ(R) dan vektor β(R). Fungsi flatness menunjukkan bagaimana sekuen
dari tiap vektor terpisah dari nilai rata-rata. Semakin besar nilai fungsi flatness
maka semakin penting pula pasangan fitur tersebut. Seperti pada contoh Gambar
17 (a) nilai τ(R) = {5, 4, 4, 7, 8, 9, 7, 5, 4} dan nilai β(R) = {2, 1, 2, 3, 4, 4, 3, 3,
2} maka nilai flatness adalah max{0.742, 0.889} = 0.889. Gambar 17 (b) nilai
τ(R) = {5, 5, 4, 4, 4, 4, 4, 4, 5, 5} dan nilai β(R) = {1, 0, 0, 0, 0, 1, 1, 1, 1, 1} maka
nilai flatness adalah max{0.240, 0.240} = 0.250. Berdasarkan kedua area tersebut,
nilai flateness lebih besar area a. Hal ini menunjukkan pasangan fitur pada
Gambar 17 (a) lebih tinggi korelasinya daripada Gambar 17 (b).
m

flat ( R) = max{

m

∑ (ti − µ (τ ( R)))2

∑ (b − µ (β ( R)))

=i 0=i 0

m

2

i

,

m

}

(7)

Gambar 17 evaluasi area x monotone
Sumber : Djatna dan Morimoto (2008a, 2008b)

Perancangan Teknik Paralel menggunakan GPU
Komputasi paralel adalah penggunaan komputer paralel untuk mereduksi
waktu yang dibutuhkan untuk menyelesaikan masalah komputasional tunggal
(Quinn 2003). Beberapa jenis tugas paralelisasi adalah sebagai berikut (Quinn
2003). :
a) Data Paralelism

16

Beberapa tugas yang saling bebas mengerjakan operasi yang sama terhadap
kumpulan data yang berbeda.
b) Functional Parallelism
Beberapa tugas yang saling bebas mengerjakan operasi yang berbeda terhadap
kumpulan data yang berbeda.
c) Pipelining
Komputasi ini mirip proses perakitan, di mana satu operasi terdiri atas
beberapa bagian terhadap kumpulan data yang berbeda.
Komputasi paralel dapat dilakukan oleh computer dengan multi core CPU
(Central Processing Unit) atau many core GPU (Graphics Processing Unit).
Secara arsitektur GPU mempunyai lebih banyak inti (core) yang merupakan
keunggulan daripada multi core CPU. NVIDIA sebagai salah satu vendor GPU
merupakan perintis dalam komputasi paralel dengan GPU. CUDA (Compute Unit
Device Architecture) adalah platform komputasi paralel dan model pemrograman
yang diciptakan oleh NVIDIA.
Sistem komputasi CUDA terdiri atas host yaitu CPU dan satu atau beberapa
device yaitu GPU. Program CUDA merupakan kode sumber gabungan untuk host
dan GPU. Kompiler C (nvcc) memisahkan kompilasi program host dan program
GPU. Program host ditulis menggunakan bahasa C ANSI. Program GPU
menggunakan bahasa C ANSI dengan sintaks tambahan untuk fungsi data
paralelisasi disebut kernel. Fungsi kernel dijalankan banyak pekerja yang disebut
thread untuk paralelisasi data. Beberapa thread dikelompokkan dalam satu atau
lebih blok. Fungsi kernel dikirimkan oleh host ke GPU. Parameter pada fungsi
kernel digunakan untuk memasukkan data dari host ke GPU dan menerima data
hasil dari GPU ke host. GPU mempunyai struktur memori seperti digambarkan
pada Gambar 18. Data dari host disimpan dalam memori global dan konstan
(constant) di GPU. Data tersebut dipindahkan ke memori bersama (shared
memory) untuk diolah oleh tiap blok thread. Memori bersama hanya dapat terlihat
oleh thread dalam satu blok.

17

Gambar 18 Struktur memori CUDA dan cara kerja program CUDA
Dalam penelitian ini kasus yang akan diparalelisasi adalah seleksi fitur yang
sudah dijelaskan pada bab sebelum. Proses seleksi fitur ini dilakukan untuk tiap
kombinasi pasangan fitur sesuai dengan rumus 6. Tiap pasangan fitur di seleksi
dengan proses yang sama. Secara sekuensial, seleksi fitur diulang sebanyak fn
kali, dimana fn adalah jumlah pasangan fitur. Sehingga jika kompleksitas seleksi
fitur adalah n2 maka untuk semua pasangan fitur kompleksitasnya menjadi fn x n2.
Kompleksitas ini dapat di reduksi menjadi n2 dengan menjalankan seleksi fitur
secara paralel untuk semua pasangan fitur. Kasus seleksi fitur yang telah
dijelaskan pada bab sebelumnya dibagi menjadi dua bagian masalah yaitu
diskritasi data dan komputasi geometri x-monotone. Diskritasi data akan membagi
data ke dalam multidimensional equi-depth histogram. Tiap bucket pada
histogram menyimpan jumlah record untuk kelas target positif dan negatif.
Histogram menjadi masukan bagi komputasi x-monotone. Tiap histogram akan
dicari area x-monotone dan fungsi flatness. Dua fungsi kernel dibuat untuk
menyelesaikan masalah, yaitu kernel diskritasi dan kernel x-monotone.

18

Gambar 19 Rancangan program paralel untuk kasus seleksi fitur

Kernel Diskritasi
Kernel diskritasi mempunyai enam data masukan dan dua data keluaran.
Tabel 1 menjelaskan masukan dan keluaran dari kernel diskritasi. Fungsi kernel
diskritasi dijalankan oleh semua pasangan fitur untuk menghasilkan
multidimensional equi-depth histogram. Semua pasangan fitur mengeksekusi
proses diskritasi yang sama sehingga proses ini dilakukan secara paralel. Jumlah
thread pada kernel diskritasi adalah jumlah pasangan fitur dikali jumlah record.
Tiap pasangan fitur mempunyai thread sebanyak jumlah record. Kumpulan thread
untuk tiap pasangan fitur dikelompokkan dalam satu blok thread. Seperti pada
contoh Gambar 20, data yang diolah terdiri atas tiga fitur dan empat baris record.
Fitur keempat adalah kelas target yang merupakan hasil klasifikasi. Tiga fitur
akan menghasilkan tiga pasangan fitur berdasarkan rumus 6. Sehingga untuk
kasus pada Gambar 21 kernel diskritasi akan mempunyai dua belas thread. Dua
belas thread tersebut dibagi ke dalam tiga blok dengan tiap blok terdiri atas empat
thread. Tiap blok thread mengeksekusi kernel untuk satu pasangan
fitur.

G
ambar 20 Penentuan indeks pasangan fitur untuk tiap blok thread

19

Gambar 21 Alokasi data dan kelas target ke tiap blok thread
Tabel 2 Input dan output kernel diskritasi
Data
dData

dPairId

dTargetClass
density
dCelSize
pairs
dBucketPositif
dBucketNegatif

Jenis
Input

Keterangan
Data semua record untuk semua fitur yang diambil dari basis
data. Data ini direpresentasikan dalam bentuk vektor baris
(lihat Gambar 10).
input
data indeks fitur yang akan menjadi pasangan fitur yang
diolah oleh tiap blok thread. Gambar 9 terdapat 3 blok yang
menentukan indeks pasangan fitur untuk mereka olah. Blok-0
pair id (0,1), blok-1 pair id (0,2) dan blok-2 pair id (1,2).
Kombinasi indeks pasangan fitur dilakukan oleh host.
input
Data kelas target untuk tiap record pasangan fitur. (lihat
Gambar 10).
input
jumlah record untuk tiap bucket dalam histogram.
input
Jumlah bucket untuk membentuk histogram yang merupakan
perkalian baris dan kolom dari histogram.
input
Jumlah kombinasi pasangan fitur.
Output Total record di tiap bucket untuk kelas target positif
output Total record di tiap bucket untuk kelas target negatif

Setelah ditentukan alokasi thread dan data yang diperlukan, dilanjutkan
dengan perancangan algoritme. Muralikrishna dan DeWitt (1988) mengajukan
algoritme diskritasi data menjadi multidimensional equi-depth histogram.
Algoritme tersebut melakukan dua hal yaitu pengurutan data dan pembagian data
ke bucket. Dalam penelitian ini dibuat algoritme diskritasi yang mengadopsi
algoritme Muralikhrisna dan DeWitt (1988) tetapi berbeda dalam hal pengurutan
dan dilakukan secara paralel. Pengurutan data dilakukan berdasarkan dua nilai
yaitu nilai record fitur pertama dan fitur kedua dalam pasangan fitur. Algoritme
bitonic merge sort digunakan untuk proses pengurutan dapat dilihat pada Gambar
22.

20

Scatter data for each BLOCK of THREAD
EACH BLOCK of THREAD
{
Receive portion to sort
Sort local data using an algorithm of preference
FOR( level = 1; level