PENGEMBANGAN SKALABILITAS ALGORITMA KLASIFIKASI C4.5 DENGAN PENDEKATAN KONSEP OPERATOR RELASI (STUDI KASUS: PRA-PENGOLAHAN DAN KLASIFIKASI CITRA BATIK)
DISERTASI Karya tulis sebagai salah satu syarat untuk memperoleh gelar Doktor dari Institut Teknologi Bandung
Oleh VERONICA SRI MOERTINI NIM : 33503504 (Program Studi Teknik Informatika)
INSTITUT TEKNOLOGI BANDUNG 2007
ABSTRAK PENGEMBANGAN SKALABILITAS ALGORITMA KLASIFIKASI C4.5 DENGAN PENDEKATAN KONSEP OPERATOR RELASI (STUDI KASUS: PRA-PENGOLAHAN DAN KLASIFIKASI CITRA BATIK) Oleh Veronica Sri Moertini NIM : 33503504 Klasifikasi adalah salah satu proses pada data mining yang bertujuan untuk menemukan “pengetahuan” atau pola yang berharga dari data yang berukuran relatif besar hingga sangat besar. Data tersebut saat ini kebanyakan dikelola menggunakan Database Management System (DBMS) baik sebagai database maupun data warehouse. Ada beberapa kelompok algoritma klasifikasi, di antaranya adalah pohon keputusan, Bayesian dan jaringan saraf. “Algoritma C4.5” adalah salah satu algoritma klasifikasi yang populer pada kelompok algoritma pohon keputusan. Pada tahap “belajar” dari data pelatihan, algoritma C4.5 mengkonstruksi pohon keputusan. Pada tahap klasifikasi, pohon keputusan digunakan untuk memprediksi kelas dari sebuah kasus yang kelasnya belum diketahui. Prinsip kerja algoritma ini dalam proses belajar adalah: membaca seluruh sampel/kasus dari storage dan memuatnya ke memori, kemudian melakukan komputasi dengan membaca sampel-sampel di memori untuk mengkonstruksi pohon (yang juga disimpan di memori). Dengan pendekatan ini, salah satu kelemahan algoritma C4.5 yang termasuk dalam kategori ”skalabilitas” adalah: algoritma tersebut hanya dapat digunakan untuk menangani sampel-sampel yang dapat disimpan secara keseluruhan dan pada waktu yang bersamaan di memori. Beberapa hasil penelitian sudah ditujukan untuk mengatasi masalah skalabilitas di atas. Pendekatan yang digunakan adalah: (a) Data dipartisi dan konstruksi pohon dilakukan secara parsial, kemudian digabungkan. Masalah: akurasi pohon gabungan ini buruk. (b) Pemanfaatan perintah Structured Query Language1 (SQL) pada DBMS untuk “meringkas” data pelatihan menjadi sebuah “tabel keputusan”. Kelemahannya: pada proses klasifikasi kasus baru masih diperlukan algoritma lain. (c) Pembuatan himpunan-AVC (Attribute-Value Classlabel ) pada setiap simpul pohon. Bila seluruh himpunan-AVC pada sebuah level pohon tidak 1
Bahasa pemrograman yang sudah diterima sebagai bahasa standar pada DBMS.
ii
dapat dimuat di memori, data pelatihan dipartisi, disimpan di file sementara, kemudian himpunan-AVC dibuat hanya untuk partisi ini dan cabang dilanjutkan untuk setiap partisi. Jika algoritma ini akan diintegrasikan ke dalam DBMS, masalah yang ada adalah: algoritma ini tidak memanfaatkan fitur dan fungsifungsi yang dimiliki DBMS, sehingga sulit untuk diimplementasikan secara terintegrasi dengan DBMS. Bertitik tolak dari keterbatasan memori pada sistem komputer, dan ukuran data yang ditangani algoritma C4.5 di DBMS seharusnya dapat sangat besar, maka pada penelitian ini akan dilakukan pendekatan lain: mengembangkan skalabilitas algoritma C4.5 (menjadi C4.5Db) dengan menerapkan logika DBMS (operator seleksi dan proyeksi pada aljabar relasional) dan sekaligus mengintegrasikannya ke dalam Object-Relational DBMS (ORDBMS), untuk memanfaatkan skalabilitas tak terhingga dan pemrograman berorientasi obyek yang didukung oleh ORDBMS. Prinsip kerja algoritma C4.5Db adalah sbb.: Dengan memanfaatkan operator seleksi pada SQL, komputasi pada konstruksi pohon (induk) sampai level tertentu dilakukan dengan membaca sampel-sampel secara langsung pada tabel basisdata yang dapat berukuran sangat besar. Selanjutnya, operator proyeksi dan seleksi pada SQL dimanfaatkan untuk memuat himpunan sampel pada setiap sub-pohon (cabang) ke dalam memori untuk diakses pada komputasi perpanjangan setiap cabang. Pemuatan himpunan sampel pada cabang dilakukan satu demi satu, dan hasil konstruksi cabang “ditempelkan” pada pohon induk sehingga pada akhirnya terbentuk sebuah pohon yang utuh. Dengan pendekatan ini, ukuran himpunan sampel pada cabang yang dimuat ke memori dibatasi oleh memori, tetapi jumlah himpunan secara teoritis tidak dibatasi, sehingga sampel yang berjumlah sangat besar dapat ditangani. Selain itu, ukuran pohon yang dapat dikonstruksi juga dibatasi oleh memori. Kecepatan eksekusi algoritma C4.5Db, yang merupakan salah satu tolok ukur dari efisiensi pada teknik data mining, diatasi dengan pemanfaatan fungsi-fungsi yang ada di DBMS (melalui SQL), khususnya indeks (bitmap index), dan penelaahan partisi data di memori pada konstruksi cabang. Untuk menguji keberhasilan C4.5Db, dilakukan eksperimen-eksperimen perbandingan C4.5 dan C4.5Db yang sudah diintegrasikan ke dalam ORDBMS. Tabel yang berisi data sintetik yang sama, dengan jumlah rekord/sampel dan atribut yang bervariasi, dipresentasikan ke C4.5 dan C4.5Db. Proses (termasuk waktu eksekusi) diobservasi. Berdasarkan pengujian ini, dibuktikan bahwa skalabilitas C4.5Db didapati sesuai dengan harapan, sedangkan C4.5 berhenti pada suatu saat dimana seluruh sampel sudah tidak dapat lagi disimpan dalam memori. Waktu eksekusi C4.5Db juga lebih baik pada kasus dimana tabel memiliki jumlah atribut dan nilai unik sedikit dan diindeks dengan bitmap. Pada studi kasus, sebagai contoh pemanfaatan dari C4.5Db di ORDBMS, digunakan tabel yang berisi data sintetik transaksi penjualan batik (berisi profil pengguna dan citra batik yang sesuai, dengan mempertimbangkan motif, warna
iii
dan tingkat kontras). Tujuannya adalah untuk mendapatkan pohon keputusan dari data yang bermanfaat dalam membantu pemilihan batik yang sesuai bagi pemakai dengan profil tertentu. Karena untuk mengklasifikasi tabel ini perlu dilakukan prapengolahan citra batik, dengan tujuan untuk menemukan motif dan tingkat kontras pada citra batik, maka dikembangkan algoritma-algoritma pra-pengolahan citra batik. Di sini digunakan transformasi wavelet 2-dimensi dan teknik-teknik pada algoritma image retrieval berbasis bentuk dan tekstur. Uji coba dilakukan dengan 489 citra batik dengan tujuan untuk mencari algoritma yang terbaik dari algoritma-algoritma yang dikembangkan. Didapati bahwa algoritma pendeteksi kontras yang baik adalah yang menggunakan wavelet, sedangkan pengenalan motif yang terbaik adalah yang mengadopsi gabungan teknik pengenalan bentuk dan tekstur. Kemudian, eksperimen-eksperimen untuk membuat aturan-aturan dilakukan dengan atribut-atribut tabel yang bervariasi. Aturan-aturan yang dihasilkan kemudian dievaluasi dengan kriteria tingkat kepercayaan dan didapati hasil bahwa sebagian besar aturan berpotensi untuk dimanfaatkan. Kata kunci: klasifikasi, algoritma pohon keputusan C4.5, pengembangan skalabilitas, integrasi C4.5 ke dalam ORDBMS, pra-pengolahan citra batik, klasifikasi citra batik.
iv
ABSTRACT ENHANCING THE SCALABILITY OF C4.5 CLASSIFICATION ALGORITHM USING RELATION OPERATOR CONCEPT (CASE STUDY: PREPROCESSING AND CLASSIFYING BATIK IMAGES) By Veronica Sri Moertini NIM : 33503504 Classification is one of the data mining functions, which aims to find knowledge or valuable pattern from relatively large to very large dataset, which is mostly stored in DBMS (in the form of database or datawarehouse). There are several groups of classification algorithms, which are decision tree, Bayesian, neural networks, etc. C4.5 algorithm is a popular decision tree classification algorithm. On learning stage, C4.5 constructs trees from training dataset, while on classification stage the trees are used to predict the classes of new cases with unknown classes. The basic principle of C4.5 in constructing trees is by loading the sample training dataset into memory and then constructing the trees from the samples stored in memory. Using this approach, one of the weaknesses of C4.5 concerning its “scalability” is in its inability to build trees from dataset having size that exeeds memory size. Previous research has been directed to solve the scalability of decision trees. The approaches are: (a) The dataset is partitioned. A sub-tree is constructed from each partition. At the end, the sub-trees are combined to form the whole trees. The disadvantage: the accuracy is poor. (b) SQL is used to “summarize” dataset into a “decision table”. The disadvantage: it needs other classification algorithm in classifying new cases. (c) Forming AVC-sets (Attribute-Value Classlabel sets) for each tree node. If the whole AVC-sets could not be stored in memory, the dataset is partitioned and each is stored as a separate file. The branches are then extended by reading each file. If this algorithm would be implemented as a DBMS internal function, the issue is: it is difficult to be implemented as an internal function of DBMSes as the approach does not utilize DBMS functions or features. In improving C4.5 scalability, the proposed approach is: C4.5 is enhanced by adopting DBMS foundation (selection and projection operator of relational algebra), called C4.5Db, while also integrating it into Object-Relational DBMS
v
(ORDBMS), to take advantage of the unlimited scalability and object-oriented programming supported by this DBMS. The basic method of C4.5Db is: by using SQL selection operator, the construction of (parent) tree up to a certain level is conducted by accessing samples from the database tabel, then, it enhances each branch by first loading a set of samples of this branch (using selection and projection operator) into memory then reading the samples stored in memory. With this approach, the set of samples that could be loaded into memory is limited by the memory size, but the number of sets are not limited, hence, it could handle very large size of dataset. The size of the tree that could be constructed, however, is limited by memory size. To gain fast C4.5Db execution in constructing trees, which is one of the criteria in evaluating the quality of data mining algorithms, SQL supported by query optimizer and bitmap index would be used. Accessing sets of samples stored in memory is also intended to maintain fast execution. In testing C4.5Db, a series of experiments aimed to compare C4.5 and C4.5Db are conducted. Tables containing the same synthetic data with various number of records or samples and attributes are presented both to C4.5 and C4.5Db. The process (including execution time) is observed. The result of these experiments shows that C4.5Db could handle very large size of samples (as expected), while C4.5 stops at certain size of samples. The execution time of C4.5Db is also better on cases where bitmap indexed tables have small attributes and distinct values. In the case study attempting to show the use of C4.5Db algorithm in solving real problem, tables filled with synthetic records of batik purchasing transaction are used as its training dataset. Each record contains batik wearer’s profiles (identified by personality, skin and hair color) and the suitable batik images (by considering motif, color and contrast color). The goal of the classification is to construct decision trees which is useful in helping people (having certain profiles) in selecting the right batiks. As batik image preprocessing (aimed to obtain motif and color contrast) is necessary step in preparing the dataset for C4.5Db, several preprocessing algorithms are designed. Two-dimensional discrete wavelet transform and several techniques found in shape-based and texture-based image retrieval algorithms are adopted in the algorithms. The experiments aimed to find the best algorithms are conducted using 489 real batik images. The result: the best algorithm of detecting color contrast is the one that uses wavelet, while motif is the one that adopts both texture and shape-based techniques. After the batik images stored in the table are pre-processed, experiments intended to obtain decision trees from the transaction tables are conducted by selecting a variety of table attributes. The rules of the trees are then evaluated using confidence measure. Many rules are found valuable and potentially useful. Keywords: classification, C4.5 decision tree algorithm, scalability, integrating C4.5 into ORDBMS, batik image pre-processing, classifying batik images.
vi
PENGEMBANGAN SKALABILITAS ALGORITMA KLASIFIKASI C4.5 DENGAN PENDEKATAN KONSEP OPERATOR RELASI (STUDI KASUS: PRA-PENGOLAHAN DAN KLASIFIKASI CITRA BATIK)
Oleh
Veronica Sri Moertini NIM : 33503504 (Program Studi Teknik Informatika) Institut Teknologi Bandung
Menyetujui Tim Pembimbing Tanggal ............................. Ketua
Dr. Ir. Benhard Sitohang
Anggota
Dr. dr. Oerip S. Santoso
Dipersembahkan kepada bangsa Indonesia, semoga bermanfaat
viii
PEDOMAN PENGGUNAAN DISERTASI Disertasi Doktor yang tidak dipublikasikan terdaftar dan tersedia di Perpustakaan Institut Teknologi Bandung, dan terbuka untuk umum dengan ketentuan bahwa hak cipta ada pada pengarang dengan mengikuti aturan HaKI yang berlaku di Institut Teknologi Bandung. Referensi kepustakaan diperkenankan dicatat, tetapi pengutipan atau peringkasan hanya dapat dilakukan seizin pengarang dan harus disertai dengan kebiasaan ilmiah untuk menyebutkan sumbernya. Memperbanyak atau menerbitkan sebagian atau seluruh disertasi haruslah seizin Dekan Sekolah Pascasarjana, Institut Teknologi Bandung.
ix
KATA PENGANTAR Puji syukur penulis panjatkan kepada Tuhan YME atas terselesaikannya buku disertasi ini. Berbagai pihak telah membantu selama penulis menempuh pendidikan jenjang Strata-3 (S3), meneliti maupun menyusun buku ini. Melalui buku ini, penulis ingin mengucapkan terima kasih yang tulus kepada: a. Dr. Ir. Benhard Sitohang, sebagai Ketua Tim Pembimbing, yang telah memberikan bimbingan, saran, kritik yang membangun dan dukungan dalam bentuk lainnya yang sangat berguna. b. Dr. dr. Oerip S. Santoso, sebagai anggota Tim Pembimbing, yang telah memberikan bimbingan, pengertian dan dukungan lainnya yang berharga, baik sebelum maupun selama penulis menempuh pendidikan jenjang S3. c. Almarhum Prof. Dr. Ir. Kudrat Soemintapoera, mantan Ketua Tim Pembimbing, yang telah memberikan dukungan dan konsultasi awal yang mendasari langkah-langkah penelitian. d. Tim penguji pada ujian-ujian disertasi, yaitu Prof. Dr. Ir. Tati L. R. Mengko; Dr. Ing. Farid Wazdi; Ir. Wahyu C. Wibowo, PhD.; Ir. Dwi H. Widyantoro, M.Sc., PhD.; Dr. Ir. Bambang R. Trilakso, yang telah mengevaluasi buku disertasi, memberi arahan dan saran untuk perbaikan buku ini. e. Program Studi Teknik Informatika, STEI ITB, yang telah memberikan bantuan/layanan teknis dan administratif selama penulis menempuh pendidikan S3. f. Universitas Katolik Parahyangan dan Fakultas MIPA yang telah memberikan dukungan, dosen Jurusan Ilmu Komputer yang telah membantu penulis secara langsung (Lionov, ST; Ir. Nico Saputra, MT; Kim Siung, ST, MSc dan T. Anung Basuki, ST, MSi) maupun para dosen lain yang telah memberikan bantuan secara tidak langsung. g. Romo Drs. C. Kuntoro Adi, MA, MSc, SJ di Milwaukee, WI, Amerika Serikat, yang telah memberikan dukungan moril, informasi penting maupun mencarikan buku dan makalah-makalah yang sangat bermanfaat. h. Teman-teman “seperjuangan” di Prodi Teknik Informatika STEI ITB, khususnya Pak Setyawan, Pak Juniadi, Pak Imam, Pak Dahlan, Bu Putri dan
x
Bu Wanti, yang telah memberikan dukungan moril maupun masukan-masukan yang berharga. i. Raden Ruhimat, SKom; Yoseph Adhitya, SKom, SSi, MT dan para mantan mahasiswa bimbingan lainnya, yang telah memberikan inspirasi dan membagikan pengetahuan selama penelitian ini berlangsung. j. Drs. Hardiyanto dan Dra. D. Ismoyowati yang telah membantu selama survei di Yogyakarta maupun mencari referensi-referensi batik yang berharga. k. Ibunda Yatmi K. Hardjosoeroso dan semua saudara-saudari, yang telah memberikan dukungan moril. l. Staf PT Dinamaritama Konsultan Rekayasa, khususnya Slamet, Asep, Sidin, Wendi, Tome, Sanca dan Leman, yang telah mengurus fasilitas yang penulis perlukan, mempersiapkan citra-citra untuk eksperimen dan mengurus perbanyakan dokumen-dokumen. m. Last but not least, suami penulis, Andojo Wurjanto, PhD., yang telah memberikan dukungan penuh (moril, materiil, fasilitas dan staf) sehingga pendidikan S3 di ITB dapat penulis tempuh dan selesaikan. Juga anak-anak, Avi P. Pertiwi dan Adi P. Hardaya, yang sering memberi hiburan yang menyegarkan hati.
Bandung, Juni 2007 Penulis
xi
DAFTAR ISI
ABSTRAK .............................................................................................................. ii ABSTRACT............................................................................................................ v PEDOMAN PENGGUNAAN DISERTASI.......................................................... ix KATA PENGANTAR ............................................................................................ x DAFTAR ISI......................................................................................................... xii DAFTAR LAMPIRAN........................................................................................ xiv DAFTAR GAMBAR ............................................................................................ xv DAFTAR ALGORITMA.................................................................................... xvii DAFTAR TABEL.............................................................................................. xviii DAFTAR SINGKATAN DAN LAMBANG ...................................................... xix Bab I Pendahuluan ................................................................................................ 1 I.1 Latar Belakang............................................................................................... 1 I.2 Masalah Penelitian......................................................................................... 9 I.3 Tujuan Penelitian ......................................................................................... 10 I.4 Ruang Lingkup dan Batasan Penelitian ....................................................... 12 I.5 Asumsi yang Digunakan.............................................................................. 13 I.6 Hipotesis ...................................................................................................... 13 I.7 Metodologi Penelitian.................................................................................. 13 I.8 Pelaksanaan Penelitian................................................................................. 15 I.9 Sistematika Disertasi ................................................................................... 16 Bab II Algoritma C4.5......................................................................................... 18 II.1 Bahasan Umum ......................................................................................... 18 II.2 Algoritma Konstruksi Pohon..................................................................... 20 II.3 Komputasi Gain Ratio pada Konstruksi Pohon C4.5................................ 22 II.4 Kompleksitas pada Konstruksi Pohon....................................................... 24 II.5 Partisi Himpunan Data pada Konstruksi Pohon ........................................ 25 II.6 Hasil Penelitian yang Terkait dengan Pengembangan C4.5...................... 26 BAB III Pengembangan Skalabilitas Algoritma C4.5 dan Integrasinya ke dalam ORDBMS.............................................................................................................. 28
xii
III.1 Pembentukan Partisi Himpunan Data dan Komputasi Gain Ratio dengan SQL ................................................................................................................... 29 III.1.1 Operator Seleksi dan Proyeksi pada Aljabar Relasional................... 29 III.1.2 Partisi Himpunan Data dan Estimasi Ruang Memori ....................... 30 III.1.3 Perintah SQL untuk Partisi Himpunan Data ..................................... 33 III.1.4 Perintah SQL untuk Menghitung Jumlah Sampel............................. 34 III.2 Pengembangan Algoritma pada Konstruksi Pohon .................................. 35 III.3 Fitur ORDBMS yang Mendukung Efisiensi Konstruksi Pohon .............. 39 III.4 Implementasi Algoritma........................................................................... 40 III.4.1 Arsitektur Sistem................................................................................ 42 III.4.2 Bahasan J48 ...................................................................................... 42 III.4.3 Struktur Data untuk Pohon Keputusan.............................................. 44 III.5 Eksperimen.............................................................................................. 46 III.5.1 Eksperimen Akurasi .......................................................................... 46 III.5.2 Eksperimen Skalabilitas dan Efisiensi .............................................. 48 Bab IV
Pra-pengolahan dan Klasifikasi Citra Batik .......................................... 56
IV.1 Masalah pada Pemilihan Batik yang Serasi bagi Calon Pemakai............. 56 IV.2 Dasar Teori............................................................................................... 58 IV.2.1 Langkah-langkah Klasifikasi Data pada Tahap Belajar..................... 58 IV.2.2 Klasifikasi Warna Fesyen ................................................................. 60 IV.2.3 Motif Batik, Arti dan Impresi ........................................................... 61 IV.2.4 Batik sebagai Obyek ......................................................................... 64 IV.3 Penyiapan Data Transaksi Penjualan Sintetik dan Struktur Penyimpanannya ............................................................................................... 67 IV.4. Metoda Pra-pengolahan Citra Batik untuk Mengenali Tingkat Kontras dan Motif........................................................................................................... 70 IV.5 Pemilihan Atribut dan Eksperimen untuk Memproduksi Aturan-aturan.. 73 Bab V Kesimpulan dan Penelitian Lanjutan ....................................................... 81 V.1 Kesimpulan ............................................................................................... 81 V.2 Penelitian Lanjutan.................................................................................... 82 DAFTAR PUSTAKA ........................................................................................... 84 RIWAYAT HIDUP............................................................................................... 89
xiii
DAFTAR LAMPIRAN LAMPIRAN A Entropi dan Information Gain .................................................... 91 LAMPIRAN B Overview ORDBMS, Studi Kasus: Oracle ................................. 94 LAMPIRAN C Pencarian Fitur ORDBMS yang Mendukung Efisiensi pada Algoritma C4.5.......................................................................... 104 LAMPIRAN D Deskripsi Tabel untuk Eksperimen .......................................... 116 LAMPIRAN E Algoritma Perolehan Kembali Citra dan Transformasi Wavelet 2Dimensi ..................................................................................... 120 LAMPIRAN F Algoritma Pengelompokan dan Klasifikasi Citra Batik Berbasis Bentuk, Tekstur dan Warna....................................................... 127
xiv
DAFTAR GAMBAR Gambar I.1. Langkah-langkah dalam KDD (Fayyad et al., 1996 )........................ 2 Gambar I.2. Pengelompokan teknik klasifikasi. .................................................... 4 Gambar I.3. Skema klasifikasi secara umum. ......................................................... 4 Gambar I.4. Diagram alir pelaksanaan penelitian................................................ 17 Gambar II.1. Proses klasifikasi data: (a) Tahap belajar. (b) Tahap pengujian dan penggunaan aturan-aturan untuk mengklasifikasi rekord baru (Han et al., 2001)...................................................................................... 19 Gambar II.2. Contoh pohon keputusan. ................................................................ 19 Gambar II.3. Model pohon keputusan................................................................... 21 Gambar II.4. Contoh hasil partisi himpunan data pada eksekusi Algoritma II.1 untuk satu rekur (Han et all, 2001). ................................................ 26 Gambar III.1. Pohon keputusan dan partisi himpunan data. ................................ 31 Gambar III.2. Ilustrasi prinsip kerja Algoritma III.1 (Generate_decision_tree_ext). ........................................................ 37 Gambar III.3. Arsitektur sistem yang mengimplementasikan Algoritma III.1. .... 42 Gambar III.4. Sebuah pohon dikonstruksi dengan memanggil prosedur tersimpan berbasis SQL (di sini, depth_Db = 2) dan J48 untuk melanjutkan konstruksi pohon di tiap cabang...................................................... 44 Gambar III.5. Pseudo-code untuk program utama dan konstruksi pohon hibrid pada C4.5Db.................................................................................... 45 Gambar III.6. Waktu eksekusi dalam konstruksi pohon untuk tabel dengan (a) 5, (b) 10, (c) 15, (d) 20, (e) 30 dan (f) 10 kolom, dimana tabel pada (f) memiliki jumlah nilai unik dua kali jumlah nilai unik tabel pada (b). ......................................................................................................... 50 Gambar III.7. Waktu eksekusi untuk tabel berukuran sangat besar..................... 51 Gambar IV.1 Skema klasifikasi tabel transaksi penjualan batik pada tahap belajar. ......................................................................................................... 59 Gambar IV.2. Langkah-langkah klasifikasi data transaksi penjualan batik.......... 60
xv
Setelah aturan dievaluasi, pada akhir bab juga akan diberikan ilustrasi pemanfaatan aturan atau algoritma C4.5Db pada sistem penjualan batik online...................................................................................... 60 Gambar IV.3. Contoh motif batik. ........................................................................ 64 Gambar IV.4. Motif lereng yang memberi impresi: (a) jelas-tegas-dinamis (b) rapi-sejuk (atas), rapi – hangat (tengah) dan feminim (bawah). ..... 65 Gambar IV.5. Motif ceplok yang memberi impresi: (a) rapi – berenergi (b) rapihangat (c) rapi – matang – klasik (d) rapi – sejuk (e) tegas. ........... 66 Gambar IV.6. Motif buketan yang memberi impresi: (a) feminim (b) klasik (c) rapi – dinamis. ................................................................................. 66 Gambar IV.7. Diagram kelas Batik dan Customer. ............................................. 68 Gambar IV.8. Rancangan tabel transaksi penjualan batik sintetik....................... 69 Gambar IV.9. Waktu eksekusi pengelompokan citra berbasis kontras dengan (a) Algoritma-2 (b) Algoritma-3 untuk citra berukuran 64×64, 128×128 dan 256×256 piksel. ........................................................................ 71 Gambar IV.10. Waktu eksekusi Algoritma-3 s/d Algoritma-8. ........................... 72 Gambar IV.11. Pohon yang dihasilkan pada eksperimen ke-1. ........................... 75 Gambar IV.12. Pohon yang dihasilkan pada eksperimen ke-2. ........................... 75 Gambar IV.13. Pohon yang dihasilkan pada eksperimen ke-3. ........................... 75 Gambar IV.14. Pohon yang dihasilkan pada eksperimen ke-4. ........................... 76 Gambar IV.15. Pohon (tidak lengkap) yang dihasilkan pada eksperimen ke-5.. 79 Gambar IV.16. Skema sistem penjualan batik online yang memanfaatkan C4.5Db. ........................................................................................... 80
xvi
DAFTAR ALGORITMA Algoritma II.1. Algoritma konstruksi pohon keputusan (Quinlan, 1993; Han et.al., 2001). ................................................................................ 22 Algoritma III.1 Algoritma konstruksi pohon keputusan yang dikembangkan pada algoritma C4.5Db........................................................................ 38
xvii
DAFTAR TABEL Tabel I.1. Kriteria teknik klasifikasi data dan faktor-faktor yang perlu diperhatikan....................................................................................... 14 Tabel III.1. Akurasi dan waktu eksekusi konstruksi pohon keputusan................ 48 Table III.2. Jumlah blok tabel dan indeks bitmap pada tabel dengan 5 kolom.... 54 Table IV.1. Warna kulit-rambut dan warna fesyen yang disarankan ................. 61 Tabel IV.2. Contoh motif batik klasik. ................................................................ 63 Table IV.3. Contoh motif, arti dan impresi batik................................................. 63 Tabel IV.4. Prosentase kesalahan Algoritma-1 dan Algoritma-2 ....................... 71 Tabel IV.5. Kesalahan Algoritma-3 s/d Algoritma-8.......................................... 72 Tabel IV.6. Kolom-kolom dan kelas untuk eksperimen. .................................... 73 Tabel IV.7. Prosentase Aturan yang Berpotensi Bermanfaat .............................. 77
xviii
DAFTAR SINGKATAN DAN LAMBANG SINGKATAN
Nama
Pemakaian pertama kali pada halaman
KDD
Knowledge Discovery in Databases
1
DBMS
Database Management System
1
RDBMS
Relational Database Management System
2
ORDBMS
Object-Relational Database Management System
2
SQL
Structured Query Language
2
C4.5
Nama algoritma klasifikasi pohon keputusan yang dikembangkan oleh Quinlan
J48
5
Implementasi algoritma C4.5 dengan bahasa Java yang menjadi modul pada aplikasi machine learning Weka System
42
CPU
Central Processing Unit
46
API
Application Programming Interface
98
HSV
Hue Saturation Value
121
RGB
Red Green Blue
121
DWT
Discrete Wavelet Transform
121
CMY
Cyan Magenta Yellow
137
LL
Low Low
127
LH
Low High
127
HL
High Low
127
HH
High High
127
TWD
Transformasi Wavelet Diskret
127
xix
LAMBANG
Nama
Pemakaian pertama kali pada halaman
Simpul pada pohon keputusan
19
Daun pada pohon keputusan
19
an
Atribut
21
nk
Nilai kelas
21
vi
Nilai atribut
21
Cj
Nilai kelas yang terdapat pada sampel data
23
X
Himpunan sampel data
23
σ
Operator seleksi
29
∏
Operator proyeksi
29
xx
Bab I Pendahuluan I.1 Latar Belakang Data yang tersimpan di Database Management Systems (DBMS) dapat terus bertambah ukurannya dan makin lama menjadi makin besar. Beberapa tahun terakhir ini, para pengguna DBMS sudah mulai merasakan adanya kebutuhan untuk
menambang data yang tersimpan di DBMS untuk mengekstraksi
pengetahuan yang berharga dari data yang menumpuk ini (Fayyad et al., 1996; Berry et al., 1997; Han et al., 2001). Untuk menjawab kebutuhan ini, lahirlah teknik pencarian pengetahuan yang dinamakan
Knowledge Discovery in
Databases (KDD). Adapun langkah-langkah utama KDD adalah sebagai berikut (Fayyad et al., 1996): a. Seleksi. Dalam tahap ini dilakukan pemahaman terhadap masalah yang akan dicari solusinya melalui penemuan pengetahuan, pengetahuan sebelumnya yang relevan, penentuan tujuan dan pemilihan data yang akan dianalisis. b. Pra-pengolahan. Dalam tahap ini dilakukan proses pra-pengolahan data, termasuk pembersihan data. c. Transformasi. Dalam tahap ini dilakukan pengurangan dan/atau pengubahan tipe data, sehingga data siap untuk dipresentasikan ke teknik-teknik data mining. d. Data mining. Dalam tahap ini dilakukan pemilihan tugas data mining yang sesuai dengan tujuan dan algoritma data mining untuk pencarian pola. e. Interpretasi/evaluasi. Dalam tahap ini dilakukan visualisasi dan interpretasi terhadap pola yang ditemukan untuk dijadikan pengetahuan. Pengetahuan didefinisikan sebagai pola yang memenuhi kriteria interestingness measure tertentu (kesederhanaan, kepastian, potensi pemanfaatan atau kebaruan). Gambar I.1 menunjukkan ilustrasi langkah-langkah dalam KDD.
1
Gambar I.1. Langkah-langkah dalam KDD (Fayyad et al., 1996 ) Teknik data mining yang digunakan untuk mencari pola dari data di antaranya adalah teknik pengelompokan, klasifikasi, regresi dan analisis keranjang pasar. Secara ringkas, teknik data mining difungsikan untuk mendapatkan deskripsi dari data dan mendapatkan model dari data yang berguna untuk prediksi. Algoritma-algoritma data mining kebanyakan berasal atau merupakan bentuk pengembangan dari
algoritma-algoritma dari bidang ilmu machine learning,
statistika, inteligensia buatan dan jaringan saraf tiruan. Karena tidak dirancang untuk menangani data dalam ukuran yang sangat besar, sedangkan data mining dimaksudkan untuk menangani data dalam ukuran yang demikian, maka salah satu arah penelitian di bidang data mining adalah mengembangkan algoritmaalgoritma tersebut agar dapat menangani data yang berukuran sangat besar. Selain itu, integrasi teknik-teknik data mining ke dalam DBMS, khususnya ObjectRelational DBMS (ORDBMS2) yang merupakan teknologi DBMS terbaru, juga masih merupakan bidang penelitian yang aktif (Han et al., 2001; Saleem et al., 2003). Tujuan utama dari integrasi ini adalah untuk “melebur” algoritma data mining agar menjadi fungsi internal ORDBMS yang berkualitas, sehingga pengguna dapat menggunakannya sesuai dengan kebutuhan.
Karena DBMS
merupakan teknologi yang sudah matang, digunakan secara luas, dapat mengelola data dalam ukuran yang sangat besar, memfasilitasi kueri tabel yang mudah dengan Structured Query Language (SQL) dan memiliki banyak fitur yang mengakomodasi kebutuhan pengguna ORDBMS, maka pengembangan dan 2
ORDBMS adalah Relational DBMS yang dikembangkan dengan menambahkan ekstensi obyekrelasional (lihat Lampiran B).
2
peleburan algoritma data mining ke dalam ORDBMS yang baik adalah dengan memanfaatkan semua ini. Skema Integrasi teknik data mining ke dalam ORDBMS. Keperluan integrasi data mining dengan Relational DBMS (RDBMS) dan ORDBMS ini secara lebih rinci dibahas pada (Han et al., 2001), (Chaudhuri, 1998), (Sarawagi et al., 1998) dan (Saleem et al., 2003). Han et al. (2001) menyatakan bahwa data mining dapat diintegrasikan ke dalam DBMS dengan skema tanpa kopling, kopling longgar, kopling setengah ketat, dan kopling ketat. Dari semuanya, kopling ketat adalah yang paling disukai karena dapat memfasilitasi implementasi fungsi-fungsi data mining yang efisien, unjuk-kerja yang tinggi dan pengolahan informasi yang terintegrasi. Pada kopling ketat, subsistem data mining diperlakukan sebagai salah satu komponen dari sistem informasi. Fungsi-fungsi data mining dioptimasi dengan memanfaatkan struktur data, skema pengindeksan dan teknik-teknik kueri yang ada pada DBMS. Khusus untuk ORDBMS, (Saleem et al., 2003) mengajukan konsep bahwa integrasi teknik-teknik data mining ke dalam ORDBMS dapat dilakukan dengan dua skema, yaitu: -
Skema-1: Peleburan teknik data mining sebagai skema di dalam basisdata. Di sini, teknik data mining dijadikan salah satu obyek basisdata dalam bentuk prosedur.
-
Skema-2: Teknik-teknik data mining diimplementasikan di dalam host language untuk ORDBMS.
Teknik klasifikasi dalam data mining dikelompokkan ke dalam teknik pohon keputusan, Bayesian (Naïve Bayesian dan Bayesian Belief Networks), Jaringan Saraf Tiruan (Backpropagation), teknik yang berbasis konsep dari penambangan aturan-aturan asosiasi, dan teknik lain (k-Nearest Neighboor, algoritma genetik, teknik dengan pendekatan himpunan rough dan fuzzy.) (Lihat Gambar I.2.). Setiap teknik memiliki kelebihan dan kekurangannya sendiri. Data dengan profil tertentu mungkin paling optimal jika diklasifikasi dengan teknik tertentu, atau dengan kata lain, profil data tertentu dapat mendukung termanfaatkannya kelebihan dari teknik ini. Dengan demikian, sebaiknya DBMS menyediakan
3
semua teknik-teknik klasifikasi bagi pengguna, agar pengguna dapat memilih yang sesuai dengan kebutuhan. Teknik Klasifikasi
Lain-lain kNN
Pohon Keputusan
Bayesian Naïve
Jaringan Saraf Backpropagation
Aturan Asosiasi
Algoritma Genetik
C4.5 Belief Networks CART
Rough Set
...
Fuzzy Set
CHAID ... RainForest ...
Gambar I.2. Pengelompokan teknik klasifikasi. Secara umum, proses klasifikasi dapat dilakukan dalam dua tahap, yaitu proses belajar dari data pelatihan dan klasifikasi kasus baru (lihat Gambar I.3). Pada proses belajar, algoritma klasifikasi mengolah data pelatihan untuk menghasilkan sebuah model. Setelah model diuji dan dapat diterima, pada tahap klasifikasi, model tersebut digunakan untuk memprediksi kelas dari kasus baru untuk membantu proses pengambilan keputusan (Han et al.,2001; Quinlan, 1993). Kelas yang dapat diprediksi adalah kelas-kelas yang sudah terdefinisi pada data pelatihan. Karena proses klasifikasi kasus baru cukup sederhana, penelitian lebih banyak ditujukan untuk memperbaiki teknik-teknik pada proses belajar. training dataset
classification algorithm
model
test model
learning process (off-line) classification (on-line) new case(s)
tested model
Gambar I.3. Skema klasifikasi secara umum.
4
predicted class(es)
Beberapa contoh algoritma pada kelompok algoritma pohon keputusan adalah C4.5, CART, S-Plus Tree, FACT, QUEST dan LMDT (Lim et al, 1998). Dalam membangun model yang berupa pohon keputusan, C4.5 menggunakan pendekatan teori informasi information gain (lihat Lampiran A), CART menggunakan Gini Index (Berry et al., 1997). S-Plus Tree adalah pengembangan dari CART yang menambahkan ukuran probabilitas pada pohon. FACT memanfaatkan uji hipotesis statistik, sedangkan QUEST merupakan pengembangan FACT dengan perbaikan pada teknik konstruksi pohon.
LMDT bekerja berdasarkan ukuran statistik
multivariat. Di antara algoritma-algoritma tersebut, algoritma C4.5 (Quinlan, 1993) termasuk yang populer (Berry et al., 1997; Han et al., 2001). Dibandingkan dengan algoritman yang lain, algoritma C4.5 memiliki kelebihan utama karena dapat
menghasilkan
model
berupa
pohon
atau
aturan
yang
mudah
diinterpretasikan dan dikonversi ke aturan-aturan SQL, memiliki tingkat akurasi yang dapat diterima, dapat menangani atribut bertipe diskret dan numerik, serta efisien dalam menangani atribut bertipe diskret (Han et al., 2001; Lim et al., 1998). Berikut ini diberikan bahasan lebih lanjut tentang algoritma C4.5. Pada algoritma C4.5, model yang dihasilkan oleh proses “belajar” dari data pelatihan berupa sebuah pohon keputusan. Pohon keputusan ini kemudian dapat dimanfaatkan untuk memprediksi kelas dari kasus yang baru. Untuk mengkonstruksi pohon, algoritma C4.5 membaca seluruh sampel data pelatihan dari storage dan memuatnya ke memori. Pada komputasinya, algoritma C4.5 menelaah sampel demi sampel di memori untuk mengkonstruksi pohon (prinsip kerja C4.5 adalah memory based approach). (Pemuatan sampel ke memori dimaksudkan untuk menghindari pembacaan sampel ke storage yang berulang-ulang, yang dapat mengakibatkan tingginya akses ke input-output dan memperburuk waktu eksekusi algoritma.) Dengan demikian, satu kelemahan algoritma C4.5 yang masuk dalam kategori ”skalabilitas” adalah algoritma ini hanya dapat digunakan jika data pelatihan dapat disimpan secara keseluruhan dan pada waktu yang bersamaan di memori. Padahal data mining ditujukan untuk menganalisis data dari yang berukuran kecil hingga sangat besar,
5
yang secara “de facto” dikelola oleh DBMS (baik sebagai basisdata maupun sebagai data warehouse). Berdasarkan hasil studi yang telah dilakukan, penulis mendapati tiga penelitian yang ditujukan untuk mengatasi masalah skalabilitas di atas. Pendekatan yang digunakan adalah: (a) Data dipartisi dan konstruksi pohon dilakukan secara parsial. Pada setiap saat,
satu partisi dimuat di memori. Setelah semua partisi data diolah,
pohon-pohon parsial digabungkan untuk menghasilkan pohon utuh. Masalah pada pendekatan ini adalah tingkat keakuratan pohon gabungan ini buruk (Han et al., 2001). Ini terjadi karena ukuran-ukuran statistik yang diperlukan untuk konstruksi pohon dihitung dari data parsial (lokal), yang mungkin tidak merepresentasikan statistik data secara keseluruhan (global). (b) Pemanfaatan perintah SQL dan fungsi-fungsi agregat pada DBMS untuk “meringkas” data pelatihan (yang disimpan sebagai tabel basisdata) menjadi sebuah “tabel keputusan” (algoritma Grouping and Counting (Lu et al., 2000)).
Dengan pendekatan ini, data yang berukuran sangat besar dapat
ditangani. Kelemahan dari pendekatan ini adalah: pada proses klasifikasi kasus baru (yang memanfaatkan tabel keputusan) masih diperlukan algoritma lain, yaitu k-Nearest Neighbor atau Naive Bayes. k-Nearest Neighbor memprediksi kelas pada kasus baru berdasarkan kelas dengan bobot terbesar yang dihitung dari kelas-kelas di “tetangga terdekat”. Naive Bayes memprediksi kelas pada kasus baru berdasarkan nilai terbesar dari nilai-nilai peluang keanggotaan terhadap kelas-kelas yang ada. Dengan penggunaan algoritma lain pada proses klasifikasi kasus baru ini, berarti algoritma ini menurunkan
nilai
interpretabilitas
pada
model
untuk
memperbaiki
skalabilitas (lihat kriteria pada Tabel I.1). (c) Pembuatan himpunan-AVC (Attribute-Value Classlabel ) pada setiap simpul pohon (disimpan di memori) yang lalu digunakan untuk melanjutkan cabang di simpul ini (algoritma RainForest (Gehrke, 1998)). Bila seluruh himpunanAVC pada sebuah level pohon tidak dapat dimuat secara bersama-sama di memori, maka data pelatihan dipartisi, disimpan di file sementara, lalu
6
himpunan-AVC dibuat hanya untuk partisi ini. Kemudian, cabang dilanjutkan untuk setiap partisi. Dengan pendekatan ini, data yang berukuran sangat besar dapat ditangani.
Jika algoritma ini akan diintegrasikan di
ORDBMS agar menjadi fungsi internalnya, masalahnya adalah: algoritma ini tidak memanfaatkan fondasi DBMS (aljabar relasional) dan fungsi-fungsi ORDBMS yang sudah dioptimasi untuk mengakses data yang berukuran sangat besar. (Skema integrasi kopling ketat, yang sudah dibahas sebelumnya, menyatakan bahwa integrasi yang baik adalah yang memanfaatkan fungsi-fungsi DBMS.) Pada bisnis ritel fesyen atau penjualan kain secara online, misalnya, model prediksi dapat digunakan untuk membantu para pelanggan dalam memilih busana atau kain. Sistem pembantu pelanggan dalam pemilihan produk yang sangat beragam menjadi masalah yang tidak sederhana ketika aturan/pedoman panduan tidak tersedia atau jumlah aturan/pedoman yang ada sangat besar. Berdasarkan hasil studi didapati bahwa sampai saat ini calon pemakai batik yang berbelanja ke toko tradisional maupun online belum diberi panduan agar dapat memilih batik yang sesuai dengan profil pemakai, padahal pilihan batik sangat banyak. Batik, yang dipercaya sebagai produk Indonesia asli, sudah diproduksi dan dipasarkan secara luas. Beberapa contoh tipe batik yang dipasarkan adalah batik kraton, batik sudagaran, batik Belanda, batik Cina, batik Djawa Hokokai dan batik Indonesia yang juga disebut batik modern (Kerlogue, 2004; Doellah, 2002). Batik-batik ini berbeda dalam hal motif, teknik produksi, variasi warna, bahan warna dan bahan tekstil. Motif yang dirancang dengan arti filosofis tertentu akan memberikan impresi tertentu kepada pemakainya. Karena keberagaman motif dan warna batik, memilih batik yang sesuai dengan profil pemakai (meliputi kepribadian, warna kulit dan rambut) agar berpenampilan menarik, terkadang tidak mudah untuk dilakukan karena keterbatasan pengetahuan mereka tentang batik.
7
Pembuatan model prediksi dengan algoritma C4.5 yang akan dikembangkan terhadap data transaksi pembelian batik (berisi profil pemakai dan citra batik yang dibeli dan sudah sesuai dengan profil) dapat dilakukan untuk mendapatkan model yang berpotensi membantu pemilihan batik. Setelah diidentifikasi variabel apa saja yang mencirikan profil orang (terkait dengan busana yang dikenakan, khususnya batik), maka ditemukan tiga faktor, yaitu: kepribadian, warna kulit dan rambut (Hardisurya, 2004). Sedangkan yang penting untuk dipertimbangkan dalam pemilihan batik (sebagai busana) adalah motif, warna dan tingkat kontras (Doellah, 2002; Hardisurya, 2004). Karena, citra batik memiliki ciri-ciri tersendiri, maka untuk mengenali motif dan kontras warna pada citra ini diperlukan teknik-teknik khusus. (Ciri-ciri ini adalah adanya isen-isen atau polapola kecil yang digunakan untuk mengisi ruang kosong di antara pola yang besar, motif dan warna fesyen yang bervariasi. ) Wavelet (Mallat, 1999) dikenal sebagai teknik analisis sinyal yang relatif baru, yang memperbaiki kelemahan pada teknik Fourier.
Dari hasil studi didapati
bahwa transformasi wavelet 2-dimensi untuk citra memiliki kelebihankelebihan, antara lain: dapat mengenali tekstur, cepat, menghasilkan koefisien rata-rata dan detil pada beberapa tingkat resolusi. Selain itu, beberapa tahun terakhir ini algoritma-algoritma image retrieval (berbasis tekstur dan bentuk) sudah dikembangkan. Contoh algoritma image retrieval berbasis tekstur yang memanfaatkan wavelet adalah WBIIS (Wang et al., 1997), Windsurf (Bartolini, 2001) dan WALRUS (Natsev et al., 2004). Sedangkan yang berbasis bentuk diantaranya dikembangkan dengan memanfaatkan momen, Fourier descriptor (Lu, 1999) dan pencocokan tepi-tepi bentuk (Hirata et al, 1992; Sajjanhar, 1998). Teknik-teknik pada algoritma tersebut berpotensi untuk dimanfaatkan dalam proses pra-pengolahan citra batik agar citra batik dapat diklasifikasi.
8
I.2 Masalah Penelitian a. Masalah pada Penelitian Utama Dalam mengkonstruksi pohon, algoritma C4.5 memuat seluruh kasus atau rekord pada data pelatihan dari disk ke dalam memori, sehingga algoritma ini dibatasi oleh ketersediaan memori perangkat keras. Padahal, teknik-teknik data mining dimaksudkan untuk menangani data hingga mencapai ukuran yang sangat besar. Di sisi lain, DBMS sudah memiliki kemampuan untuk mengelola dan mengakses data yang berukuran sangat besar yang disimpan di disk (memori sekunder), diantaranya melalui SQL, pengoptimasi kueri dan pengindeksan. SQL dapat dimanfaatkan untuk mengembangkan algoritma C4.5 yang memory-based menjadi semi-memory-based (mendapatkan statistik data untuk konstruksi pohon dari tabel basisdata dengan SQL dan memuat partisi data ke memori juga dengan SQL) agar dapat menangani data yang berukuran sangat besar (secara teoritis hingga mencapai ukuran tak terhingga). Namun, penggunaan SQL untuk mendapatkan statistik data langsung dari tabel yang dilakukan berulang-ulang dapat memperburuk waktu eksekusi algoritma (time response), yang merupakan tolok ukur efisiensi pada data mining. Untuk mengatasi kendala tersebut, pengoptimasi kueri dan pengindeksan (khususnya bitmap) dapat dimanfaatkan. Pemuatan partisi data (dengan ukuran relatif kecil) ke memori juga dimaksudkan agar komputasi dapat dilakukan secara cepat. Dengan pendekatan ini, maka efisiensi dapat diperbaiki. b. Masalah pada Studi Kasus Pembuatan model prediksi, berupa aturan-aturan yang berguna dalam membantu pemilihan batik yang mengasosiasikan profil pemakai (diwakili oleh kepribadian, warna kulit dan rambut) terhadap batik yang sesuai (dicirikan oleh warna, motif dan tingkat kontras batik) belum pernah dilakukan, padahal model ini berpotensi untuk dimanfaatkan. Maka, eksperimen-eksperimen untuk mendapatkan model ini perlu dilakukan dengan terlebih dahulu menyediakan data pelatihan yang mengandung profil-profil pemakai dan batik yang sesuai (tersimpan di DBMS
9
sebagai citra). Model yang dihasilkan kemudian perlu dikaji untuk mendapatkan aturan-aturan yang berharga. Agar model prediksi dapat dibuat dari data pelatihan, citra batik perlu untuk dipraolah dengan tujuan untuk mengenali motif dan tingkat kontras. Isu utama pada pra-pengolahan citra batik dengan tujuan tersebut adalah tingkat akurasi dan kecepatan harus baik (dapat diterima). Citra batik dikenal memiliki ciri-ciri khusus (adanya isen-isen, motif dan warna yang bervariasi), sehingga memerlukan teknik analisis yang khusus. Karena itu perlu dikembangkan algoritma untuk mempraolah citra batik yang berfungsi untuk mengenali motif dan tingkat kontras warna yang cepat dan akurat. I.3 Tujuan Penelitian Tujuan penelitian ini adalah: a. Melakukan studi terhadap algoritma klasifikasi data mining, khususnya C4.5, untuk mendalami algoritma ini, mengetahui versi-versi turunannya dan hasil penelitian yang sudah ada yang terkait dengan upaya untuk mengembangkan dan mengintegrasikan algoritma ini ke dalam ORDBMS. b. Bertitik tolak dari keterbatasan memori sistem komputer dan data pelatihan yang tersimpan di ORDBMS dapat sangat besar, maka tujuan utama penelitian ini adalah mengembangkan skalabilitas algoritma pohon keputusan C4.5 dengan memanfaatkan fitur akses data yang tidak terhingga pada DBMS dan hasil pengembangan ini disebut C4.5Db, sekaligus mengintegrasikan algoritma ini ke dalam ORDBMS. Karena algoritma akan diintegrasikan dengan ORDBMS, pendekatan yang akan digunakan adalah konsep operator relasi pada aljabar relasional. Teknik yang akan dicoba: Jika seluruh data pelatihan tidak dapat dimuat ke memori, maka konstruksi pohon dilakukan dengan mengakses tabel ORDBMS secara langsung (memanfaatkan SQL untuk operator seleksi, non-memory-based approach). Setelah sampai pada level tertentu, konstruksi cabang-cabang pada pohon dilakukan dengan terlebih dahulu memuat satu demi satu partisi data untuk setiap cabang (subpohon) ke memori (pemuatan dilakukan dengan memanfaatkan SQL untuk operator seleksi dan proyeksi), lalu melanjutkan komputasinya dengan
10
mengakses partisi data di memori (memory-based approach).
Dengan
demikian, ukuran partisi data pada sub-pohon dibatasi oleh kapasitas memori, tetapi jumlah partisinya tidak, sehingga secara teoritis C4.5Db dapat digunakan untuk mengkonstruksi pohon dengan ukuran yang tidak terbatas. Karena efisiensi atau kecepatan eksekusi merupakan kriteria penting untuk mengukur kualitas teknik klasifikasi, efisiensi juga diperhatikan pada tahap implementasi algoritma di lingkungan ORDBMS.
Studi eksploratif dan
investigatif terhadap ORDBMS untuk mencari fitur-fitur yang mendukung efisiensi juga akan dilakukan dan hasilnya dimanfaatkan pada integrasi algoritma ke dalam ORDBMS. Dengan mempertimbangkan bahwa kopling ketat adalah yang terbaik (Han et al., 2001), maka integrasi algoritma C4.5 ke dalam ORDBMS akan diarahkan untuk menerapkan Skema-1 (lihat bagian Latar Belakang). Kontribusi utama pada bagian penelitian ini adalah dihasilkannya algoritma klasifikasi pohon keputusan yang dapat menangani data pelatihan dengan ukuran yang sangat besar (berisi jutaan sampel/kasus), berbentuk sederhana (mudah dipahami bagi yang sudah mengenal bahasa standar DBMS, yaitu SQL) dan dimanfaatkannya fungsi-fungsi DBMS pada integrasinya ke ORDBMS. c. Melakukan pengujian terhadap algoritma C4.5Db untuk mengukur keberhasilan pendekatan yang digunakan pada C4.5Db dengan tolok ukur algoritma C4.5. Eksperimen-eksperimen dilakukan untuk mengamati kemampuannya dalam mengkonstruksi model (berupa pohon keputusan) pada data pelatihan sintetik mulai dari yang berukuran kecil (ribuan kasus atau rekord) hingga sangat besar (jutaan kasus). Data yang sama akan dipresentasikan ke algoritma C4.5 dan C4.5Db, proses eksekusinya akan diobservasi dan waktu eksekusi untuk mengkonstruksi pohon keputusan akan dicatat (waktu eksekusi ini akan menjadi ukuran efisiensi algoritma). Perbandingan tidak dilakukan terhadap tiga pendekatan yang telah ada (partisi data, Grouping and Counting dan RainForest). d. Melakukan studi terhadap transformasi wavelet 2-dimensi, hasil penelitian teknik-teknik analisis pada algoritma image retrieval, khususnya yang memanfaatkan wavelet, untuk mendapatkan teknik yang mendukung
11
kecepatan dan akurasi pada teknik pra-pengolahan citra batik. Setelah itu, mengembangkan algoritma-algoritma pra-pengolahan citra batik yang berfungsi untuk mengenali motif dan tingkat kontras warna. Kontribusi utama pada bagian penelitian ini adalah dihasilkannya algoritma pengenal motif dan tingkat kontras warna untuk citra batik, karena sebelumnya belum ditemukan algoritma serupa. e. Mengumpulkan citra-citra batik nyata, lalu melakukan eksperimen-eksperimen untuk menguji keakuratan dan kecepatan dari algoritma-algoritma pada butir (d). f. Menggunakan hasil integrasi di atas (butir b) pada eksperimen-eksperimen untuk membuat model prediksi (pohon keputusan) dari tabel transaksi sintetik penjualan batik. Nilai-nilai atribut pada setiap rekord di tabel ini berisi
profil
pemakai
dan
batik
yang
sesuai
untuknya
(dengan
mempertimbangkan motif, warna dan tingkat kontras). Aturan-aturan pada pohon keputusan yang dihasilkan kemudian dikaji dengan menggunakan salah satu tolok ukur
interestingness measure pada data mining, yaitu potensi
pemanfaatannya. Manfaat dari pra-pengolahan citra batik ditunjukkan dengan dihasilkannya aturan-aturan yang berpotensi untuk membantu pemilihan batik. Kontribusi utama pada bagian penelitian ini adalah dihasilkannya model prediksi
(berupa
aturan-aturan)
yang
mengasosiasikan
profil
orang
(kepribadian, warna kulit dan rambut) dengan batik yang sesuai (diciri oleh motif, warna dan kontras) yang berpotensi untuk membantu pemilihan batik pada sistem penjualan batik online.
I.4 Ruang Lingkup dan Batasan Penelitian Ruang lingkup dan batasan penelitian ini adalah: a. Masukan algoritma pohon keputusan yang dikembangkan dan diintegrasikan ke dalam ORDBMS adalah sebuah tabel di basisdata. b. Algoritma pra-pengolahan data citra yang akan dikembangkan ditujukan khusus untuk citra batik. c. ORDBMS yang dipilih sebagai studi kasus adalah Oracle 10g. Pemilihan ini dilakukan karena DBMS ini sudah mengimplementasikan data warehouse
12
(yang mengelola data sangat besar), memiliki prosedur tersimpan Java yang bersifat open-source dan mengimplementasikan konsep berorientasi-obyek secara lengkap.
I.5 Asumsi yang Digunakan Data yang tersimpan di dalam ORDBMS dan perlu diklasifikasi adalah data yang tersimpan di sebuah tabel basisdata yang memiliki kolom-kolom bertipe diskret, numerik dan obyek citra. Pada tahap awal di dalam proses penemuan pengetahuan dari data, data perlu dipilih dan dikumpulkan terlebih dahulu, lalu disimpan ke dalam sebuah tabel.
I.6 Hipotesis Hipotesis pada penelitian ini adalah: a. Skalabilitas algoritma C4.5 pada fase pembuatan model (konstruksi pohon keputusan) dapat dikembangkan dengan pendekatan konsep operator relasi seleksi dan proyeksi pada aljabar relasional agar dapat menangani data yang tersimpan di tabel ORDBMS dengan ukuran yang sangat besar. b. Integrasi algoritma C4.5Db ke dalam ORDBMS akan memudahkan pengguna dalam mengklasifikasi data yang tersimpan di ORDBMS dan menjadikan proses klasifikasi data menjadi lebih efisien. c. Algoritma pengenal motif dan kontras warna yang cepat dan akurat (untuk pra-pengolahan citra batik) dapat dikembangkan dengan memanfaatkan transformasi wavelet 2-dimensi dan teknik-teknik pada algoritma image retrieval. d. Pra-pengolahan citra batik mendukung dihasilkannya pohon keputusan yang bermanfaat untuk membantu pemilihan batik yang sesuai dengan profil orang tertentu.
I.7 Metodologi Penelitian Algoritma klasifikasi data dapat dibandingkan dan dievaluasi berdasarkan kriteria (Han et al., 2001):
13
a. Keakuratan prediksi: Kemampuan model untuk dapat memprediksi label kelas terhadap data baru atau yang belum diketahui sebelumnya dengan baik. b. Kecepatan / efisiensi: Waktu komputasi yang diperlukan untuk membuat dan menggunakan model. c. Kehandalan: Kemampuan model untuk memprediksi dengan benar walaupun data mengandung derau atau ada nilai dari atribut yang hilang. d. Skalabilitas: Kemampuan untuk membangun model secara efisien untuk data berjumlah besar (aspek ini akan mendapatkan penekanan). e. Interpretabilitas: Model yang dihasilkan mudah dipahami. Untuk memenuhi kriteria di atas, faktor-faktor yang harus diperhatikan dalam penelitian untuk mengembangkan algoritma C4.5 diberikan pada Tabel I.1. Tabel I.1. Kriteria teknik klasifikasi data dan faktor-faktor yang perlu diperhatikan (Han et al., 2001). Kriteria
Yang harus diperhatikan
Kecepatan/efisiensi Waktu kompleksitas algoritma, lalu-lintas masukan dan keluaran ke/dari disk minimal, grafik waktu eksekusi terhadap jumlah rekord / obyek tidak berbentuk eksponensial / cenderung “landai”. Kehandalan Ada mekanisme untuk menangani derau dan nilai atribut yang hilang. Keakuratan Kesalahan prediksi minimal atau dapat diterima. prediksi Skalabilitas Penggunaan ruang memori tidak dibatasi oleh memori atau dapat diakomodasi sistem. Interpretabilitas Representasi aturan-aturan keluaran algoritma mudah dipahami dan dikonversikan ke SQL.
Kehandalan, keakuratan prediksi dan interpretabilitas C4.5 diketahui sudah baik. Maka rencana penelitian dibuat untuk mencari solusi masalah skalabilitas dengan tidak mengesampingkan efisiensi, integrasi C4.5 ke dalam ORDBMS dan pemanfaatannya dengan tahapan sebagai berikut: 1. Pada pengembangan dan integrasi algoritma C4.5 ke dalam ORDBMS: a. Perumusan pengembangan algoritma C4.5 di dalam ORDBMS yang memanfaatkan operator seleksi dan proyeksi pada aljabar relasional dengan tujuan untuk meningkatkan skalabilitas dan memperhatikan efisiensi algoritma C4.5.
14
b. Pencarian fitur khusus ORDBMS (dari fitur umum seperti pengindeksan, pengoptimasi kueri, SQL yang sudah dikembangkan, prosedur tersimpan dan ekstensi tipe data ORDBMS) yang dapat mendukung efisiensi dan memanfaatkan fitur-fitur ini untuk mengintegrasikan algoritma C4.5 yang dikembangkan ke dalam ORDBMS. c. Eksperimen dilakukan dengan data sintetik dan nyata serta bertujuan untuk membuktikan peningkatan skalabilitas algoritma C4.5Db yang sudah diintegrasikan ke dalam ORDBMS (dengan membandingkannya terhadap algoritma C4.5). 2. Pada pra-pengolahan obyek-obyek citra batik: a. Pemilihan transformasi wavelet 2-dimensi yang cepat dan mendukung akurasi pengenalan pola pada citra batik. b. Studi teknik-teknik analisis citra pada algoritma image retrieval berbasis bentuk dan tekstur, khususnya yang memanfaatkan wavelet. c. Pengembangan algoritma-algoritma untuk mengenali motif dan tingkat kontras-warna citra batik. d. Eksperimen dilakukan dengan citra-citra batik nyata dan bertujuan untuk membandingkan waktu komputasi dan akurasi dari algoritma-algoritma pengenal motif dan kontras citra batik yang sudah dikembangkan. 3. Pada eksperimen untuk membuat pohon keputusan dari data transaksi penjualan batik sintetik: Data untuk eksperimen disimpan di sebuah tabel basisdata, dimana citra batik pada tabel tersebut sudah dipraolah. Proses belajar dari data dilakukan beberapa kali dan masing-masing menggunakan sejumlah atribut dan kelas yang berbeda.
Pohon-pohon keputusan yang dihasilkan dari setiap eksperimen akan
dikaji berdasarkan potensi pemanfaatannya dan dibandingkan untuk mendapatkan pohon keputusan yang terbaik.
I.8 Pelaksanaan Penelitian Pelaksanaan penelitian diberikan pada Gambar I.4.
15
I.9 Sistematika Disertasi Bab I, Pendahuluan, berisi: latar belakang, masalah penelitian, tujuan penelitian, ruang lingkup dan batasan penelitian, asumsi yang digunakan, hipotesis dan metodologi penelitian. Bab II, Algoritma C4.5, berisi: bahasan umum (masukan, keluaran dan langkahlangkah utama) algoritma C4.5, algoritma konstruksi pohon pada C4.5, komputasi gain ratio pada konstruksi pohon C4.5, kompleksitas algoritma, partisi himpunan data yang diterapkan pada konstruksi pohon, hasil penelitian yang terkait dengan pengembangan C4.5 baik yang terkait dengan skalabilitas maupun perbaikan lainnya. Bab III, Pengembangan Skalabilitas dan Integrasi Algoritma C4.5 ke dalam ORDBMS, berisi: bahasan tentang konsep pembentukan partisi himpunan data (operator seleksi dan proyeksi pada aljabar relasional, partisi himpunan data dan estimasi ruang memori), perintah SQL untuk komputasi gain ratio dan partisi himpunan data, pengembangan skalabilitas algoritma pada komputasi konstruksi pohon, fitur ORDBMS yang mendukung efisiensi konstruksi pohon, implementasi algoritma yang meliputi arsitektur sistem, bahasan J48, struktur data untuk pohon keputusan, eksperimen untuk pengujian akurasi, eksperimen skalabilitas dan efisiensi beserta bahasan hasilnya. Bab IV, Klasifikasi Tabel Citra Batik, berisi: masalah pada pemilihan kain batik pada toko kain/busana, dasar teori yang mendasari pencarian solusi masalah dengan menggunakan algoritma klasifikasi pohon keputusan (langkah-langkah klasifikasi, warna fesyen, motif batik, batik sebagai obyek yang memberikan impresi tertentu), algoritma pengenal motif dan kontras yang dirancang untuk mempraolah citra batik agar dapat diklasifikasi, pembuatan aturan-aturan dari data transaksi sintetik penjualan batik dan evaluasi aturannya, serta contoh pemanfaatan aturan pada sistem penjualan online.
16
Bab V, Kesimpulan dan Penelitian Lanjutan. 1. Persiapan Penelitian: Studi Pustaka: Eksplorasi data mining, kegunaan, teknik, penerapan dan permasalahannya. Algoritma C4.5, ORDBMS. Teknik analisis citra: Fourier dan Wavelet.
Pengumpulan programprogram data mining, eksperimen dengan data nyata dan analisis hasil eksperimen.
Pendefinisian tujuan penelitian dan penyusunan proposal penelitian.
2. Penelitian Pendahuluan Studi pustaka: Algoritma-algoritma perolehan kembali citra dengan wavelet, penambangan data citra, batik, sains basisdata, fitur-fitur ORDBMS. Eksperimen dengan C4.5 dan algoritma perolehan kembali citra berbasis wavelet dengan citra tekstur sintetik.
Penulisan makalah seminar dan jurnal nasional.
3.a. Pengembangan Teknik Pra-pengolahan Citra Batik Survei dan pengumpulan citra batik, pengembangkan teknik prapengolahan citra batik, pembuatan program, eksperimen dengan citra batik.
Penulisan makalah seminar internasional dan jurnal nasional.
3.b. Pengembangan Skalabilitas Algoritma C4.5 dan Integrasinya ke dalam ORDBMS Pengembangan algoritma pada bagian komputasi konstruksi pohon. Pencarian fitur-fitur khusus yang mendukung efisiensi C4.5. dan integrasi algoritma ke dalam ORDBMS dengan memanfaatkan fitur-fitur tsb. Eksperimen dengan data nyata dan sintetik.
Penulisan makalah konferensi internasional dan jurnal nasional.
4. Klasifikasi Tabel Citra Batik dan Penulisan Disertasi Perancangan dan implementasi arsitektur klasifikasi data, eksperimen dengan tabel yang berisi data transaksi penjualan batik sintetik.
Penulisan makalah seminar nasional dan penyusunan buku disertasi.
Gambar I.4. Diagram alir pelaksanaan penelitian.
17
Bab II Algoritma C4.5
II.1 Bahasan Umum Algoritma C4.5 adalah algoritma klasifikasi data dengan teknik pohon keputusan yang terkenal dan disukai karena memiliki kelebihan-kelebihan. Kelebihan ini misalnya: dapat mengolah data numerik (kontinyu) dan diskret, dapat menangani nilai
atribut
yang
hilang,
menghasilkan
aturan-aturan
yang
mudah
diinterpretasikan dan tercepat di antara algoritma-algoritma yang menggunakan memori utama di komputer (Quinlan, 1993; Han et al., 2001; Berry et al., 1997; Ruggieri, 2001). Bab 1 sudah membahas bahwa proses klasifikasi terdiri dari dua tahap, yaitu tahap belajar dari data pelatihan untuk menghasilkan model dan tahap klasifikasi yang menggunakan model untuk prediksi kelas. Pada tahap belajar dari data, algoritma C4.5 mengkonstruksi pohon keputusan dari data pelatihan, yang berupa kasuskasus atau rekord-rekord (tupel) dalam basisdata. Setiap kasus berisikan nilai dari atribut-atribut untuk sebuah kelas. Setiap atribut dapat berisi data diskret atau kontinyu (numerik). C4.5 juga menangani kasus yang tidak memiliki nilai untuk sebuah atau lebih atribut. Akan tetapi, atribut kelas hanya bertipe diskret dan tidak boleh kosong. Tiga prinsip kerja algoritma C4.5 pada tahap belajar dari data adalah: Pertama, pembuatan pohon keputusan. Obyektif dari algoritma penginduksi pohon keputusan adalah mengkonstruksi struktur data pohon (dinamakan pohon keputusan) yang dapat digunakan untuk memprediksi kelas dari sebuah kasus atau rekord baru yang belum memiliki kelas. C4.5 mengkonstruksi pohon keputusan dengan strategi divide dan conquer. Pada awalnya, hanya dibuat node akar dengan menerapkan algoritma divide dan conquer. Algoritma ini memilih pemecahan kasus-kasus yang terbaik dengan menghitung dan membandingkan gain ratio, kemudian pada node-node yang terbentuk di level berikutnya, algoritma divide dan conquer akan diterapkan lagi. Demikian seterusnya sampai terbentuk daun-
18
daun. Algoritma konstruksi pohon secara lengkap dibahas pada bagian II.2. Sebagai ilustrasi, dari data pelatihan pada Gambar II.1, C4.5 dapat menghasilkan pohon keputusan seperti terlihat pada Gambar II.2,
dengan simbol kotak
menyatakan simpul dan elips menyatakan daun.
Gambar II.1. Proses klasifikasi data: (a) Tahap belajar. (b) Tahap pengujian dan penggunaan aturan-aturan untuk mengklasifikasi rekord baru (Han et al., 2001).
Age? <31
Fair
> 40
31-40
Exc
Income? high
low
Fair
Exc
Gambar II.2. Contoh pohon keputusan. Kedua, pemangkasan pohon keputusan dan evaluasi (opsional). Karena pohon yang dikonstruksi dapat berukuran besar dan tidak mudah “dibaca”, C4.5 dapat
19
menyederhanakan pohon dengan melakukan pemangkasan berdasarkan nilai tingkat kepercayaan (confidence level). Selain untuk pengurangan ukuran pohon, pemangkasan juga bertujuan untuk mengurangi tingkat kesalahan prediksi pada kasus (rekord) baru. Ketiga, pembuatan aturan-aturan dari pohon keputusan (opsional). Aturanaturan dalam bentuk if-then diturunkan dari pohon keputusan dengan melakukan penelusuran dari akar sampai ke daun. Setiap node dan syarat pencabangannya akan diberikan di if, sedangkan nilai pada daun akan menjadi ditulis di then. Setelah semua aturan dibuat, maka aturan akan disederhanakan (digabung atau diperumum). Sebagai contoh, aturan-aturan yang diturunkan dari pohon keputusan pada Gambar II.2 adalah: if Age < 31 or 31 <= Age<= 40 and Income = low then Fair if Age > 40 or 31 <= Age<= 40 and Income = high then Exc
Jika aturan-aturan dari pohon tidak dibuat, maka klasifikasi kasus baru dapat dilakukan dengan menggunakan pohon keputusan. Keakuratan dari aturan-aturan ini dinamakan kesalahan klasifikasi dan didefinisikan sebagai prosentase dari kasus-kasus yang diklasifikasikan dengan salah. Penjelasan rinci tentang algoritma C4.5 dapat ditemukan pada (Quinlan, 1993) dan (Ruggieri, 2001). II.2 Algoritma Konstruksi Pohon Algoritma dasar untuk induksi pohon keputusan pada C4.5 (dan turunannya) adalah algoritma greedy yang membangun pohon keputusan dari atas ke bawah (top-down) secara rekursif dengan cara divide dan conquer. Masukan dari algoritma ini adalah himpunan data yang berisi sampel-sampel data dan kandidat atribut yang harus ditelaah, terdiri dari minimal sebuah atribut prediktor dan sebuah atribut kelas. Atribut prediktor dapat bertipe diskret atau numerik, sedangkan atribut kelas harus bertipe diskret. Dalam terminologi basisdata, himpunan data ini berupa tabel, sedangkan sampel adalah rekord. Himpunan data ini dapat memiliki atribut (kolom tabel) bertipe diskret maupun kontinyu. Ilustrasi
20
model pohon keputusan diberikan pada Gambar II.3. Di sini, simpul dinotasikan dengan kotak dan daun dengan elips. Pada level teratas, pohon memiliki sebuah simpul yang merepresentasikan atribut prediktor yang digunakan untuk membuat cabang atau daun di level di bawahnya (atribut ini dinamakan atribut split). Jika atribut prediktor bertipe diskret (ad), cabang simpul dibuat untuk setiap nilai unik pada atribut diskret ini (v1, v2, …,vm). Sedangkan jika atribut prediktor bertipe kontinyu atau numerik (an), cabang simpul dibuat untuk dua buah nilai, yaitu an ≤ vth dan an > vth, dimana vth adalah sebuah nilai ambang yang didapat dari nilainilai an. Daun merepresentasikan sebuah nilai pada atribut kelas. ad
v1
v3
v2 ad v1 v 2 an
nk
....
nk
an
v4 v3 nk
≤ vth
>vth
ad
an
....
....
Gambar II.3. Model pohon keputusan. Adapun langkah-langkah konstruksi pohon, seperti ditunjukkan pada Algoritma II.1, adalah (Quinlan, 1993; Han et al., 2001): a. Pohon dimulai dengan sebuah simpul yang merepresentasikan sampel data pelatihan (langkah 1). b. Jika semua sampel berada dalam kelas yang sama, maka simpul ini menjadi daun dan dilabeli menjadi kelas (langkah 2 dan 3). c. Jika tidak, gain ratio akan digunakan untuk memilih atribut split, yaitu atribut yang terbaik dalam memisahkan data sampel menjadi kelas-kelas individu (langkah 6). Atribut ini menjadi atribut “tes” atau “keputusan” pada simpul itu (langkah 7). d. Cabang akan dibuat untuk setiap nilai pada atribut tes dan data sampel akan dipartisi lagi (langkah 8-10). e. Algoritma ini menggunakan proses rekursif untuk membentuk pohon keputusan pada setiap data partisi. Jika sebuah atribut sudah digunakan di
21
sebuah simpul, maka atribut ini tidak akan digunakan lagi di simpul anakanaknya (langkah 13). f. Proses rekursif ini berhenti jika dicapai kondisi berikut ini: -
Semua sampel pada simpul berada di dalam satu kelas (langkah 2 dan 3).
-
Tidak ada atribut lainnya yang dapat digunakan untuk mempartisi sampel lebih lanjut (langkah 4). Dalam hal ini, akan diterapkan “suara terbanyak” (langkah 5). Ini berarti mengubah sebuah simpul menjadi daun dan melabelinya dengan kelas pada suara terbanyak. Sebagai alternatif lain, distribusi kelas pada simpul ini dapat disimpan.
-
Tidak ada sampel yang memenuhi test-attribute = ai (langkah 11). Dalam hal ini, sebuah daun dibuat dan dilabeli dengan kelas yang memiliki sampel terbanyak (langkah 12).
Algorithm: Generate_decision_tree. Narrative: Generate a decision tree from the given training data. Input: The training samples, samples, represented by discrete-valued attribute; the set of candidate attributes, attribute-list. Output: A decision tree. Method: (1) create a node N; (2) if samples are all of the same class, C then (3) return N as a leaf node labeled with the class C; (4) if attribute-list is empty then (5) return N as a leaf node labeled with the most common class in samples;//majority voting (6) select test-attribute, the attribute among attribute-list with the highest gain ratio; (7) label node N with test-attribute; (8) for each known value ai of test-attribute; (9) grow a branch from node N for the condition test-attribute = ai; (10) let si be the set of samples in samples for which test-attribute = ai; // a partition (11) if si is empty then (12) attach a leaf labeled with the most common class in samples; (13) else attach the node returned by Generate_decision_tree (si, attribute-list- test-attribute);
Algoritma II.1. Algoritma konstruksi pohon keputusan (Quinlan, 1993; Han et.al., 2001). II.3 Komputasi Gain Ratio pada Konstruksi Pohon C4.5 Pada konstruksi pohon C4.5, di setiap simpul pohon, atribut dengan nilai gain ratio yang tertinggi dipilih sebagai atribut test atau split untuk simpul (algoritma lengkap diberikan pada sub-bab III.1). Rumus dari gain ratio adalah
22
gain ratio(a) = gain(a) / split info(a)
(II.1)
dimana gain(a) adalah information gain dari atribut a untuk himpunan sampel X dan split info(a) menyatakan entropi atau informasi potensial yang didapat pada pembagian X menjadi n sub himpunan berdasarkan telaahan pada atribut a. Sedangkan gain(a) didefinisikan sebagai
gain ( a ) = info ( X ) − info a ( X ) k
freq(C j , X )
j =1
|X|
dimana info( X ) = −∑
(II.2)
⎛ freq(C j , X ) ⎞ ⎟⎟ dengan k adalah jumlah × log 2 ⎜⎜ | X | ⎝ ⎠
kelas pada himpunan data X. freq(C j , X ) menyatakan jumlah sampel pada X yang memiliki nilai kelas Cj . |X| menyatakan kardinalitas (jumlah anggota) | Xi | × info(X i ) menyatakan info(X) dengan a i =1 | X | n
himpunan data X. infoa ( X ) = ∑
adalah atribut yang ditelaah dan n adalah jumlah sub himpunan yang dibentuk dari X (pada atribut diskret, n adalah jumlah nilai unik pada a, sedangkan pada atribut kontinyu, n = 2).
(Konsep information gain dan gain yang berbasis pada teori
informasi diberikan pada Lampiran B.) Sedangkan rumus split info(a) adalah | Xi | ⎛| X |⎞ × log 2 ⎜⎜ i ⎟⎟ i =1 | X | ⎝|X|⎠ n
split info(a ) = − ∑
(II.3)
dimana Xi menyatakan sub himpunan ke-i pada sampel X. Alasan penggunaan gain ratio(a) pada C4.5 (bukan gain(a)) sebagai kriteria pada pemilihan atribut test adalah gain ternyata bias terhadap atribut yang memiliki banyak nilai unik. Pembagian gain(a) dengan split info(a) dimaksudkan untuk mengatasi hal ini. Untuk menghitung nilai infoa(X), jika a adalah atribut diskret, maka sampel X dibagi menjadi sub sampel X1…Xn, dimana n adalah jumlah nilai unik pada atribut a dan Xi adalah sub sampel yang memiliki nilai atribut a = i. Jika a adalah atribut kontinyu, maka sampel X dibagi menjadi dua sub sampel X 1v dan X 2v dengan
23
X 1 = {v j | v j ≤ v} dan X 2 = {v j | v j > v} , dimana v adalah sebuah nilai ambang.
Cara mencari v adalah sebagai berikut:
Mula-mula, sampel di X diurutkan
berdasarkan nilai dari a. Dimisalkan bahwa nilai yang terurut adalah v1,…,vm. Jika
i ∈ [1, m − 1] dan nilai v = (vi + vi +1 ) / 2 maka sampel yang dipecah dapat dinyatakan dengan X 1v = {v j | v j ≤ v} dan X 2v = {v j | v j > v} .
Untuk setiap nilai v, gainv, dihitung dengan memperhatikan pemisahan sampel di atas. Information gain untuk a didefinisikan sebagai nilai maksimum dari semua gainv dan nilai v ditentukan sebagai nilai ambang threshold untuk atribut kontinyu ini. II.4 Kompleksitas pada Konstruksi Pohon Untuk pembahasan kompleksitas algoritma, digunakan notasi-notasi di bawah ini: -
Nd : jumlah nilai unik pada atribut diskret
-
Nc : jumlah nilai unik pada atribut numerik atau kontinyu
-
S : jumlah cabang atau split pada simpul, yang dapat bernilai Nd atau 2.
-
|X| : kardinalitas sampel pada simpul
Dengan menggunakan notasi di atas, maka jumlah langkah yang diperlukan dalam konstruksi sebuah simpul adalah: -
|X| : untuk menghitung freq(C j , X ) .
-
Nd. |X| : untuk menghitung gain pada atribut diskret.
-
N c . | X | .(log( X ) + 1) : untuk mengurutkan dan (dengan algoritma Quicksort) dan menghitung gain pada atribut kontinyu.
-
(S+1).|X| : untuk mengkonstruksi partisi-partisi sampel
-
S : untuk menghitung split info
Maka konstruksi sebuah simpul pohon akan memerlukan jumlah langkah : |X| + Nd. |X| + (S+1).|X| + S jika atribut split pada simpul bertipe diskret atau |X| + N c . | X | .(log( X ) + 1) + (S+1).|X| + S jika atribut bertipe kontinyu. Di sini terlihat bahwa, komputasi pada atribut kontinyu (O(N2.log(N)) memerlukan langkah yang lebih banyak dibandingkan dengan atribut diskret (O(N2)). Selain itu, karena jumlah nilai unik pada atribut kontinyu biasanya jauh lebih besar dibandingkan
24
dengan jumlah pada atribut diskret, maka komputasi pada atribut kontinyu memerlukan langkah yang jauh lebih besar. Dengan memperhatikan kompleksitas pada konstruksi sebuah simpul di atas, maka dapat disimpulkan bahwa: -
jumlah sampel pada himpunan data,
-
jumlah dan jenis atribut,
-
jumlah nilai unik pada atribut dan
-
ukuran pohon (jumlah simpul dan daun)
berpengaruh terhadap waktu yang diperlukan untuk mengkonstruksi pohon atau efisiensi algoritma. II.5 Partisi Himpunan Data pada Konstruksi Pohon
Pada eksekusi Algoritma II.1, sampel data pada simpul pada langkah 10 lalu dipartisi menjadi sub-sub himpunan data yang juga disimpan di memori. Pada pemanggilan algoritma secara rekursif (langkah 13), setiap sub himpunan data lalu menjadi parameter masukan pada pemanggilan algoritma ini. Contoh dari partisi himpunan data menjadi sub-sub himpunan data ini diberikan pada Gambar II.1. Pada Gambar II.4, himpunan data sebelum dipartisi (atas) memiliki 5 atribut dan 14 sampel. Setelah dilakukan komputasi gain ratio untuk setiap atribut, ternyata didapati bahwa nilai gain ratio atribut age adalah tertinggi, sehingga age dijadikan test-attribute (langkah 6 dan 7). Selanjutnya, himpunan data dipartisi menjadi 3 sub himpunan data, s1 adalah partisi untuk age < 30, s2 untuk age 30-40 dan s3 untuk age > 40 (langkah 10) yang masing-masing memiliki 4 atribut dan jumlah sampel yang lebih sedikit dibandingkan dengan sampel orisinil. (Bahasan detil dari partisi data akan diberikan pada Bagian III.1.2.) Pemuatan seluruh dan partisi-partisi himpunan data pada memori ini menyebabkan algoritma C4.5 bergantung kepada ketersediaan memori pada sistem. Jika jumlah sampel pada himpunan data sangat besar, maka hal ini dapat menjadi masalah.
25
Gambar II.4. Contoh hasil partisi himpunan data pada eksekusi Algoritma II.1 untuk satu rekur (Han et all, 2001).
II.6 Hasil Penelitian yang Terkait dengan Pengembangan C4.5
Penelitian untuk mengembangkan C4.5 yang asli (versi 8) sudah dilakukan. Dari hasil studi yang penulis lakukan sampai dengan saat ini, penulis dapati bahwa penelitian antara lain sudah dilakukan untuk : (1) Memperbaiki teknik pemecahan kasus-kasus dengan menggunakan Gini index, statistik tabel kontingensi X2 dan G-statistic (Han et al., 2001). (2) Memperbaiki penanganan nilai atribut yang hilang dengan menghitung prediksi nilai terbaik dari nilai ini atau dengan memanfaatkan relasi antara atribut yang hilang dengan yang lainnya (Han et al., 2001).
26
(3) Memperbaiki penanganan atribut kontinyu untuk menghasilkan pohon keputusan yang berukuran lebih kecil tapi memiliki keakuratan prediksi yang tinggi (Quinlan, 1996). (4) Mengurangi tingkat kesalahan prediksi dengan teknik boosting (Ting et al., 2001; Zheng et al., 1998). (5) Meningkatkan waktu komputasi atau efisiensi dalam mengkonstruksi pohon dengan menggunakan binary tree dan counting sort (Ruggieri, 2001). Selain itu, sudah ada hasil-hasil penelitian untuk mengatasi masalah skalabilitas pada algoritma pohon keputusan C4.5 sebagaimana sudah dipaparkan
pada bagian Latar Belakang di Bab 1.
27
BAB III Pengembangan Skalabilitas Algoritma C4.5 dan Integrasinya ke dalam ORDBMS Pada Bab 2 sudah dibahas bahwa prinsip kerja algoritma C4.5 pada proses belajar dari data terdiri dari tiga tahap, yaitu: a. Konstruksi atau pembuatan pohon keputusan dari himpunan data pelatihan. b. Pemangkasan pohon (opsional). c. Pembuatan aturan dari pohon (opsional). Masalah skalabilitas sebagai akibat dari pemuatan seluruh kasus-kasus pada himpunan data pelatihan terjadi pada tahap konstruksi pohon. Karena itu, penelitian ini akan berfokus kepada perbaikan algoritma untuk konstruksi pohon keputusan, khususnya pada teknik pengaksesan sampel-sampel data.
Disebutkan pada Bab 1 bahwa karena algoritma akan diintegrasikan dengan ORDBMS, maka pendekatan yang dipilih untuk akses sampel data adalah konsep operator relasi pada aljabar relasional, khususnya operator seleksi dan proyeksi, yang sudah menjadi fondasi DBMS. Konsep ini akan dimanfaatkan
pada algoritma untuk membaca data secara langsung ke tabel basisdata yang berukuran sangat besar maupun memuat partisi himpunan data (yang berukuran lebih kecil dibandingkan terhadap data asli) ke dalam memori untuk diproses lebih lanjut dengan cepat atau efisien. Dengan pendekatan tersebut, algoritma dirancang untuk memanfaatkan fungsi-fungsi yang tersedia di DBMS dan menggunakan dasar logika SQL agar lebih mudah dipahami (bagi yang sudah memahami SQL). Sedangkan integrasinya ke dalam ORDBMS akan memanfaatkan pengindeksan (khususnya bitmap), fungsi-fungsi kueri (dengan SQL), prosedur-prosedur tersimpan dan fitur lain yang disediakan ORDBMS.
28
III.1 Pembentukan Partisi Himpunan Data dan Komputasi Gain Ratio dengan SQL III.1.1 Operator Seleksi dan Proyeksi pada Aljabar Relasional
Dimisalkan X adalah sebuah tabel atau relasi yang memiliki atribut-atribut a1, a2, a3 dan a4 yang dinyatakan sebagai X = (a1, a2, a3, a4 ). Domain atribut-atribut tersebut adalah: a1, a2 ∈ Z , a1, a2 > 0 dan a1, a2 < 1000, a3 ∈ {v1, v2, ..., vm} dan a4 ∈ {v1, v2, ..., vn}. Operator seleksi dan proyeksi didefinisikan seperti di bawah ini (Conolly et al, 2002). a. Operator Seleksi (atau Restriksi), σ
Operasi seleksi diterapkan pada sebuah tabel dan menghasilkan tupel-tupel atau rekord-rekord yang memenuhi kondisi atau predikat tertentu. Representasi umum dari operasi seleksi adalah
σ predikat ( X ) dengan X adalah nama tabel dan predikat adalah kondisi pada seleksi. Predikat dapat mengandung operator ∧ (AND) dan ∨ (OR). Sebagai contoh: -
σ a >500 ( X ) menghasilkan rekord(-rekord) pada X yang memenuhi kondisi a1 1
> 550, -
σ a <100 ∨ a >500 ( X ) menghasilkan rekord(-rekord) pada X yang memenuhi 1
1
kondisi a1 <100 atau a1 > 550 dan -
σ a =v 3
2
∧ a1 =v4
( X ) menghasilkan rekord(-rekord) pada X yang memenuhi
kondisi a3 = v2 dan a1= v4. b. Operator Proyeksi, ∏
Operasi seleksi diterapkan pada sebuah tabel dan menghasilkan tabel yang merupakan ”sub-himpunan vertikal” (memiliki sebuah atribut atau sebagian atribut) dari tabel asli. Representasi umum dari operasi proyeksi adalah
∏ a1 ,a2 ,...,as ( X ) dengan X adalah nama tabel dan a1, a2, . . ., as adalah atribut-atribut yang dipilih.
29
Pada SQL, operator proyeksi diimplementasikan sebagai SELECT a1, a2, . . ., as FROM X, sedangkan operator seleksi pada klausul WHERE. Misalnya: SELECT a1, a2, . . ., as FROM X WHERE a1 <100 OR a1 > 550 dan SELECT a1, a2, . . ., as FROM X WHERE a3 = v2 AND a1= v4 .
Dalam kaitannya dengan partisi himpunan data yang diperlukan pada konstruksi pohon C4.5, operator seleksi dan proyeksi ini dapat dimanfaatkan untuk membentuk partisi-partisi pada simpul-simpul pohon yang lalu digunakan untuk membangun cabang pada simpul tersebut.
Di bawah ini diberikan diskusi
mengenai partisi himpunan data pada pohon keputusan C4.5. III.1.2 Partisi Himpunan Data dan Estimasi Ruang Memori
Dalam representasi model, pada Gambar III.1 ditunjukkan sebuah pohon keputusan beserta partisi-partisi himpunan datanya sampai kedalaman 2 level. Kotak menyatakan simpul pohon dan elips menyatakan daun, dimana daun tidak memiliki partisi himpunan data karena tidak memiliki cabang-cabang di bawahnya. Isi kotak, asi, menyatakan atribut split pada simpul ini, dengan indeks subskrip i menyatakan nomor simpul. Xi menyatakan himpunan data yang ditelaah untuk membangun cabang di bawah simpul-i. (asi dipilih berdasarkan nilai gain ratio pada Xi.)
Pada pohon, himpunan data pada simpul-simpul di level-i
merupakan partisi atau subset dari
himpunan data simpul level di atasnya
(induknya), pada level-(i-1). Atau, dapat pula dinyatakan bahwa himpunan data pada simpul-simpul di level-i diperoleh dengan menerapkan sebuah fungsi filter tertentu, Hi, pada himpunan data pada simpul induknya, di level-(i-1). Dengan demikian, secara umum Xi dapat dituliskan sebagai X i = H i ( X i −1 )
(III.1)
dimana Hi adalah fungsi yang berisi operasi seleksi (memilih rekord-rekord yang memiliki atribut split pada simpul di induknya dengan nilai tertentu) dan proyeksi (mengeluarkan atribut split yang terdapat pada simpul induknya). Partisi himpunan data dan fungsi filter dibahas lebih lanjut di bawah ini.
30
X0
as0 X
1
X
Level - 0
Xm
2
asm
as2
as1
X 2s
X 1n
X 11
as11
...
as1n
...
...
...
...
as2s
Level - 1
X mp
...
asmp Level - 2
...
Gambar III.1. Pohon keputusan dan partisi himpunan data.
Jika diketahui himpunan data X0 = (a1, a2, a3, ..., ak), maka dapat didefinisikan himpunan atribut untuk X0, yaitu D = {a1, a2, a3, ..., ak}. Berdasarkan himpunan data dan atribut ini, maka himpunan partisi data dan fungsi-fungsi filter yang digunakan untuk membentuk partisi pada simpul-simpul anak dapat dirumuskan. Selain itu, kebutuhan ruang memori untuk menyimpan partisi-partisi himpunan data juga dapat diestimasi. Untuk ini, diasumsikan bahwa ruang memori yang diperlukan untuk menyimpan sebuah nilai atribut yang dapat bertipe integer, float atau diskret, adalah sebesar 1 word (untuk keperluan penyimpanan, nilai atribut diskret dapat diganti dengan sebuah nilai integer yang merepresentasikan nilai atribut diskret). Dengan demikian, estimasi kebutuhan ruang memori pada Level-0 adalah M X 0 =| X 0 | × | D | word dimana |.| menyatakan kardinalitas himpunan. Pada Level -1:
Didefinisikan D0 = D – {as0}, dimana as0 ∈ D. (Sebagai contoh, jika as0 = a3, maka D0 = { a1, a2, a4, a5, ..., ak } ). Partisi himpunan, Xi, pada simpul-simpul di Level-1 dapat dituliskan sebagai: 1 0 • Simpul-1: X = σ pred _ 1( as0 ) (∏ D 0 ( X )) atau
H 1 (.) = σ pred _ 1( as0 ) ∏ D 0
X 1 = H 1( X 0 )
dengan (III.2)
31
• Simpul-2: X 2 = σ pred _ 2 ( as0 ) (∏ D 0 ( X 0 ))
atau
X 2 = H 2 ( X 0 ) dengan
H 2 (.) = σ pred _ 2 ( as0 ) ∏ D 0
(III.3)
• Simpul-m: X m = σ pred _ m ( as0 ) (∏ D 0 ( X 0 ))
atau
X m = H m ( X 0 ) dengan
H m (.) = σ pred _ m ( as0 ) ∏ D 0
(III.6)
Predikat yang terdapat pada operator σ, yang dinyatakan sebagai pred_i(as0), adalah predikat yang dikenakan pada atribut split pada simpul induknya, yaitu simpul-0. Estimasi kebutuhan ruang memori pada setiap simpul di Level-1 adalah M X i =| X i | × | D 0 | word. Berdasarkan sifat dari operasi seleksi dan proyeksi yang
mengurangi jumlah rekord pada tabel, maka |Xi| < |X0|. Karena |D0| < |D|, maka disimpulkan bahwa M X i < M X 0 . Pada Level-2:
• Untuk Simpul-11 s/d Simpul-1n, didefinisikan D1 = D0 – {as1}, dimana as1 ∈ D0. Partisi himpunan, Xij, pada simpul-simpul ini dapat dituliskan sebagai: -
Simpul-11: X 11 = σ pred _ 11( as1 ) (∏ D1 ( X 1 )) atau
X 11 = H 11 ( X 0 ) dengan
H 11 (.) = σ pred _ 11( as1 ) ∏ D1 σ pred _ 1( as0 ) ∏ D 0 -
Simpul-1n: X 1n = σ pred _ 1n ( as1 ) (∏ D1 ( X 1 )) atau
(III.7)
X 1n = H 1n ( X 0 ) dengan
H 1n (.) = σ pred _ 1n ( as1 ) ∏ D1 σ pred _ 1( as0 ) ∏ D 0
(III.8)
• Untuk Simpul-m1 s/d Simpul –mp, didefinisikan Dm = D0 – {asm}, dimana asm ∈ D0. Partisi himpunan, Xij, pada simpul-simpul ini dapat dituliskan
sebagai: -
m1 m Simpul-m1: X = σ pred _ m1( asm ) (∏ D m ( X ))
atau
m1 dengan H (.) = σ pred _ m1( asm ) ∏ D m σ pred _ 1( as0 ) ∏ D 0
32
X m1 = H m1 ( X 0 ) (III.9)
-
Simpul-mp: X mp = σ pred _ mp ( asm ) (∏ D m ( X m ))
atau
X mp = H mp ( X 0 )
mp dengan H (.) = σ pred _ mp ( as m ) ∏ D m σ pred _ 1( as0 ) ∏ D 0
(III.10)
Estimasi kebutuhan ruang memori pada setiap simpul di Level-2 adalah M X ij =| X ij | × | D m |
word. Karena |Xij| < |Xi| dan |Dm| < |D0|, maka
M X ij < M X i < M X 0 . Pada Level 3:
Analogi dengan Level-1 dan Level-2 di atas, maka partisi himpunan data pada Simpul-mpq dapat didefinisikan sebagai:
X mpq = σ pred _ mpq ( as p ) (∏ D p ( X mp )) atau X mpq = H mpq ( X 0 ) dengan
H mpq (.) = σ pred _ mpq ( as p ) ∏ D p σ pred _ mp ( asm ) ∏ D m σ pred _1( as0 ) ∏ D 0
(III.11)
Estimasi kebutuhan ruang memori pada setiap simpul di Level-3 adalah M X ijk =| X ijk | × | D mp |
word.
Analogi
dengan
Level-2,
maka
M X ijk < M X ij < M X i < M X 0 . Pada level-level selanjutnya, partisi himpunan data dan filter pada simpul-simpul dapat dicari dengan melakukan analogi pada Level-3 di atas. Juga dapat ditunjukkan bahwa estimasi kebutuhan ruang memori untuk sebuah partisi data pada level yang makin dalam, akan makin kecil.
III.1.3 Perintah SQL untuk Partisi Himpunan Data
Perintah SQL mendukung implementasi fungsi-fungsi filter di atas dalam bentuk yang sederhana. Sebagai ilustrasi, tinjauan diberikan terhadap fungsi-fungsi filter di bawah ini: m - Pada level-1: H (.) = σ pred _ m ( as0 ) ∏ D 0
33
mp - Pada level-2: H (.) = σ pred _ mp ( as m ) ∏ D m σ pred _ 1( as0 ) ∏ D 0
- Pada level-3:
H mpq (.) = σ pred _ mpq ( as p ) ∏ D p σ pred _ mp ( asm ) ∏ D m σ pred _1( as0 ) ∏ D 0 Pada fungsi-fungsi di atas, terlihat bahwa filter pada level yang lebih bawah (anak) memberikan tambahan sepasang operator seleksi dan proyeksi pada filter induknya. Pada perintah SQL, penambahan operator berimplikasi pada pengurangan atribut pada SELECT dan penambahan string operand pada klausul WHERE. Di bawah ini diberikan contohnya. Misalkan diketahui himpunan data X = (a1, a2, a3, a4 , a5), contoh representasi SQL pada ketiga level di atas dalam membentuk partisi data dapat disusun sbb:
• Pada level-1, dimisalkan
as0= a2 dan pred_m = “a2 = male”, maka filter
Hm(.) dapat ditulis sebagai SELECT a1, a3, a4 , a5 FROM X WHERE
a2 = ‘male’.
• Pada level-2, dimisalkan asm= a4 dan pred_mp = “a4 < 500” maka filter Hmp(.) dapat ditulis sebagai SELECT a1, a3, a5 FROM X WHERE a2 = ‘male’ AND a4 < 500 .
• Pada level-3, dimisalkan asp= a1 dan pred_mpq = “a1 = brown” maka filter Hmp(.) dapat ditulis sebagai SELECT a3, a5 FROM X WHERE AND a1 = ‘brown’.
a2 = ‘male’ AND a4 < 500
III.1.4 Perintah SQL untuk Menghitung Jumlah Sampel
Pada Bab 2, sudah ditunjukkan bahwa perhitungan gain ratio pada sebuah atribut di himpunan data pelatihan memerlukan komputasi entropi untuk atribut tersebut, yang dinyatakan sebagai: k
freq(C j , X )
j =1
|X|
info( X ) = −∑
⎛ freq(C j , X ) ⎞ ⎟⎟ × log 2 ⎜⎜ |X| ⎝ ⎠
34
dengan k adalah jumlah kelas pada himpunan data X. freq(C j , X ) menyatakan jumlah sampel pada X yang memiliki nilai kelas Cj . |X| menyatakan kardinalitas (jumlah anggota) himpunan data X. Dengan memanfaatkan fungsi DBMS, freq(C j , X ) dapat diperoleh dengan perintah SQL SELECT C, COUNT(*) FROM tablename WHERE condition
dan hasilnya berupa sebuah tabel baru dengan kolom kelas C dan jumlah rekord (freq) yang memenuhi kondisi pada WHERE. Kondisi di sini bergantung kepada level simpul, dimana makin bawah posisi simpul, maka kondisi makin panjang, bertambah dengan satu operator seleksi untuk penambahan satu level (analogi dengan perintah SQL untuk memperoleh himpunan partisi data). III.2 Pengembangan Algoritma pada Konstruksi Pohon
Konsep
yang
dibahas
pada
sub-bab
III.1
dapat
dimanfaatkan
untuk
mengembangkan skalabilitas Algoritma II.1. Karena masalah utama yang terkait dengan skalabilitas pada algoritma ini adalah pemuatan seluruh sampel-sampel himpunan data ke dalam memori, maka hal ini akan dihindari. Pada DBMS, nilainilai atribut dan frekuensi sampel dengan nilai atribut yang sama pada himpunan data (untuk pemilihan test-attribute pada langkah 7) dapat langsung dari tabel basisdata (lihat bagian III.1.4). Tetapi pembacaan langsung ke basisdata dapat berakibat tingginya akses I/O dan memperlambat eksekusi (hal ini disimpulkan melalui eksperimen-eksperimen), sehingga pemuatan partisi himpunan data ke dalam memori masih akan diperlukan, tapi dibatasi untuk sub himpunan atau partisi data yang berukuran lebih kecil (lihat bagian III.1.3). Pada bagian III.1.3 ditunjukkan bahwa filter SQL pada level anak ternyata dapat dikonstruksi dengan menambahkan dan mengurangkan string tertentu pada filter di level induknya untuk mendapatkan partisi himpunan data yang kemudian digunakan untuk mengkonstruksi cabang di simpul anak ini. Pada Algoritma II.1 ditunjukkan bahwa konstruksi cabang di pohon dilakukan melalui pemanggilan algoritma secara rekursif dan partisi himpunan data dijadikan parameter pada
35
pemanggilan algoritma. Maka, pada algoritma yang dikembangkan, pemanggilan algoritma secara rekursif akan diberi parameter yang berupa string filter (yang diperbarui pada setiap pemanggilan). Pada bagian III.1.2 ditunjukkan bahwa makin dalam pohon, maka ruang memori yang diperlukan untuk menyimpan partisi himpunan data makin kecil. Sifat ini akan digunakan pada pengembangan algoritma, dimana pada kedalaman tertentu, pemuatan partisi himpunan data ke dalam memori hanya akan dilakukan untuk satu simpul pada setiap saat (yang lalu digunakan untuk membangun cabang pada simpul ini sampai tuntas, lalu memori dibebaskan lagi). Dengan memperhatikan bahasan pada bagian III.1, maka prinsip kerja algoritma untuk konstruksi pohon yang dikembangkan dan dapat menangani himpunan data yang (secara teoritis) berukuran tidak terbatas adalah (lihat Algoritma III.1): a. Sampai dengan kedalaman tertentu (diset sebagai parameter pengguna, yaitu
Max_depthDb), konstruksi pohon (induk) dilakukan dengan cara membaca nilai-nilai atribut dan frekuensi sampel langsung dari basisdata (langkah 1 s/d 12). b. Selanjutnya, tiap cabang pohon dilanjutkan dengan memanggil Algoritma II.1 (langkah 22), dimana seluruh sampel pada himpunan data (yang menjadi parameter pada pemanggilan algoritma) akan dimuat di dalam memori. c. Pada butir (a), digunakan filter yang berisi klausul untuk mengekstraksi isi basisdata yang memenuhi kondisi tertentu (pada implementasinya akan berupa klausul WHERE seperti yang dibahas pada sub-bab III.1.3).
Pada
pemanggilan yang pertama (eksekusi rekur ke-1), filter tidak ada isinya (kosong). Lalu, pada setiap akhir rekur, filter akan diperbarui dan dijadikan parameter masukan pada pemanggilan algoritma ini secara rekursif (langkah ke 17 dan 18). Ilustrasi visual dari prinsip kerja Algoritma III.1 (Generate_decision_tree_ext ) diberikan pada Gambar III.2.
36
Buat pohon induk dengan mengakses tabel secara langsung (dengan operator seleksi) sampai kedalaman Max_depthDb.
pohon induk: Level - 0
Level - 1
pohon pass – 1:
pohon induk
Level - 1
tabel basisdata
i=1 Level - 2 Level - 3
Muat partisi data, Xi, untuk simpul-i ke dalam memori dengan operator proyeksi dan seleksi.
pohon pass – 2:
Xi Selesaikan cabang pada simpul-i dengan menelaah partisi data di memori, Xi. Hapus Xi setelah selesai.
Level - 1 Level - 2 Level - 3
pohon pass-i Level - 4
i=i+1 Level - 5
T
i > jumlah simpul? pohon pass – 3: stop
Ketr.: pada contoh, Max_depthDb = 2 (Max_depthDb: kedalaman pohon maksimum yang dikonstruksi dengan mengakses tabel basisdata secara langsung.)
Gambar III.2. Ilustrasi prinsip kerja Algoritma III.1 (Generate_decision_tree_ext).
37
_______________________________________________________________________________ Algorithm: Generate_decision_tree_ext Narrative: Generate a decision tree from the given training data. Input: The training samples (samples), maximum depth of tree built by accessing database directly (depth_Db), the WHERE clause string used to filtered out unwanted records in samples (Filter), list of attributes on samples, attribute-list Output: A decision tree. Method: (1) create a node N; (2) if depth_Db = 0 then read attribute-list from samples using Filter //access the database data dictionary (3) if depth_Db < Max_depthDb (4) if attribute-list is empty then (5) return N as a leaf node labeled with the most common class in samples; (6) read label and number of classes in samples using Filter (7) if samples are all of the same class, C then (8) return N as a leaf node labeled with the class C; (9) using Filter, select test-attribute from attribute-list with the highest gain ratio; (10) label node N with test-attribute; (11) for each known value ai of test-attribute; (12) grow a branch from node N for the condition test-attribute = ai; (13) using Filter, perform leaf test on sub samples having the condition test-attribute = ai; (14) if this branch is a candidate for leaf (15) attach a leaf labeled with the most common class in the sub samples; (16) else (17) update Filter for this node’s dataset partition (see III.3.3) and store in NewFilter (18) new_ attribute-list = attribute-list – {test-attribute} (19) attach the node returned by Generate_decision_tree_ext (samples, (depth_Db+1), NewFilter, new_ attribute-list ); (20) else (21) new_samples = samples filtered using Filter (22) attach the node returned by Generate_decision_tree (new_samples, attribute-list);
Algoritma III.1 Algoritma konstruksi pohon keputusan yang dikembangkan pada algoritma C4.5Db.
Pada Algoritma III.1 terlihat bahwa logika algoritma sederhana dan diharapkan mudah dipahami bagi yang sudah mengenal SQL. Kesederhanaan logika dapat dirumuskan karena memanfaatkan SQL untuk
filter (mengandung operator
seleksi dan proyeksi) yang digunakan pada parameter pemanggilan algoritma secara rekursif. (Selanjutnya, algoritma konstruksi pohon tersebut akan digunakan pada algoritma C4.5Db, seperti sudah disebut pada Bab 1.) Beberapa aspek penting dari Algoritma III.1: a. Bersifat generik, dapat diimplementasikan di DBMS secara umum, karena: (1)
Filter yang digunakan pada pemilihan test-attribute dan pembuatan partisi data dikonstruksi dengan SQL yang merupakan bahasa standar pada DBMS. (2)
38
Pencabangan, pengulangan dan komputasi untuk membuat pohon dapat diimplementasikan pada bahasa prosedural maupun berorientasi obyek yang saat ini sudah menjadi prosedur tersimpan pada DBMS. b. Bergantung pada profil himpunan data, tingkat skalabilitas (dapat) bergantung pada nilai Max_depthDb. Semakin besar nilai Max_depthDb, maka semakin besar ukuran volume himpunan data yang dapat ditangani, karena makin dalam pohon yang dibentuk dengan mengakses tabel data secara langsung (dengan SQL) dan tidak dibatasi oleh memori. Makin dalam pohon, maka ukuran partisi data yang dimuat ke memori pada suatu saat juga makin kecil (lihat Bagian III.1.2). Karena ukuran data yang dapat dimuat ke memori (untuk ditangani oleh Algoritma II.1 pada penyelesaian cabang dengan cepat) dibatasi oleh ukuran memori, maka membesarkan nilai Max_depthDb dapat menambah skalabilitas algoritma. Tetapi nilai Max_depthDb yang besar dapat berakibat pada tingginya akses I/O yang dapat memperlambat eksekusi algoritma, karena itu perlu digunakan nilai yang optimal. (Catatan: jika kedalaman pohon utuh lebih kecil dibanding nilai Max_depthDb, maka
Max_depthDb tidak memberikan pengaruh.) c. Pada pemilihan atribut-test (langkah 9), jika atribut bertipe diskret, maka statistik jumlah rekord untuk komputasi gain ratio dapat dilakukan dengan mengakses tabel basisdata secara langsung dengan SQL. Jika atribut bertipe kontinyu, maka seluruh nilai atribut dimuat ke memori (sebagai cursor) dengan diurutkan, lalu nilai ambang untuk pemisahan atribut dapat dicari dari isi cursor dan perintah SQL. Dengan demikian, penanganan atribut kontinyu memerlukan komputasi yang lebih banyak.
III.3 Fitur ORDBMS yang Mendukung Efisiensi Konstruksi Pohon
Studi dan eksperimen untuk mencari fitur-fitur yang mendukung efisiensi Algoritma III.1 sudah dilakukan dengan studi kasus ORDBMS Oracle 9i dan 10g. Hasil lengkap diberikan pada Lampiran C. Di bawah ini diberikan penjelasan singkat dari fitur-fitur tersebut.
39
a. Prosedur Tersimpan Berbasis SQL, Java dan Bulk-binds
Dukungan efisiensi untuk ketiga fitur ini adalah: - Prosedur tersimpan berbasis SQL mendukung akses ke tabel basisdata dengan cepat karena memanfaatkan SQL yang didukung oleh optimasi kueri. - Prosedur tersimpan Java mendukung implementasi program berbasis memori yang cepat. - Prosedur tersimpan berbasis Java dapat memanggil prosedur SQL maupun sebaliknya, yang memungkinkan konstruksi pohon dapat dilakukan melalui pembacaan rekord ke tabel basisdata secara langsung maupun dengan terlebih dahulu memuat rekord-rekord ke memori. - Transfer data dari prosedur berbasis SQL ke dan dari Java dapat dilakukan dalam bentuk himpunan obyek-obyek melalui fitur bulk-binds, yang ternyata lebih cepat jika dibandingkan dengan transfer obyek demi obyek. b. Indeks Bitmap
Pada studi telah dilakukan perbandingan antara dukungan efisiensi dari indeks Btree dan bitmap, khususnya untuk memperoleh statistik jumlah rekord yang diperlukan pada komputasi gain ratio. Melalui eksperimen-eksperimen dengan rencana eksekusi didapati bahwa: - B-tree ternyata tidak selalu mendukung pembacaan statistik jumlah rekord dengan cepat. - Bitmap mendukung pembacaan statistik jumlah rekord dengan cepat pada tabel yang memiliki atribut-atribut bertipe diskret, terutama jika jumlah kolom dan nilai unik kecil. III.4 Implementasi Algoritma
Pada bagian III.2 disebutkan bahwa Algoritma III.1 bersifat generik dan dapat diimplementasikan di RDBMS dan RDBMS yang sudah dikembangkan. Pada penelitian ini, Algoritma III.1 akan diimplementasikan di lingkungan ORDBMS, dengan pertimbangan bahwa DBMS ini merupakan teknologi DBMS yang terbaru dan mendukung pemrograman berorientasi obyek, misalnya Java, yang memiliki kelebihan-kelebihan, seperti information-hiding, code reusability, dan dapat
40
“dipelihara”/dikembangkan dengan mudah.
Java dipilih sebagai bahasa
pemrograman karena merupakan kakas pengembang yang open-source. ORDBMS dan RDBMS memiliki fungsi-fungsi untuk mengoptimalkan kueri dengan SQL. Algoritma optimasi kueri menerima masukan perintah SQL dan profil, indeks dan statistik tabel-tabel yang diakses SQL. Berdasarkan masukan ini, algoritma lalu menentukan langkah-langkah eksekusi SQL yang paling efisien atau optimal. Pada saat ini, hal yang sama belum diberlakukan terhadap teknikteknik data mining, khususnya algoritma C4.5. Untuk keperluan optimasi C4.5, akan diperlukan lebih dari satu teknik implementasi, dimana setiap teknik akan mendukung eksekusi yang cepat dari C4.5 dengan profil tabel yang tertentu. Implementasi C4.5Db (yang menggunakan Algoritma III.1) pada penelitian ini dimaksudkan untuk mendukung efisiensi C4.5Db pada profil tabel tertentu. Profil tabel yang dipilih untuk ditangani adalah: -
Atribut diskret,
karena pengindeksan bitmap sangat efisien untuk kolom
diskret. -
Tidak ada nilai yang hilang, supaya fungsi agregat COUNT dapat digunakan secara langsung. Karena fungsi agregat COUNT akan menangani nilai yang hilang sebagai nilai yang unik (null), maka pada penelitian awal ini, prosedur tersimpan berbasis SQL hanya dapat menangani atribut diskret tanpa nilai yang hilang. (Pada masa mendatang, trigger pada ORDBMS dapat digunakan untuk menangani nilai yang hilang pada saat penambahan setiap rekord di tabel.)
Dengan profil yang dipilih di atas, implementasi ini dapat berguna untuk himpunan data berukuran besar yang sudah digeneralisasi (dimana nilai atribut kontinyu sudah dijadikan atribut diskret) dan data warehouse (yang saat ini juga sudah terintegrasi di dalam banyak ORDBMS), dimana data yang tersimpan sudah melalui tahap pembersihan dan transformasi.
41
Karena pertimbangan efisiensi, pemangkasan pohon dilakukan di level program berbasis memori, karena pada saat memangkas diperlukan akses ke partisi-partisi himpunan data pada simpul-simpul. Konversi dari pohon ke aturan-aturan belum diimplementasikan, dan sebagai
alternatif, untuk klasifikasi rekord baru
dilakukan dengan penelusuran pohon. III.4.1 Arsitektur Sistem
Pada penelitian ini, Algoritma III.1 diimplementasikan sebagai prosedur tersimpan berbasis SQL dan Java (hybrid) pada Oracle 10g. Program utama adalah Java yang memanggil prosedur tersimpan PL/SQL dan Java. Prosedur tersimpan Java yang dipanggil dari program utama adalah J48. Pada arsitektur
client-server 2-tier, program-program aplikasi di client dapat memanggil program utama (lihat Gambar III.3).
ORDBMS
users
PL/SQL Stored Procedure
Java (Main) Stored Procedure
application application Application (client)
J48 Stored Procedure
table tree
Gambar III.3. Arsitektur sistem yang mengimplementasikan Algoritma III.1. III.4.2 Bahasan J48
Karena program aplikasi J48 akan digunakan sebagai implementasi dari Algoritma II.1, maka pada sub-bab ini dibahas J48 secara singkat.
J48 adalah salah satu kelas di paket classifiers pada sistem Weka yang mengimplementasikan C4.5. Weka adalah program mesin belajar open-source dalam Java (The Univ. of Waikato, 2003). Weka mengorganisasi kelas-kelas ke
42
dalam paket-paket dan setiap kelas di paket dapat mereferensi kelas lain di paket lain. Paket core merupakan kelas inti dan mengandung banyak kelas yang diakses dari hampir semua kelas yang lain. Kelas-kelas kunci di core adalah Attribute,
Instance, dan Instances. Sebuah obyek dari kelas
Attribute merepresentasikan sebuah atribut. Kelas ini membungkus nama,
tipe dan, dalam kasus atribut diskret, nilai-nilai unik atribut. Sebuah obyek dari kelas Instance mengandung nilai atribut dari sebuah instansiasi (rekord yang dijadikan obyek). Sedangkan sebuah obyek Instances membungkus semua instansiasi-instansiasi atau himpunan data (Kirby, 2002; Witten et al., 2002). Paket classifiers berisi implementasi dari hampir semua algoritma untuk klasifikasi dan prediksi. Kelas yang paling penting di paket ini adalah Classifier, yang mendeklarasikan struktur umum dari skema klasifikasi dan
prediksi. Kelas ini memiliki dua metoda, yaitu buildClassifier
dan
classifyInstance, yang harus diimplementasikan oleh kelas-kelas yang
menginduk ke kelas ini. Semua kelas yang mengimplementasikan algoritma klasifikasi menginduk ke kelas Classifier, termasuk kelas J48. J48, yang menangani himpunan data dalam format ARFF, tidak mengandung kode untuk mengkonstruksi pohon keputusan. Kelas ini mereferensi kelas-kelas lain, kebanyakan di paket weka.classifiers.j48, yang mengerjakan semua proses konstruksi pohon. Implementasi J48 Sebagai Prosedur Tersimpan. Tidak banyak modifikasi yang
diperlukan untuk mengubah J48 menjadi prosedur tersimpan Java di Oracle 10g. Perubahan minor yang perlu dilakukan adalah: organisasi paket harus diubah atau semua kelas yang diperlukan oleh J48 harus dikumpulkan ke dalam satu paket. Lalu, kelas yang digunakan untuk membaca dan membuat obyek-obyek dari rekord-rekord, yaitu kelas Instances, juga dimodifikasi untuk membaca tabel dengan menggunakan JDBC dan membuat obyek Instance untuk tiap rekord.
43
III.4.3 Struktur Data untuk Pohon Keputusan
Ilustrasi pembentukan pohon dengan Algoritma III.1 diberikan pada Gambar III.4, dimana pohon akan dikonstruksi oleh dua tipe prosedur tersimpan, yaitu prosedur berbasis SQL (cara: membaca nilai dan frekuensi rekord pada himpunan data langsung dari basisdata) dan J48 (cara: memuat sampel-sampel ke memori lalu menelaahnya untuk melanjutkan pembuatan cabang pohon).
a5
d=1
v1
d=2
a2
a6
d=3
.......
d=M
SQL calls
V2 nk1
.......
a8
d = M-1
V3
....... .......
a7
nk2
J48 calls
nk3
.......
nk4
Gambar III.4. Sebuah pohon dikonstruksi dengan memanggil prosedur tersimpan berbasis SQL (di sini, depth_Db = 2) dan J48 untuk melanjutkan konstruksi pohon di tiap cabang.
Struktur pohon keputusan yang dikonstruksi oleh prosedur tersimpan berbasis SQL dan J48 dideklarasikan di kelas Tree. Atribut-atribut utamanya adalah: - m_isLeaf: nilai boolean (true jika daun, false jika node bukan daun) - m_ClassAtrValue: nilai kelas daun dalam tipe string (null jika node ini bukan daun) - m_attrName: nama atribut split (pemenang) untuk node ini dalam tipe string (null jika node ini daun) - m_sons: array dari obyek Tree yang berisi node anak-anak (null jika node ini daun ) - m_sonJ48: obyek dari kelas J48 (null jika node ini daun atau tidak punya anak obyek J48 )
44
Sedangkan metoda-metoda (methods) utamanya adalah: -
traverseTree(Tree): untuk melakukan traversal struktur pohon dan
menampilkan setiap nilai node -
classifyACase(): mengklasifikasi sebuah rekord baru (mengembalikan
nilai kelas dalam bentuk string)
mainProg() create and initialize object Root as an instance of Tree class using default attribute values; dSQL = an integer value >= 0; SQLFilter = “”; if dSQL < Max_dSQL get current attribute-list SA = selected attribute split for Root from attribute-list create Root’s son or leaf nodes based on SA and its values for each Root’s son SQLFilter = SQL-where-clause for filtering cases/records having SA = attribute value for this son buildTree(Root.son, (dSQL +1), SQLFilter) else build Root using J48; //build the whole tree using J48 buildTree(Root, dSQL, SQLFilter) (1)if dSQL < Max_dSQL //build tree using SQL-based SP (2) SA = selected attribute split for Root from the remaining attributes after applying query using SQLFilter condition; (3) create Root’s son or leaf nodes based on SA and its values (4) for each Root’s son //leaf node is not visited SQLFilter’ = SQLFilter + SQL-where-clause for filtering records having SA = attribute value for this son buildTree(Root.son, (dSQL +1), SQLFilter’) (5)else //expand branches using J48 train = an object of Instances, containing Instance objects formed from records resulted from querying table using SQLFilter condition; Root.m_sonJ48.buildClassifier(train)
Gambar III.5. Pseudo-code untuk program utama dan konstruksi pohon hibrid pada C4.5Db.
Pseudo-code implementasi dari Algoritma III.1 dengan SQL dan J48 ditunjukkan pada Gambar III.5. Root adalah obyek dari kelas Tree. Seperti halnya dalam C4.5, gain ratio digunakan untuk memilih atribut split atau pemenang dari atributatribut yang tersisa di sub-himpunan data atau partisi data. SQLFilter adalah klausul WHERE pada kueri SQL, misalnya WHERE A1 = a1 AND A2 = a2 (Ai adalah nama atribut dan ai adalah nilainya). Obyek dari kelas Instances berisi atribut-atribut dan nilai atribut dari samples dan obyek-obyek dari Instance.
45
buildClassifier
adalah
metoda
di
kelas
Classifier
untuk
mengkonstruksi (dan memangkas) pohon. Prosedur tersimpan berbasis SQL yang dipanggil dari program utama (Java) adalah prosedur getDisCountWhere yang diberikan pada Lampiran C (menggunakan bulk-binds). III.5 Eksperimen
Pada penelitian ini dilakukan dua kelompok eksperimen. Eksperimen pertama digunakan untuk mengobservasi dan mengukur akurasi dari algoritma pohon keputusan yang dirancang, yang kedua digunakan untuk mengobservasi dukungan skalabilitas dan efisiensi dari algoritma yang diajukan di sini. Eksperimen dilakukan pada komputer personal dengan sistem operasi Windows XP, CPU Pentium 2.4 GHz dan memori 1 GByte. Pada bahasan eksperimen-eksperimen di bawah ini, dSQL menyatakan kedalaman pohon yang dikonstruksi dengan prosedur berbasis-SQL. dSQL =
0 berarti bahwa seluruh pohon dikonstruksi dengan J48 atau Algoritma II.1. dSQL = n berarti sampai dengan n level, simpul dan daun pada pohon dikonstruksi dengan prosedur berbasis-SQL, sedangkan selebihnya dikonstruksi dengan J48 atau Algoritma II.1 (jika masih tersisa simpul atau daun yang harus ditambahkan pada pohon). III.5.1 Eksperimen Akurasi
Pada eksperimen ini digunakan lima himpunan data yang diperoleh dari Internet (lihat Tabel III.1). Himpunan data nomor 1 (Iris) dan 2 (Soybean) diperoleh dari (The Univ. of Waikato, 2003), 3 (LungCancer) diperoleh dari (Lauritzen et al., 1988), 4 (Eucalyptus) adalah himpunan data Eucalyptus Soil Conservation (Bulloch, 2001) dan 5 (TIC2000/TICEval2000) adalah himpunan data The
Insurance Company Benchmark (COIL, 2000; UCI, 2000). Untuk himpunan data Iris, karena 4 dari 5 kolom bertipe kontinyu, maka kolom ini didiskretisasi terlebih dahulu. Sedangkan nilai atribut yang tidak diketahui pada Soybean, LungCancer and Eucalyptus diganti dengan nilai “unknown”. Kecuali untuk COIL 2000, yang
46
sudah memiliki himpunan data pelatihan dan uji / test terpisah, himpunan data dibagi menjadi dua, yaitu untuk pelatihan dan uji (himpunan data uji dipilih secara acak dari himpunan data orisinil). Nilai-nilai akurasi pada Tabel III.1 diperoleh dari presentasi himpunan data uji ke model pohon yang dikonstruksi dari himpunan data pelatihan dengan dSQL = 0, 1, 2 dan 3. Untuk himpunan data nomor 1, 2 dan 3, akurasi yang diperoleh dengan dSQL = 1, 2 and 3 adalah lebih baik atau sama dengan dSQL = 0. Untuk himpunan data nomor 4 dan 5, akurasi sedikit berkurang sejak dSQL = 2. Karena di sini digunakan J48 yang memangkas pohon mulai dari kedalaman dua sebagai tolok ukur, dari hasil ini dapat disimpulkan bahwa untuk himpunan data tertentu, yang tidak memerlukan pemangkasan pohon sampai kedalaman dua, akurasi dari teknik pemrogram yang diajukan di sini baik. Waktu eksekusi pada Tabel III.1 adalah rata-rata waktu eksekusi pada 20 kali percobaan. Kecuali untuk himpunan data TIC2000, yang memiliki jumlah kolom dan rekord terbanyak, waktu eksekusi cepat (sehingga tidak menjadi isu signifikan pada konstruksi pohon dan di sini diberikan hanya sebagai pelengkap). Tabel III.1 menunjukkan bahwa konstruksi pohon dengan dSQL = 1 dapat dilakukan sedikit lebih cepat daripada menggunakan J48 (dSQL = 0), sedangkan eksekusi dengan
dSQL = 2 dan 3 ternyata memakan waktu lebih banyak (hanya saja, karena total waktu eksekusi masih kecil, hal ini kurang dirasakan perbedaannya). Karena itu dapat disimpulkan bahwa untuk himpunan data berukuran kecil, kueri SQL dapat digunakan untuk meningkatkan efisiensi jika diterapkan untuk memilih atribut split (node) yang pertama saja. Untuk himpunan data LungCancer, semakin besar nilai dSQL, semakin cepat eksekusinya. Ini karena kolom-kolom di tabel ini hanya memiliki 2 dan 3 nilai unik, sehingga indeks bitmap berukuran jauh lebih kecil dari data asli dan dapat diakses oleh fungsi agregat COUNT dengan sangat efisien.
47
Tabel III.1. Akurasi dan waktu eksekusi konstruksi pohon keputusan.
No
Dataset
1
Iris
2
Soybean
3
LungCancer
4
Eucalyptus
5
TIC2000/ TICEval2000
Training/Test Records
129 / 21 586/ 97 4286/ 714 630 / 105 5822/ 4000
#Columns
#Blocks
5
1
36
29
8
23
20
8
86
147
Accuracy / Execution Time (msec) dSQL= 0 1 2 86.8%/ 89.9%/ 89.9%/ 145 90 100 92.8%/ 91.8%/ 92.8%/ 3778 3738 5519 97.5%/ 97.5%/ 97.5%/ 5153 4386 3306 67.6%/ 67.6%/ 63.8%/ 2347 2139 4349 99.3%/ 99.3%/ 99.2%/ 203969 191213 95584
for 3 89.9%/ 129 92.8%/ 7077 97.5%/ 2270 56.2%/ 12837 96.6%/ 329465
III.5.2 Eksperimen Skalabilitas dan Efisiensi
Pada penelitian ini dilakukan dua kelompok eksperimen untuk mengobservasi skalabilitas dan efisiensi Algoritma III.1, yaitu dengan himpunan data sintetik acak dan hasil eksekusi fungsi. Himpunan data untuk eksperimen-eksperimen ini berupa tabel-tabel basisdata. Untuk tiap tabel, program utama (prosedur tersimpan) Java dieksekusi enam kali, waktu eksekusi dicatat, lalu nilai rata-rata waktu eksekusi pada eksekusi ke-2 sampai ke-6 dihitung. (DBMS menyimpan tabel yang terakhir kali diakses di shared-buffer, karena itu eksekusi pertama memakan waktu terlama dan tidak diperhitungkan. Eksekusi ke-2 sampai ke-6 memberikan waktu yang relatif stabil dan dapat dijadikan acuan dalam pengamatan time-response.) Berikut ini diberikan bahasan kedua kelompok eksperimen. Pada kelompok eksperimen pertama, dibuat sejumlah tabel sintetik acak. Tabeltabel itu memiliki 5 sampai 30 kolom dengan 5000 sampai 30.000 rekord. Untuk tabel 5 kolom, jumlah rekord yang diambil adalah 5.000, 10.000, 30.000, 50.000, 70.000, 100.000, 200.000, 300.000. Sedangkan untuk tabel dengan 10, 15, 20 dan 30 kolom jumlah rekord yang diambil adalah 5.000, 10.000, 30.000, 50.000, 70.000, 100.000, 200.000. Jumlah rekord yang menaik untuk tiap tabel dengan kolom tertentu ini dimaksudkan untuk mendapatkan grafik waktu eksekusi terhadap jumlah rekord untuk beberapa nilai dSQL. Dari grafik ini akan dapat
48
dilihat pengaruh jumlah rekord terhadap waktu eksekusi dan perbandingan waktu eksekusi untuk dSQL yang berbeda. Tujuan yang lain adalah untuk mengetahui sampai rekord ke berapa program berbasis memori, J48, dapat menangani rekord ini. Jumlah kolom yang menaik dimaksudkan untuk mengetahui pengaruh jumlah kolom terhadap waktu eksekusi. Adapun batas atas jumlah rekord diambil 300.00 (untuk 5 kolom) dan 200.000 (untuk 10 sampai dengan 30 kolom), karena dengan batas di atas tren perubahan waktu eksekusi terhadap jumlah rekord dan penanganan skalabilitas sudah dapat diobservasi. Hasil eksperimen diberikan pada Gambar III.6. Profil tabel (termasuk beberapa indeks bitmap) yang digunakan dalam eksperimen ini diberikan pada Lampiran D. Mayoritas jumlah nilai-nilai unik di setiap kolom pada tabel-tabel eksperimen dipilih kurang dari 10, dengan pertimbangan bahwa indeks bitmap sangat efisien untuk jumlah nilai unik yang kecil. Pada kelompok eksperimen kedua, himpunan data sintetik dibuat dengan teknik yang dirancang oleh Agrawal pada (Agrawal et. all, 1993), yang banyak digunakan di eksperimen-eksperimen pada literatur. Pada himpunan data ini, atribut kelas dibuat dengan Function-1 (untuk memproduksi pohon yang berukuran kecil) dan Function-7 (untuk memproduksi pohon yang berukuran besar). Nilai atribut numerik kemudian diubah ke nilai diskret. Waktu eksekusi yang ditunjukkan pada Gambar III.7 diperoleh dengan dSQL = 3.
49
Gambar III.6. Waktu eksekusi dalam konstruksi pohon untuk tabel dengan (a) 5, (b) 10, (c) 15, (d) 20, (e) 30 dan (f) 10 kolom, dimana tabel pada (f) memiliki jumlah nilai unik dua kali jumlah nilai unik tabel pada (b).
50
Gambar III.7. Waktu eksekusi untuk tabel berukuran sangat besar.
a. Bahasan Skalabilitas Perbandingan Skalabilitas Algoritma II.1 terhadap Algoritma III.1
Selama eksperimen dengan dSQL = 0, yang berarti seluruh pohon dikonstruksi oleh J48 atau Algoritma II.1 (algoritma C4.5 orisinil), ternyata prosedur tersimpan hanya dapat dijalankan untuk: a. tabel 5 kolom dengan jumlah rekord 5,000 sampai dengan 200,000 (Gambar III.6(a)) b. tabel 10 kolom dengan jumlah rekord 5,000 sampai dengan 100,000 (Gambar III.6(b)) c. tabel 10 kolom dengan nilai unik 2x dibanding b dengan jumlah rekord: 5,000 sampai dengan 70,000 (Gambar III.6(f)) d. tabel 15 sampai dengan 30 kolom dengan jumlah rekord 5,000 sampai dengan 50,000 (Gambar III.6(c) s/d (e)) Untuk tabel dengan jumlah rekord di atas jumlah tersebut di atas, setelah komputasi dilakukan beberapa saat (dalam waktu yang cukup lama) dan DBMS Oracle terus menerus menaikkan memori yang digunakan (sampai mencapai kurang lebih 500Mb), JVM memunculkan pesan kesalahan out of memory lalu menghentikan eksekusi program. Pada eksperimen selanjutnya, tabel berukuran besar yang tidak dapat ditangani oleh J48 (Algoritma II.1) dapat diolah dengan menggunakan dSQL = 1, 2 dan 3 (Algoritma III.1).
51
Pada eksperimen kelompok kedua, konstruksi pohon dengan Algoritma III.1 dapat dilakukan untuk tabel yang memiliki 1 s/d 5 juta rekord (Gambar III.7). Pengaruh dSQL terhadap Skalabilitas
Pada Gambar III.6 (a s/d f) ditunjukkan bahwa eksekusi dengan dSQL = 0 berhenti sampai jumlah rekord tertentu, sedangkan dengan dSQL = 1, 2 dan 3 eksekusi masih terus berlanjut. Pada Gambar III.6 (f) juga terlihat bahwa eksekusi dengan
dSQL = 2 dapat menangani tabel sampai dengan 200.000 rekord,
sedangkan dengan dSQL = 1 hanya dapat dilakukan sampai dengan 100.000 rekord. Dengan demikian, di sini ditunjukkan bahwa makin besar nilai dSQL maka makin besar ukuran tabel yang dapat ditangani. Analisis Skalabilitas
Dengan menggunakan kueri SQL untuk mengkonstruksi pohon sampai pada tingkat kedalaman 1, 2 dan 3, penggunaan ruang memori pada suatu saat dapat dikurangi. J48, yang digunakan untuk meneruskan setiap cabang (pada kedalaman 2, 3, 4 dan seterusnya), dapat membaca sub himpunan data atau partisi rekordrekord (setelah difilter dengan atribut atau kolom pemenang di tingkat 1, 2 dan 3), membuat obyek-obyek dari rekord-rekord dan menyimpannya di memori untuk diproses lebih lanjut. Makin besar nilai dSQL, makin kecil ukuran ruang memori yang diperlukan untuk komputasi pada suatu saat (lihat bagian III.1.2), sehingga makin besar ukuran tabel yang dapat ditangani. (Akan tetapi, pemilihan dSQL ini juga harus memperhatikan isu efisiensi seperti yang dibahas di bawah ini.) Dengan demikian dapat disimpulkan bahwa Algoritma III.1, yang di sini diimplementasikan dengan SQL dan Java, dapat meningkatkan skalabilitas dalam mengkonstruksi pohon. (Pada eksperimen ditunjukkan bahwa Algoritma II.1 hanya dapat menangani tabel yang berisi maksimum dua ratus ribu rekord, sedangkan Algoritma III.1 dapat menangani hingga lima juta rekord atau kurang lebih 25 kali ukuran yang dapat ditangani Algoritma II.1.) Sedangkan penambahan nilai dSQL dapat memperbesar volume data yang dapat ditangani.
52
b. Bahasan Efisiensi Pengaruh dSQL terhadap Efisiensi
Pada Gambar III.6 terlihat bahwa secara umum penggunaan dSQL = 3 tidak mendukung efisiensi, karena waktu eksekusi lebih lama dibandingkan dengan
dSQL = 1 dan 2. Waktu eksekusi dengan dSQL = 3 berkisar antara 1.5 sampai 2 kali waktu eksekusi dengan dSQL = 2, waktu eksekusi dengan dSQL = 2 berkisar antara 1.05 sampai 1.2 waktu eksekusi dengan dSQL = 1. Dengan demikian, waktu eksekusi dengan dSQL = 1 adalah yang paling baik, kecuali pada tabel 15 kolom dengan jumlah rekord 200.000 (dimana dSQL = 2 ternyata memberikan hasil yang terbaik). Analisis. Semakin besar nilai dSQL, semakin banyak dilakukan pemanggilan
fungsi COUNT yang mengakibatkan makin besar waktu eksekusi yang diperlukan, karena lalu-lintas I/O makin besar. Makin besar jumlah kolom dan jumlah nilai unik pada kolom juga makin banyak akses I/O. Jumlah nilai unik yang lebih banyak akan memperbesar ukuran indeks bitmap, karena setiap nilai unik akan menjadi sebuah bitmap (lihat Tabel III.2) yang memperbesar lalu-lintas I/O pada setiap pemanggilan fungsi agregat COUNT. (Jumlah nilai unik yang lebih banyak juga berarti bahwa pada saat pemilihan atribut split dilakukan, dimana waktu kompleksitas komputasi information gain dan split info adalah O(n) dengan n adalah jumlah nilai unik, diperlukan waktu eksekusi yang lebih banyak. Tapi, hal yang sama juga berlaku bagi J48.) Dengan demikian, nilai dSQL yang terbaik (mendukung eksekusi tercepat dan dapat menyelesaikan konstruksi pohon) dipengaruhi oleh jumlah nilai unik di tiap kolom tabel, jumlah kolom dan jumlah rekord di tabel. Pengaruh Indeks Bitmap terhadap Efisiensi
Pada kelompok eksperimen pertama, hasil yang menarik didapatkan untuk eksperimen dengan tabel 5 kolom. Konstruksi pohon dengan dSQL = 1, 2 dan 3 lebih cepat dibandingkan dengan J48 (dSQL = 0). Ini juga terjadi pada konstruksi pohon dengan dSQL = 1, 2 pada tabel 10 kolom.
53
Analisis. Konstruksi pohon dengan kueri SQL yang lebih efisien dibandingkan
dengan J48 dapat dijelaskan sbb: Indeks bitmap yang diakses oleh fungsi agregat COUNT berukuran jauh lebih kecil dibandingkan dengan ukuran tabel (lihat Tabel III.2 yang secara umum menunjukkan bahwa jumlah blok indeks bitmap lebih kecil terhadap sepersepuluh dari jumlah blok tabel). Karena itu, dengan mengeksekusi COUNT, penggunaan I/O (masukan/keluaran) banyak dikurangi, yang membuat eksekusi prosedur tersimpan menjadi lebih efisien. Table III.2. Jumlah blok tabel dan indeks bitmap pada tabel dengan 5 kolom. Col
#Distinct
1 2 3 4 5
4 9 5 7 10
Total of bitmap index blocks
Bitmap index blocks of 5-300 thousand records tables 5,000 (40) 1 1 1 1 1
10,000 (80) 1 2 2 2 2
30,000 (239) 4 7 5 7 5
50,000 (397) 5 9 6 7 10
70,000 (556) 6 13 8 11 15
100,000 (794) 10 17 11 14 20
150,000 (1191) 13 26 16 21 25
200,000 (1588) 17 30 22 28 35
300,000 (2378) 25 47 31 41 50
5
9
28
37
53
72
101
132
194
Keterangan: 5,000 (40) berarti bahwa tabel yang berisi 5000 rekord menempati 40 blok pada disk.
Pada kelompok eksperimen kedua, Gambar III.7 menunjukkan bahwa konstruksi pohon pada tabel yang diindeks dengan bitmap lebih cepat dibandingkan dengan yang tidak diindeks, baik pada Function-7 maupun Function-7. Tapi, pengurangan waktu eksekusi lebih besar pada Function-7. Makin besar ukuran tabel, pengurangan waktu eksekusi juga makin besar. Analisis. Analogi dengan eksperimen pertama, perbaikan waktu eksekusi di sini
terjadi karena Algoritma III.1 hanya mengakses indeks bitmap yang berukuran lebih kecil dibandingkan tabel asli. Penambahan ukuran indeks bitmap, yang bergantung kepada jumlah nilai unik di kolom dan jumlah rekord, dapat tidak berbanding lurus dengan penambahan ukuran tabel asli (untuk jumlah rekord yang sama, ukuran indeks bitmap berbanding lurus dengan jumlah nilai unik di kolom). Karena itu makin besar ukuran tabel, akses I/O dapat makin dihemat (dibandingkan jika mengakses tabel asli). (Jika tabel perlu diakses beberapa kali, pengurangan waktu akses pada indeks bitmap, yang ukurannya lebih kecil dibandingkan ukuran tabel, menjadi signifikan.)
54
Pengaruh Ukuran Pohon terhadap Efisiensi
Pada kelompok eksperimen kedua, terlihat bahwa waktu untuk konstruksi pohon pada tabel yang berisi himpunan data Function-1 (baik yang diindeks maupun tidak) lebih cepat dibandingkan dengan himpunan data Function-7. Pohon yang dihasilkan dari Function-1 berukuran 4 simpul dengan 3 daun. Berarti, pohon hanya memiliki kedalaman dua. Pohon yang dihasilkan dari Function-7 berukuran 32 simpul dengan 19 daun dan kedalaman pohon maksimum adalah 6. Jadi, eksekusi pohon yang berukuran besar memakan waktu lebih lama. Analisis. Sebagaimana dibahas pada Bab 2, kompleksitas komputasi pada setiap
simpul yang memiliki atribut split bertipe diskret adalah O(n2). Jika terdapat S simpul pada pohon, maka waktu komputasi adalah SO(n2), yang artinya makin banyak jumlah simpul, maka waktu komputasi makin lama. Selain itu, pada konstruksi pohon dengan SQL, makin banyak jumlah simpul juga makin banyak akses I/O yang harus dilakukan dan memperbesar waktu eksekusi, karena pemilihan atribut test pada setiap simpul dilakukan dengan memanggil fungsi SQL (SELECT COUNT) yang mengakses tabel atau indeks bitmap secara langsung. Kesimpulan dari eksperimen ini adalah waktu konstruksi pohon atau efisiensi Algoritma III.1 lebih baik dibandingkan Algoritma II.1 pada tabel yang memiliki 5 dan 10 kolom, dengan jumlah nilai unik kecil (4 sampai 10) dan diindeks bitmap.
55
Bab IV
Pra-pengolahan dan Klasifikasi Citra Batik
Setelah algoritma klasifikasi C4.5Db dijadikan fungsi internal ORDBMS (lihat sub-bab III.4), berbagai tipe data yang tersimpan di situ (misalnya data asuransi, penyakit, pertanian dan transaksi bisnis), dapat diklasifikasi dengan C4.5Db untuk mendapatkan model prediksi yang bermanfaat. Sebagai contoh, pada bisnis ritel fesyen atau penjualan kain secara online, model prediksi dapat dimanfaatkan untuk membantu para pelanggan dalam memilih busana atau kain/tekstil. Pada penelitian ini, model prediksi dikonstruksi dari data transaksi bisnis dengan kasus data transaksi penjualan batik yang mengandung citra batik. Bab ini membahas masalah pada pemilihan kain batik pada toko kain/busana, dasar teori yang mendasari pencarian solusi masalah dengan menggunakan algoritma klasifikasi pohon keputusan (langkah-langkah klasifikasi, warna fesyen, motif batik, batik sebagai obyek yang memberikan impresi tertentu), algoritma pengenal motif dan kontras yang dirancang untuk mempraolah citra batik agar dapat diklasifikasi, pembuatan model prediksi yang berupa aturan-aturan dari data transaksi sintetik penjualan batik dan evaluasi aturan dengan menggunakan kriteria tingkat kepercayaan aturan dan interpretabilitas untuk menguji aturan yang dihasilkan. Pada bagian akhir juga diberikan contoh pemanfaatan aturan pada sistem penjualan online.
IV.1 Masalah pada Pemilihan Batik yang Serasi bagi Calon Pemakai
Walaupun sudah umum diketahui bahwa berbusana yang baik dapat meningkatkan kepercayaan diri, banyak orang tidak belajar dengan serius tentang bagaimana berbusana yang serasi. Orang Indonesia cenderung untuk memilih busana yang mahal dengan model terkini, bahan yang bagus dan warna yang sedang tren, dan kurang memperhatikan apakah busana yang dipilih akan betulbetul cocok dan serasi dengan profil dan kepribadian mereka. Kesimpulan ini didapat melalui observasi di tempat-tempat umum. Walaupun ada fakta ini, berdasarkan hasil survei penulis, toko busana tradisional maupun online belum
56
memberikan saran bagaimana memilih busana yang sesuai. Toko busana atau kain/tekstil membiarkan para pelanggan memilih sendiri busana atau kain dari koleksi yang sangat banyak atau beragam yang dapat mengakibatkan salah pilih. Kain/tekstil yang dijual di toko-toko tradisional maupun online beragam tipe atau jenisnya. Pada penelitian ini, batik dipilih sebagai studi kasus. Batik sudah diproduksi dan dipasarkan secara luas. Beberapa contoh tipe batik yang dipasarkan adalah batik kraton, batik sudagaran, batik Belanda, batik Cina, batik Djawa Hokokai dan batik Indonesia yang juga disebut batik modern (Kerlogue, 2004; Doellah, 2002). Batik-batik ini berbeda dalam hal motif, teknik produksi, variasi warna, bahan warna dan bahan tekstil. Motif pada batik bervarasi dan setiap motif memiliki arti filosofis/makna tertentu yang dapat memberikan impresi tertentu kepada pemakainya. (Batik merupakan karya seni yang “kompleks” atau kaya dengan makna dan dimaksudkan untuk memberikan keindahan visual sekaligus “kecantikan dalam” dari para pemakai, yang dapat dicapai apabila batik serasi dengan pemakainya. Lihat (Doellah, 2002).). Berdasarkan hasil observasi juga didapati bahwa warna pada batik sangat beragam. Setiap tipe batik, memiliki warna-warna utama sendiri (misalnya warna batik Cina banyak yang memberi kesan sejuk/lembut, sedangkan batik kraton memberi kesan alami). Selain itu, komposisi warna pada batik juga beragam, ada yang agak kabur, cukup jelas atau sangat kontras. Karena keberagaman motif dan warna batik, memilih batik yang sesuai dengan profil pemakai (meliputi kepribadian, warna kulit dan rambut) agar berpenampilan menarik, terkadang tidak mudah untuk dilakukan orang karena keterbatasan pengetahuan mereka tentang motif batik maupun warna-warna fesyen. Klasifikasi data dengan C4.5Db dapat digunakan untuk mengatasi masalah tersebut. Seandainya toko sudah menyimpan data para pembeli, batik yang dijual dan transaksi penjualan batik di ORDBMS, dimana dalam memilih batik ini pembeli mendapat konsultasi dari ahli busana, maka data tersebut dapat diklasifikasi dengan algoritma C4.5Db untuk mendapatkan aturan-aturan. (Data
57
transaksi penjualan produk, dalam hal ini batik, dapat berukuran sangat besar dan berisi jutaan transaksi, karena itu harus ditangani oleh algoritma yang dapat menangani data berukuran sangat besar.) Aturan-aturan ini jika digunakan pada sistem on-line yang interaktif dapat digunakan untuk membantu pemilihan batik bagi para calon pembeli, tanpa bantuan ahli busana lagi. IV.2 Dasar Teori
Sub-bab ini membahas dasar teori yang menjadi acuan dalam melakukan klasifikasi data transaksi penjualan batik dan pengembangan teknik-teknik prapengolahan citra batik. IV.2.1 Langkah-langkah Klasifikasi Data pada Tahap Belajar
Langkah-langkah dalam penambangan data untuk keperluan bisnis menurut Berly (1997) adalah mendefinisikan tujuan, mengumpulkan data, menambang data (dalam hal ini menggunakan teknik klasifikasi), menggunakan informasi yang diperoleh dari penambangan data di dalam proses bisnis dan melakukan pengukuran dan evaluasi terhadap hasilnya. Jika hasil belum memuaskan, iterasi diulangi dengan kembali ke langkah pengumpulan data lagi. Karena tidak dimungkinkan untuk menerapkan seluruh langkah, bagian penelitian ini hanya berfokus kepada pendefinisian tujuan, pengumpulan data yang diwakili dengan pembuatan data transaksi penjualan batik sintetik dan pembuatan model prediksi (aturan-aturan) dari data ini.
(Pada Bab 1 sudah dibahas bahwa langkah
klasifikasi data terdiri dari dua tahap, yaitu tahap belajar dari himpunan data pelatihan untuk membuat model prediksi dan klasifikasi kasus baru. Penelitian ini hanya menerapkan tahap belajar). Sebagaimana juga sudah disebut pada Bab 1, tujuan klasifikasi ini adalah untuk membuat model prediksi yang berguna dalam membantu pemilihan batik yang serasi bagi calon pemakai, dimana model prediksi ini berupa aturan-aturan asosiasi (antara profil pemakai terhadap batik yang serasi dengan profil pemakai). Skema klasifikasi pada penelitian ini ditunjukkan pada Gambar IV.1, dengan data pelatihan adalah data transaksi penjualan sintetik yang mengandung citra batik dan keluarannya adalah aturanaturan.
58
Gambar IV.1 Skema klasifikasi tabel transaksi penjualan batik pada tahap belajar.
Setelah himpunan data dikumpulkan dan disimpan di ORDBMS sebagai tabel basisdata, maka langkah-langkah tahap belajar algoritma C4.5Db untuk membuat aturan-aturan dari himpunan data dapat diringkas sebagai berikut (Han et al., 2001; Berly, 1997): a. Memilih atribut-atribut pada tabel yang akan digunakan. b. Pembersihan data, termasuk pembuangan sampel atau penggantian nilai atribut jika nilai atribut berupa derau. c. Pengubahan tipe nilai atribut agar siap dipresentasikan ke algoritma C4.5Db. d. Pembuatan pohon keputusan atau aturan-aturan. e. Evaluasi aturan-aturan berdasarkan kriteria interestingness-measure (kesederhanaan, kepastian, potensi penggunaan atau kebaruan) untuk mencari aturan-aturan yang berharga. Bagian penelitian ini akan menerapkan langkah-langkah di atas kecuali langkah (b). (Di sini digunakan data sintetik yang sudah ”bersih”, maka langkah (b) tidak dilakukan.) Pada langkah (c), karena tabel transaksi penjualan batik memiliki atribut yang bertipe citra (batik) dan tidak dapat ditangani oleh C4.5Db, maka citra batik akan dipraolah untuk dijadikan data bertipe diskret (lihat Gambar 4.1). Pada langkah (e), yang digunakan sebagai kriteria evaluasi aturan adalah potensi penggunaan aturan yang diwakili dengan tingkat kepercayaan aturan dan interpretabilitas yang ditunjukkan melalui konversi aturan ke perintah SQL. Secara khusus, langkah-langkah klasifikasi yang diterapkan pada penelitian ini ditunjukkan pada Gambar 4.2.
59
penyiapan tabel dan pembuatan data transaksi sintetik
pra-pengolahan citra batik pada tabel untuk mengenali kontras warna dan motif
evaluasi aturan berdasarkan kriteria tingkat kepercayaan aturan dan interpretabilitas
pemilihan atribut dan pembuatan aturan-aturan dari tabel transaksi dengan algoritma C4.5Db
Gambar IV.2. Langkah-langkah klasifikasi data transaksi penjualan batik.
Setelah aturan dievaluasi, pada akhir bab juga akan diberikan ilustrasi pemanfaatan aturan atau algoritma C4.5Db pada sistem penjualan batik online.
IV.2.2 Klasifikasi Warna Fesyen
Irma Hardisurya (2004), seorang ahli dalam warna busana dan penampilan, menekankan pentingnya memilih warna busana yang serasi bagi kombinasi warna kulit dan rambut. Dia mengklasifikasi warna fesyen menjadi warna aksen dan netral. Untuk busana formal, warna aksen sebaiknya dikombinasikan dengan warna netral untuk menghindari kesan glamor atau sensasi. Hardisurya menyarankan agar orang yang memiliki tingkat kontras warna yang tinggi antara kulit dan rambut juga mengenakan busana yang memiliki tingkat kontras yang tinggi agar penampilan terlihat serasi. Dengan kata lain, semakin kontras warna kulit dan rambut, semakin kontras warna netral dan aksen yang semestinya dipilih pada busana. Berdasarkan warna kulit dan rambut, Hardisurya membagi palet orang ke dalam beberapa kelas, setiap kelas akan memiliki koleksi warna busana yang serasi bagi kelas ini. Kelas palet dan warna yang disarankan diberikan pada Tabel IV.1. Dengan memilih warna busana aksen dan netral yang serasi bagi kulit dan rambut, kulit orang akan terlihat lebih hidup dan indah.
60
Table IV.1. Warna kulit-rambut dan warna fesyen yang disarankan (Hardisurya, 2004) . Palettes
Color Skin
Hair
Contrast
Suggested Accent Colors
Suggested Neutral Colors
Cool
White pink, pink yellow, beige, rose beige Ivory, peach, beige
Black
High
Cool colors: magenta, zamrud, purple, lemon, etc.
Black, gray, taupe, navy, white.
Brown
Low
Brown, bright navy, zaitun green, camel, beige, off-white.
Warm
Yellow
Brown to BrownBlack
Medium to High
Bright-light colors: light green, coral, pastel green, peach, soft orange. Bright colors: red-orange, tosca, apple green, yellow, etc.
Dark warm
Brown, dark golden brown
Brown to Black
Low
Red, brown-red, dark yellow, green-blue.
Warm Brown
Brown, golden brown
Brown, golden brown
Low to Medium
Light Dark
Brown to Black
Brown to Black
Low
Soft Cool
White pink, peach, olive, dark olive, golden brown
Graybrown
Medium
Red tomato, terakota, dark peach, dark orange, dark yellow. Bright colors: red-orange, red, magenta, light green, zamrud, dark orange, light green. Soft colors of blue, green, coral, yellow, peach, olive.
Bright warm
Black, brown, bright navy, red-grape, deep purple, cream, off-white. Dark brown, black, dark green, dark navy, red-grape, deep purple, ivory. Light to dark brown, dark green, offwhite, ivory. Black, brownblack, brown, dark gray, navy, ivory. Soft black, dark gray, dark brown, red grape, cream, off-white.
IV.2.3 Motif Batik, Arti dan Impresi
Dalam beberapa dekade terakhir ini, beberapa jenis batik sudah diproduksi dan dipasarkan, misalnya batik kraton atau klasik, batik sudagaran, batik Belanda, batik Cina, batik Djawa Hokokai dan batik Indonesia yang juga disebut batik modern (Kerlogue, 2004; Doellah, 2002).
61
Batik-batik ini berbeda dalam hal
motif, teknik produksi, variasi warna, bahan warna dan bahan tekstil. Walaupun batik sudah berubah bersama berjalannya waktu, menurut Iwan Tirta, seorang perancang batik yang terkemuka, batik Indonesia memiliki keunikan. Keunikan ini terletak pada motif, pakem (cara motif diorganisasi), produksi yang menggunakan malam, makna filosofis dan isen-isen (ornamen-ornamen kecil yang digunakan untuk mengisi ruang yang kosong di antara motif utama) (Kompas, 19 Agustus 2001). Unsur-unsur yang membentuk motif dinamakan ornamen. Pakem, yang dapat berbentuk geometris maupun non-geometris, memiliki peranan penting dalam mendefinisikan filosofi atau arti batik (Doellah, 2002; Kerloug, 2004; Hamzuri,1981; Susanto, 1980). Untuk batik klasik, contoh motif dan namanama batik diberikan pada Tabel IV.2. Batik yang diproduksi di daerah pesisir (Pekalongan,
Cirebon
dan
Madura),
yang
dinamakan
batik
pesisir,
mengekspresikan kebebasan dan dinamika melalui pakem. Ini berbeda dengan batik yang diproduksi di daerah sekitar keraton (Yogyakarta dan Solo) yang lebih bersifat klasik. Walaupun sekarang ini batik sudah dibuat lebih modern, motifmotif klasik masih dipertahankan (tetapi motif klasik ini sedikit dimodifikasi untuk memberikan variasi yang lebih baik). Iwan Tirta menyatakan bahwa karena motif batik atau pakem memiliki arti, orang dapat memilih motif yang sesuai untuk kepribadiannya atau untuk tujuan memberikan impresi tertentu kepada pemakai batik. Beberapa contoh motif klasik, arti filosofis dan impresi yang diberikan kepada pemakainya diberikan pada Tabel IV.3. (Motif batik, terutama yang klasik, memiliki arti filosofis.) Beberapa motif juga dirancang untuk acara tertentu, misalnya pernikahan, pertunangan, pemakaman, perayaan kelahiran bayi, kencan (untuk menarik lawan jenis) dan untuk sehari-hari. Beberapa contoh motif batik diberikan pada Gambar IV.3.
62
Tabel IV.2. Contoh motif batik klasik (Doellah, 2002; Kerlouge, 2004; Hamzuri, 1981; Susanto, 1980). Geometrical Motifs Motif banji
ganggong ceplokan
anyaman, nitik parang, lereng
Description Its basis is swastika, a simple cross with arms of equal length, each arm bent at right angles pointing in the same direction. The motif is built up from swastika interconnected at angles of 90 degrees. Square, filled with ganggong plant and diagonal lines Repetitive shapes of circle, ellip, square, square with smooth corner, rosette, star, cross sections of fruit. Recognized by the rows of dots and short stripes that run parallel and at right angles in a pattern that imitates woven decoration. Gently curved design is run diagonally in a powerful rhythm, the space between parallel running is filled with small ornaments (isen-isen).
Examples of Batik banji bengkok, guling, kerton
ganggong branto, sari, rejuna, kurung, yojana kawung picis, sen; ceplok keci, nogosari rengganis, nitik krawitan, tirta teja alit parang barong, baris, centong, kembang, kurung, rusak, etc
Non-Geometrical Motifs semen
lunglungan
Filled with mountains (meru) or places to grow plants, plants and animals ornaments. Ornaments are placed almost freely. Similar to semen but with less ornaments and without meru.
semen gurdo, kasut, Yogya
Babon angrem, grageh walu, lung klewer, peleman
Table IV.3. Contoh motif, arti dan impresi batik (Doellah, 2002; Kerlouge, 2004; Hamzuri, 1981; Susanto, 1980). Motif or Pakem Repetitive squares.
Kawung (repetitive ellips, circles), nitik, truntum. Parang, lereng, wave. Modified versions of meru (mountain), fire, garuda, bird that come in sharp edges. Original meru, garuda, building (candi, gate, etc.). Combination of merus, plants, animals, flowers. Fire, dragons. Buketan (bucket of flowers), butterflies. Lokcan, modang
Philosophical Meaning Varies, depend on other ornaments coming with them. Examples: showing wisdom, prosper, guiding, etc. Giving hope, wisdom, guiding.
Impressions, Effects Mature, calm
Neat, calm, mature.
Showing changes, dynamic, strongness.
Dynamic, masculine.
Preserver, showing wisdom, firm will. Hoping wealth, life, good luck, fertility. Showing strongness, braveness, sakti, toughness. Expressing beauty.
Classical, protective, mature. Natural, classical.
Unknown.
Elegant, ningrat.
63
Masculine, brave Feminime
kawung
nitik
parang
semen with meru and garuda motif
Gambar IV.3. Contoh motif batik.
IV.2.4 Batik sebagai Obyek
Pada sub-bab sebelumnya sudah dibahas bahwa: a. Motif batik memiliki arti filosofis dan memberikan impresi tertentu bagi pemakainya. b. Untuk pemilihan busana yang serasi bagi profil pemakainya, warna dan tingkat kekontrasan batik perlu diperhitungkan. Untuk memperjelas alasan pada butir (b) di atas, maka di sini diberikan bahasan lebih lanjut. Berdasarkan observasi yang dilakukan terhadap batik-batik, didapati fakta bahwa impresi yang utuh dari batik, ternyata tidak hanya diberikan oleh motif saja, melainkan dari gabungan motif, warna utama dan tingkat kekontrasan. Contohcontoh batik dengan nama motif yang sama tapi memberikan impresi yang berbeda diberikan batik-batik pada Gambar IV.4, 5 dan 6. Motif lereng ternyata tidak selalu memberi impresi dinamis, melainkan dapat memberi impresi rapi atau bahkan feminim karena yang lebih menonjol adalah motif buketan (bunga) yang ada pada batik. Warna juga berpengaruh dalam memberi impresi tambahan, misalnya sejuk atau hangat (Gambar IV.4(b)), sedangkan tingkat kontras yang tinggi menambah impresi jelas dan tegas (Gambar IV.4(a)).
64
(a)
(b)
Gambar IV.4. Motif lereng yang memberi impresi: (a) jelas-tegas-dinamis (b) rapi-sejuk (atas), rapi – hangat (tengah) dan feminim (bawah).
Motif ceplok, yang secara umum memberi kesan rapi, ternyata lebih memberi impresi tegas jika tingkat kontras warna tinggi (Gambar IV.5(e)). Namun, selain warna, impresi tambahan juga diberikan oleh isen-isen. Warna merah memberi kesan berenergi (Gambar IV.5(a)), kuning memberi kesan hangat (Gambar IV.5(b)), hijau pastel memberi kesan sejuk (Gambar IV.5(d)) dan isen-isen beserta warna netral memberi kesan matang dan klasik (Gambar IV.5(c)) . Motif buketan yang secara umum memberi kesan feminim (Gambar IV.6(a)), ternyata dapat juga memberi impresi lain. Impresi klasik diberikan jika motif buketan berupa “bunga klasik” (Gambar IV.6(b)). Jika motif buketan kalah menonjol dibandingkan dengan motif lereng, maka impresi feminim bahkan hilang dan yang diberikan adalah impresi rapi dan dinamis (Gambar IV.6(c)).
65
(a) (b) (e)
(c)
(d)
Gambar IV.5. Motif ceplok yang memberi impresi: (a) rapi – berenergi (b) rapihangat (c) rapi – matang – klasik (d) rapi – sejuk (e) tegas.
(a)
(b)
(c)
Gambar IV.6. Motif buketan yang memberi impresi: (a) feminim (b) klasik (c) rapi – dinamis.
66
IV.3
Penyiapan
Data
Transaksi
Penjualan
Sintetik
dan
Struktur
Penyimpanannya
Bagian IV.2.2, IV.2.3 dan IV.2.4 sudah membahas dan menunjukkan bahwa variabel warna fesyen, kontras dan motif batik penting dalam menentukan batik mana yang sesuai dengan profil pemakai yang tertentu (diwakili oleh variabel kepribadian, warna kulit dan warna rambut). Karena itu struktur penyimpanan
data yang akan diklasifikasi harus mengakomodasi penyimpanan nilai-nilai variabel tersebut agar dapat dihasilkan aturan-aturan yang mengasosiasikan profil pemakai dengan batik yang sesuai. Berhubung data transaksi penjualan batik nyata belum ditemukan, pada penelitian ini dibuat data transaksi sintetik. Struktur Penyimpanan Data
Salah satu struktur kelas yang dapat digunakan untuk memfasilitasi penyimpanan obyek-obyek citra batik dan pelanggan butik batik ditunjukkan oleh Gambar IV.7, sedangkan skema tabel transaksi yang berisi obyek-obyek dari kelas itu ditunjukkan pada Gambar IV.8. Penjelasan tentang kelas Batik: Kelas ini memiliki atribut Color, Contrast dan Motif yang berturut-turut dapat diisi dengan warna utama, tingkat kontras dan motif batik. Atribut Color dapat diisi secara manual maupun secara otomatis melalui metoda setMainColor (metoda ini dapat mengimplementasikan teknik pengelompokan atau klasifikasi). Nilai atribut Contrast diisi oleh metoda clusterContrast() yang merupakan implementasi dari
algoritma pengenal kontras (Algoritma 2 pada bagian IV.4), sedangkan nilai Motif diisi oleh metoda classifyClusterMotif() yang merupakan implementasi dari algoritma pengenal motif (Algoritma 8 pada bagian IV.4 ). Atribut MotifColor, MotifContrast, MotifContrastColor berisi string gabungan dari isi atribut Color, Contrast dan Motif. Tujuan dari pendefinisian atribut-atribut ini adalah untuk
memfasilitasi pembuatan aturan yang lebih rinci pada klasifikasi tabel transaksi penjualan batik. Ide dari pembuatan atribut baru yang nilainya berisi gabungan dari atribut-atribut lain ini diambil dari konsep generalisasi data di Han et. all (2001). Generalisasi data memfasilitasi pembacaan data pada tingkat konseptual
67
yang rendah maupun yang lebih tinggi. Pada kasus ini, tingkat konseptual yang terendah adalah MotifContrastColor, yang lebih tinggi adalah atribut MotifColor, MotifContrast, sedangkan yang tertinggi adalah atribut Motif, Contrast dan Color.
Klasifikasi data pada tingkat konseptual yang lebih tinggi akan menghasilkan aturan yang lebih umum dibandingkan dengan yang lebih rendah.
Batik Fname: string Image: ORDImg Color: string Contrast: string Motif: string MotifColor: string MotifContrast: string MotifContrastColor: string Signature: array of number
BatikDesciption PatternSize: string Appearance: string Type: string Material: string Price: number ColorMaterial: string Origin: string UsedFor: ORDDoc Occasion: ORDDoc Philosophy: ORDDoc
setColor() clusterContrast() classifyClusterMotif() setMotifColor() setMotifContrast() setMotifContrastColor() computeSignature()
. . .
Customer IdCust: number Age: string Gender: char BodySize: string Skin: string Hair: string Personality: string Profession: string Income: string
...
Gambar IV.7. Diagram kelas Batik dan Customer.
68
Penjelasan tentang kelas BatikDescription: Informasi tentang citra batik dapat dilengkapi dengan deskripsi yang lebih detil seperti yang diberikan pada atribut-atribut kelas BatikDescription. Informasi detil ini dapat disimpan dalam beberapa format dokumen, lalu “dibungkus” lagi dan dijadikan obyek ORDDoc, yang merupakan salah satu tipe obyek pada fitur Oracle InterMedia. Pendefinisian kelas ini hanya dimaksudkan untuk memberi petunjuk tentang kemungkinan penambahan informasi batik yang disimpan pada ORDBMS. Karena dalam eksperimen ini belum diimplementasikan, maka kelas ini diberi warna abu-abu. (Untuk penelitian lanjutan, obyek-obyek ORDDoc dapat ditambang dengan teknik penambangan data teks.) Setelah kelas-kelas (Oracle menamakan kelas sebagai tipe obyek) pada Gambar IV.7 dideklarasikan di dalam ORDBMS, maka dibuat tabel TBatik dan TCustomer dengan perintah SQL: CREATE TABLE TBATIK OF BATIK; CREATE TABLE TCUSTOMER OF CUSTOMER;
Adapun tabel transaksi penjualan batik yang digunakan pada eksperimen merupakan implementasi dari diagram E-R yang ditunjukkan pada Gambar IV.8. (Atribut transaksi dapat ditambah sesuai kebutuhan, tapi untuk keperluan eksperimen di sini hanya digunakan atribut yang minimal.)
Id
TBatik
Time
m
n
TCustomer
transaction
Gambar IV.8. Rancangan tabel transaksi penjualan batik sintetik. Penyiapan Data Transaksi Sintetik
Untuk keperluan eksperimen ini, dibuat rekord-rekord sintetik yang diisikan pada tabel TBatik, Tcustomer dan TTransBatik. Tabel terakhir adalah implementasi dari relasi transaction pada Gambar IV.8. Keterangan pada pengisian ketiga tabel adalah sebagai berikut:
69
1. Pengisian rekord pada TBatik: Dari citra-citra batik yang digunakan pada eksperimen untuk menguji algoritma-algoritma pra-pengolahan citra batik, dipilih sebanyak 101 citra batik yang mewakili dari semua motif yang ada. Citra beserta data hasil pengenalan kontras dan motif (lihat bagian IV.4) dijadikan rekord-rekord di TBatik. Kolom MotifColor, MotifContrast, dan MotifContrastColor lalu diisi hasil penggabungan string dari kolom Motif – Color, Motif – Contrast, dan Motif – Color – Contrast.
2. Pengisian rekord pada TCustomer: Tabel ini diisi dengan 123 rekord sintetik yang dimisalkan sebagai profil pelanggan toko batik. 3. Pengisian rekord pada TTransBatik: Tabel ini diisi dengan 221 rekord sintetik yang dimisalkan sebagai data transaksi toko batik, dimana pada setiap transaksi, pembeli dengan profil tertentu membeli batik yang sudah sesuai dengan profilnya. Pengisian rekord-rekord tabel ini dilakukan penulis dengan berbekal pengetahuan tentang profil orang dan batik yang sesuai dengan profil tersebut (pengetahuan diperoleh antara lain dari Hardisurya (2004), Doellah (2002), Kerlogue (2004), Susanto (1980), pengamatan terhadap orang-orang di tempat umum dan pergaan busana). IV.4. Metoda Pra-pengolahan Citra Batik untuk Mengenali Tingkat Kontras dan Motif
Pada Gambar IV.7 ditunjukkan bahwa kelas Batik memiliki metoda setContras() dan classifyClusterMotif() yang berfungsi untuk mengenali kontras warna dan motif citra batik, yang merupakan implementasi dari algoritma-algoritma pengenal kontras dan motif. Bagian ini memberikan bahasan singkat mengenai hasil penelitian pada perancangan algoritma-algoritma untuk mengenali kontras warna dan motif secara otomatis. (Bahasan lebih lengkap tentang algoritmaalgoritma ini diberikan pada Lampiran F.) Algoritma untuk Mengenali Tingkat Kontras Warna. Pengenalan kontras
warna dapat dilakukan dengan teknik pengelompokan. Dari dua algoritma pengelompokan citra batik berbasis kontras yang dirancang, yaitu menggunakan wavelet Haar (dinamakan Algoritma-2) dan Covariance Matrix Trace (dinamakan
70
Algoritma-1), ternyata yang memberikan akurasi dan kecepatan yang lebih baik adalah yang pertama (lihat Tabel IV.4 dan Gambar IV.9). Dengan algoritma ini, citra batik dikelompokkan menjadi tiga, yaitu yang memiliki tingkat kontras rendah (L), medium (M) dan tinggi (H). Tabel IV.4. Prosentase kesalahan Algoritma-1 dan Algoritma-2 Error L as M L as H M as L M as H H as L H as M Total
Algorithm - 1 Image Size (pixels) 64×64 128×128 256×256 14 15 16 0 0 0 31 18 11 39 40 47 19 7 3 94 84 85 197 164 162 (40%) (34%) (33%)
Algorithm - 2 Image Size (pixels) 64×64 128×128 256×256 23 26 25 3 3 3 0 0 0 68 52 20 2 0 0 40 26 3 136 (28%) 107 (22%) 51 (10%)
L = low, M = medium, H = high contrast
(a)
(b)
Gambar IV.9 Waktu eksekusi pengelompokan citra berbasis kontras dengan (a) Algoritma-2 (b) Algoritma-3 untuk citra berukuran 64×64, 128×128 dan 256×256 piksel. Algoritma untuk Mengenali Motif. Pengenalan motif dari citra batik secara
otomatis ternyata merupakan tugas yang tidak mudah, terutama karena adanya isen-isen dan ukuran serta orientasi motif yang bervariasi. Pada penelitian ini dirancang lima algoritma klasifikasi dan pengelompokan citra batik (dinamakan Algoritma-3 s/d Algoritma-8) dengan menggunakan wavelet, mask, deskriptor Fourier, momen, korelasi dan hibrid (berbasis bentuk dan tekstur, dengan mask dan wavelet). Berdasarkan hasil eksperimen dengan 489 citra batik nyata didapati
71
bahwa algoritma yang memberikan akurasi terbaik (tingkat akurasi: 80.1%) adalah yang hibrid (lihat Tabel IV.5) tapi dengan kecepatan eksekusi di bawah yang menerapkan Fourier dan momen (lihat Gambar IV.10). Tabel IV.5. Kesalahan Algoritma-3 s/d Algoritma-8 Algoritma 3 (moments) 4 (Fourier descriptor) 5 (correlation) 6 (masks) 7 (wavelet) 8 (Alg-6 & 7)
k 9 5 1 1 1
Kesalahan (%) 66.7 65.9 51.5 23.1 20.4 19.3
Gambar IV.10 Waktu eksekusi Algoritma-3 s/d Algoritma-8.
Melalui bahasan singkat dari hasil-hasil eksperimen, sub-bab ini telah menunjukkan bahwa transformasi wavelet 2-dimensi dan teknik-teknik pada algoritma image retrieval berbasis bentuk dan tekstur dapat dimanfaatkan pada algoritma-algoritma pengenal motif dan kontras agar eksekusi cepat dan memiliki akurasi yang cukup baik (kesimpulan yang lebih rinci diberikan pada Lampiran F).
72
IV.5 Pemilihan Atribut dan Eksperimen untuk Memproduksi Aturan-aturan
Tujuan dari eksperimen adalah untuk mendapatkan aturan-aturan (dalam struktur pohon) dari tabel transaksi penjualan batik (lihat bagian IV.3) yang mengasosiasikan profil pemakai dengan batik yang sesuai, dengan algoritma C4.5Db. Untuk keperluan ini, atribut-atribut (prediktor maupun kelas) yang dipilih untuk enam eksperimen ditunjukkan pada Tabel IV.6. Pemilihan atribut ini didasari oleh kebutuhan untuk mendapatkan aturan asosiasi antara profil pemakai dan batik yang sesuai, pada beberapa tingkat konseptual (tingkat konseptual ini dibahas pada bagian IV.3). (Untuk memenuhi kebutuhan ini, selain yang ditunjukkan pada Tabel IV.6 juga dimungkinkan untuk memilih atribut-atribut lain. Isi Tabel IV.6 hanya merupakan contoh atribut-atribut yang dapat dipilih.) Tabel IV.6. Kolom-kolom dan kelas untuk eksperimen. Eksperimen 1 2 3 4 5 6
Kolom / Atribut Gender, Personality Gender, Personality Gender, Personality Gender, Personality Gender, Age, Skin, Personality Gender, Age, Skin, Hair, Personality
Kelas Motif Motif_Contrast Motif_Color Motif_Color_Contrast Motif_Color Motif_Color_Contrast
Karena himpunan data yang diklasifikasi berukuran kecil, yaitu 221 rekord, maka klasifikasi dengan prosedur tersimpan yang sudah dibahas pada Bab III dilakukan dengan nilai dSQL = 0 atau prosedur tersimpan J48. Pada eksperimen ini, perintah-perintah SQL untuk pemanggilan prosedur tersimpan yang digunakan adalah CALL EXEC_C45(‘Table’, ‘SelectedColumns’, dSQL);
dimana SelectedColumns dapat berisi string seperti ‘DDOODPOO’ dengan D (Discrete) menyatakan kolom yang dipilih, O (Omit) kolom yang tidak disertakan dalam klasifikasi dan P (Primary) kolom yang dipilih sebagai kelas. Table adalah TTransBatik atau nama view yang dibuat dari TTransBatik. EXEC_C45 adalah
nama prosedur tersimpan berbasis SQL yang memanggil prosedur tersimpan Java. Eksekusi untuk pembuatan pohon pada eksperimen 1 s/d 6 hanya memakan waktu antara 156 s/d 625 mili detik, jadi sangat efisien.
73
Penjelasan Pohon Hasil Eksperimen
Sebagian aturan-aturan (yang direpresentasikan dalam bentuk pohon) sebagai hasil dari eksperimen ke-1 s/d 4 diberikan pada Gambar IV.11 s/d IV.14. Atributatribut prediktor direpresentasikan dengan huruf kapital, sedangkan nilai atribut ditulis dengan notasi judul. Nilai kelas yang diramal diberikan setelah huruf ‘:’. Angka di dalam kurung setelah kelas, misalnya (59.0/37.0), menyatakan “jumlah seluruh rekord yang mendukung aturan ini / jumlah rekord yang terklasifikasi dengan benar”. Pada contoh tersebut, 37 rekord terklasifikasi dengan benar dari 59 rekord yang membentuk cabang ini. Cara membaca pohon diberikan dengan contoh berikut ini. Sub-pohon PERSONALITY = Warm | GENDER = F : Buket-Other (22.0/13.0) | GENDER = M : Ceplokan (17.0/6.0)
dikonversi ke aturan sebagai: IF PERSONALITY = Warm AND GENDER = F Other IF PERSONALITY = Warm AND GENDER = M
THEN CLASS = BuketTHEN CLASS = Ceplokan
dan diartikan menjadi: -
Orang yang memiliki kepribadian hangat dan bergender wanita, disarankan untuk mengenakan batik bermotif ‘Buket’ atau yang mirip dengan motif ini (tingkat kepercayaan 59% atau 13/22).
-
Orang yang memiliki kepribadian hangat dan bergender pria, disarankan untuk mengenakan batik bermotif ‘Ceplokan’ (tingkat kepercayaan 35% atau 6/7).
(Tingkat kepercayaan pada aturan didefinisikan sebagai: jumlah rekord yang terklasifikasi dengan benar / jumlah rekord yang mendukung terbentuknya aturan itu.)
74
J48 pruned tree: ---------------PERSONALITY = Brave: Ceplokan (4.0/2.0) PERSONALITY = Calm: Ceplokan (33.0/22.0) PERSONALITY = Confident: Buket-Other (59.0/37.0) PERSONALITY = Mature: Buket-Other (38.0/19.0) PERSONALITY = Outspoken: Lereng (31.0/19.0) PERSONALITY = Shy | GENDER = F : Buket-Other (15.0/5.0) | GENDER = M : Ceplokan (2.0/1.0) PERSONALITY = Warm | GENDER = F : Buket-Other (22.0/13.0) | GENDER = M : Ceplokan (17.0/6.0) Number of Leaves : 9 Size of the tree : 12
Gambar IV.11. Pohon yang dihasilkan pada eksperimen ke-1.
J48 pruned tree: ---------------PERSONALITY = Brave: Ceplokan_High (4.0/2.0) PERSONALITY = Calm: Ceplokan_Med (33.0/24.0) PERSONALITY = Confident: Buket-Other_High (59.0/45.0) . . . . PERSONALITY = Warm | GENDER = F : Buket-Other_Low (22.0/16.0) | GENDER = M : Ceplokan_High (17.0/11.0) Number of Leaves : 9 Size of the tree : 12
Gambar IV.12. Pohon yang dihasilkan pada eksperimen ke-2.
J48 pruned tree: ---------------PERSONALITY = Brave: Ceplokan_Black (4.0/2.0) PERSONALITY = Calm | GENDER = F : Ceplokan_NaturalBeige (24.0/19.0) | GENDER = M : Ceplokan_Olive (9.0/7.0) PERSONALITY = Confident: Buket-Other_Black (59.0/53.0) | . . . PERSONALITY = Warm | GENDER = F : Buket-Other_Yellow (22.0/18.0) | GENDER = M : Ceplokan_Mustard (17.0/14.0) Number of Leaves : 11 Size of the tree : 16
Gambar IV.13. Pohon yang dihasilkan pada eksperimen ke-3.
75
J48 pruned tree: ---------------PERSONALITY = Brave: Ceplokan_High_Black (4.0/2.0) PERSONALITY = Calm | GENDER = F : Ceplokan_Med_NaturalBeige (24.0/19.0) | GENDER = M : Ceplokan_Med_Olive (9.0/7.0) PERSONALITY = Confident: Buket-Other_High_Black (59.0/55.0) | . . . PERSONALITY = Warm: Truntum_Med_YellowPlum (39.0/34.0) Number of Leaves : 10 Size of the tree : 14
Gambar IV.14. Pohon yang dihasilkan pada eksperimen ke-4. IV.6 Evaluasi Aturan-aturan Hasil Eksperimen
Pada bagian IV.2.1 dibahas bahwa setelah aturan-aturan dihasilkan dari himpunan data pelatihan, maka langkah berikutnya adalah mengevaluasi aturan-aturan tersebut
berdasarkan
kriteria
interestingness
measure,
yang
meliputi
interpretabilitas/kesederhanaan, kepastian, potensi penggunaan dan kebaruan. Untuk mengukur kebaruan (apakah aturan-aturan merupakan pengetahuan yang baru, yang belum diketahui sebelumnya), maka dibutuhkan penelitian lanjutan, dengan jajak pendapat terhadap sejumlah responden. Pada penelitian ini, aturan akan dievaluasi berdasarkan potensi penggunaannya (dengan tingkat kepercayaan aturan), interpretabilitas/kesederhanaan dan kepastian. Evaluasi Berdasarkan Tingkat Kepercayaan Aturan
Evaluasi untuk mengukur potensi penggunaan dilakukan melalui analisis tingkat kepercayaan aturan dan hasilnya diberikan pada Tabel IV.7, yang berisi jumlah dan prosentase aturan-aturan yang memenuhi ambang tingkat kepercayaan prediksi 50%, 60% dan 70%. Pada tabel terlihat bahwa makin tinggi nilai ambang, makin sedikit jumlah aturan yang memenuhi. Berdasarkan isi Tabel IV.7, jika pada aturan-aturan ini diambil nilai ambang 60% atau 70%, maka klasifikasi data sintetik ini berpotensi untuk menghasilkan aturan-aturan yang dapat digunakan. (Karena aturan akan digunakan untuk memberi saran pemilihan batik, maka tidak diperlukan tingkat kepercayaan yang tinggi. Aturan dengan tingkat kepercayaan 60% - 70% sudah dapat digunakan untuk “memberi saran” kepada orang dalam memilih batik yang sesuai dengan profil mereka.)
76
Karena motif dan kontras warna yang menjadi atribut kelas (yang diprediksi) adalah hasil pra-pengolahan citra batik maka dapat disimpulkan bahwa prapengolahan citra batik bermanfaat untuk mendapatkan aturan-aturan yang berharga. Tabel IV.7. Prosentase Aturan yang Berpotensi Bermanfaat Eksp-
Jumlah Aturan Total
1 2 3 4 5 6
9 9 11 10 42 56
Jumlah Aturan dengan Ambang Tingkat Kepercayaan (Prosentase Jumlah) 50% 60% 70%
7 ( 77 %) 9 ( 100 %) 11 (100 %) 10 ( 100 %) 35 ( 83 %) 46 ( 82 %)
4 ( 44 %) 6 ( 67 %) 9 ( 82 %) 8 ( 80 %) 26 ( 62 %) 34 ( 60 %)
1 ( 11 %) 2 ( 22 %) 8 (73 %) 8 ( 80 %) 19 ( 45 %) 22 ( 39 %)
Evaluasi Berdasarkan Kriteria Interpretabilitas
Aturan-aturan yang dihasilkan oleh algoritma C4.5 maupun C4.5Db yang berbentuk
IF-THEN
dikenal
sudah
dikenal
memenuhi
kriteria
interpretabilitas/kesederhanaan (dapat dengan mudah dikonversi ke perintah SQL) dan memiliki tingkat kepastian yang baik (sebuah kondisi di IF tidak menghasilkan lebih dari satu kelas prediksi di pernyataan THEN). Untuk menunjukkan bahwa aturan-aturan tersebut demikian, bagian ini memberikan beberapa contoh konversi aturan ke perintah SQL yang dapat dilakukan dengan mudah. Selain itu, di sini juga akan ditunjukkan bahwa pemilihan atribut kelas yang lebih rinci (pada level generalisasi yang lebih rendah) akan menghasilkan aturan yang lebih baik atau benar secara semantik. Aturan-aturan yang dihasilkan oleh C4.5Db pada eksperimen kemudian dapat dikonversi ke perintah SQL dan dimanfaatkan untuk mencari batik-batik yang tersimpan di tabel basisdata. Contoh-contoh konversi aturan ke perintah SQL diberikan di bawah ini: a. Aturan yang dihasilkan dari eksperimen ke-1, yaitu IF PERSONALITY = Brave THEN Ceplokan
dapat dikonversi menjadi perintah SQL: SELECT DISTINCT Batikfile FROM Table WHERE MOTIF = ‘Ceplokan’;
77
b. Aturan yang dihasilkan dari eksperimen ke-4, yaitu IF PERSONALITY = Brave THEN Ceplokan_High_Black
dapat dikonversi menjadi perintah SQL: SELECT DISTINCT Batikfile FROM Table WHERE MOTIF = ‘Ceplokan’ AND CONTRAST = ‘High’ AND MAINCOLOR = ‘Black’;
c. Aturan yang dihasilkan dari eksperimen ke-6, yaitu IF SKIN = White AND PERSONALITY = Calm AND AGE = Young AND HAIR = Blonde THEN Lereng_Med_YellowBeige
dapat dikonversi menjadi perintah SQL: SELECT DISTINCT Batikfile FROM Table WHERE SKIN = ‘White’ AND PERSONALITY = ‘Calm’ AND AGE = ‘Young’ AND HAIR = ‘Blonde’ AND MOTIF = ‘Lereng’ AND CONTRAST = ‘Med’ AND MAINCOLOR = ‘YellowBeige’;
Pada contoh-contoh di atas dapat dilihat bahwa konversi aturan ke perintah SQL dapat dilakukan “secara langsung”, yaitu dengan menjadikan atribut prediktor dan kelas pada aturan menjadi kondisi-kondisi pada perintah SQL (setelah WHERE). Pada Gambar IV.11 s/d IV.14 dapat dilihat bahwa aturan yang dihasilkan dari eksperimen ke-2 dan ke-3 lebih rinci dibandingkan dengan ke-1, sedangkan aturan dari eksperimen ke-4 lebih rinci dibandingkan dengan eksperimen ke-2 dan -3. Sebagai contoh, diambil aturan pada contoh (a) di atas, yaitu IF PERSONALITY = Brave THEN Ceplokan
Aturan ini menjadi tidak tepat, karena motif ceplokan secara umum tidak memberikan impresi berani. Jika, aturan ini digunakan untuk melakukan kueri batik dengan perintah SQL pada contoh (a) maka kemungkinan besar akan memberikan keluaran nama-nama file citra batik yang kebanyakan kurang sesuai untuk pribadi pemberani (pada eksperimen, keluarannya adalah 21 nama file citra batik). Sedangkan aturan dari eksperimen ke-2 dan ke-3, yaitu: IF PERSONALITY = Brave THEN Ceplokan_High dan IF PERSONALITY = Brave THEN Ceplokan_Black
lebih baik, karena memberikan informasi tambahan bahwa motif ceplokan berkontras tinggi atau berwarna hitam cocok untuk pribadi pemberani. Aturan dari eksperimen ke-4 (contoh (b)), yaitu
78
IF PERSONALITY = Brave THEN Ceplokan_High_Black
adalah yang paling terbaik, karena pribadi pemberani cocok mengenakan batik motif ceplokan yang berwarna hitam dengan kontras tinggi. Kueri dengan perintah SQL pada contoh (b) akan memberikan hasil nama-nama file batik yang berjumlah lebih sedikit dan sesuai dengan pribadi pemberani (pada eksperimen ini, keluarannya adalah 1 nama file citra batik). Penjelasan yang serupa juga dapat diberikan kepada aturan-aturan lain yang dicetak tebal pada Gambar IV.11 s/d IV.14 yang dicetak tebal. Pada Gambar IV.15 juga ditunjukkan bahwa penambahan jumlah kolom pada himpunan data yang diklasifikasi menambah kerincian aturan yang dihasilkan. (Aturan ini dapat digunakan oleh calon pemakai batik yang tidak ingin memperhitungkan warna rambut dalam pemilihan batik. Pada eksperimen ini, hasilnya adalah 1 nama file citra batik).
J48 pruned tree: ---------------SKIN = Black: Buket-Other_YellowBeige (14.0/10.0) SKIN = Brown | PERSONALITY = Calm: Semen_Cinnamon (5.0/3.0) | PERSONALITY = Confident | | AGE = Mid | | | GENDER = F : Ceplokan_Brown (3.0/2.0) | | | GENDER = M : Ceplokan_Burgundy (2.0/1.0) | . . . | PERSONALITY = Mature: Ceplokan_SandBrown (2.0) | . . . SKIN = White | PERSONALITY = . . . . | | . . . . . Number of Leaves : 42 Size of the tree : 60
Gambar IV.15. Pohon (tidak lengkap) yang dihasilkan pada eksperimen ke-5.
Melalui contoh-contoh yang telah diberikan, maka evaluasi ini telah menunjukkan bahwa keluaran algoritma C4.5Db yang berupa pohon keputusan atau aturanaturan dapat dengan mudah dibaca atau diinterpretasikan dan dikonversi menjadi perintah-perintah SQL, serta pemilihan kelas pada tingkat konseptual yang lebih rinci akan menghasilkan aturan yang secara semantik lebih benar.
79
IV.7 Pemanfaatan Aturan-aturan pada Sistem Penjualan Batik
Bab ini telah membahas contoh masalah yang berpotensi untuk diselesaikan dengan memanfaatkan algoritma C4.5Db, yaitu masalah pemilihan kain batik. Jika data transaksi penjualan batik sudah tersedia (diproduksi oleh sistem penjualan) dan tersimpan di DBMS, C4.5Db dapat dimanfaatkan untuk membuat aturan-aturan dari data tersebut. Setelah aturan-aturan dievaluasi atau diuji berdasarkan kriteria interestingness measure dan dinilai bermanfaat untuk membantu pemilihan batik, maka aturan tersebut dapat dikonversi ke perintah SQL dan disimpan di DBMS. Selanjutnya, pencarian batik berdasarkan profil calon pemakai pada sistem online dapat dilakukan dengan memanfaatkan perintah-perintah SQL tersebut. Contoh skema sistem penjualan batik online yang memanfaatkan C4.5Db ditunjukkan pada Gambar IV.16.
Gambar IV.16. Skema sistem penjualan batik online yang memanfaatkan C4.5Db.
80
Bab V Kesimpulan dan Penelitian Lanjutan Bab ini berisi kesimpulan penelitian (untuk menjawab hipotesis yang diberikan pada Bab I) dan penelitian lanjutan yang masih perlu dilakukan. V.1 Kesimpulan
Kesimpulan yang ditarik dari hasil keseluruhan penelitian adalah: a. Algoritma C4.5Db dapat menangani himpunan data yang berisi sampelsampel dengan jumlah yang sangat banyak. Jumlah sampel yang dapat ditangani algoritma C4.5Db tidak dibatasi oleh memori, tetapi ukuran pohon keputusan dan partisi himpunan data pada cabang pohon yang dimuat ke memori pada suatu saat dibatasi oleh memori. Fungsi DBMS yang mendukung pengembangan skalabilitas adalah operator relasi dan seleksi pada SQL. b. Algoritma C4.5Db lebih efisien/cepat dibandingkan algoritma C4.5 pada kasus dimana jumlah kolom/atribut sedikit, jumlah nilai unik pada setiap atribut sedikit dan tabel diindeks bitmap (pada eksperimen: tabel dengan 5 dan 10 kolom, dengan nilai unik kurang dari 10). Dari analisis hasil eksperimen didapatkan bahwa fungsi DBMS yang memperbaiki efisiensi algoritma C4.5Db adalah indeks bitmap (untuk atribut-atribut diskret). Prosedur tersimpan
berbasis
Java,
yang
dimanfaatkan
cabang/pohon keputusan dari sampel-sampel
untuk
mengkonstruksi
yang tersimpan di memori,
mendukung efisiensi pada tabel dengan jumlah kolom dan nilai unik yang lebih besar (pada eksperimen: tabel dengan jumlah kolom 15 sampai 30, dengan nilai unik kurang dari 20). c. Integrasi algoritma C4.5Db ke dalam ORDBMS memudahkan pengguna dalam mengklasifikasi data yang tersimpan di ORDBMS dan menjadikan proses klasifikasi data menjadi lebih efisien. Kemudahan diberikan dengan pemanggilan prosedur tersimpan yang dapat mengakses tabel-tabel di ORDBMS dan skalabilitas / efisiensi diperbaiki dengan cara yang dibahas pada butir (a) dan (b) di atas.
81
d. Berdasarkan hasil eksperimen dengan jumlah citra batik yang terbatas disimpulkan bahwa transformasi wavelet 2-dimensi dengan wavelet Haar, teknik-teknik pada algoritma image retrieval berbasis bentuk dan tekstur dapat dimanfaatkan pada algoritma-algoritma pengenal motif dan kontras pada citra batik, sehingga didapatkan algoritma yang eksekusinya cepat dan memiliki akurasi yang cukup baik (kesimpulan yang lebih rinci diberikan pada Lampiran F). Untuk pengenal kontras, algoritma yang akurasinya relatif baik dan eksekusinya cepat adalah yang menggunakan wavelet Haar dan
percentile. Sedangkan untuk pengenal motif, algoritma yang terbaik adalah yang memanfaatkan wavelet (berbasis tekstur) dan mask (berbasis bentuk). e. Algoritma-algoritma pra-pengolahan batik (untuk mengenali motif dan kontras) yang sudah dirancang mendukung dihasilkannya model prediksi (aturan-aturan) yang berpotensi bermanfaat untuk membantu pemilihan batik. Kesimpulan ini ditarik berdasarkan hasil evaluasi (tingkat kepercayaan) terhadap aturan-aturan (asosiasi) antara profil orang (diwakili oleh kepribadian, warna kulit dan rambut) dan batik yang sesuai (dinilai berdasarkan motif, warna dan tingkat kontras) yang dihasilkan oleh algoritma C4.5Db dari data transaksi penjualan batik sintetik. V.2 Penelitian Lanjutan
Penelitian lanjutan untuk mengembangkan hasil yang sudah dicapai dapat diringkas sebagai berikut: a. Untuk peningkatan kualitas algoritma C4.5 yang sudah dikembangkan dan diintegrasikan ke dalam ORDBMS: (1) Pemangkasan pada pohon yang dibangun berdasarkan kueri SQL untuk peningkatan akurasi. (2) Penanganan nilai atribut yang hilang dan kontinyu. Prosedur berbasis-SQL perlu untuk dikembangkan agar dapat menangani nilai atribut yang hilang dan atribut kontinyu. Penanganan nilai atribut yang hilang dan atribut kontinyu ini memerlukan komputasi yang kompleks, karena mengandung proses pengurutan dan komputasi bobot di tiap kolom. Sementara itu, DBMS menyimpan statistik tabel di kamus data yang mungkin berguna dalam mengurangi kompleksitas komputasi tersebut. (3) Perumusan kedalaman pohon yang dibangun dengan SQL secara otomatis. Perumusan kedalaman ini
82
harus memperhitungkan memori yang tersedia dan efisiensi pada konstruksi pohon keputusan. b. Penelitian untuk membandingkan algoritma C4.5Db yang sudah terintegrasi di ORDBMS dengan algoritma-algoritma klasifikasi lain dan fungsi-fungsi klasifikasi lain yang sudah terintegrasi di DBMS-DBMS komersial maupun bukan. Perbandingan C4.5Db yang sudah diimplementasikan (sebagai prosedur tersimpan Java dan prosedur tersimpan berbasis SQL) terhadap impelementasinya dengan teknik pemrograman yang lain (misalnya pemrograman paralel dan terdistribusi) juga perlu dilakukan. Pengembangan lebih lanjut dari Algoritma III.1 (misalnya untuk meningkatkan efisiensi) dengan pendekatan pemrograman paralel maupun pemanfaatan kueri yang kompleks dengan SQL juga perlu untuk dilakukan. Selain itu, penelitian lanjutan juga dapat ditujukan untuk merumuskan profil-profil tabel yang dapat ditangani teknik atau algoritma tertentu dengan baik. Jika ini sudah memberikan hasil, penelitian selanjutnya dapat dilakukan untuk merumuskan teknik pengoptimasi algoritma klasifikasi, yang cara kerjanya mirip dengan pengoptimasi kueri SQL yang sudah ada di DBMS, agar di masa depan pengguna DBMS dapat mempercayakan pemilihan algoritma atau teknik klasifikasi yang paling sesuai untuk himpunan data mereka ke DBMS. c. Pencarian data transaksi batik yang nyata, klasifikasi untuk mendapatkan aturan-aturan dan uji akurasi aturan oleh sejumlah responden. d. Pengembangan sistem pembantu pemilihan kain batik yang memanfaatkan algoritma C4.5Db di ORDBMS dengan antar-muka pengguna yang menarik dan memiliki fungsi untuk mengkonversi pohon keputusan menjadi perintahperintah SQL secara otomatis. e. Pengembangan lebih lanjut dari algoritma pohon keputusan C4.5 untuk ORDBMS agar dapat menangani obyek-obyek yang memiliki atribut bertipe obyek kompleks, list dan dokumen.
83
DAFTAR PUSTAKA Agrawal, R., Imielinski, T. dan
Swami, A. (1993):
Database mining: A
performance Perspective. IEEE TKDE, Dec.. Bartolini, I. (2001): Efficient and Effective Similarity Search in Image Databases, Dissertation, Dip. Elet. Informatika Sis., Univ. Degli Studi, Bologna, Italy. Berry, M.J. dan Linoff, G. (1997): Data Mining Techniques for Marketing, Sales
and Customer Support, John Wiley & Sons Inc., USA. Brown, P. (2001): Object-Relational Database Development: A Plumber’s Guide, Prentice Hall PTR. Bulloch, B. (2001): AgResearch , Palmerston North,
New Zealand,
http://www.cs.waikato.ac.nz/ml/weka/index_datasets.html, 2001. Canny, J. (1986): A Computational Approach to Edge Detection, IEEE Trans. on Pattern Analysis and Machine Intelligence. Vol. PAMI-8, No. 6, pp. 679698. Carmagnac, F.; Heroux, P. dan Trupin, E. (2001): A Document Image
Classification Strategy Based on Distance Computation and Feature Selection, Laboratoire Perception Systeme Information, Universite de Rouen, France, 2001. Chamberlin, D.D. (1996): Anatomy of an Object-Relational Database, IBM Almaden Research Center. Chaudhuri, S. (1998):
“Data Mining and Database Systems: Where is the
Intersection?”, Bulletin of the IEEE Computer Society Technical Committee
on Data Engineering. Chaudhuri, S. (1998); “Data Mining and Database Systems: Where is the Intersection?”, Bulletin of the IEEE Computer Society Technical Committee
on Data Engineering. Cios, K.J, Goodenday, L.S., Shah, K.K. dan Serpen, G. (1996): A Novel Algorithm for Classification of Spect Images of Human Heart, The University of Toledo, OH, USA.
84
Conolly, T. dan Begg, C. (2002): Database Systems A Practical Approach to
Design, Implementation and Management, 3rd ed., Addison Wesley Pub., USA. Devarakonda, R.S (2001): Object-Relational Database Systems – The Road
Ahead, Dept. of Computer Science, Old Dominion University, Norfolk, VA, USA. Doellah, S. (2002): Batik: Pengaruh Jaman dan Lingkungan, Danar Hadi Solo, Indonesia. Fayyad, U.M., Piatetsky-Shapiro, G., Smyth, P. dan Uthurusamy, R (1996): “Advance in Knowledge Discovery and Data Mining”, MIT Press, Cambridge MA. Foley, v.D dan Feiner, H. (1996): Computer Graphics Principles and Practice, Addison-Wesley Co.,. Gehrke, J., Ramakrishnan, R. dan Ganti, V. (1998): RainForest – A Framework for Fast Decision Tree Construction of Large Datasets, Proc. of the 24th
VLDB Conf., New York, USA. Goldberger,J., Greenspan, H. dan Gordon, S. (2002): Unsupervised Image
Clustering using the Information Bottleneck Method, CUTe Systems Ltd. And Fac. Of Engineering, Tel Aviv Univ.; Israel. Hamzuri (1981): Classical Batik, Penerbit Djambatan, Jakarta. Han, J. dan Kamber, M. (2001): Data Mining Concepts and Techniques, Morgan Kaufmann Pub., USA. Hardisurya, I. (2004): Warna bagi Citra dan Penampilan, Gaya Favorit Press, Jakarta. Hirata, K. dan Kato, T. (1992): Query by Visual Example Content Based Image
Retrieval, Lecture Notes on Computer Science, Advances in Database Technology- EDBT 92, Vol. 580. Huang,J.; Kumar, S.R. dan Zabith, R. (1999): An Automatic Hierarchical Image
Classification Scheme, Dept. of Computer Science, Cornell University, Ithaca, NY, USA, 1999.
85
Karam, O.H.; Hamad, A.M., Ghoniemy, S. dan Rady, S. (2003): Enhancement of
Wavelet-Based Medical Image Retrieval through Feature Evaluation Using an Information Gain Measure, ACM 1-58113-624-2. Kerlogue, F. (2004) : The Book of Batik, Archipelago Press, Singapore. Kirby, R. (2002): Weka Explorer User Guide for V. 3.3.4, The University of Waikato, Hamilton, New Zealand, July. Lauritzen, S.L dan Spiegelhalter, D.J. (1988): Local computations with probabilities on graphical structures and their application to expert systems,
Journal of the Royal Statistical Society B, 50 (2): 157-224. Lee, T-W. dan Lewicki, S. (2002): Unsupervised Image Classification,
Segmentation and Enhancement Using ICA Mixture Models, IEEE Trans. on Image Proc. (1057-7149). Lepisto, L.; Kunttu, I.; Autio, J. dan Visa, A. (2003): “Rock Image Classification Using Non-Homogenous Texture and Spectral Imaging”, WSCG Short
Papers Proceeding, WSCG Feb. 2003, Czech Republic. Lu, G. (1999): Multimedia Database Management Systems, Artech House, London. Lu, H. dan Liu, H. (2000): Decision Tables: Scalable Classification, Exploring RDBMS Capabilities, Proc. of the 26th VLDB Conf., Cairo, Egypt. Mallat, S. (1999): A Wavelet Tour of Signal Processing, Academic Press, USA. Mojsilovic,A. dan Gomes, J. (2002): Semantic Based Categorization, Browsing
and Retrieval in Medical Image Databases, IBM T.J. Watson Research Center, Hawthorne, NY, USA. Natsev, A., Rastogi, R. dan Shim, K. (2004): WALRUS: A Similarity Retrieval
Algorithm for Image Databases, IEEE Trans. on Knowledge and Data Engineering, Vo. 16, Issue 3, Mar. Quinlan, J.R (1996): “Improved Use of Continuous Atributes in C4.5”, Journal of
Artificial Intelligent Research,
AI Access Foundation and Morgan
Kaufmann Publishers, Inc.. Quinlan, J.R. (1993): C4.5: Programs for Machine Learning, Morgan Kaufmann Pub., USA.
86
Ruggieri, S. (2000): Technical Report TR-00-01: Efficient C4.5, Dipartimento di Informatica, Universita di Pisa, Itali. Sajjanhar, A. dan Lu, G. (1998): A Comparison of Techniques for Shape
Retrieval, Gippsland School of Computing and IT, Monash Univ., Australia. Saleem, M.A. dan Hameed, J. (2003): Integration of Data Mining and Object-
Relational Database Systems, Ghulam Ishaq Khan Institute of Engineering Science and Technology, Swabi, NWFP, Pakistan. Sarawagi, S., Thomas, S dan Agrawal, R. (1998): “Integrating Association Rule Mining with Relational Dabase Systems: Alternatives and Implications”,
ACM Sigmod, USA. Sheikholestami, G., Chang, W. dan Zhang, A. (1998): Semantic Clustering and
Querying on Heterogeneous Features for Visual Data, ACM Multimeida ’98, Bristol, UK, 1998. Starik, S., Seldin, Y. dan Werman, M. (2003): Unsupervised Clustering of Images
using
their Joint Segmentation, School of Computer Science and
Engineering, The Hebrew Univ. of Jerusalem, Israel, 2003. Stonebraker, M. dan Brown, P. (1999): Object-Relational DBMS: Tracking the
Next Great Wave, 2nd ed, Morgan Kaufmann Pub., USA. Susanto, S.S.K.(1980): Seni Kerajinan Batik Indonesia, Balai Penelitian Batik dan Kerajinan, Lembaga Penelitian dan Pendidikan Industri, Dept. Perindustrian R.I.. The Institute for Research and Development of Handicraft and Batik Industries (1997): Handbook of Indonesian Batik, Lembaga Penelitian dan Pendidikan Industri, Dept. Perindustrian, Indonesia, Yogyakarta. Ting, K.M. dan Zheng, Z. (2001): Boosting Trees for Cost-Sensitive
Classifications, Dept. of Computer Science, Univ. of Waikato, New Zealand. Turtinen, M. dan Pietikainen, M. (2004): Visual Training and Classification of
Textured Scene Images, Dept. of Electrical and Information Engineering, Univ. of Oulu, Finland. van Roojen, P. (2001): Batik Design, The Pepin Press, Singapore.
87
Wang, J.E.; Wiederhold, G.; Firschein,O. dan Wei, S.X. (1997): “Content-Based Image Indexing and Searching Using Daubechies’ Wavelets”, International
Journal of Digital Libraries, Springer-Verlag, Vol.1, pp.311-328. Witten I.H., Frank, E. (2002): Machine Learning Algorithms in Java, Dept. of Computer Science, The Univ. of Waikato, Hamilton, New Zealand. Yu, D. dan Zhang, A. (1999): ACQ: An Automatic Clustering and Querying
Approach for Large Image Databases, Dept. of Computer Science & Engineering, Technical Report 99-11, State Univ. of New York, Buffalo, NY, USA. Zheng, Z., Webb, G.I. dan Ting, K.M. (1998): “Integrating Boosting and Stochastic Attribute Selection Committees for Further Improving the Performance of Decision Tree Learning”, Technical Report TRC98/12, School of Computing and Mathematics, Deakin University, Australia, May. Zhou, W. (1989): “A Study on Expert System Aided Forest and Landuse Classification of Remotely Sensed Images in Nort China”, Forest Research, China, Vol.2, No. 5. Rujukan dari situs website: Kompas Online (19 Agustus 2001), Batik Tidak Mengenal Batas Pengembangan, http://www.kompas.com, Februari 2005. The Univ. of Waikato (2003): WEKA Machine Learning Software ver.3.4, Dept. of Computer Science, The Univ. of Waikato, Hamilton, New Zealand, 2003, www.cs.waikato.ac.nz/ml/weka, Desember 2005. UCI (2000): The UCI KDD Archive, Information and Computer Sci., UC, Irvine, http://kdd.ics.uci.edu, Januari 2006.
88
RIWAYAT HIDUP Penulis dilahirkan pada tanggal 14 Juli 1962 di Salatiga, Jawa Tengah dan lulus dari SMA Negeri I Salatiga pada tahun 1980. Penulis memperoleh gelar Sarjana di Departemen Teknik Elektro, Institut Teknologi Bandung (ITB) pada tahun 1986 dan gelar Magister Teknik di Departemen Teknik Informatika ITB pada tahun 1997. Sejak tahun 2001 penulis menjadi staf pengajar di Jurusan Ilmu Komputer, Universitas Katolik Parahyangan Bandung. Penulis menikah dengan Andojo Wurjanto, PhD. pada tahun 1987 dan mempunyai dua orang anak Avi Putri Pertiwi, 15 tahun dan Adi Putra Hardaya, 10 tahun. Daftar Publikasi: 1. Dhaneswara, Moertini, V.S. (2004): Jaringan Saraf Tiruan Propagasi Balik untuk Klasifikasi Data, Integral, vol.9 no.3, FMIPA, Unpar, November 2004 (terakreditasi DIKTI). 2. Moertini, V.S, Sitohang, B., Santosa, O.S. (2007): Integrasi Algoritma Pohon Keputusan C4.5 yang Dikembangkan ke dalam Object-Relational DBMS, Jurnal Ilmiah Teknologi Informasi, FTI, ITS (dalam proses
review). 3. Moertini, V.S, Sitohang, B. (2005): Algorithms of Clustering and Classifying Batik Images Based on Color, Contrast and Motif, Proceedings ITB on
Engineering Science, Vol. 37 B, No. 2, November 2005. ISSN : 01259350 (terakreditasi DIKTI). 4. Moertini, V.S. (2004): Generalizing Texture Images using Wavelet-based Image Retrieval Algorithm, Jurnal Teknologi Industri, Vol. IX, No. 4, FTI, UAJY, Oktober 2005 (terakreditasi DIKTI). 5. Moertini, V.S. (2003): Investigation of Self-Organizing Map and Its Use in Data Clustering, Integral, Vol.8 no.1, FMIPA, Unpar, April 2003 (terakreditasi DIKTI). 6. Moertini, V.S. (2002): Metodologi Perencanaan Pemanfaatan Energi Baru dan Terbarukan (EBT) untuk Energi Listrik dan Termal di 10 Propinsi
89
Kawasan Indonesia Timur, Sigma, Vol.6, no.2, Univ. Sanata Dharma, Juli 2002 (terakreditasi DIKTI). 7. Moertini, V.S. (2002): Energi Baru dan Terbarukan (EBT): Kajian Potensi dan Teknologi Konversinya, Sigma,
vol.5 no.1, Univ. Sanata Dharma,
Februari 2002 (terakreditasi DIKTI). 8. Yulita, Moertini, V.S. (2004): Analisis Keranjang Pasar dengan Algoritma Hash-Based pada Data Transaksi Penjualan Apotek, Integral, vol.9 no.3, FMIPA, Unpar, November 2004 (terakreditasi DIKTI).
Daftar seminar dan konferensi yang diikuti: 1. Moertini, V.S. (2007): Classifying Batik Image Objects Stored in ObjectRelational DBMS, Seminar Nasional Ilmu Komputer dan Teknologi
Informasi VII, UI, Jakarta, 22-23 Januari 2007. 2. Moertini, V.S., Tim PHK K-3 Unpar (2006): Metodologi Perancangan Master Plan Pangkalan Data untuk untuk Mendukung Penjaminan Mutu Perguruan Tinggi, Studi Kasus: Unpar, Seminar Nasional Penjaminan
Mutu PT dan Sistem Pangkalan Data Pendukungnya, Bandung, 22 Des. 2006. 3. Moertini, V.S., Sitohang, B., Santosa, O.S. (2006): Searching ObjectRelational DBMS Features for Improving Efficiency and Scalability Of Decision Tree Algorithms, 8th International Conference on Information
Integration and Web-based Applications & Services (iiWAS2006), Austrian Computer Society, Yogya, 4-5 Dec. 2006. 4. Moertini, V.S. (2005): A Concept of Data Preprocessing Technique for Object-Relational DBMS, Seminar Nasional
Teknologi Teknologi
Informasi (SNTI 2005), Univ. Tarumanagara, Jakarta 1 Oktober, 2005. 5. Moertini, V.S. (2005): Towards Classifying Classical Batik Images,
International
Conference
on
Information
and
Communication
Technology (ICCT-UMB), Univ. Mercu Buana, Jakarta 9-10 Juni, 2005. 6. Moertini, V.S. (2004): Penanganan Atribut Citra Dengan Wavelet Untuk Pengembangan Algoritma C4.5, Seminar Nasional Ilmu Komputer dan
Teknologi Informasi IV, IPB, Bogor, 2-3 September 2004.
90
LAMPIRAN A Entropi dan Information Gain Pada lampiran ini diberikan konsep tentang entropi dan information gain, yang disarikan dari (MacKay, D. J.C, 2003) dan (Moore, 2003). A.1. Entropi
Salah satu isu penting pada transmisi data adalah pencarian jumlah bit yang minimal untuk mentransmisikan data melalui saluran transmisi yang tersedia. Entropi digunakan untuk memprediksi rata-rata jumlah bit per simbol yang diperlukan untuk mentransmisikan data, misalnya X, jika peluang kejadian setiap simbol pada data yang akan ditransmisikan diketahui. Dimisalkan X memiliki m nilai, yaitu v1, v2, … vm dengan nilai-nilai peluang P(X=v1) = p1, P(X=v2) = p2, …, P(X=vm) = pm. Entropi X, H(X), dirumuskan sebagai:
H ( X ) = − p1 log 2 p1 − p2 log 2 p2 − ... − pm log 2 pm = m
− ∑ pj log 2 pj
(A.1)
j =1
Jika H(X) bernilai tinggi, maka X terdistribusi secara uniform (seragam). Histogram dari frekuensi nilai X akan rata dan nilai X kurang dapat diprediksi. Jika nilai H(X) rendah, maka distribusi X bervariasi (ada puncak dan lembah di histogram), sehingga X lebih mudah diprediksi. Contoh perhitungan: Contoh-1. Dimisalkan ada sampel acak independen X. X memiliki 4 nilai, yaitu A, B, C dan D dengan peluang P(X=A) = ¼, P(X=B) = ¼, P(X=C) = ¼ dan P(X=D) = ¼. Dengan menggunakan rumus A.1 akan dapat dihitung nilai H(X) dan didapat H(X) = 2. Jika karakter-karakter tersebut ditransmisikan melalui saluran serial biner, maka setiap karakter dapat dikodekan dengan 2 bit, misalnya A=00, B=01, C=10, D=11. Dengan demikian, rangkaian bit-bit yang ditransmisikan adalah 0100001001001110110011111100… Contoh-2. Dimisalkan ada sampel acak independen X. X memiliki 3 nilai, yaitu A, B dan C, yang memiliki peluang P(X=A) = 1/3, P(X=B) = 1/3 dan P(X=C) = 1/3. Maka didapat H(X) = 1.58496 atau rata-rata jumlah bit yang dapat digunakan secara teoritis adalah 1.58496 bit per simbol. A.2 Entropi Bersyarat, H(Y|X)
Entropi bersyarat, H(Y|X), dirumuskan sebagai:
91
H (Y | X ) = ∑ j P( X = v j )H (Y | X = v j )
(A.2)
dimana H(Y|X=vj) dinamakan entropi kondisional khusus (entropi Y pada rekordrekord di sebuah tabel dimana kolom X pada rekord-rekord itu memiliki nilai v). Entropi bersyarat, H(Y|X), dapat diartikan sebagai: - Ekspektasi jumlah bit untuk mentransmisikan Y, jika pihak pengirim dan penerima mengetahui nilai X. - Entropi kondisional khusus rata-rata pada Y, yang artinya adalah “entropi kondisional Y, berdasar pada kondisi nilai record pada X, jika sebuah record di sebuah tabel dipilih secara acak”. Contoh perhitungan:
Diberikan Tabel A.1 di bawah ini, dengan X = Departemen , Y = menyukai jazz Tabel A.1. Contoh kasus. X Ma His Cs Ma Ma Cs His Ma
Y Ya Ti Ya Ti Ti Ya Ti Ya
Dari tabel di atas, maka: - P(X= Ma) = 0.5, P(X=His) = 0.25 dan P(X=Cs) = 0.25, sehingga H(X) = 1.5 - P(Y=Ya) = 0.5 dan P(Y=Ti) = 0.5, sehingga H(Y) = 1 - Entropi kondisional khusus H(Y|X=Ma) = 1, H(Y|X=His) = 0, H(Y|X=Cs) = 0 Dengan demikian, P(X=vj) dan H(Y|X = vj) dapat dihitung dan hasilnya diberikan pada Tabel A.2. Tabel A.2. Nilai P(X=vj) dan H(Y|X = vj) vj Ma His Cs
P(X=vj) 0.5 0.25 0.25
H(Y|X = vj) 1 0 0
Berdasar nilai-nilai di atas, maka entropi bersyarat H(Y|X) = 0.5 × 1 + 0.25 × 0 + 0.25 × 0 = 0.5.
92
A.3 Information Gain (IG)
Information Gain dapat diartikan sebagai jumlah bit yang dihemat untuk mentransmisikan data Y, jika pihak pengirim dan penerima mengetahui nilai X dan dirumuskan sebagai: (A.3)
IG(Y|X) = H(Y) – H(Y|X)
Contoh perhitungan: Dari perhitungan pada A.2 didapat H(Y) = 1 dan H(Y|X) = 0.5, maka IG(Y|X) = 1 0.5 = 0.5 Daftar Pustaka
MacKay, D. J.C (2003): Information Theory, Inference, and Learning Algorithms, Version 7.2. Cambridge University Press, UK, 2003. Moore, W.A (2003): Information Gain. School of Computer Science, Carnegie Mellon University, USA, www.autonlab.org/tutorials/infogain11.pdf, Maret 2007.
93
LAMPIRAN B Overview ORDBMS, Studi Kasus: Oracle B.1. Arsitektur DBMS Oracle
Komponen-komponen utama dan keterkaitan antar komponen pada DBMS Oracle (9i ke atas) atau sering disebut sebagai Oracle Server atau Oracle Database Server ditunjukkan pada Gambar B.1. Oracle server terdiri dari Oracle Instance dan Oracle Database dan keduanya saling bergantung.
Gambar B.1. Arsitektur Oracle Database Server (Oracle, Des. 2001) a. Instance Setiap kali basisdata “dimulai”, system global area (SGA) akan dialokasi dan proses-proses background akan dimulai. Kombinasi dari proses-proses background dan bufer memori dinamakan Oracle Instance. Pada saat sebuah Instance aktif, proses-proses background mengawasi setiap perintah SQL ataupun perintah-perintah pengguna yang lain di Oracle server. Selain itu, prosesproses background juga mengawasi input/output dan memonitor seluruh proses yang aktif di dalam Oracle Server. Memori pada Oracle Server berfungsi sebagai media penyimpan sementara yang menyimpan informasi-informasi penting untuk menjalankan Oracle Server dengan baik maupun proses rollback (selama informasi yang diperlukan masih tersimpan di dalam memori). b. Basisdata Komponen basisdata Oracle (Oracle Database ) adalah datafile, control file, dan redo log file. Datafile berisi informasi yang ada di dalam sebuah basisdata. Control file dan redo log file digunakan untuk menjamin dan menjaga konsistensi
94
data sehingga jika terjadi crash, proses recovery dapat dilakukan oleh prosesproses di Oracle Server. B.2 Struktur Basisdata dan Manajemen Ruang
Secara umum, basisdata memiliki struktur lojik dan struktur fisik. Begitu juga halnya dengan Oracle Server. Kedua struktur ini terpisah, sehingga penyimpanan fisik data dapat dikelola tanpa mempengaruhi akses ke struktur penyimpanan lojik. B.2.1 Struktur Lojik pada Basisdata Oracle
Struktur lojik pada basisdata Oracle terdiri dari skema, obyek skema, blok data, extents, segment, dan tablespaces. Skema dan Obyek Skema Skema adalah kumpulan dari obyek-obyek di dalam basisdata. Sebuah skema dimiliki oleh seorang pengguna dan mempunyai nama yang sama dengan nama pengguna tersebut. Obyek skema merupakan struktur lojik yang langsung menunjuk pada data di basisdata, contohnya adalah tables, views, indexes, triggers, user, sequences, synonyms, user-defined data type, constraint, dan lain sebagainya. Tablespace, Blok Data, Extents, dan Segments Satu basisdata dibagi ke dalam unit-unit penyimpanan lojik yang dinamakan tablespace. Satu basisdata memiliki minimal satu tablespace. Satu tablespace dapat memiliki banyak segment. Segment merupakan kumpulan dari extent dan extent itu sendiri merupakan kumpulan dari blok. Jadi, blok adalah unit terkecil pada operasi tulis dan baca data. Oracle menyimpan data secara lojik ke dalam tablespace dan menyimpan data secara fisik ke dalam data file. Satu tablespace hanya dimiliki oleh satu basisdata, sedangkan satu basisdata dapat mempunyai satu atau lebih tablespace. Setiap tablespace memiliki satu atau lebih file yang dinamakan data file (struktur fisik). B.2.2. Struktur Fisik pada Basisdata Oracle
Struktur fisik pada basisdata Oracle adalah datafile, redo log files, dan control files. Struktur fisik ini berupa file yang dapat dilihat melalui operating system. Setiap basisdata mempunyai satu atau lebih datafile dimana datafile ini berisi data sesungguhnya yang tersimpan secara fisik pada basisdata. Data yang secara lojik disimpan di tabel dan index basisdata disimpan secara fisik pada datafiles. Redo log files merupakan salah satu struktur fisik pada Oracle yang berfungsi mencatat aktivitas transaksi yang terjadi di dalam basis data. Semua aktifitas data transaksi yang dicatat disini nantinya berguna pada proses recovery jika, karena suatu sebab, terjadi penghentian transaksi secara mendadak pada saat transaksi belum selesai. Control file merupakan struktur fisik yang digunakan untuk menyimpan status-status yang sedang berjalan atau aktif dan juga mengontrol basisdata.
95
Informasi atau status yang disimpan di antaranya adalah nama basisdata, informasi tablespace, lokasi datafiles, lokasi redo log file, dan sebagainya. B.2.3. Data Dictionary Salah satu bagian yang paling penting pada basisdata adalah data dictionary, yang direpresentasikan dalam bentuk tabel atau view yang bersifat read only dan menyediakan informasi mengenai basisdata. Data dictionary selalu diperbarui oleh Oracle bila terjadi eksekusi data definition language (DDL) maupun data manipulation language (DML). Data dictionary tersimpan di system tablespace dan dikelola oleh Oracle. Informasi-informasi yang tersimpan pada data dictionary di antaranya adalah (Oracle Okt. 2005): a. Definisi dari semua obyek-obyek skema di basisdata (tabel, view, index, stored-procedure, fungsi, dan trigger). b. Ruang yang dialokasikan untuk dan digunakan oleh obyek-obyek skema. c. Integrity constraint (aturan-aturan untuk kolom dari suatu tabel). d. Nama-nama pengguna (user). e. Role, merupakan mekanisme untuk mengontrol kelompok privilege (hak akses) yang diberikan untuk seorang pengguna ataupun kelompok pengguna. f. Privilege (hak akses) setiap pengguna. g. Informasi auditing. h. Statistik dari tabel-tabel di basisdata. B.3. Arsitektur Memori dan Proses Oracle Database Server membuat struktur memori untuk melaksanakan tugastugasnya. Sebagai contoh, memori menyimpan kode program untuk dieksekusi dan digunakan bersama oleh para pengguna. Komponen-komponen struktur memori beserta proses-proses pada Oracle Database Server ditunjukkan pada Gambar B.2. Bahasan singkat struktur memori dan proses-proses diberikan di bawah.
96
Gambar B.2. Arsitektur memori dan proses pada Oracle10g (Oracle Okt., 2005).
Ada dua komponen utama dalam struktur memori, yaitu : a. SGA (System Global Area). SGA adalah ruang memori untuk digunakan bersama yang berisi data dan informasi kendali untuk sebuah Oracle instance. Oracle mengalokasi SGA ketika sebuah instance ”dimulai” atau dihidupkan dan mendealokasikan SGA ketika instance dimatikan. (Setiap instance memiliki SGA sendiri.) Para pengguna yang ”terhubung” ke basisdata menggunakan SGA secara bersama-sama. SGA digunakan oleh proses-proses server dan background. Informasi yang tersimpan di SGA dibagi kedalam beberapa tipe memori struktur, yaitu buffer cache, redo buffer, shared pool, large pool, Java pool dan streams pool. Buffer cache berfungsi menyimpan data yang sering diakses pengguna sehingga mempercepat proses bila data digunakan lagi. Java pool, shared pool, dan large pool yang berfungsi menyimpan perintah-perintah (SQL, Java) untuk dieksekusi. b. PGA (Program Global Area). PGA adalah memori yang direservasi untuk proses pengguna yang terkoneksi ke basisdata. Sifat-sifat: PGA dialokasi pada saat sebuah proses dijalankan dan didealokasi pada saat proses diterminasi. Satu PGA hanya digunakan oleh satu proses. PGA dapat melayani proses sever maupun background. Sebuah proses adalah sebuah mekanisme di sistem operasi yang dapat mengeksekusi serangkaian langkah-langkah. Setiap proses secara umum “memiliki” ruang memori sendiri yang merupakan tempat dimana proses itu dieksekusi. Basisdata Oracle memiliki 2 tipe proses, yaitu proses pengguna dan proses Oracle. a. Proses pengguna dibuat dan dipelihara untuk eksekusi kode program dari sebuah program aplikasi. Proses pengguna juga mengelola komunikasi dengan proses server melalui program antar-muka. b. Proses Oracle dijalankan oleh proses lain untuk menjalankan fungsi yang dikehendaki oleh proses pemanggil. Oracle membuat proses server untuk
97
menangani permintaan dari proses pengguna. Proses server berkomunikasi dengan proses pengguna dan berinteraksi dengan Oracle untuk melaksanakan permintaan dari proses pengguna ini. Proses Oracle yang lain adalah proses background. Oracle membuat dan menjalankan proses-proses background untuk setiap instance. Proses background memelihara dan menjalankan “hubungan” antara struktur memori dan fisik. Proses-proses background secara asinkron melakukan akses I/O dan mengawasi proses-proses Oracle yang lain untuk keperluan eksekusi paralel guna meningkatkan kinerja dan reliabilitas. Ada proses background yang bersifat mandatori (DBWn, PMON, CKPT, LGWR, SMON ) dan ada pula yang opsional (misalnya CJQ0, LMON dan LCKn. ). B.4. Ekstensi Obyek-Relasional pada Oracle9i
Oracle9i menggunakan 6 lapis komponen untuk mendukung agar ekstensi objectrelational berfungsi dengan baik. Arsitektur ini ditunjukkan pada Gambar B.3, dimana komponen pada lapis yang lebih atas dapat menggunakan lapis(-lapis) di bawahnya. Lapis Language, yang di antaranya berisi Java dan PL/SQL, terletak di lapis teratas dan menyediakan dukungan tipe obyek-relasional. Tipe obyek pada Oracle, seperti kelas pada Java, dimaksudkan untuk “membungkus” data beserta fungsi-fungsi yang terkait dengan data itu. Pada Gambar B.3 terlihat bahwa lapis Object Type System and Extensibility Framework, yang menyediakan dan mengatur Oracle Object Type, terletak di atas lapis Storage, tempat penyimpanan data (Geoff, 2002). Dengan struktur yang demikian, aplikasi yang ditulis dengan Java, PL/SQL dan C++ dapat menggunakan tipe obyek untuk mengakses data di lapis Storage (penyimpan). Oracle menyediakan cara yang “natural” untuk menjaga konsistensi antara struktur kelas-kelas Java di level aplikasi dan model data di level penyimpan. Fasilitas obyek-relasional pada Oracle diintegrasikan dengan lingkungan Java menggunakan standar API JDBC dan SQLJ. Tipe obyek di SQL dapat dipetakan ke kelas-kelas Java. Instansiasi dari tipe obyek dapat diakses dan dimanipulasi via API (Application Programming Interface) seperti JDBC dan OCCI (Oracle C++ Call Interface).
98
Gambar B.3. Arsitektur ekstensi object-relational pada Oracle9i (Geoff, 2002).
Tipe obyek pada Oracle dapat berupa User Defined Type (UDT), obyek bersarang (nested object), tipe pewarisan (inheritance type) dan data terstruktur, variabel array (varray) dan tabel bersarang (nested table). UDT dapat berstruktur sederhana maupun kompleks (Oracle, Maret 2002). B.5 Prosedur Tersimpan
DBMS menyediakan servis-servis lojik bisnis. Salah satunya direalisasikan melalui mesin prosedur tersimpan. Pengguna DBMS membuat lojik bisnis dalam bentuk prosedur atau fungsi tersimpan dan menyimpannya di basisdata. Mesin itu akan menangani prosedur atau fungsi ini dan mengijinkannya untuk digunakan secara bersama-sama oleh beberapa pengguna. Prosedur tersimpan (stored-procedure) didefinisikan sebagai skema obyek, dikompilasi sekali dan disimpan dalam bentuk kode yang dapat dieksekusi di data dictionary. Kode yang dapat dieksekusi ini secara otomatis di-cache dan dapat dipanggil oleh aplikasi-aplikasi yang dimiliki para pengguna. Oracle menyediakan dua tipe prosedur tersimpan, yaitu Java dan PL/SQL (Oracle, Maret 2002; Oracle, Juni 2005). Prosedur PL/SQL dan Java dapat saling memanggil dengan menggunakan argumen-argumen dan mem-pass nilai hasil eksekusi prosedur. B.5.1. Prosedur Tersimpan Berbasis SQL
PL/SQL adalah bahasa prosedural yang merupakan ekstensi dari SQL. PL/SQL memungkinkan dilakukannya pencampuran antara kode SQL dan perintahperintah prosedural (perintah kendali, manipulasi data, dan pemanggilan fungsi). Dengan PL/SQL, pengguna dapat membuat dan mengeksekusi unit-unit program dalam bentuk prosedur, fungsi dan paket. Kode PL/SQL dapat dieksekusi secara langsung maupun melalui penerjemah (interpreter). Eksekusi langsung berkinerja lebih baik karena pemanggilan prosedur dilakukan ke kode dalam bentuk yang sudah dikompilasi. Jika sebuah aplikasi memanggil prosedur tersimpan, Oracle memuat unit program yang sudah terkompilasi ke shared pool di system global
99
area. Eksekutor perintah PL/SQL dan SQL bekerja sama untuk memproses perintah-perintah di prosedur. Seperti ditunjukkan pada Gambar B.4, mesin PL/SQL berkomunikasi dengan mesin SQL dengan cara mengirim setiap perintah ke mesin SQL. Mesin SQL kemudian mengirim data yang merupakan hasil dari eksekusi kueri SQL ke mesin PL/SQL untuk digunakan lebih lanjut.
Gambar B.4. Diagram komunikasi mesin PL/SQL dan SQL (Oracle, 20051).
Tanpa PL/SQL, Oracle harus memproses perintah-perintah SQL satu per satu. Setiap perintah SQL akan memerlukan biaya overhead. Pada lingkungan jaringan, overhead ini dapat menjadi signifikan. Akan tetapi, dengan PL/SQL, satu blok perintah dapat dikirim serentak ke Oracle. Ini akan mengurangi komunikasi antara aplikasi dengan Oracle. PL/SQL juga mendukung pemrograman berorientasiobyek. Prosedur tersimpan PL/SQL melengkapi prosedur tersimpan Java. Oracle mengijinkan komunikasi antara prosedur tersimpan Java dan PL/SQL. Java dapat memanggil PL/SQL dengan menggunakan JDBC, sebaliknya PL/SQL dapat memanggil Java secara langsung. B.5.2 Prosedur Tersimpan Java
Prosedur tersimpan Java adalah Java methods yang dipublikasikan ke SQL. Ketika dipanggil oleh program aplikasi, prosedur tersimpan ini dapat menerima argumen, reference ke kelas-kelas Java dan mengembalikan nilai dengan tipe-tipe yang disediakan oleh Java. Prosedur tersimpan Java dieksekusi oleh JVM (Java Virtual Machine) yang diintegrasikan dengan Oracle dan menempati alokasi memori di Java Pool. JVM bekerja pada ruang proses dan alamat yang sama dengan kernel RDBMS, dengan berbagi memori dan mengakses data relasional secara langsung. Rancangan ini mengoptimasi penggunaan memori dan menaikkan throughput. Para pengguna dapat membuat prosedur tersimpan Java dan mendapatkan keuntungan Java dan ORDBMS di lojik bisnis mereka (Oracle, 20022). Java dikenal dengan kehandalannya. Java melakukan “pengumpulan sampah” untuk memanajemen memori dengan secara otomatis mendealokasi memori yang digunakan oleh obyek-obyek yang sudah tidak dipakai lagi. Dalam kaitannya dengan dukungan skalabilitas, ini sangat berguna karena pemrogram terkadang
100
lupa untuk membebaskan kembali memori yang sudah digunakan (Schildt, 2001). Dalam konteksnya dengan dukungan terhadap efisiensi, algoritma dapat diimplementasikan sebagai program berbasis memori yang eksekusinya cepat. B.6 Structured Query Language
Structured Query Language (SQL) adalah bahasa pemrograman yang sudah diterima sebagai bahasa standar pada Relational DBMS. Semua perintah-perintah pada SQL berupa instruksi-instruksi untuk basisdata dan memungkinkan pengguna untuk bekerja pada tingkat lojik (Oracle, Juni 2005). Perintah-perintah pada SQL dikelompokkan menjadi dua, yaitu (Connolly et al., 2002) : - Data Definition Language (DDL). Bahasa bagi administrator dan pengguna basisdata untuk mendefinisikan entitas, atribut dan relasi beserta konstrain integritas dan keamanannya. - Data Manipulation Language (DML). Bahasa yang berisi perintah-perintah operasi untuk memanipulasi data yang tersimpan di basisdata. B.6.1. Data Definition Language (DDL)
Yang termasuk dalam kelompok DDL adalah: a. Tipe data SQL. Pada SQL didefinisikan tipe data yang dapat digunakan, yang antara lain adalah: boolean, character, bit, numeric, date, time dan large objects. b. Kendali integritas, yang dapat dikelompokkan menjadi konstrain pada data, domain, integritas entitas, integritas referensial, konstrain institusi (enterprise). Konstrain-konstrain ini dapat didefinisikan pada perintah CREATE dan ALTER TABLE. c. Definisi data, berfungsi untuk mendefinisikan data pada basisdata. Perintahperintah yang utama pada kelompok ini adalah: CREATE / DROP SCHEMA, CREATE / ALTER / DROP DOMAIN, CREATE / ALTER /DROP TABLE, CREATE /DROP VIEW, CREATE / DROP INDEX. d. View. View adalah relasi virtual yang tidak harus ada di basisdata tetapi yang dapat dibuat dan disediakan bagi pengguna basisdata pada saat dibutuhkan. View merupakan relasi baru sebagai hasil dinamis dari operasi pada satu atau lebih relasi yang terdapat pada basisdata. e. Transaksi. Perintah yang termasuk ke dalam kelompok ini adalah COMMIT dan ROLLBACK. f. Kendali akses, berfungsi untuk membatasi hak akses pengguna terhadap skema, tabel, dan view. Perintah SQL yang termasuk ke dalam kelompok ini adalah GRANT dan REVOKE. Format sintaks SQL untuk perintah CREATE TABEL dan CREATE INDEX diberikan di bawah ini:
101
CREATE TABLE NamaTabel {(NamaKolom TipeData [NOT NULL] [UNIQUE] [DEFAULT OpsiDefault] [CHECK (KondisiCari)] [,....]} [PRIMARY KEY (DaftarKolom),] {[UNIQUE (DaftarKolom),] [,...]} {FOREIGN KEY (DaftarKolomForeignKey) REFERENCES NamaTabelInduk [(DaftaKandidatKolomKunci)], [MATCH {PARTIAL | FULL} [ON UPDATE AksiReferensial] [ON DELETE AksiReferensial]][,....]} {[CHECK (KondisiCari)] [,...]}) CREATE [UNIQUE] INDEX NamaIndex ON NamaTabel (NamaKolom [ ASC | DESC] [,...] Contoh perintah SQL sederhana untuk membuat sebuah tabel adalah: CREATE TABLE Staff( branchNo CHAR(4) NOT NULL, staffNo VARCHAR(5), lName VARCHAR(20), fName VARCHAR(15), salary DECIMAL(10,2), PRIMARY KEY (staffNo)); Sedangkan contoh perintah SQL untuk membuat indeks adalah: CREATE INDEX IdxBr ON Staff (branchNo ); CREATE INDEX IdxStaf ON Staff (staffNo); B.6.2. Data Manipulation Language (DML)
Yang termasuk dalam kelompok DML adalah perintah-perintah: - SELECT – untuk kueri data di basisdata. - INSERT – untuk menyisipkan data ke dalam sebuah tabel basisdata. - UPDATE – untuk memperbarui data yang tersimpan di tabel basisdata. - DELETE – untuk menghapus data di tabel basisdata. Pada lampiran ini, bahasan lebih lanjut akan diberikan pada perintah SELECT. Perintah SELECT biasa digunakan dengan format: SELECT [DISTINCT | ALL] {* | [EkspresiKolom [AS NamaBaru]] [,....]} FROM NamaTabel [alias] [,....] [WHERE Kondisi] [GROUP BY DaftarKolom] [HAVING Kondisi] [ORDER BY DaftarKolom]
102
Pada EkspresiKolom dapat disertakan fungsi-fungsi agregat pada SQL, misalnya COUNT, SUM, AVG, MAX, dan MIN. Perintah SELECT dapat diterapkan pada tabel maupun view dan digunakan untuk mengakses tabel tunggal maupun hasil penggabungan dari dua atau lebih tabel basisdata. Berikut ini adalah contoh-contoh perintah kueri sederhana yang mengakses sebuah tabel, Staff: a. SELECT staffNo, lName, position, salary FROM Staff WHERE salary > 10000. b. SELECT staffNo, lName, position, salary FROM Staff WHERE salary > 10000 AND lName = ‘Curtis’. c. SELECT branchNo, COUNT(staffNo) AS my count, SUM(salary) AS my sum FROM Staff, GROUP BY branchNo, ORDER BY branchNo. Bahasan lebih lengkap tentang SQL dapat ditemukan pada (Connolly et al., 2002) dan (Oracle, Juni 2005).
Daftar Pustaka
Conolly, T.; Begg, C. (2002): Database Systems A Practical Approach to Design, Implementation and Management, 3rd ed., Addison Wesley Pub., USA. Geoff, L. (2002): Simple Strategies for Complex Data: Oracle9i Object-Relational Technology, Oracle White Paper, USA, Mei. Oracle Inc. (Juni 2005): SQL Reference 10g Release 2 (10.2), USA. Oracle (Okt. 2005): Database Concepts 10g Release 2 (10.2), USA, Oktober. Oracle (Des. 2001): Oracle9i Database Administrator Fundamental, USA, Desember. Oracle (Maret 2002): Java Stored Procedures Developer’s Guide Release 2 (9.2), USA, Maret. Oracle (Juni 2005): PL/SQL User's Guide and Reference 10g Release 2, USA, Juni. Oracle (Maret 2002): Oracle 9i Application Developer’s Guide: Object-Relational Features Release 2 (9.2), Maret. Schildt, H. (2001): The Complete Reference Java 2, 4th ed., McGrawHill/Osborne.
103
LAMPIRAN C Pencarian Fitur ORDBMS yang Mendukung Efisiensi pada Algoritma C4.5 C.1. Pendahuluan
Han et al. (2001) menunjukkan bahwa sistem arsitektur data mining yang terbaik adalah sistem ini harus terintegrasi dengan baik ke dalam DBMS. Ini berarti bahwa fungsi-fungsi data mining dioptimasi berdasarkan semua yang sudah disediakan oleh DBMS. Bagian penelitian ini bertujuan untuk mencari fitur-fitur ORDBMS yang dapat mendukung efisiensi dari algoritma pohon keputusan C4.5. Ada beberapa cara untuk meningkatkan kinerja lojik basisdata yang berfungsi untuk melakukan tugas khusus, dalam penelitian ini adalah mengklasifikasi rekord-rekord tabel, misalnya dengan komputasi paralel, terdistribusi dan teknik implementasi algoritma yang sedemikian rupa untuk mengambil keuntungan dari teknik pengindeksan, pengoptimasi kueri, SQL yang sudah dikembangkan dan fitur lain yang sudah disediakan DBMS. Bagian penelitian ini diarahkan untuk mencari teknik implementasi yang efisien. Pada algoritma pohon keputusan berbasis memori, seperti C4.5 dan turunannya, konstruksi dan pemangkasan pohon memerlukan waktu komputasi yang terlama. Pada tahap ini, rekord-rekord atau sampel-sampel data berukuran besar sering diakses untuk mendapatkan statistik yang diperlukan dalam komputasi. Jika rekord-rekord ini tersimpan di disk, ini akan menyebabkan tingginya lalu-lintas masukan-keluaran. Jika disimpan di memori, algoritma harus melakukan proses traversal ke seluruh array atau obyek. Kedua hal ini tidak bagus untuk efisiensi algoritma. Karena itu, untuk mencari dukungan efisiensi algoritma, obyektif dari riset ini adalah mencari cara untuk: a. Mengurangi lalu-lintas masukan-keluaran dengan cara mengakses data berukuran kecil dan mencari fungsi agregat SQL yang mendukung ini. b. Mencari teknik pemrograman, struktur data atau statistik yang disediakan oleh DBMS, yang akan mendukung kueri dan eksekusi program yang cepat. Pengoptimasi kueri pada DBMS mempertimbangkan profil tabel, indeks dan operasi yang akan dilakukan dalam menentukan rencana eksekusi [Ramakrishnan et al.(2003), Helman (1994)]. Karena implementasi algoritma C4.5Db (lihat Bab C) juga akan menggunakan SQL, maka hipotesisnya adalah bahwa akan ditemukan profil tabel yang akan mendukung efisiensi dari algoritma pohon keputusan. C.2 SQL untuk Komputasi Gain Ratio
Pada Bab II sudah dibahas bahwa perintah SQL yang dapat digunakan untuk komputasi gain ratio pada konstruksi pohon adalah SELECT COUNT FROM tablename WHERE klausul untuk mendapatkan jumlah rekord pada tabel yang
104
memenuhi kondisi tertentu. Sedangkan perintah SELECT C, COUNT(*) FROM tablename WHERE klausul GROUP BY C, dengan C adalah atribut atau kolom tabel bertipe diskret yang ditelaah, digunakan untuk mendapatkan nilai atribut unik pada C dan jumlah rekord untuk setiap nilai ini. Jika C adalah atribut kontinyu, untuk memperoleh jumlah rekord di bawah dan atas nilai ambang, v, maka dapat digunakan perintah SQL SELECT COUNT(*) FROM tablename WHERE C < v dan SELECT COUNT(*) FROM tablename WHERE C > v. C.3 Teknik Pengindeksan dan Rencana Eksekusi
Jika SQL digunakan untuk memperoleh jumlah record yang dibutuhkan dalam menghitung jumlah rekord, teknik pengindeksan yang mendukung kueri yang cepat dan skalabel akan berguna. Dengan menggunakan profil tabel, indeks dan fungsi yang akan dieksekusi, pengoptimasi kueri akan mendefinisikan rencana eksekusi yang paling optimal. Penelitian diperlukan untuk mencari teknik pengindeksan dan profil tabel yang mendukung eksekusi (dan penggunaan CPU yang rendah) pada fungsi agregat SQL. Karena itu, rencana eksekusi yang disusun oleh pengoptimasi kueri perlu ditelaah. Teknik pengindeksan menggunakan beberapa struktur file. Setiap struktur mendukung kebutuhan pencarian atau kueri tertentu. Ringkasan dari struktur file dan pencarian yang didukung diberikan pada Tabel C.1. Pencarian yang dibutuhkan dalam komputasi entropi adalah pencarian rentang. Tabel C.1. Struktur file dan kemampuan pencarian / kueri (Ramakrishnan et.all., 2003). Kueri/ Pencarian Sekuensial Berbasis Kunci Rentang Penggunaan
Tidak Terurut (Unordered)
Terurut (Ordered)
Hash
B+ Tree
Bitmap
Ya Linear Tidak Hanya primer
Ya Linear Ya Hanya primer
Ekstra primer Konstan Tidak Primer atau sekunder
Ya Logaritmik Ya Primer atau sekunder
Tidak Ya Ya Hanya sekunder
Dari isi Tabel C.1, dapat disimpulkan bahwa teknik pengindeksan yang mendukung kueri rentang pada kunci sekunder, adalah B+-tree dan bitmap. Harga pencarian pada B-tree adalah logaritmik dari tinggi pohon sehingga dapat diterima. Bitmap mendukung pencarian rentang dengan melakukan operasi union pada bitmap-bitmap untuk setiap nilai kolom. Operasi ini cepat sehingga dapat diterima. Karena itu, studi pengindeksan lalu difokuskan pada kedua teknik ini. C.3.1. Pengindeksan Bitmap
Pada pengindeksan bitmap, sebuah bitmap digunakan untuk setiap nilai kunci di kolom. Setiap bit di dalam bitmap berkorespondensi dengan rowid. Jika bit diberi nilai 1, artinya baris yang memiliki rowid itu mengandung nilai kolom yang
105
didefinisikan untuk bitmap itu. Sebuah fungsi pemetaan mengkonversi posisi bit ke rowid yang sebenarnya, jadi pengindeksan bitmap memberikan fungsionalitas yang sama dengan pengindeksan yang biasa walaupun menggunakan representasi internal yang berbeda. Contoh pengindeksan bitmap untuk sebuah tabel dan bitmap-bitmapnya diberikan pada Tabel C.2, C.3.a dan C.3.b. Tabel C.3.a memberikan bitmap untuk indeks kolom REGION dan Tabel C.3.b untuk kolom MARITAL_STATUS. Sebuah bitmap terdiri dari string bit-bit dengan nilai 0 atau 1, dengan alokasi satu bit untuk tiap baris pada tabel. Panjang bitmap di sini adalah 6 karena tabel Kustomer memiliki 6 baris/rekord. Tabel C.2. Tabel CUSTOMER. CUSTOMER 101 102 103 104 105 106
MARITAL_ STATUS single married married divorced single married
REGION
GENDER
INCOME_LEVEL
east central west west central central
male female female male female female
bracket_1 bracket_4 bracket_2 bracket_4 bracket_2 bracket_3
Setelah kolom Region diindex dengan bitmap, maka tiga bitmap untuk setiap nilai kolom pada tabel Kustomer ditunjukkan pada Tabel C.4.a dan C.4.b. Tabel C.3.a Bitmap untuk kolom REGION REGION Bitmap east central west
100000 010011 001100
Tabel C.3.b Bitmap untuk kolom MARITAL_STATUS MARITAL_ STATUS single married divorced
Bitmap 100010 011001 000100
Secara umum, karakteristik dari pengindeksan bitmap adalah (Ramakrishnan et.al., 2003): a. Teknik pengindeksan khusus yang mendukung akses ke baris atau rekord dalam jumlah besar. b. Mendukung operasi yang cepat pada “kueri predikat” yang dapat dijalankan dengan operasi logika biner. c. Mudah dikompresi dan berpotensi untuk berukuran kecil. d. Setiap bitmap berukuran kecil dan yang sering digunakan dapat di-cache (disimpan) di memori.
106
e. Mendukung kolom yang stabil dengan jumlah nilai unik yang sedikit. Bitmap cocok untuk operasi pada “kueri predikat” karena pengindeksan bitmap secara efisien menggabungkan indeks-indeks yang berkorespondensi dengan kondisi-kondisi di klausul WHERE. Baris-baris atau rekord-rekord yang memenuhi kondisi akan difilter sebelum tabel diakses. (Ilustrasi “kueri predikat” pada kolom dengan indeks bitmap ini diberikan pada Gambar C.1.). Hal ini meningkatkan waktu kueri, kadang secara dramatis. Akan tetapi, pengindeksan bitmap hanya berguna untuk kueri dengan operasi AND, OR, NOT dan persamaan pada klausul WHERE. Bitmap tidak sesui untuk kolom yang akan dikueri berdasarkan kunci primer atau komparasi lebih besar/kecil, yang akan dibutuhkan pada komputasi entropi untuk kolom bertipe numerik/kontinyu. Sebagai contoh, untuk perintah SQL SELECT COUNT(*) FROM CUSTOMER WHERE MARITAL_STATUS = ’married’ AND REGION IN(’central’,’west’);
maka operasi biner dengan operator AND dan OR dilakukan pada bitmap-bitmap seperti yang ditunjukkan oleh Gambar C.1. Untuk fungsi agregat COUNT, maka setelah operasi biner dilakukan, jumlah bit 1 dihitung dan hasilnya dikembalikan ke aplikasi pemanggil. Dengan demikian, tabel yang berisi data tidak diakses.
Gambar C.1. Ilustrasi operasi biner pada bitmap-bitmap (Oracle (2002)1).
Keuntungan penggunaan bitmap maksimal jika kolom memiliki jumlah nilai unik yang kecil dibandingkan dengan jumlah baris di tabel, sebab ukuran index jauh lebih kecil jika dibandingkan dengan ukuran tabel. Jika jumlah nilai unik kolom ini lebih kecil dibandingkan dengan 1% dari jumlah baris, atau jika nilai-nilai di kolom diulangi lebih dari 100 kali, maka kolom ini menjadi kandidat untuk diindeks dengan bitmap. Bahkan untuk kolom dengan jumlah repetisi yang rendah, yang berarti jumlah nilai uniknya besar, juga dapat menjadi kandidat bitmap jika kolom tersebut akan muncul di kondisi klausul WHERE yang kompleks pada kueri dengan SQL (Oracle (2002)1). Pada kueri ad-hoc dan yang mirip dengan ini, pengindeksan dengan bitmap dapat meningkatkan kinerja kueri secara dramatis. Kondisi AND atau OR di klausul WHERE pada kueri dapat diselesaikan secara cepat dengan operasi boolean, langsung pada bitmap-bitmap sebelum hasilnya dikonversi ke rowid-rowid. Jika
107
jumlah baris hasil kueri kecil, kueri dapat dilakukan secara cepat tanpa melakukan pembacaan ke seluruh isi tabel. C.3.2 Pengindeksan B-Tree
Pengindeksan B-tree dan pengembangannya, B+-tree, adalah teknik pengindeksan yang populer dan didukung oleh banyak DBMS. (Pencarian sekuensial yang bermasalah pada B-tree diperbaiki pada B+-tree.) Karakteristik dari pengindeksan ini adalah (Ramakrishnan et.all., 2003): a. Seimbang: Semua node daun (node tanpa anak) terletak pada level yang sama pada pohon. Pohon yang seimbang ini menjamin bahwa semua pencarian sampai ke node daun dilakukan dengan biaya yang sama. b. Bushy: Jumlah cabang pada node besar, dapat mencapai 10 hingga 100 cabang. Pohon B-tree yang ideal adalah lebar (bushy) tapi hanya terdiri dari sedikit tingkat / level. c. Berorientasi blok: Setiap node di B-tree adalah sebuah blok disk atau rekord fisik. Ketinggian pohon penting untuk dipertimbangkan, sebab ini menentukan jumlah blok yang akan diakses selama proses pencarian rekord. d. Dinamis: struktur pohon B-tree dapat berubah setelah dilakukan penambahan atau penghapusan rekord. Contoh pohon B-tree yang memiliki 3 tingkat diberikan pada Gambar C.2. Root node
Level 0
...
Level 1
...
Level 2
...
Leaf nodes
Gambar C.2 B-tree dengan 3 tingkat node.
Key1
Key2
... Keyd
... Key2d
Pointer 1 Pointer 2 Pointer 3 Pointer d+1 ... Pointer 2d+1
Each non root node contains at least half capacity (d keys and d+1 pointers). Each non root node contains at most full capacity (2d keys and 2d+1 pointers).
Gambar C.3. Skema isi tiap node di B-tree.
108
Gambar C.3 menunjukkan isi dari setiap node di pohon. Setiap node mengandung pasangan-pasangan kunci dan penunjuk yang diurutkan berdasarkan nilai kunci. Penunjuk ini mengidentifikasi rekord fisik yang berisi rekord lojik dengan nilai kunci tertentu. Data lain yang terdapat pada rekord lojik, kecuali kunci, biasanya tidak terdapat di node ini. Data lain tersebut mungkin disimpan di rekord fisik secara terpisah atau di node daun. Dalam konteksnya dengan dukungan skalabilitas dan efisiensi pada algoritma klasifikasi pohon keputusan, keuntungan pengindeksan dengan B-tree adalah: a. B-tree mendukung kinerja kueri rentang, termasuk dengan pencarian persamaan dan rentang (dengan operator lebih kecil/besar pada klausul WHERE). b. Kinerja B-tree bagus baik untuk tabel berukuran kecil maupun besar. C.3.3 Perbandingan B-Tree terhadap Bitmap Melalui Rencana Eksekusi C.3.3.1 Pengoptimasi Kueri dan Rencana Eksekusi
Ketika perintah kueri SQL diumpankan untuk dieksekusi, DBMS menterjemahkan kueri ke dalam 4 tahap seperti ditunjukkan pada Gambar C.4. Tahap ke-1 dan ke-4 sudah biasa dilakukan di hampir setiap bahasa pemrograman. Tahap ke-2 adalah tahap yang unik untuk DBMS untuk beberapa aspek. Tahap ke-3 adalah unik untuk DBMS dan diterapkan pada proses translasi bahasa basisdata. Tahap ke-3, Access Plan Evaluation, menentukan bagaimana mengatur ekspresi aljabar relasional sebagai rencana akses atau rencana eksekusi. Rencana akses adalah pohon yang merepresentasikan keputusan-keputusan untuk mengakses tabel individual, urutan dalam penggabungan tabel dan algoritma untuk menggabungkan tabel. Biasanya, pengoptimasi kueri ini mengevaluasi banyak rencana akses. Setiap operasi di dalam rencana akses terkait dengan rumus biaya untuk mengestimasi akses rekord fisik dan operasi CPU. Rumus biaya ini menggunakan profil tabel untuk mengestimasi jumlah rekord yang dihasilkan pada kueri. Komponen pengoptimasi kueri memilih rencana akses yang memiliki biaya terendah. Dalam mengakses tabel individual, statistik dan indeks pada tabel ini menjadi bahan pertimbangan, adapun hasil rencana eksekusinya dapat berupa pengaksesan indeks saja, gabungan pengaksesan indeks dan tabel, atau hanya pengaksesan seluruh tabel (full-table-scan).
109
Query
Syntax and semantic analysis Parsed query
Query transformation Relational algebra query
Access plan evaluation Access Plan
Access Plan
Access plan interpretation
Code generation Machine code
Query results
Gambar C.4. Skema pemrosesan perintah kueri pada DBMS (Ramakrishnan et all. (2003)). C.3.3.2 Rencana Eksekusi pada Kolom Diskret
Ukuran indeks bitmap dapat jauh lebih kecil dibandingkan dengan B-tree, khususnya untuk kolom diskret dengan jumlah nilai unik yang kecil. Contoh perbandingan ini diberikan pada Tabel C.4. Tabel yang diindeks berisi 70.000 rekord, terdiri dari 5 kolom dan datanya menempati 556 blok. Pada tabel itu ditunjukkan bahwa indeks bitmap menduduki ruang disk yang jauh lebih kecil dibandingkan dengan B-tree. (Di situ juga ditunjukkan bahwa pada indeks bitmap, jumlah nilai unik yang lebih besar akan memerlukan ruang disk yang lebih besar.) Untuk kolom yang nilainya diulang sampai ratusan atau ribuan kali, indeks bitmap biasanya dapat menghemat ruang disk sampai dengan 25% dari ruang yang dibutuhkan oleh indeks B-tree. Table C.4. Perbandingan blok pada indeks bitmap dan B-tree. Kolom ke 1 2 3 4 5
#Nilai Unik 4 9 5 7 10
Bitmap #Baris #Blok 12 6 26 13 15 8 21 11 30 15
#Baris 70000 70000 70000 70000 70000
B-tree #Blok-daun 205 205 205 205 226
Komputasi entropi pada kolom diskret memerlukan jumlah dari rekord-rekord yang memenuhi kondisi tertentu. Karena itu, di sini akan dilakukan perbandingan antara rencana eksekusi dari fungsi agregat COUNT pada table yang diindeks
110
dengan bitmap dan B-tree. Tabel yang digunakan adalah tabel yang profilnya ditunjukkan pada Tabel C.4. Sedangkan perintah SQL yang digunakan adalah: SELECT COUNT(*) FROM T5C_70TH WHERE A6 = 'value3' AND A13 = 'value9';
Rencana eksekusi yang disusun oleh pengoptimasi kueri pada Oracle 10g ditunjukkan pada Tabel C.5 dan Tabel C.6. Pada tabel ditunjukkan bahwa eksekusi pada tabel yang diindeks dengan B-tree memerlukan langkah-langkah yang lebih banyak dan biaya CPU yang lebih besar dibandingkan dengan yang diindeks dengan bitmap. Pada saat dilakukan eksperimen dengan jumlah nilai unik yang jauh lebih besar, yaitu 100 dan 200 nilai, dan lebih banyak kolom pada klausul WHERE, ternyata juga didapatkan hasil yang serupa, yaitu COUNT dieksekusi secara lebih efisien pada tabel yang diindeks dengan bitmap. Tabel C.5. Rencana eksekusi COUNT pada tabel yang diindeks bitmap. -----------------------------------------------------------------------------| Id | Operation | Name | Rows |Cost (%CPU)| Time | -----------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 1 | 4 (0)| 00:00:01 | | 1 | SORT AGGREGATE | | 1 | | | | 2 | BITMAP CONVERSION COUNT | | 1400 | 4 (0)| 00:00:01 | | 3 | BITMAP AND | | | | | |* 4 | BITMAP INDEX SINGLE VALUE| A13_BI | | | | |* 5 | BITMAP INDEX SINGLE VALUE| A6_BI | | | | -----------------------------------------------------------------------------Predicate Information (identified by operation id): 4 - access("A13"='value9') 5 - access("A6"='value3')
Tabel C.6. Rencana eksekusi COUNT pada tabel yang diindeks B-tree. -------------------------------------------------------------------------------| Id | Operation | Name | Rows |Cost(%CPU)| Time | -------------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 1| 81 (2) | 00:00:01 | | 1 | SORT AGGREGATE | | 1| | | | 2 | BITMAP CONVERSION COUNT | | 1400| 81 (2) | 00:00:01 | | 3 | BITMAP AND | | | | | | 4 | BITMAP CONVERSION FROM ROWIDS| | | | | |* 5 | INDEX RANGE SCAN | A13_BT | | 23 (0) | 00:00:01 | | 6 | BITMAP CONVERSION FROM ROWIDS| | | | | |* 7 | INDEX RANGE SCAN | A6_BT | | 41 (0) | 00:00:01 | -------------------------------------------------------------------------------Predicate Information (identified by operation id): 5 - access("A13"='value9') 7 - access("A6"='value3')
Untuk perintah SQL SELECT A13, COUNT(*) FROM T5C_70TH where A6 = 'd2_value3' GROUP BY A13;
hasilnya juga mirip, yaitu perintah dieksekusi dengan lebih efisien pada tabel yang diindeks bitmap (lihat Tabel C.7 dan C.8). Pada saat dilakukan eksperimen dengan jumlah nilai unik yang jauh lebih besar, yaitu 100 dan 200 nilai, dan lebih banyak kolom pada klausul WHERE, ternyata juga didapatkan hasil yang serupa. Dengan membandingkan antara biaya CPU pada rencana eksekusi tanpa dan dengan GROUP BY dapat disimpulkan bahwa COUNT dengan GROUP BY ternyata dieksekusi lebih efisien dibandingkan dengan eksekusi COUNT secara berulang-ulang untuk setiap nilai kolom yang muncul pada GROUP BY. Maka dapat disimpulkan bahwa COUNT dengan GROUP BY lebih efisien.
111
Tabel C.7. Rencana eksekusi COUNT dengan GROUP BY pada tabel yang diindeks bitmap. -----------------------------------------------------------------------------------| Id | Operation | Name | Rows |Cost(%CPU)| Time | ------------------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 10 | 21 (15)| 00:00:01 | | 1 | SORT GROUP BY | | 10 | 21 (15)| 00:00:01 | |* 2 | VIEW | index$_join$ | 14000 | 19 (6)| 00:00:01 | |* 3 | HASH JOIN | | | | | | 4 | BITMAP CONVERSION TO ROWIDS| | 14000 | 2 (0)| 00:00:01 | |* 5 | BITMAP INDEX SINGLE VALUE | A6_T5C_70TH | | | | | 6 | BITMAP CONVERSION TO ROWIDS| | 14000 | 16 (0)| 00:00:01 | | 7 | BITMAP INDEX FULL SCAN | A10_T5C_70TH | | | | ------------------------------------------------------------------------------------Predicate Information (identified by operation id): 2 - filter("A6"='d2_value3') 3 - access(ROWID=ROWID) 5 - access("A6"='d2_value3')
Tabel C.8. Rencana eksekusi COUNT dengan GROUP BY pada tabel yang diindeks B-tree. ---------------------------------------------------------------------| Id | Operation | Name | Rows |Cost (%CPU)| Time | ---------------------------------------------------------------------| 0 | SELECT STATEMENT | | 10 | 127 (4)| 00:00:02 | | 1 | SORT GROUP BY | | 10 | 127 (4)| 00:00:02 | |* 2 | TABLE ACCESS FULL| T5C_70TH | 14000 | 125 (2)| 00:00:02 | ---------------------------------------------------------------------Predicate Information (identified by operation id): 2 - filter("A6"='d2_value3')
C.3.3.3 Rencana Eksekusi pada Kolom Kontinyu
Pengindeksan bitmap tidak sesuai untuk kolom kontinyu, karena operasi lojik bit pada klausul WHERE sangat sulit untuk dilakukan pada angka floating point. Untuk pencarian rentang dengan operasi lebih kecil dan besar dibandingkan dengan nilai ambang pada klausul WHERE, yang dibutuhkan pada komputasi entropi, B-tree dapat menjadi solusinya. (Statistik kolom tabel, seperti histogram, yang disimpan di kamus DBMS mungkin akan berguna untuk menghitung nilai ambang untuk membagi rekord-rekord.) Untuk bereksperimen dengan kolom kontinyu, maka dibuat tabel dengan 5 kolom yang berisi 10.000 rekord. Kolom A1 s/d A3 yang bertipe kontinyu diindeks dengan B-tree, kolom A4 (berisi 10 nilai unik), A5 (berisi 9 nilai unik) diindeks dengan bitmap. Untuk perintah SQL: SELECT COUNT(*) FROM TCONT_10TH WHERE A1 > 4 AND A1 < 6 AND A4 = 'value6';
maka rencana eksekusinya adalah: indeks bitmap dan B-tree digunakan dan biaya CPU adalah 12 unit. Tetapi untuk perintah SQL berikut ini (nilai rentang diperlebar): SELECT COUNT(*) FROM TCONT_10TH WHERE A1 > 1 AND A1 < 8 AND A4 = 'value6';
ternyata tabel diakses seluruhnya (full table scan), yang memerlukan biaya CPU 14 unit. Karena itu dapat disimpulkan bahwa indeks B-tree tidak selalu mendukung fungsi agregat COUNT dengan klausul WHERE. Ini bergantung pada distribusi nilai
112
kontinyu pada kolom itu, yang mempengaruhi jumlah rekord yang perlu untuk ditelaah. Pada DBMS, nilai yang hilang (missing values) identik dengan nilai null dan pada indeks dianggap sebagai sebuah nilai unik (Oracle, 20021). Jika ini tidak diperbolehkan, maka nilai yang hilang ini harus ditangani terlebih dahulu sebelum dilakukan pengindeksan. (Pada ORDBMS, nilai yang hilang juga dapat dicegah atau ditangani pada saat penyisipan rekord dengan trigger.) C.4. Keuntungan Prosedur Tersimpan dan Bulk-Binds
Keuntungan penggunaan prosedur tersimpan terkait dengan algoritma pohon keputusan adalah: prosedur ini dikompilasi satu kali dan disimpan dalam bentuk kode yang dapat dieksekusi, sehingga eksekusi prosedur jika dipanggil cepat dan efisien. Kode yang dapat dieksekusi ini secara otomatis di-cache dan dapat digunakan oleh beberapa pengguna, sehingga menekan kebutuhan memori dan biaya pemanggilan (Oracle, 20051). Pada Lampiran B sudah dibahas bahwa Oracle 10g menyediakan dua tipe prosedur tersimpan, yaitu yang berbasis-SQL (PL/SQL) dan Java. Di sini akan dibahas pemanfaatan kedua jenis prosedur tersimpan ini dalam kaitannya dengan efisiensi C4.5Db. Oracle (2005)1 menyatakan bahwa terlalu banyak koneksitas yang dilakukan antara mesin PL/SQL dan SQL dapat memperburuk kinerja (lihat Gambar B.4). Ini terjadi ketika sebuah loop mengeksekusi perintah SQL untuk tiap elemen dari koleksi atau array dengan menspesifikasikan elemen array sebagai variabel binding. Untuk mengurangi overhead loop ini, Oracle menyediakan bulk-binding. (Pada ORDBMS, tipe array adalah User Defined Type (Stonebraker et.all, 1999), (Oracle, 2002)3 ). Teknik ini meningkatkan kinerja dengan meminimalkan jumlah koneksitas yang dilakukan antara mesin PL/SQL dan SQL. Dengan bulk-binds, seluruh koleksi, tidak hanya individu elemen koleksi, dikirim bolak-balik antara prosedur atau program pemanggil dengan prosedur yang dipanggil. Untuk keperluan pencarian teknik pemrograman yang lebih efisien, di sini dilakukan perbandingan waktu eksekusi antara kode program pada Kode C.1 dan Kode C.2. Pada Kode C.1, fungsi agregat COUNT dieksekusi melalui kode prosedur tersimpan Java dengan menggunakan obyek-obyek JDBC. Pada Kode C.2, prosedur tersimpan Java digunakan untuk memanggil prosedur tersimpan PL/SQL yang mengimplementasikan bulk-binds. (Karena eksekusi fungsi agregat COUNT dengan GROUP BY pada tabel yang diindeks dengan bitmap efisien, maka di sini eksperimen digunakan untuk membandingkan eksekusi fungsi itu melalui prosedur Java dan dengan bulk-binds.) Hasil pengamatan waktu eksekusi: Kode C.1 dieksekusi dengan waktu 1,3 sampai 1,4 kali waktu eksekusi Kode C.2. // ConDB is a Connection object, RS is a ResultSet object, stmt is a Statement object. RS = stmt.executeQuery("SELECT COUNT(*), ColumnName FROM TableName WHERE AColumn = AValue GROUP BY ColumnName "; RS.close();
Kode C.1. Kode untuk mengeksekusi fungsi COUNT melalui JDBC.
113
--The codes used to define user defined collection type: CREATE type ARR_STRING AS VARRAY(M) OF VARCHAR2(N); CREATE type ARR_NUMBER AS VARRAY(M) OF NUMBER;
-- M and N is number variables. --The codes of SQL-based procedure used to get the count of records satisfying some condition: CREATE PROCEDURE getDisCountWhere (Table_Name IN VARCHAR2, Column_Name IN VARCHAR2, Where_Clause IN VARCHAR2, Distinct_Values OUT ARR_STRING, Distinct_Count OUT ARR_NUMBER) AS BEGIN EXECUTE IMMEDIATE 'SELECT ' || Column_Name || ' , COUNT(*) FROM ' || Table_Name || Where_Clause || ' GROUP BY ' || Column_Name BULK COLLECT INTO Distinct_Values, Distinct_Count; END;
-- where getDisCountWhere is the name of the procedure. -- The procedure returns array of distinct values and count, Distinct_Values Distinct_Count.
and
//The Java codes used to call the SQL-based stored procedure is: CallableStatement cst = ConDB.prepareCall("begin getDisCountWhere(?, ?, ?, ?, ?); end;"); cst.registerOutParameter(4, OracleTypes.ARRAY, "ARR_STRING"); cst.registerOutParameter(5, OracleTypes.ARRAY, "ARR_NUMBER"); cst.setString(1, TableName); cst.setString(2, AttributeName[ClassIndex]); String WhereStr = " WHERE " + Filter_String; cst.setString(3, WhereStr); cst.executeUpdate(); oracle.sql.ARRAY Temp_Count = ((OracleCallableStatement)cst).getARRAY(5); int[] Count = (int[]) Temp_Count.getIntArray(); oracle.sql.ARRAY Temp_String = ((OracleCallableStatement)cst).getARRAY(4); String[] DistinctValues = (String[])Temp_String.getArray(); cst.close();
//where ConDB is the database connection object. Count and DistinctValues are used in further computation.
Kode C.2. Kode untuk mengeksekusi fungsi COUNT dengan bulk-binds. C.5. Kesimpulan
Setelah mengeksplorasi dan bereksperimen dengan teknik pengindeksan, prosedur tersimpan, fungsi agregat SQL dan pengembangan SQL (dengan bulk-binds) pada ORDBMS, fitur-fitur yang dapat mendukung peningkatan efisiensi algoritma pohon keputusan C45Db sudah ditemukan. Indeks bitmap pada kolom yang memiliki nilai unik kecil hingga besar mendukung eksekusi fungsi agregat COUNT (dengan GROUP BY) dengan cepat. Sementara itu, index B-tree berguna untuk mendukung eksekusi COUNT pada kolom kontinyu dengan kondisi tertentu. Bulk-binds juga meningkatkan kecepatan eksekusi prosedur tersimpan PL/SQL yang berisi fungsi COUNT. Prosedur tersimpan Java juga berguna untuk mendukung efisiensi, karena untuk rekord-rekord dalam jumlah kecil, algoritma pohon keputusan berbasis-memori dapat dieksekusi dengan efisien.
114
Daftar Pustaka
Han, J; Kamber, M. (2001): Data mining concepts and techniques, Morgan Kaufmann Pub., USA. Helman, P.( 1994): The Science of Database Management, R.D. Irwin Inc, Sydney, Australia. Oracle (2002)1: Database Concept Release 2 (9.2), Oracle Co., March. Oracle (2005)1: PL/SQL User Guide and Reference 10g Release 2, Oracle Co., June 2005. Oracle (2002)2: Java Stored Procedures Developer’s Guide Release 2 (9.2), Oracle Co., March. Oracle (2005)2: Database Performance Tuning Guide 10g Release 2, Oracle Co., June. Oracle (2002)3: Oracle 9i Application Developer’s Guide: Object-Relational Features Release 2 (9.2), March. Oracle (2002)4: JDBC Developer’s Guide Release 2 (9.2), Oracle Co., March. Quinlan, J.R.(1993): C4.5: Programs for Machine Learning, Morgan Kaufmann Pub., USA, 1993 Ramakrishnan, Gehrke (2003): Database Management Systems, 3ed., McGraw Hill, New York. Ruggieri, S. (2000): Technical Report TR-00-01: Efficient C4.5, Dipartimento di Informatica, Universita di Pisa, Itali. Schildt, H. (2001): The Complete Reference Java 2, 4th ed., McGrawHill/Osborne. Stonebraker, M., Brown, P. (1999); Object-Relational DBMS: Tracking the Next Great Wave, 2nd ed., Morgan Kaufmann Pub., USA.
115
LAMPIRAN D Deskripsi Tabel untuk Eksperimen Tabel D.1. Deskripsi tabel-tabel eksperimen. Jumlah Kolom Nama Tabel Jumlah Rekord Jumlah Blok
5
10
10
15
20
30
T5C_5TH T5C_10TH T5C_30TH T5C_50TH T5C_70TH T5C_100TH T5C_150TH T5C_200TH T5C_300TH T10C_5TH T10C_10TH T10C_30TH T10C_50TH T10C_70TH T10C_100TH T10C_200TH T10C_300TH T10C_5TH_2 T10C_100TH_2 T10C_10TH_2 T10C_30TH_2 T10C_50TH_2 T10C_70TH_2 T10C_200TH_2 T15C_5TH T15C_10TH T15C_30TH T15C_50TH T15C_70TH T15C_100TH T15C_200TH T20C_5TH T20C_10TH T20C_50TH T20C_70TH T20C_100TH T20C_200TH T30C_5TH T30C_10TH T30C_30TH T30C_50TH T30C_100TH
5000 10000 30000 50000 70000 100000 150000 200000 300000 5000 10000 30000 50000 70000 100000 200000 300000 5000 100000 10000 30000 50000 70000 200000 5000 10000 30000 50000 70000 100000 200000 5000 10000 50000 70000 100000 200000 5000 10000 30000 50000 100000
116
40 80 239 397 556 794 1191 1588 2378 88 148 442 736 1030 1471 2942 4416 74 1497 151 451 751 1051 2998 122 244 732 1220 1708 2440 4883 157 313 1563 2188 3125 6253 228 455 1364 2273 4549
Tabel D.2. Deskripsi hasil indeks bitmap pada tabel dengan 5 kolom. Nama Tabel
T5C_5TH
T5C_10TH
T5C_30TH
T5C_50TH
T5C_70TH
T5C_100TH
Kolom ke, Nama Index
Jumlah Jumlah Nilai Unik Blok
A2_T5C_5TH A4_T5C_5TH A6_T5C_5TH A8_T5C_5TH A10_T5C_5TH
4 9 5 7 10 Jumlah blok A2_T5C_10TH 4 A4_T5C_10TH 9 A6_T5C_10TH 5 A8_T5C_10TH 7 A10_T5C_10TH 10 Jumlah blok A2_T5C_30TH 4 A4_T5C_30TH 9 A6_T5C_30TH 5 A8_T5C_30TH 7 A10_T5C_30TH 10 Jumlah blok A2_T5C_50TH 4 A4_T5C_50TH 9 A6_T5C_50TH 5 A8_T5C_50TH 7 A10_T5C_50TH 10 Jumlah blok A2_T5C_70TH 4 A4_T5C_70TH 9 A6_T5C_70TH 5 A8_T5C_70TH 7 A10_T5C_70TH 10 Jumlah blok A2_T5C_100TH 4 A4_T5C_100TH 9 A6_T5C_100TH 5 A8_T5C_100TH 7 A10_T5C_100TH 10 Jumlah blok
117
1 1 1 1 1 5 1 2 2 2 2 9 4 7 5 7 5 23 5 9 6 7 10 37 6 13 8 11 15 53 10 17 11 14 20 72
Tabel D.3. Deskripsi hasil indeks bitmap pada tabel dengan 10 kolom (nilai unik kecil). Nama Tabel
Kolom ke, Nama Index
Jumlah Jumlah Nilai Unik Blok
T10C_100TH
A2_T10C_100TH A4_T10C_100TH A6_T10C_100TH A8_T10C_100TH A10_T10C_100TH A12_T10C_100TH A14_T10C_100TH A16_T10C_100TH A18_T10C_100TH A20_T10C_100TH
T10C_200TH
A2_T10C_200TH A4_T10C_200TH A6_T10C_200TH A8_T10C_200TH A10_T10C_200TH A12_T10C_200TH A14_T10C_200TH A16_T10C_200TH A18_T10C_200TH A20_T10C_200TH
4 9 5 7 4 6 9 13 7 15 Jumlah blok 4 9 5 7 4 6 9 13 7 15 Jumlah blok
118
10 17 13 14 10 15 17 20 14 22 152 19 34 23 28 18 26 34 38 28 44 292
Tabel D.4. Deskripsi hasil indeks bitmap pada tabel dengan 10 kolom (nilai dua kali di D.3). Nama Tabel
Kolom ke, Nama Index
T10C_100TH_2
A1_T10C_100TH_2 A2_T10C_100TH_2 A3_T10C_100TH_2 A4_T10C_100TH_2 A5_T10C_100TH_2 A6_T10C_100TH_2 A7_T10C_100TH_2 A8_T10C_100TH_2 A9_T10C_100TH_2 A10_T10C_100TH_2
T10C_200TH_2
Jumlah Jumlah Nilai Unik Blok
7 17 10 14 8 12 17 25 14 20 Jumlah blok A2_T10C_200TH_2 46 A3_T10C_200TH_2 35 A4_T10C_200TH_2 41 A5_T10C_200TH_2 32 A6_T10C_200TH_2 39 A7_T10C_200TH_2 44 A8_T10C_200TH_2 50 A9_T10C_200TH_2 41 A10_T10C_200TH_2 50 A1_T10C_200TH_2 28 Jumlah blok
119
14 25 20 21 16 22 25 25 21 30 219 17 10 14 8 12 17 25 14 20 7 144
LAMPIRAN E Algoritma Perolehan Kembali Citra dan Transformasi Wavelet 2Dimensi E.1. Algoritma Perolehan Kembali Citra
Ide dasar dari algoritma perolehan kembali citra (image retrieval algorithms) adalah melakukan pencarian citra di basisdata yang mirip dengan citra kueri. Masukan dari algoritma ini adalah citra kueri (yang akan dicari) dan keluarannya adalah citra-citra yang mirip dengan citra kueri. Tingkat kemiripan dari citra-citra keluaran ini direpresentasikan dengan bobot. Banyak algoritma perolehan kembali sudah berhasil dikembangkan, tapi algoritma-algoritma tersebut masih memiliki kelemahan-kelemahan untuk menganalisis citra yang merupakan obyek yang kompleks. Pengembangan algoritma masih terus dilakukan oleh para peneliti di bidang ini. Berdasarkan basis kemiripan yang diterapkan, algoritma perolehan kembali citra yang berhasil diperoleh dari studi literatur dapat dikelompokkan ke dalam algoritma berbasis (Lu, 1999; Vitulano et al., 2004; Natsev et all, 2004; Hirata et al., 1992; Sajjanhar, 1998; Ko et all., 2000; Sun et all, 2003): - teks: kemiripan citra diukur berdasarkan deskripsi citra, - warna: kemiripan citra diukur berdasarkan warna citra, - bentuk: kemiripan citra diukur berdasarkan bentuk(-bentuk) yang terdapat di citra, - tekstur: kemiripan citra diukur berdasarkan tekstur citra, - semantik: kemiripan citra diukur berdasarkan semantik citra, yang dapat merupakan gabungan antara warna, bentuk, tekstur dan ukuran-ukuran lain. Pada lampiran ini dibahas konsep dasar mengenai algoritma perolehan kembali citra berbasis warna, bentuk dan tekstur. Secara umum langkah-langkah pada ketiga algoritma tersebut adalah: a. Komputasi fitur (signature) citra-citra di basisdata yang merepresentasikan setiap citra yang tersimpan di basisdata. Komputasi ini biasa dilakukan secara off-line. b. Komputasi fitur citra kueri. Komputasi ini biasa dilakukan secara on-line. c. Pembandingan fitur citra kueri dengan setiap fitur yang tersimpan di basisdata dengan menggunakan rumus untuk menghitung nilai jarak atau similaritas yang tertentu. Hasil dari perbandingan ini berupa nilai-nilai bobot atau skor, yang dapat diurutkan menaik atau menurun untuk mendapatkan k citra di basisdata yang paling mirip dengan citra kueri. Berikut ini akan dibahas konsep umum tentang komputasi fitur citra dan teknik perbandingan fitur yang diterapkan pada algoritma perolehan kembali citra berbasis warna, bentuk dan tekstur.
120
a. Algoritma Perolehan Kembali Citra Berbasis Warna
Dari hasil studi literatur didapati bahwa teknik pembuatan fitur citra yang banyak digunakan adalah dengan menggunakan ukuran statistik, seperti histogram, nilai rata-rata, variansi dan skewness. Ukuran statistik ini dihitung dari setiap matriks komponen warna citra lalu disimpan sebagai fitur citra. (Jika sistem warna yang digunakan adalah RGB, maka akan ada tiga matriks komponen warna, yaitu matriks R, G dan B. Jika sistem warna yang digunakan adalah HSV, maka akan ada tiga matriks, yaitu matriks H, S dan V.) Perbandingan antara dua citra dilakukan dengan menghitung jarak antara fitur citra kueri dan citra di basisdata dengan menggunakan rumus jarak Euclidean (jumlah selisih kuadrat), cityblock (jumlah harga mutlak dari selisih) atau lainnya (Lu, 1999; Ko et al., 2000). b. Algoritma Perolehan Kembali Citra Berbasis Bentuk Langkah-langkah pembuatan fitur dan perbandingan citra secara umum adalah (Lu, 1999; Hirata et al., 1992; Sajjanhar, 1998): 1. Bentuk(-bentuk) pada citra dideteksi dengan teknik deteksi tepi (misalnya teknik Canny atau Sobel). Proses ini menghasilkan matriks atau array yang elemen-elemennya bernilai 1 atau 0. 2. Fitur citra dihitung dari hasil deteksi tepi citra. Beberapa teknik yang digunakan pada perhitungan fitur ini misalnya adalah Invariant Moments, Fourier Descriptor, Elastic Template Matching, dan Region-Based Shape Representation. 3. Perbandingan antara dua citra dilakukan dengan menghitung jarak atau similaritas antara fitur citra kueri dan citra di basisdata dengan menggunakan jarak Euclidean atau teknik lain yang tertentu. c. Algoritma Perolehan Kembali Citra Berbasis Tekstur Teknik-teknik yang diterapkan pada perhitungan fitur dapat menggunakan teknikteknik statistik (misalnya rata-rata, variansi, histogram dan principal component analysis) atau teknik analisis sinyal (misalnya Discrete Cosine Transform dan transformasi wavelet) atau kombinasi dari keduanya. Pada lampiran ini hanya akan dibahas lebih lanjut tentang algoritma yang menggunakan transformasi wavelet.
Pada algoritma content-based image retrieval (CBIR) tahap awal, misalnya WBIIS di (Wang et all, 1997), langkah-langkah algoritma adalah: 1. Komputasi fitur: Penerapan DWT 2-Dimensi (lihat bagian E.2) sampai ke level yang diinginkan (misalnya 3 atau 4) untuk mendapatkan koefisien wavelet. Perhitungan ukuran statistik dari koefisien wavelet (misalnya rata-rata, variansi). Fitur citra adalah gabungan dari koefisien wavelet dan ukuran statistik tersebut. 2. Perbandingan antara dua citra dilakukan dengan menghitung jarak atau similaritas antara fitur citra kueri dan citra di basisdata dengan menggunakan jarak Euclidean atau teknik lain yang tertentu.
121
Dengan memilih teknik komputasi DWT 2-Dimensi yang efisien, komputasi fitur pada CBIR ini dapat dilakukan dengan efisien. Akan tetapi, CBIR memiliki kelemahan yaitu rentan terhadap perbedaan skala, sudut pengambilan dan posisi gambar. Masalah pada CBIR sebagian sudah diselesaikan pada algoritma region-contentbased image retrieval (RCBIR). Seiring dengan popularitas wavelet sebagai teknik untuk menganalisis citra, beberapa RCBIR sudah dikembangkan (Bartolini et al., 2001; Natsev et al., 2004) Langkah-langkah pada komputasi fitur RCBIR adalah: 1. Citra dibagi menjadi jendela-jendela. 2. Penerapan DWT 2-Dimensi pada setiap jendela lalu pembuatan fitur untuk setiap jendela. 3. Pengelompokan fitur-fitur jendela dan perhitungan ukuran-ukuran statistik dilakukan. Titik pusat dari kelompok beserta ukuran-ukuran statistik dijadikan fitur citra. Perbandingan antara dua citra dilakukan dengan teknik tertentu (tidak hanya menggunakan jarak Euclidean). Karena komputasi fitur pada RCBIR ini kompleks (melibatkan pembagian citra menjadi jendela-jendela, penerapan DWT 2-D pada setiap jendela dan pengelompokan fitur), maka komputasi ini lambat jika dibandingkan dengan komputasi fitur pada CBIR. E.2 Transformasi Wavelet Diskret 2-Dimensi
Wavelet adalah gelombang yang memiliki durasi tertentu atau terbatas yang memiliki nilai rata-rata nol (Mallat, 1999). Ada beberapa tipe wavelet yang sudah dikembangkan, misalnya Haar, Daubechies, Symlets dan Morlet, dimana dalam aplikasinya, setiap wavelet memiliki kelebihan sendiri. Contoh fungsi wavelet (psi) beserta fungsi skalanya (phi) diberikan pada Gambar E.1.
122
(a) Haar
1
fungsi skala, phi
1
fungsi wavelet, psi
1
1 -1 (b) Daubechies
Gambar E.1. Wavelet Haar (a) dan Daubechies (b) beserta fungsi skalanya.
Wavelet 2-D yang terpisah didefinisikan sebagai: Ψ 1 ( x, y ) = φ ( x)ψ ( y ) Ψ 2 ( x, y ) = ψ ( x)φ ( y ) Ψ 3 ( x, y ) = ψ ( x)ψ ( y )
(E.1)
dimana φ (x) adalah fungsi skala dan ψ (x) adalah fungsi wavelet. Dengan menggunakan rumus E.1, transformasi wavelet 2-D didefinisikan sebagai: a j [n] =< f ,φ j2,n > d 1j [n] =< f , Ψ 1j ,n >
(E.2)
d 2j [n] =< f , Ψ j2,n > d 3j [n] =< f , Ψ 3j ,n > dimana f adalah fungsi sinyal 2-dimensi, Ψ j ,n = 2 − j Ψ (2 − j n1 , 2 − j n2 ),φ j ,n = 2 − j φ (2 − j n1 , 2 − j n2 ) , n = (n1, n2),
j adalah level dekomposisi dan < .,. > menyatakan perkalian dalam (inner product) dan m, n ∈ Z 2 . a1j dinamakan koefisien rata-rata, d 1j , d 2j dan d 3j disebut koefisien detil horisontal, vertikal dan diagonal. Rumus dekomposisi sinyal 2-dimensi didefinisikan sebagai:
123
a j +1[n] = a j * hˆhˆ[2n], d 1j +1 [n] = a j * hˆgˆ [2n],
(E.3)
d 2j +1 [n] = a j * gˆhˆ[2n], d 3j +1 [n] = a j * gˆgˆ [2n],
dengan h[n] =
yz[n]
=
y[n1]z[n2]
yˆ[m] = y[−m]
dan
1 ⎛t⎞ φ ⎜ ⎟, φ (t − n) , g[n] = 2 ⎝2⎠
dan
filter
diskret
1 ⎛t⎞ ψ ⎜ ⎟,ψ (t − n) . 2 ⎝2⎠
Dalam bentuk diagram, dekomposisi sinyal 2-dimensi dengan rumus E.3 diberikan pada Gambar E.3, dimana ↓2 menyatakan bahwa hasil konvolusi dari proses sebelumnya disampel setiap t = 2 unit, dimana t menyatakan waktu. kolom (n2) baris (n1) ĥ
↓2
aj+1
ĝ
↓2
d 1j +1
ĥ
↓2
d 2j +1
ĝ
↓2
d 3j +1
↓2
aj
ĝ
ĥ
↓2
Gambar E.2 Dekomposisi sinyal 2-dimensi aj.
Hasil dekomposisi sinyal 2-dimensi, misalnya citra, yang berupa koefisien ratarata dan detil untuk setiap level (pada setiap j + l, dengan l bernilai tertentu) menempati 4 kuadran. Koefisien rata-rata selalu menempati kuadran kiri-atas, sedangkan detil horizontal, vertikal dan diagonal berturut-turut menempati kuadran kiri-bawah, kanan-atas dan kanan-bawah. Pada Gambar E.3 ditunjukkan posisi koefisien untuk l = 1 sampai l = 2.
124
a j+2 1
d j +2
2
d 2j +1
d j+2 3
d j+2
d 3j +1
d 1j +1
Gambar E.3. Hasil dekomposisi sinyal 2-dimensi dengan l = 2.
Dengan menggunakan wavelet Haar, komputasi koefisien-koefisien wavelet dapat dilakukan dengan menerapkan algoritma yang ditunjukkan pada Gambar E.4 (Chakrabarti et al., 2000). Algoritma yang bersifat rekursif ini lebih efisien dibandingkan dengan algoritma yang menerapkan rumus E.2 dengan filter dan konvolusi.
Gambar E.4. Algoritma dekomposisi sinyal diskret 2-dimensi dengan wavelet Haar (Chakrabarti et al., 2000).
125
Daftar Pustaka
Bartolini, I.; Ciaccia,P; Patella, M. (2001): Windsurf: Region-Based Image Retrieval Using Wavelets, DEIS-CSITE-CNR, Univ. of Bologna, Italy. Bartolini, I.; Ciaccia,P; Patella, M.(2000): A Sound Algorithm for Region-Based Image Retrieval Using Index, Proc. Of the 4th International Workshop on Query Processing and Multimedia Issues in Distributed Systems, p. 930-934, Greenwich, London, UK. Chakrabarti, K, Garofalakis, M, Rastogi, R., Shim, K.(2000): Approximate Query Processing Using Wavelets. Proc. of the 26th VLDB Conference, Cairo, Egypt. Hirata, K.; Kato, T. (1992): Query by Visual Example Content Based Image Retrieval, Lecture Notes on Computer Science, Advances in Database Technology- EDBT 92, Vol. 580. Ko, B.; Lee, H.; Byun, H. (2000): Image Retrieval Using Flexible Image Subblocks, SCA’00, March 19-21 Como, Italy (ACM). Ko, B.C., Lee, H.S., Byun, H. (2000): Image Retrieval Using Flexible Image Subblocks. “Proc. of SAC’00”, March 19-21, Italy. Lu, G. (1999): Multimedia Database Management Systems, Artech House, London. Mallat, S. (1999): A Wavelet Tour of Signal Processing, Academic Press, USA. Natsev, A.; Rastogi, R.; Shim, K. (2004): WALRUS: A Similarity Retrieval Algorithm for Image Databases, IEEE Trans. on Knowledge and Data Engineering, Vo. 16, Issue 3, Mar. Sun, Y, Ozawa, S. (2003): Semantic-meaningful Content-based Image Retrieval in Wavelet Domain. “Proc. of MIR’03”, Nov. 7, Berkeley, CA, USA. Vitulano, D.; Santosa, F. (2004): Information Retrieval of Color Images via Wavelets, WSCG Posters Proceedings, Plzen, Czech, Februari. Wang, J.E.; Wiederhold, G.; Firschein,O.; Wei, S.X. (1997): International Journal of Digital Libraries, “Content-Based Image Indexing and Searching Using Daubechies’ Wavelets”, Springer-Verlag.
126
LAMPIRAN F Algoritma Pengelompokan dan Klasifikasi Citra Batik Berbasis Bentuk, Tekstur dan Warna F.1 Pendahuluan
Bab 4 membahas bahwa untuk keperluan klasifikasi obyek-obyek citra batik yang tersimpan di ORDBMS, citra batik perlu dipraolah terlebih dahulu. Tujuan dari pra-pengolahan data adalah mentransformasi citra batik menjadi data bertipe diskret agar algoritma C4.5Db dapat menangani hasil pra-pengolahan data ini dengan efisien. Untuk keperluan ini, maka citra batik akan dikelompokkan atau diklasifikasi berdasarkan kontras, motif dan warna fesyen. Lampiran ini membahas algoritma-algoritma yang dikembangkan untuk mengelompokkan dan mengklasifikasi citra batik, eksperimen-eksperimen yang dilakukan untuk menguji algoritma-algoritma yang dikembangkan, kesimpulan dan penelitian lanjutan yang diperlukan. F.2 Algoritma Pengelompokan dan Klasifikasi Citra Batik
Algoritma-algoritma yang dikembangkan pada penelitian ini dapat dikelompokkan menjadi algoritma: (1) Pengelompokan berbasis kontras dengan wavelet. (2) Pengelompokan dan klasifikasi berbasis motif dengan wavelet, deteksi tepi Canny dengan pendekatan berbasis-bentuk dan berbasis-tekstur. (3) Pengelompokan berbasis warna fesyen dengan model warna HSV. F.2.1 Pengelompokan Citra Batik Berbasis-Kontras
Wavelet, yang merupakan kakas baru untuk analisis sinyal, mulai banyak digunakan dalam beberapa tahun terakhir ini. Transformasi wavelet dua-dimensi (TWD 2-D) dengan menggunakan beberapa jenis wavelet sudah diterapkan pada citra untuk kompresi, de-noising, dan perolehan kembali citra dari basisdata. Dalam penelitian ini digunakan wavelet Haar karena komputasinya yang cepat dan sudah terbukti berkinerja baik (Natsev et al., 2004). TWD 2-D akan digunakan untuk mengelompokkan citra-citra berdasarkan tingkat kekontrasan warna citra. TWD 2-D menghasilkan koefisien rata-rata (LL), detil horisontal (LH), detil vertikal (HL) dan detil diagonal (HH) pada setiap tingkat transformasi. (Bahasan rinci TWD 2-D dapat dilihat di (Mallat, 1999)). Pada bagian ini, akan dibahas Algoritma F.1 dan F.2. Algoritma F.1 mengadopsi sebuah teknik yang terdapat di (Bartolini, 2001) dengan komputasi koefisien wavelet yang diambil dari (Natsev et al., 2004). Karena dari hasil eksperimen didapati bahwa Algoritma F.1 ini berkinerja kurang bagus, maka dirumuskan
127
Algoritma F.2 dengan teknik yang dikembangkan sendiri untuk mendapatkan hasil yang lebih baik. Pengelompokan Citra Batik Berbasis Kontras dengan Covariance Matrix Trace Windsurf, algoritma perolehan kembali citra yang menangani citra berwarna HSV, menggunakan covariance matrix trace, TLL, untuk menentukan heterogenitas atau homogenitas dari sebuah citra (Bartolini, 2001). Pertama, citra disegmentasi menjadi jendela-jendela. Kemudian, Windsurf menghitung koefisien wavelet 3-tingkat (LL) untuk komponen warna H, S dan V dari jendela-jendela tersebut. (Bartolini menemukan bawa dekomposisi wavelet 3-tingkat berhasil dengan baik untuk analisis citra.) Kedua, sebuah matriks kovariansi dari komponen warna, C 3 LL , yang berukuran 3 × 3, dihitung dari koefisien wavelet. Elemen-elemen dari matriks ini adalah: 1 ⎛ N 3 LL 3 LL 1 N 3 LL N 3 LL ⎞ ⎜ ∑ wc wd j − ∑ wc j ∑ wd j ⎟ covc3,LL (F.2.1) = d ⎟ N ⎜⎝ j =1 j N j =1 j =1 ⎠
dimana wc3 LL adalah koefisien wavelet rata-rata 3-tingkat dari komponen warna c, N adalah jumlah dari koefisien wavelet. c dan d ( c, d ∈{0,1,2} ) menyatakan komponen warna (H = 0, S = 1, V = 2). Covariance matrix trace, TLL, didefinisikan sebagai jumlah dari elemen-elemen diagonal, yaitu 3 LL 3 LL (F.2.2) TLL = cov113 LL + cov22 + cov33 Semakin homogen citra, semakin kecil variansi dari piksel-piksel citra, koefisien LL dari setiap komponen warna dan nilai eigen dari matriks kovariansi dan TLL (bahasan lebih lengkap dapat ditemukan di (Bartolini, 2001)). Karena itu, di sini TLL digunakan untuk mengelompokkan citra batik menjadi 3 kelompok, yaitu kelompok dengan kontras-rendah (cl = 1), kontras – medium (cl = 2) dan kontras – tinggi (cl = 3). Atau ⎧1, if 0 ≤ TLL ≤ tLow ⎪ (F.2.3) cl = ⎨2, if tLow < TLL ≤ tMed ⎪3 otherwise ⎩ dimana tLow dan tMed adalah nilai ambang (threshold) dari kontras rendah dan medium.
128
Algorithm: Contrast clustering of batik images using covariance matrix trace. Input: (1) Image objects, I ={Img} (2) Size of cropping, Cr (3) tLow, tMed Output: array SConT containing image contrast cluster membership. Method: (1) create and initialize array SCon(N) with zero values, where M is the number of images in I. (2) for i = 1 to M do // process each image kl Get cropped of I(i), I c = { p w | 1 ≤ k ≤ Cr ,1 ≤ l ≤ Cr , k , l ∈ Z } (3) (4) compute the trace value of Ic , TLL, of the image using (F.2.2) (5) determine cl using (F.4.3) SConT(i) = cl; (6)
Algoritma F.1. Pengelompokan citra batik berbasis-kontras dengan Covariance matrix trace. Pengelompokan Citra Batik Berbasis Kontras dengan Wavelet Haar Ide dari pendekatan ini adalah menggunakan koefisien wavelet LH, HL, HH yang dapat dipandang sebagai perbedaan intensitas antara piksel-piksel citra yang berdekatan dalam menentukan kelompok kontras dari setiap citra. Langkahlangkah dari algoritma ini adalah sbb: (a) Setiap citra berwarna dikrop dengan ukuran tertentu lalu dikonversi ke citra hitam-putih. (b) TWD 3-tingkat dengan wavelet Haar diterapkan pada citra hitam-putih untuk mendapatkan koefisien LH, HL, HH. Semakin tinggi nilai absolut (magnitude) dari koefisien ini, semakin kontras piksel-piksel yang berdekatan (lihat Gambar F.1). Dimisalkan, aLH, aHL and aHH adalah nilai absolut dari LH, HL, HH. (c) Nilai rata-rata (mean) dari Pct persen tertinggi dari aLH, aHL and aHH dihitung dan disimpan sebagai mLH, mHL dan mHH. Dimisalkan tLH1, tLH2, tHL1, tHL2, tHH1, tHH2 adalah nilai-nilai ambang untuk tiap ratarata koefisien. (d) Keanggotaan kelompok dari setiap citra ditentukan dengan membandingkan nilai mLH, mHL dan mHH dengan tLH1, tLH2, tHL1, tHL2, tHH1, tHH2 (lihat Algoritma F.2).
129
a.1
a.2
b.1
b.2
Gambar F.1. Citra batik dengan kontras rendah (atas, a.1) dan tinggi (b.1) dengan distribusi koefisien wavelet LH, HL, HH (a.2 dan b.2).
Algorithm: Contrast clustering of batik images using Haar wavelet. Input: (1) Image objects, I ={Img} (2) Size of cropping, Cr (3) Percentile threshold of wavelet coefficient taken, Pct (4) Mean thresholds, tLH1, tLH2, tHL1, tHL2, tHH1, tHH2 Output: array SConW containing image contrast cluster membership. Method: (1) create and initialize array SCon(N) with zero values, where N is the number of images in I. (2) for i = 1 to N do // process each image kl (3) Get cropped of I(I), I c = { p w | 1 ≤ k ≤ Cr ,1 ≤ l ≤ Cr} IcBW = gray scale of Ic (4) (5) {LH, HL, HH} = compute_3-level_DWT(IcBW). LH = {lhmn}, HL = {hlmn}, HH = {hhmn}, 1 ≤ m ≤ (Cr / 8) , 1 ≤ n ≤ (Cr / 8) , m, n ∈ Z . aLH ={| lhmn |}, aHL = {| hlmn |}, aHH={| hhmn |} (6) pLH = percentile(aLH,Pct), pHL = percentile(aHL,Pct) pHH = percentile(aHH, Pct) (7) (8) mLH = mean(pLH), mHL = mean(pHL), mHH = mean(pHH) (see (F.2.4)) (9) if(mLH <=tLH1 and mHL<=tHL1 or mLH <=tLH1 and mHH<=tHH1 or mHL<=tHL1 and mHH<=tHH1), (10) (11) then cl = 1; (12) elseif( mLH>tLH2 and mHL>tHL2 or mLH>tLH2 and mHH>tHH2 or mHL>tHL2 and mHH>tHH2 ) (13) (14) then cl = 3; (15) else cl = 2; SConW(i) = cl; (16)
Algoritma F.2. Pengelompokan citra batik berbasis-kontras dengan wavelet Haar. Sz
Mean pada Algoritma F.2 didefinisikan sebagai mean( plH ) = ∑ plhi / Sz i =1
dimana Sz = dimensi dari array plH.
130
(F.2.4)
F.2.2 Klasifikasi dan Pengelompokan Citra Batik Berbasis Motif
Ratusan citra batik untuk eksperimen sudah dicari dan dikumpulkan dan setelah diobservasi melalui visualisasi, maka ditemukan bahwa: (a) Warna citra ada yang terang (memiliki intensitas tinggi), redup (intensitas medium) atau gelap (intensitas rendah). (b) Tepi-tepi ornamen batik dapat divisualisasi dengan jelas (kontras dengan piksel sekitar tinggi) atau kabur (kontras dengan piksel sekitar rendah), sedangkan ukuran garis tepi ada yang tebal (jelas) atau tipis (tidak jelas). (c) Ukuran ornamen batik ada yang kecil (citra menjadi citra tekstur), medium atau besar (citra menjadi citra bentuk bercampur tekstur) dengan sudut yang berbeda-beda. Eksperimen untuk mendeteksi tepi-tepi citra batik dengan algoritma Canny sudah dilakukan terhadap citra-citra yang sudah di kumpulkan. Kesimpulan dari hasil eksperimen tersebut adalah: (a) Citra batik yang berisi ornamen berukuran besar dan berkontras tinggi dengan piksel sekitarnya dapat menghasilkan tepi-tepi yang jelas dan dikenali bentuknya, tetapi yang berkontras rendah dengan piksel sekitar menghasilkan bentuk yang tidak dapat dikenali. (b) Citra yang memiliki ornamen berukuran kecil, baik yang berkontras tinggi maupun rendah, menghasilkan tepi-tepi yang kompleks dan bentuknya tidak dapat dikenali. (c) Khusus untuk citra batik klasik, ornamen semen dan lung-lungan seringkali sulit untuk dideteksi karena bercampur dengan ornamen-ornamen lain dan isen-isen. Dengan adanya fakta-fakta di atas, dapat disimpulkan bahwa motif batik tidak dapat dideteksi dengan hanya mengandalkan bentuk atau tekstur saja, melainkan harus memperhitungkan keduanya. Penelitian awal ini baru dapat merumuskan algoritma klasifikasi dan pengelompokan untuk sekelompok motif atau kelas (belum berhasil merumuskan algoritma untuk mengelompokkan atau mengklasifikasi citra batik ke dalam motif tunggal yang memiliki arti tertentu). Kelas-kelas motif yang digunakan dalam eksperimen adalah banji-ceplokan-nitik, parang-lereng, semen, lung-lungan, buketan-other, truntum atau ornamen yang berukuran kecil. Alasan dari pengelompokan motif ini adalah karena setiap kelompok, kurang lebih, memberikan impresi yang serupa kepada pemakai batik. Sistem klasifikasi yang diterapkan di sini, yang mengadopsi teknik pada perolehan kembali citra, diberikan pada Gambar F.2. Pada mode off-line, pertamatama, citra-citra pelatihan dipraolah. Kedua, fitur tekstur atau bentuk diekstraksi dari citra-citra lalu disimpan di basisdata. Pada mode on-line, citra baru yang akan diklasifikasi dipraolah dan fitur dibuat dari citra ini. Fitur ini kemudian dibandingkan dengan fitur-fitur yang disimpan di basisdata, yang hasilnya adalah sebuah himpunan nilai similaritas atau disimilaritas antara citra baru dengan semua citra pelatihan. Dengan menggunakan nilai similaritas dan disimilaritas ini, teknik klasifikasi k-tetangga terdekat (k-nearest neighbor) digunakan untuk
131
menentukan kelas dari citra batik yang baru itu. Di sini, empat algoritma klasifikasi berhasil dirumuskan. Tidak seperti teknik klasifikasi, teknik pengelompokan tidak memerlukan citracitra pelatihan. Citra-citra dipraolah, lalu dipresentasikan ke algoritma dan keluarannya adalah keanggotaan kelompok yang merepresentasikan kelompok motif. Di sini, satu algoritma pengelompokan dan satu algoritma hibrid, gabungan pengelompokan dan klasifikasi, berhasil disusun. Pada Gambar F.2, langkah-langkah prapengolahan citra adalah: pengkropan citra untuk mendapatkan bagian citra yang memiliki arti, mengubahnya ke citra hitamputih dan menormalisasi intensitas piksel-piksel citra. Pada Algoritma F.3 dan F.4, teknik yang digunakan untuk membuat fitur citra diadopsi dari (Lu, 1999) dan (Hirata et al., 1992). Sesudah mempelajari dan bereksperimen dengan citracitra batik, pada algoritma-algoritma di sini, dipilih dan digunakan TWD 2-tingkat untuk memfilter atau mengurangi isen-isen, lalu algoritma deteksi tepi Canny diterapkan untuk mendeteksi tepi ornamen-ornamen (bahasan algoritma deteksi tepi Canny dapat ditemukan di (Canny, 1986)). training images
image preprocessing
texture and shape features generation
image preprocessing
texture and shape features generation
image features and classes
off-line online new image
compute image (dis-) similarities
k-nearest neighboor classification
image class
Gambar F.2. Skema klasifikasi citra batik.
Kelas dari citra yang baru, Cl, dihitung sebagai Cl = c in max({vote(c)}) (F.2.5) dimana c ∈ {1,2,..., MaxClass} , MaxClass adalah nilai maksimum dari kelas, k vote(c ) = ∑ IClassi i =1
⎧1, if the class of TI having SortedDist (i ) is c , dan IClassi = ⎨ ⎩0, otherwise
Komputasi dari tujuh momen yang digunakan sebagai fitur citra pada Algoritma F.3 dapat ditemukan di (Lu, 1999). Jarak Euclidean digunakan untuk menghitung jarak antara fitur citra baru dan fitur citra pelatihan.
132
Algorithm: Classifying batik images using wavelet and moments (shape-based). Input: (1) Training image features and their classes, TI ={Ft, class} (2) Preprocessed new image, I. (3) Segment size, Sg. (4) Segment shifting distance in horizontal and vertical direction, dx and dy. (5) Nearest neighbors, k Output: Cl, the class of the new image. Methods: (1) LL = average coefficient of 2-level DWT of I (2) Ed = Canny_edge_detector(LL), Ed= {ewh | 1 ≤ w ≤ W , 1 ≤ h ≤ H } (3) ct_max = round((SI- Sg)/dx)-1 // SI is the vertical or horizontal image dimension. (4) initialize DistSeg, an array used to store the dissimilarity values, and Dist, an array of dissimilarity values between the new image and all of the training images. (5) for i = 1 to N do // N is the number training images x=1 (6) for ctx = 1 to ct_max, //Shift the segment in horizontal direction (7) y=1 (8) for cty = 1 to ct_max //Shift the segment in vertical direction (9)
(10)
Ed c = {e( x+ m)( y + n) | 1 ≤ m ≤ Sg ,1 ≤ n ≤ Sg } ,
Fc
=
moment(Edc),
di
=
Euclidean_distance(Fc, TI(i).Ft), store di into DistSeg array. y = y+dy (11) x = x +dx (12) Dist(i) = min(DistSeg) (13) (14) sort Dist into ascending order and store it in SortedDist. (15) compute Cl using equation (4.5)
Algoritma F.3. Klasifikasi citra batik dengan wavelet dan momen (berbasisbentuk).
Algorithm: Classifying batik images using wavelet and Fourier descriptor (shape-based). Input: The same with the ones of Algorithm 3. Output: Cl, the class of the new image. Methods:The methods are the same with of Algorithm 3 except for feature computation.
Algoritma F.4. Klasifikasi citra batik dengan wavelet dan deskriptor Fourier (berbasis-bentuk).
Langkah-langkah untuk komputasi fitur citra dengan menggunakan deskriptor Fourier di Algoritma F.4, yang dimodifikasi dari teknik di (Lu, 1999) adalah: (a) Hitung koefisien LL dari TWD 2-tingkat pada citra. (b) Presentasikan hasil pada (a) ke detektor tepi Canny. (c) Hitung titik pusat (centroid) dari titik-titik tepi pada (b). (d) Hitung jarak dari tiap titik tepi ke titik pusat (radii). (e) Terapkan Transformasi Fourier Diskret (TFD) ke hasil (d). (f) Normalisasi koefisien pada (e) dengan membagi setiap koefisien (Fn) dengan koefisien pertama (F0) dan simpan hasilnya sebagai fitur citra. − j 2πni 1 M −1 TFD pada langkah (e) adalah Fn = ∑ f (i)e M dimana n = 0 sampai dengan M i =0 M-1, M = Sg2 = jumlah titik-titik tepi, f(i) adalah radii dari titik tepi ke- i.
133
Algorithm: Classifying batik images using wavelet and correlation (shape-based). Input: The same with the ones of Algorithm 4. Output: Cl, the class of the new image. Methods: Step (1) to (9) are the same with Algorithm 4. (10) obtain Edc (see Alg. 5), cr = correlation(Edc, TI(i).Ft), store cr into CorSeg. y = y+dy (11) x = x +dx (12) Cor(i) = max(CorSeg) (13) (14) sort Cor into descending order and store it in SortedCor (15) compute Cl using equation (4.5)
Algoritma F.5. Klasifikasi citra batik dengan wavelet dan deskriptor korelasi (berbasis-bentuk).
Metoda komputasi korelasi antara 2 segmen (pada Step 10 di Algoritma F.5) diadopsi dari (Hirata et al., 1992) yang dilaporkan berkinerja bagus pada (Sajjanhar, 1998). Langkah-langkahnya adalah sbb: Step 10.1: Lakukan segmentasi pada Sg untuk mendapatkan 8 blok tepi, Q = {qij}, dan tepi citra pelatihan untuk mendapatkan 8 blok tepi, T = {tij}. qij dan tij blok yang berukuran m x n (di sini, m = 8, n = 8, Sg berukuran 64 x 64 titik). Step 10.2: Untuk setiap qij dan tij, hitung korelasi blok antara qij dan tij dengan menggeser sebesar d dan e ( ini berarti bahwa algoritma ini memberikan toleransi kesalahan penggeseran citra sebesar maksimal 12.5%):
C deab =
m ( a +1) −1 n ( b +1) −1
∑ ∑ (αq
r = ma
s = nb
rs
.t r + ds +e + β qrs .t r + ds +e + γqrs ⊕ t r + ds +e )
(F.4.5)
Di sini, α , β dan γ adalah parameter kendali yang digunakan untuk mengestimasi pola kesesuaian dan ketidaksesuaian pola (pada eksperimen, α =10, β =1, γ =-3), dan ⊕ adalah operator biner OR. Step 10.3: Ambil nilai maksimum dari hasil pada Step 10.2: C ab = max(Cdeab ) m m n n untuk − ≤ d ≤ , − ≤ d ≤ 2 2 2 2 Step 10.4: Nilai korelasi adalah jumlah dari hasil pada Step 10.3, yaitu: 7
7
CorSeg = ∑∑ C ab a =0 b =0
Pada eksperimen untuk mengobservasi keluaran dari TWD 2-tingkat dan detektor tepi Canny dengan masukan motif parang dan ceplok, didapati hasil bahwa garisgaris diagonal terlihat dengan nyata (lihat Gambar F.3.a.3 dan b.3). Karena itu, di Algoritma F.6, dirumuskan teknik baru yang digunakan untuk mendeteksi dan menghitung garis-garis diagonal, arah ke kiri dan ke kanan, dengan menggunakan
134
mask. Di sini dibuat empat mask, yaitu m11, m12, m21, m22 (lihat Gambar F. 4). m11 and m21 untuk arah kanan, m12 dan m22 untuk arah kiri. Jika jumlah garis diagonal yang didapati di atas nilai ambang, maka berarti ditemukan motif parang atau ceplok (lihat Algoritma F.6). a.1
b.1 a.2
b.2
a.3
b.3
Gambar F.3. Citra batik bermotif parang dan ceplok (a.1 dan b.1), koefisien TWD 2-tingkat (a.2 dan b.2) dan hasil dari detektor tepi Canny (a.3 dan b.3), dimana elemen array 1 ditampilkan dengan warna putih dan 0 dengan hitam.
1 0 0 0 0
0 1 0 0 0
m11 0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
0 0 0 0 0
1 1 1 0 0
0 0 1 1 0
m21 0 0 0 1 1
0 0 0 0 0
0 0 0 0 1
0 0 0 1 0
m12 0 0 0 1 1 0 0 0 0 0
1 0 0 0 0
0 0 0 0 0
0 0 0 1 1
0 0 1 1 0
m22 1 1 1 0 0
0 0 0 0 0
Gambar F.4. Mask-mask yang digunakan pada Algoritma F.6. Algorithm: Clustering a batik image into parang, ceplok and other motif using wavelet and masks (shape-based). Input: (1) Preprocessed images, I (2) Mask arrays: m11, m12, m21, m22. (3) Threshold of counts of 1 in dot product of edge segments and masks, Th1. (4) Threshold of mask count, Th2. (5) Block size, SB; threshold block count of 1s, Th3. Output: Cl, image cluster member. Methods: (1) LL = average coefficient of 2-level DWT of I (2) Ed = Canny_edge_detector(LL), Ed= {ewh | 1 ≤ w ≤ W , 1 ≤ h ≤ H } (3) Blk = {b | b = 1 ∀i∀j ,1 ≤ i ≤ SB,1 ≤ j ≤ SB} ij ij (4) ctB=0, ct1=0, ct12=0, ct21=0, ct22 = 0. (5) Overlay and move masks Blk, m11, m12, m21, m22 on Ed (by non-overlapping method). Increase the values of ctB, ct11, ct12, ct21 and ct22 on each overlay if the count of 1 found is above Th1. (6) If ctB < Th3, // segments are not block of 1s If pair of ct11 and ct12, ct11 and ct22, ct12 and ct21 or ct11 and ct22 > Th2, Cl =1 (7) //ceplok else if ct11, ct12, ct21 or ct22 > Th2, Cl = 2 //parang (8) else Cl = 8 //other (9)
Algoritma F.6. Pengelompokan citra batik dengan wavelet dan mask (berbasisbentuk).
135
Pada Algoritma F.7, metoda yang digunakan untuk membuat fitur citra dan membandingkan fitur-fitur, pada dasarnya, diadopsi dari teknik di Wang et all (1999). TWD 4-tingkat dengan wavelet Haar digunakan untuk memperoleh fitur yang berukuran 1/64 dari ukuran citra yang asli. (Pada eksperimen, pembuatan fitur dengan TWD 5-tingkat ternyata menghasilkan tingkat akurasi yang lebih rendah dibandingkan dengan 4-tingkat, karena itu dipilih 4-tingkat.) Di sini digunakan jarak Euclidean untuk menghitung jarak 2 fitur. Algorithm: Classifying batik images using wavelet (texture-based). Input: (1) Training image features and the classes, TI ={Ft, class} (2) Preprocessed new image, I. (3) Segment size, Sg. (4) Segment shifting distance in horizontal and vertical direction, dx and dy. (5) Nearest neighbors, k Output: Cl, the class of the new image. Methods: (1) {LL, LH, HL, HH} = 4-level DWT coefficient of I. LL = {ll | 1 ≤ i ≤ ( S / 64),1 ≤ j ≤ ( S / 64), i , j ∈ Z } , LH, HL, HH are also array of ij (S/64)(S/64), where S is the size of the original image (2) ct_max = round((SI- Sg)/dx)-1 // SI is the vertical or horizontal image dimension. (3) initialize DistSeg, an array used to store the dissimilarity values, and Dist, an array of dissimilarity values between the new image and all of the training images. (4) for i = 1 to N do // N is the number training images x=1 (5) for ctx = 1 to ct_max, //Shift the segment in horizontal direction (6) y=1 (7) for cty = 1 to ct_max //Shift the segment in vertical direction (8)
(9)
LLc = {ll( x + m)( y + n) | 1 ≤ m ≤ Sg , 1 ≤ n ≤ Sg } . LHc, HLc, HHc are crops of LH,
HL, HH, which are analogous to LLc. di = distance(LLc, TI(i).Ft.LL) + distance(LHc, TI(i).Ft.LH) + distance(HLc, TI(i).Ft.HL) + distance(HHc, TI(i).Ft.HH). Store di into array DistSeg. y = y+dy (10) x = x +dx (11) (12) Dist(i) = min(DistSeg) (13) sort Dist into ascending order and store it in SortedDist. (14) compute Cl using equation (F.2.5)
Algoritma F.7. Klasifikasi citra batik dengan wavelet (berbasis-tekstur).
Karena hasil eksperimen menunjukkan bahwa Algoritma F.6 dan F.7 berkinerja cukup baik (lihat sub-bab Eksperimen), maka dirumuskan Algoritma F.8 untuk mendapatkan keuntungan keduanya. Algorithm: Classifying batik images using Algorithm (Alg) 6 and Alg 7 (shape- and texturebased). Input: Both input of Alg 6 and Alg 7 input. Output: Cl, the image class. Methods: (1) Cl = the cluster of I computed using Alg 6 (2) if Cl = 8, Cl = the class of I computed using Alg 7
Algoritma F.8. Klasifikasi citra batik dengan Algoritma F.6 dan F.7 (berbasisbentuk dan –tekstur).
136
F.2.3 Pengelompokan Citra Batik Berbasis Warna Fesyen
Sesudah melakukan studi literatur, ternyata belum ditemukan adanya hasil penelitian yang mengelompokkan citra tekstil seperti apa yang disarankan di (Hardisurya, 2004). Karena itu, pada penelitian ini dirumuskan algoritma untuk keperluan ini. Setelah mempelajari model warna yang ada (contohnya RGB, HSV dan CMY) dan bereksperimen dengan model-model warna ini, didapat kesimpulan bahwa HSV adalah yang paling cocok untuk pengelompokan warna fesyen (penjelasan model warna dapat ditemukan di (Foley et al., 1996)). Di sini, nilai komponen warna H, S dan V yang cocok untuk warna kulit dan rambut yang tertentu diaproksimasi. Beberapa contoh kombinasi diberikan pada Tabel F.1 (isi tabel ini ditentukan melalui hasil eksperimen). Kelas warna H, S dan V (clH, clS, clV) diperoleh dengan cara sebagai berikut. H dibagi menjadi 8 rentang / ruang yang sama lebar, S dibagi 3 dan V dibagi 4 (dari hasil eksperimen dengan citra batik, angka-angka ini memberikan hasil aproksimasi yang terbaik). Setiap ruang merepresentasikan sebuah kelas. Dimisalkan {clH}, {clS}, dan {clV} adalah himpunan kelas-kelas H, S dan V. Maka clH ∈ {1,2,...,8}, clS ∈ {1,2,3}, clV ∈ {1,2,3,4} . clH, clS, and clV dihitung dari setiap citra batik dan digunakan untuk menentukan keanggotaan kelompok citra batik itu, yang mana satu kelompok akan cocok dengan warna kulit dan rambut tertentu (lihat Algoritma F.9). Sebuah citra yang memiliki satu himpunan nilai clH, clS, dan clV tertentu dapat menjadi anggota pada lebih dari kelompok warna kulit dan kulit-rambut yang ada.
137
Tabel F.1. Kelas H, S, V yang digunakan untuk menentukan keanggotaan kelompok. Skin Cluster (Cluster Number)
H,S,V Class
Hair Cluster (Cluster Number)
Black (11)
White to pink or yellow (1)
clS = 1
Brown (12) Gray (13) Black (21)
Yellow (2)
clS >=2
Brown (22) Gray (23) Black (31) Brown (32)
Brown (3)
clS >=2 and clV<=3
Gray (33)
Black (41) Brown to black (4)
clV <=2 and clS >= 2 or clV ==3 and clS >= 2 and clH <3 clV==4 and clS >= 1 and clH >=1
Brown (42) Gray (43)
H,S,V Class clV == 1 and clS ==1, clV >= 3 and clS ==1 clV >=2 and clS ==1 and clH <=4 clV >= 2 and clS == 1 and clH > 4 clV == 1 and clS >= 2 and clH <= 4, clV == 4 and clS >= 2 and clH <= 4 clV == 2 and clS == 3 and clH <= 4, clV == 3 and clS == 3 and clH <= 4 clV <=3 and clS == 1 and clH <=3 clV ==2 and clS >= 2 and clH <4, clV ==3 and clS >= 2 and clH <4 clV ==2 and clS >= 2 and clH <4, clV ==3 and clS >= 2 and clH <4 clV ==1 and clS == 1 and clH <4, clV ==2 and clS == 1 and clH <4, clV ==3 and clS <= 2 and clH <4, clV ==4 and clS <= 2 and clH <4 clV ==1 and clS >= 2, clV ==2 and clS >= 2, clV ==3 and clS >= 2, clV ==4 and clS >= 1 clV ==1 and clS >= 2 and clH < 4, clV ==2 and clS >= 2 and clH < 4 clV ==1 and clS == 1 and clH >3, clV ==2 and clS == 1 and clH >3, clV ==3 and clS == 1 and clH >=2
Algorithm: Fashion color clustering of batik images Input: (1) A set of image objects, I ={Img} (2) Width and height of image cropping, Cr Output: arrays of list of integer, SCl and SHCl, containing images cluster members. (SCL: skin cluster members. SHCl: skin-hair cluster members ) Method: (1) create and initialize array SCl(N) and SHCl(N) with no member of list, where N is the number of images in I.
(2) for i = 1 to N do // process each image (3)
Let I (i ) = { p w | 1 ≤ k ≤ W , 1 ≤ l ≤ H , 1 ≤ w ≤ 3} where p w is the pixel intensity of kl
kl
I(i) at (k,l,), W = width, H = height of I(i) (in pixels), and w = 1 for H, w = 2 for S Cr
Cr
and w = 3 for V color component. Then tempH (h) = ∑∑ binH klh
where
k =1 l =1
1 ≤ h ≤ 8 , binH klh is the corresponding bin number of H color component for p1kl . tempS(s) where 1 ≤ s ≤ 3 and tempH(h) where 1 ≤ h ≤ 8 can be computed in a kl kl similar way using p2 and p3 . (4) (5) (6)
clH = idH where tempH(idH) = max(tempH), clS = idS where tempS(idS) = max (tempS), clV = idV where tempV(idV) = max (tempV) Determine the skin cluster member, clSk (see Table F.4). Insert clSk in list SCl(i). Determine the skin-hair cluster member, clSH (see Table F.4). Insert clSH in list SHCl(i).
Algoritma F.9. Pengelompokan citra batik berbasis-warna fesyen.
138
F.3 Eksperimen dan Bahasan Hasil Eksperimen
Sebanyak 489 citra batik (terdiri dari citra batik klasik, modern, Pekalongan, Lasem, Madura, Cirebon, Belanda dan Djawa-Hokokai) telah berhasil diperoleh. Citra-citra ini didapatkan dari (Doellah, 2002), (Kerlouge, 2004), (van Roojen, 2001), (Susanto, 1981) dan Balai Penelitian dan Pengembangan Industri Batik dan Kerajinan-tangan Yogyakarta. Citra-citra batik, yang berformat bitmap, digunakan pada beberapa eksperimen dengan tujuan pengukuran akurasi dan kinerja dari algoritma-algoritma yang sudah dibahas pada sub-bab F.2. Karena sampai saat ini belum ditemukan laporan hasil penelitian yang menganalisis citra batik, maka di sini tidak dapat diberikan perbandingan kuantitatif dengan hasil penelitian sebelumnya. F.3.1 Pengelompokan Kontras
Pada eksperimen dengan Algoritma F.2, digunakan nilai-nilai ambang tLow = 500 dan tMed = 1900. (Nilai-nilai ini dipilih setelah beberapa kali eksekusi dengan menggunakan tLow dan tMed yang berbeda dan yang memberikan tingkat kesalahan terkecil diambil.) Untuk Algoritma F.3, pengelompokan dengan wavelet Haar, nilai-nilai ini yang digunakan: bLH1 = 30, bLH2 = 90, bHL1 = 40, bHL2 = 80, bHH1 = 40, dan bHH2 = 100. Setiap citra dari 489 citra yang ada dikelompokkan dan ditandai sebagai berkontras rendah, medium dan tinggi. Hasil eksperimen: 28 citra masuk kelompok kontras-rendah, 267 masuk kontrasmedium dan 194 masuk kontras-tinggi. Semua citra dipresentasikan ke Algoritma F.2 dan F.3 tiga kali, dengan ukuran 64×64, 128×128 and 256×256 piksel. Untuk memperoleh tingkat kesalahan, hasil eksperimen ini dibandingkan dengan hasil pengelompokan yang dilakukan secara manual / visual. Hasilnya diberikan pada Tabel F.2. Tabel F.2. Persentase kesalahan Algoritma F.1 dan F.2 Error
L as M L as H M as L M as H H as L H as M Total
Algorithm 1 Image Size (pixels) 64×64 128×128 256×256 14 15 16 0 0 0 31 18 11 39 40 47 19 7 3 94 84 85 164 162 197 (33%) (40%) (34%)
Algorithm 2 Image Size (pixels) 64×64 128×128 256×256 23 26 25 3 3 3 0 0 0 68 52 20 2 0 0 40 26 3 136 (28%) 107 (22%) 51 (10%)
L = low, M = medium, H = high contrast
Algoritma F.2 berkinerja lebih baik dibandingkan F.1 karena memberikan tingkat kesalahan yang lebih kecil, dimana semakin besar ukuran citra, semakin tinggi
139
akurasinya. Algoritma F.2 gagal dalam mendeteksi citra berkontras rendah (kesalahannya adalah 23/28, 26/28 and 25/28) tapi Algoritma F.1 bekerja dengan lebih baik saat mendeteksi kontras rendah (kesalahannya adalah 14/28, 15/28 and 16/28). Tetapi, walaupun Algoritma F.2 tidak pernah salah dalam menempatkan citra berkontras medium dan tinggi ke dalam kelompok berkontras rendah, Algoritma F.1 melakukan hal ini. Tingkat kesalahan Algoritma F.2 dalam mengelompokkan citra berkontras medium ke dalam kelompok berkontras tinggi agak tinggi (68/267, 52/267 and 20/267). Ini disebabkan karena orang cenderung untuk menilai kekontrasan citra secara keseluruhan dan tingkat kontras ditentukan dengan membandingkan “segmen” ke “segmen” citra. Sementara itu, wavelet menentukan tingkat kekontrasan dengan membandingkan intensitas piksel ke piksel. Hal ini memberikan hasil bahwa citra tekstur yang halus, dengan perbedaan intensitas yang tinggi di antara piksel-pikselnya, dikelompokkan ke dalam kontras-tinggi. Dengan membandingkan Gambar F.5(a) dan (b), dapat dilihat bahwa Algoritma F.2 dieksekusi tiga kali lebih cepat dibandingkan Algoritma F.1. Dengan mempertimbangkan fakta bahwa Algoritma F.3 memiliki akurasi yang lebih baik dibandingkan Algoritma F.1, maka dapat disimpulkan bahwa Algoritma F.2 adalah lebih baik. (a)
(b)
Gambar F.5. Waktu eksekusi pengelompokan citra dengan (a) CMT (b) wavelet Haar untuk citra berukuran 64×64, 128×128 dan 256×256 piksel. F.3.2 Pengelompokan dan Klasifikasi Motif
Semua algoritma, kecuali Algoritma F.6, dieksekusi beberapa kali dengan nilai tetangga terdekat, k, yang berbeda. Kesalahan klasifikasi untuk tiap eksekusi diamati dan dicatat. Hasil-hasil yang terbaik, yang paling memberikan persentase kesalahan yang terkecil, diberikan di Tabel F.3, sedangkan waktu eksekusinya diberikan di Gambar F.6. Ditunjukkan di Tabel F.3 bahwa Algoritma F.3, 4 dan 5 bukan algoritma yang sesuai untuk mengklasifikasi citra batik, sebab kesalahannya lebih dari 50%. Algoritma F.6 dan 7 memberikan hasil yang cukup baik, dan ketika kedua algoritma ini digabungkan (menjadi Algoritma F.8), kesalahannya adalah 19.3% dan waktu eksekusinya berada di antara kedua algoritma tersebut.
140
Tabel F.3. Kesalahan Algoritma F.3 s/d F.8 Algoritma F.3 (moments) F.4 (Fourier descriptor) F.5 (correlation) F.6 (masks) F.7 (wavelet) F.8 (Alg 6 & 7)
k 9 5 1 1 1
Kesalahan (%) 66.7 65.9 51.5 23.1 20.4 19.3
Gambar F.6. Waktu eksekusi Algoritma F.3 s/d F.8
Tingginya kesalahan pada Algoritma F.3, 4 dan 5 adalah karena adanya isen-isen pada citra batik. Keluaran dari detektor tepi Canny menunjukkan bahwa bentuk ornamen utama yang mendefinisikan motif batik tercampur dengan bentuk isenisen yang kecil. Maka, Algoritma F.3, 4 dan 5 gagal mendeteksi bentuk utama ini atau tidak dapat membedakan tepi mana yang merupakan bagian dari bentuk utama dan tepi mana yang merupakan bagian dari isen-isen. Metoda pada Algoritma F.6, yaitu deteksi garis-garis diagonal untuk mengelompokkan citra batik ke dalam kelompok parang, ceplok dan lainnya bekerja cukup efektif. Ketika diobservasi, citra-citra yang dikelompokkan dengan salah adalah citra yang memiliki garis-garis diagonal yang tidak jelas atau terkontaminasi oleh isen-isen. Algoritma F.7, pengklasifikasi berbasis-tekstur, bekerja dengan cukup baik. Isu pada algoritma ini adalah pemilihan citra pelatihan yang representative namun berjumlah tidak banyak untuk mengurangi waktu eksekusi dan kesalahan. Algoritma F.8 mengkombinasikan keuntungan pada Algoritma F.6 dan 7, yang bekerja baik dalam mendeteksi motif parang-ceplok dan tekstur. Karena itu, untuk mengurangi kesalahan Algoritma F.8, masalah pada Algoritma F.6 dan 7 harus
141
diselesaikan. Garis yang tidak lurus pada eksekusi Algoritma F.8 yang ditunjukkan pada Gambar F.7 adalah karena bervariasinya citra. Jika banyak citra yang dikelompokkan adalah bermotif parang-ceplok, maka waktu eksekusinya adalah lebih kecil (karena hanya Algoritma F.6 yang dieksekusi) dibandingkan dengan jika banyak citra bukan parang-ceplok (dalam kasus ini, maka akan dieksekusi Algoritma F.6 dan 7). F.3.3 Pengelompokan Warna Fesyen
Pada eksperimen, Algoritma F.8 dieksekusi untuk mengelompokkan citra batik pada tiga ukuran (64×4, 128×128 dan 200×200), kemudian, setiap kelompok pada hasil pengelompokan ini diamati dan jumlah citra yang salah masuk ke kelompok kulit dan kulit-rambut dihitung untuk penentuan persentase kesalahan. Hasil eksperimen menunjukkan bahwa Algoritma F.8, dalam mengelompokkan citra batik yang sesuai dengan warna kulit memiliki akurasi yang baik, karena tingkat kesalahan lebih kecil dari 5%. Adapun hasil terbaik dicapai untuk warna kulit putih, sedangkan yang terburuk untuk warna kulit hitam. Ini disebabkan karena, walaupun kulit hitam cocok dengan warna-warna cerah (menyala), sangatlah sulit mendefinisikan kelas-kelas H, S dan V untuk warna terang tanpa mengikutsertakan warna-warna pastel (yang lembut). Tabel F.4 menunjukkan bahwa tingkat kesalahan pengelompokan warna kulitrambut bervariasi. Tingkat kesalahan yang terbaik dicapai untuk kulit kuning – rambut coklat dan kulit putih – rambut hitam, sedangkan yang terburuk adalah untuk rambut abu-abu dengan kulit putih, kuning dan coklat. Walaupun rambut abu-abu serasi dengan warna batik yang lembut, ternyata warna-warna yang cerah masuk ke kelompok ini, sehingga terjadi kesalahan keanggotaan. Kesulitannya terletak pada mendefinisikan kelas H, S dan V untuk rambut abu-abu dengan kulit putih, kuning dan coklat. Hasil yang diberikan pada Tabel F.4 menyatakan bahwa citra batik yang digunakan dalam eksperimen ini ternyata komposisi warnanya terdistribusi dengan hampir merata (homogen), sehingga tingkat kesalahan pada citra berukuran 64×64 hanya berselisih sedikit dengan yang 200×200 piksel. Dengan mempertimbangkan waktu eksekusi yang diberikan pada Gambar F.7 (dimana ukuran citra tidak terlalu berpengaruh kepada waktu eksekusi) dan tingkat kesalahan, maka dapat disimpulkan bahwa ukuran yang terbaik adalah 128×128 piksel.
142
Tabel F.4. Persentase kesalahan Algoritma F.8 Skin-
WhiteYellowBrownBlackAverage
Hair Cluster
Black (11) Brown (12) Gray (13) Black (21) Brown (22) Gray (23) Black (31) Brown (32) Gray (33) Black (31) Brown (32) Gray (33)
Image Size (pixels) 64×64 128x128 200× 200 0.7% 0.7% 0.7% 8.2% 8.2% 8.2% 28.6% 28.6% 28.6% 4.5% 4.5% 4.5% 0% 0% 0% 24.2% 18.8% 16% 4.5% 3.9% 3.9% 4.5% 3.9% 3.9% 20.5% 20.3% 20.3% 17.6% 17.5% 17.5% 17.6% 17.5% 17.5% 8.3% 8.3% 8.3% 11.6% 11% 10.8%
Gambar F.7. Grafik waktu eksekusi Algoritma F.8. F.4 Kesimpulan dan Penelitian Lanjutan
Penelitian ini sudah mengeksplorasi beberapa teknik pengelompokan dan klasifikasi citra dan menggunakan teknik-teknik itu di algoritma-algoritma yang berhasil dirumuskan. Eksperimen untuk membandingkan kinerja semua algoritma sudah dilakukan dan hasilnya menunjukkan bahwa: (a) Algoritma pengelompokan berbasis-warna bekerja dengan baik, tapi penelitian lanjutan masih diperlukan, terutama dengan tujuan untuk mendapatkan komponen warna H, S dan V yang lebih tepat untuk kelompok rambut abu-abu. (b) Algoritma berbasis-kontras bekerja dengan cukup baik. Isu yang masih harus diselesaikan adalah bagaimana menentukan rumusan kekontrasan citra
143
sebagaimana orang menjustifikasi kekontrasan citra (orang menilai kekontrasan dengan membandingkan segmen ke segmen citra). (c) Algoritma pengelompokan dan klasifikasi citra berbasis-motif yang cukup baik adalah algoritma yang menggunakan mask (berbasis-bentuk) dan wavelet (berbasis-tekstur), tetapi akurasinya masih belum tinggi. Isu utama dalam teknik klasifikasi berbasis-bentuk adalah bagaimana “menyingkirkan” isenisen dari bentuk-bentuk utama. Sedangkan dalam teknik berbasis-tekstur, isu utamanya adalah penyiapan citra pelatihan yang representatif dan menemukan metoda yang lebih baik untuk menaikkan akurasi. Kedua kelompok algoritma juga perlu untuk dikembangkan lebih lanjut agar dapat menangani bentukbentuk yang berbeda ukuran dan sudut dengan lebih baik. Untuk menghasilkan pembagian kelas-kelas citra batik yang lebih baik, algoritmaalgoritma ini perlu untuk dikembangkan lebih lanjut agar dapat mengklasifikasi citra batik ke dalam motif-motif tertentu (kawung, nitik, buketan, dan semen) yang memiliki arti tertentu dan berdasarkan asal batik (Pekalongan, Lasem, dan Solo) yang juga berpengaruh terhadap arti dari motif batik. Algoritma-algoritma yang sudah dibahas di bab ini juga dapat digunakan untuk menganalisis citra tekstil lain (selain batik), tapi dengan modifikasi atau pengembangan lebih lanjut. Untuk keperluan ini, penelitian lanjutan yang diperlukan antara lain adalah eksperimen dengan citra-citra tekstil selain batik, mencari permasalahan yang masih ada dan memperbaiki algoritma-algoritma untuk mengatasi masalah-masalah tersebut. Daftar Pustaka
Bartolini, I. (2001): Efficient and Effective Similarity Search in Image Databases, Dissertation, Dip. Elet. Informatika Sis., Univ. Degli Studi, Bologna, Italy. Canny, J. (1986): A Computational Approach to Edge Detection, IEEE Trans. on Pattern Analysis and Machine Intelligence. Vol. PAMI-8, No. 6, pp. 679-698. Doellah, Santosa (2002): Batik: Pengaruh Jaman dan Lingkungan, Danar Hadi Solo, Indonesia. Foley, van Dam, Feiner, Hughes (1996): Computer Graphics Principles and Practice, Addison-Wesley Co. Hardisurya, Irma (2004): Warna bagi Citra dan Penampilan, Gaya Favorit Press, Jakarta. Hamzuri (1981): Classical Batik, Penerbit Djambatan, Jakarta. Hirata, K.; Kato, T. (1992): Query by Visual Example Content Based Image Retrieval, Lecture Notes on Computer Science, Advances in Database Technology- EDBT 92, Vol. 580. Kerlogue, F. (2004): The Book of Batik, Archipelago Press, Singapore. Lu, G. (1999): Multimedia Database Management Systems, Artech House, London. Mallat, S. (1999): A Wavelet Tour of Signal Processing, Academic Press, USA.
144
Moertini, V.S. (2005): Technical Report: Image Data Pre-Processing as a Step of Data Generalization for Object-Relational DBMS, Case Study: Batik Images, Dept. of Informatics Eng, ITB, Bandung. Moertini, V.S. (Juni 2005): Towards Classifying Classical Batik Images, Proc. of Intl. Conference on Information and Communication Technology, UMB, Jakarta. Natsev, A., Rastogi, R. dan Shim, K. (2004): WALRUS: A Similarity Retrieval Algorithm for Image Databases, IEEE Trans. on Knowledge and Data Engineering, Vo. 16, Issue 3, Mar. Sajjanhar, A.; Lu, G. (1998): A Comparison of Techniques for Shape Retrieval, Gippsland School of Computing and IT, Monash Univ., Australia. Susanto, S.S.K. (1980): Seni Kerajinan Batik Indonesia, Balai Penelitian Batik dan Kerajinan, Lembaga Penelitian dan Pendidikan Industri, Dept. Perindustrian R.I. The Institute for Research and Development of Handicraft and Batik Industries (1997): Handbook of Indonesian Batik, Lembaga Penelitian dan Pendidikan Industri, Dept. Perindustrian, Indonesia, Yogyakarta. van Roojen, P. (2001): Batik Design, The Pepin Press, Singapore. Wang, J.E.; Wiederhold, G.; Firschein,O.; Wei, S.X. (1997): “Content-Based Image Indexing and Searching Using Daubechies’ Wavelets”, International Journal of Digital Libraries, Springer-Verlag, Vol.1, pp.311-328. Rujukan dari situs website: Kompas Online (19 Agustus 2001): Batik Tidak Mengenal Batas Pengembangan, http://www.kompas.com, Februari 2005.
145