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 strategistrategi 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 kunci: PrefixSpan, Data mining, Sequential Patern, Thread Java. iii
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. iv
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 Penulis v
DAFTAR ISI ABSTRAKSI... iii KATA PENGANTAR... iv DAFTAR ISI... vi DAFTAR GAMBAR... ix DAFTAR TABEL... x DAFTAR ALGORITMA... xi DAFTAR 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 vi
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 vii
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 viii
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 ix
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 x
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 xi
DAFTAR ISTILAH Istilah Cluster Group atau Kelompok Definisi Error stack overflow Error yang diakibatkan terlalu banyak proses yang menunggu untuk dieksekusi Extract File external Frequent Sequence Instance Length List Multi-threading Sequence Subset Task Thread Threshold Traverse Tuple Mendapatkan sesuatu dari suatu objek Arsip yang tersimpan di dalam harddisk Sequence yang memiliki frekuensi kemunculan melebihi threshold Satu datum dari kumpulan data dalam tabel Panjang atau jumlah elemen Senarai Proses yang menjalankan banyak thread di satu waktu Deretan huruf atau kata yang melambangkan keteruturan dari suatu objek Himpunan bagian Pekerjaan, fungsionalitas Pekerjaan kecil yang merupakan bagian dari proses pada komputer Nilai batasan suatu sequence mengenai jumlah kemunculan pada data Memeriksa satu-per-satu dari awal sampai akhir larik suatu data Satuan satu baris pada basis data xii