Strategi Implementasi Peningkatan Waktu
Proses Algoritma PrefixSpan untuk Sequential
Pattern Mining
LAPORAN TUGAS AKHIR
Disusun sebagai syarat kelulusan tingkat sarjana
oleh :
Riza Ramadan / 13503037
PROGRAM STUDI TEKNIK INFORMATIKA
SEKOLAH TEKNIK ELEKTRO DAN INFORMATIKA
INSTITUT TEKNOLOGI BANDUNG
2007
LEMBAR PENGESAHAN
Program Studi Sarjana Teknik Informatika
Strategi Implementasi Peningkatan Waktu Proses
Algoritma PrefixSpan untuk Sequential Pattern Mining
Tugar Akhir
Program Studi Sarjana Teknik Informatika ITB
Oleh:
Riza Ramadan / 13503037
Telah disetujui dan disahkan sebagai Laporan Tugas Akhir Di Bandung, pada tanggal 21 September 2007
Pembimbing
Riza Satria Perdana, S.T., M.T. NIP. 132142232
ABSTRAKSI
Pada Tugas Akhir ini dibangun program PrefixSpan untuk sequential pattern mining. Program ini dibangun untuk mengimplementasi algoritma PrefixSpan dan meningkatkan kinerja waktu proses dari implementasi tersebut dengan strategi strategi implementasi yang tidak mengubah konsep dasar algoritma tersebut.
Algoritma PrefixSpan merupakan algoritma tercepat untuk sequential pattern mining, namun belum terdapat literatur yang membahas bagaimana mengubah algoritma PrefixSpan menjadi program yang dapat dijalankan. Karena sequential pattern mining seringkali melibatkan data yang besar, perlu diterapkan strategi implementasi agar dapat mengurangi waktu proses yang dibutuhkan algoritma ini. Faktor lainnya adalah PrefixSpan merupakan algoritma rekursif, sehingga akan terdapat kemungkinan untuk tidak dapat berjalan sampai proses selesai karena call stack komputer telah penuh. Selain itu, PrefixSpan menyimpan data yang diprosesnya pada main memory, sehingga besar kemungkinan main memory tersebut tidak dapat menampung data tersebut.
Agar dapat mengimplementasi PrefixSpan, terdapat 3 mekanisme dasar yang harus dipahami, yaitu mekanisme proyeksi, mekanisme penggabungan prefix dan postfix, dan mekanisme pencarian frequent sequence 1 elemen. Kemudian konsep algoritma perlu diubah dari rekursif menjadi iteratif untuk menangani kasus call stack penuh. Untuk dapat meningkatkan kinerja dari PrefixSpan, program dibangun dalam bentuk
multithreading dan mekanisme pencarian frequent sequence 1 elemen dibatasi hanya
melakukan pencarian pada elemen yang telah ditemukan pada pencarian sebelumnya. Penyimpanan data yang akan diproses dilakukan dengan menggunakan file.
Hasil dari Tugas Akhir ini adalah membuktikan penerapan strategi implementasi
multithreading, bentuk algoritma iteratif, pembatasan pencarian dan penyimpanan
menggunakan file dapat membuat PrefixSpan berjalan hingga selesai dan juga meningkatkan kinerjanya dari segi waktu proses.
KATA PENGANTAR
Puji syukur penulis panjatkan kepada Allah SWT atas berkat dan rahmat yang diberikan-Nya sehingga pengerjaan Tugas Akhir yang berjudul “Strategi Implementasi Peningkatan Waktu Proses Algoritma PrefixSpan untuk Sequential
Pattern Mining” ini dapat diselesaikan dengan baik.
Pada kesempatan kali ini, penulis ingin mengucapkan terima kasih kepada:
1. Ibu Sri Purwanti , selaku pembimbing Tugas Akhir, atas segala dukungan dan bantuannya. Semoga Allah SWT memberikan yang terbaik buat Ibu.
2. Bapak Riza Satria Perdana, S.T., M.T., selaku pembimbing Tugas Akhir juga, atas segala arahan dan bimbingan yang sangat berharga dalam pengerjaan Tugas Akhir ini.
3. Ibu Ir. G.A Putri Saptawati, M.Comm, atas segala kritik dan saran yang diberikan selaku penguji pada presentasi proposal dan sidang Tugas Akhir. 4. Bapak Achmad Imam Kistijantoro, MSc., PhD., atas segala kritik, saran, dan
masukan yang diberikan selaku penguji pada seminar dan sidang Tugas Akhir. 5. Amudi Sebastian, Adistya Alindita, Aditya Nurcholis, Andoko Gunawan, Brahmasta Adipradana, Budiono, Eko Adi Wicaksono, Fajar Juang Ekaputra, Hardani Maulana, Ibrahim Arief, Miridhani Riani, M. Octamanullah , Rika Safrina, Simon Batara, Soni Indro Prabowo, Victor, Yoseph Kurniawan dan Yudi Rizkiadi atas bantuan, dukungan moral dan referensi yang telah diberikan.
6. Asisten-asisten Lab GAIB, atas bantuan dan referensi yang telah diberikan. 7. Seluruh teman seperjuangan IF 2003 atas kenangan yang diberikan.
8. Teman-teman Informatika ITB atas kesan yang diberikan. 9. HMIF, atas pendidikan informal yang diberikan.
10. Seluruh staf akademik dan non akademik Program Studi Teknik Informatika yang telah memberikan banyak hal.
11. Luthfi Kurniadi, Siti Nurani Fauziah dan Pecinta Alam Carvedium yang telah membuat penulis dapat berkuliah di Informatika ITB.
12. Para sahabat, Dewi Kusuma Indriani, Dian Adriani, Herlina Nasution, Cinintha Latief dan Asri Puji Lestari, atas waktu dan perhatian yang diberikan. 13. Teman-teman tim Aksara atas kemenangan yang diberikan.
14. Teman-teman SMUN 81 yang berkuliah di ITB atas waktu-waktu yang menyenangkan.
Tidak lupa penulis mengucapkan terima kasih kepada kedua orang tua, kedua kakak, saudara dan kerabat atas segala perhatian, dukungan, dan doa yang telah diberikan.
Semoga Tugas Akhir ini dapat memberikan manfaat bagi semua pihak yang membutuhkannya. Penulis menyadari bahwa Tugas Akhir ini masih memiliki banyak kekurangan. Oleh karena itu, kritik dan saran dari pembaca sangat diharapkan.
Bandung, September 2007
DAFTAR ISI
ABSTRAKSI... iii KATA PENGANTAR... iv DAFTAR ISI ... vi DAFTAR GAMBAR ... ix DAFTAR TABEL ... x DAFTAR ALGORITMA... xiDAFTAR ISTILAH ... xii BAB I PENDAHULUAN...I-1 I.1 Latar Belakang ...I-1 I.2 Rumusan Masalah ...I-2 I.3 Tujuan...I-2 I.4 Batasan Masalah...I-3 I.5 Metodologi ...I-3 I.6 Sistematika Pembahasan ...I-4 BAB II LANDASAN TEORI ... II-1 II.1 KDD dan Data Mining ... II-1 II.2 Sequential Pattern... II-4 II.2.1 Sequence ... II-4 II.2.2 Subsequence dan Supersequence... II-5 II.2.3 Sequence Database ... II-5 II.2.4 Frequent Sequence... II-5 II.3 Sequential Pattern Mining ... II-6 II.4 PrefixSpan ... II-7 II.4.1 Definisi ... II-8 II.4.1.1 Pattern Growth ... II-8 II.4.1.2 Prefix... II-8 II.4.1.3 Projected Database... II-9 II.4.1.4 Karakter ‘_’ ... II-9 II.4.2 Konsep Algoritma PrefixSpan... II-9 II.5 Parameter Kinerja Program ... II-10 II.6 Multithreading ... II-10 BAB III ANALISIS... III-1
III.1 Analisis Algoritma PrefixSpan [PEI01] ... III-1 III.1.1 Mekanisme Penyimpanan dan Pengambilan Sequence... III-1 III.1.2 Mekanisme Proyeksi Sequence terhadap suatu Prefix ... III-2 III.1.3 Mekanisme Penggabungan Prefix dengan Postfix ... III-4 III.1.3.1 Elemen terakhir prefix satu objek ... III-4 III.1.3.2 Elemen terakhir prefix lebih dari satu objek ... III-5 III.1.4 Mekanisme Pencarian 1-Sequence yang Frequent ... III-5 III.2 Analisis Rancangan Implementasi PrefixSpan [PEI01] ... III-8 III.3 Analisis Implementasi PrefixSpan Rekursif... III-11 III.3.1 Kelas Sequence... III-12 III.3.2 Kelas Data... III-12 III.3.3 Kelas FSequence... III-13 III.3.4 Kelas PTree... III-13 III.4 Evaluasi Implementasi PrefixSpan... III-14 III.5 Strategi Implementasi untuk Peningkatan Kinerja ... III-15 III.5.1 Alternatif Strategi Implementasi ... III-15 III.5.2 Analisis terhadap Alternatif... III-16 III.6 Analisis Penggunaan Multithreading ... III-17 BAB IV PERANCANGAN... IV-1 IV.1 Evaluasi Usulan untuk Perancangan Iteratif ... IV-1 IV.2 Rancangan Implementasi Alternatif yang Digunakan... IV-2 IV.3 Rancangan Multithread ... IV-5 IV.4 Rancangan Kelas ... IV-6 IV.4.1 Sequence ... IV-6 IV.4.2 Data... IV-7 IV.4.3 Job... IV-9 IV.4.4 SP... IV-9 IV.4.5 PrefixSpan ... IV-9 BAB V IMPLEMENTASI DAN PENGUJIAN... V-1 V.1 Implementasi ... V-1 V.1.1 Lingkungan Pengembangan ... V-1 V.1.2 Penyesuaian Implementasi ... V-1 V.1.3 Batasan Implementasi... V-1 V.1.4 Implementasi Kelas ... V-2
V.2 Pengujian ... V-3 V.2.1 Tujuan Pengujian ... V-3 V.2.2 Lingkungan Pengujian ... V-3 V.2.3 Skenario Pengujian ... V-3 V.2.4 Data Pengujian... V-3 V.2.5 Tabel Hasil Pengujian... V-4 V.2.6 Kesimpulan Hasil Pengujian ... V-5 BAB VI KESIMPULAN DAN SARAN ... VI-1 VI.1 Kesimpulan... VI-1 VI.2 Saran ... VI-1 DAFTAR REFERENSI... xiii LAMPIRAN A. PERCOBAAN ALTERNATIF USULAN... A-1 LAMPIRAN B. PERCOBAAN BENTUK MULTITHREAD ... B-1
DAFTAR GAMBAR
Gambar II-1 Knowledge Discovery from Database (KDD)... II-1 Gambar III-1 Contoh Penggunaan Pohon n-ary untuk Sequential Pattern ... III-10 Gambar III-2 Use Case program... III-11 Gambar III-3 Sequence Diagram program... III-12 Gambar III-4 Gambar Class Diagram implementasi PrefixSpan... III-13 Gambar IV-1 Alur Konsep algoritma PrefixSpan iteratif ... IV-3 Gambar IV-2 Diagram Kelas perancangan ... IV-4 Gambar IV-3 Sequence Diagram perancangan... IV-4
DAFTAR TABEL
Tabel II-1 Contoh Basis Data Transaksi ... II-6 Tabel II-2 Contoh Sequence database ... II-6 Tabel III-1 Contoh Proyeksi 1... III-2 Tabel III-2 Tabel Kemungkinan Penggabungan ... III-4 Tabel III-3 Contoh Proyeksi 2... III-6 Tabel III-4 Contoh Proyeksi 3... III-6 Tabel IV-1 Pemetaan Program dengan Alternatif... IV-5 Tabel V-1 Tabel kelas implementasi... V-2 Tabel V-2 Data satu pengujian kebenaran ... V-4 Tabel V-3 Hasil pengujian dengan data [PEI01] dan nilai threshold 2... V-4 Tabel V-4 Hasil pengujian dengan data buatan dan nilai threshold 2... V-5 Tabel V-5 Hasil pengujian dengan data foodmart dan nilai threshold... V-5
DAFTAR ALGORITMA
Algoritma III-1 PrefixSpan ... III-9 Algoritma IV-1 Algoritma PrefixSpan iteratif ... IV-1 Algoritma IV-2 Algoritma Proyeksi ... IV-7 Algoritma IV-3 Algoritma pencarian frequent sequence satu elemen ... IV-8
DAFTAR ISTILAH
Istilah Definisi
Cluster Group atau Kelompok
Error stack overflow Error yang diakibatkan terlalu banyak proses yang menunggu untuk dieksekusi
Extract Mendapatkan sesuatu dari suatu objek File external Arsip yang tersimpan di dalam harddisk
Frequent Sequence Sequence yang memiliki frekuensi kemunculan melebihi threshold
Instance Satu datum dari kumpulan data dalam tabel Length Panjang atau jumlah elemen
List Senarai
Multi-threading Proses yang menjalankan banyak thread di satu waktu
Sequence Deretan huruf atau kata yang melambangkan keteruturan dari suatu objek
Subset Himpunan bagian Task Pekerjaan, fungsionalitas
Thread Pekerjaan kecil yang merupakan bagian dari proses pada komputer Threshold Nilai batasan suatu sequence mengenai jumlah kemunculan pada
data
Traverse Memeriksa satu-per-satu dari awal sampai akhir larik suatu data Tuple Satuan satu baris pada basis data