APLIKASI SEQUENTIAL PATTERN MINING PADA DATA TITIK PANAS DI LAHAN GAMBUT SUMATRA DAN KALIMANTAN
AIZUL FADIN
DEPARTEMEN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR BOGOR 2017
PERNYATAAN MENGENAI SKRIPSI DAN SUMBER INFORMASI SERTA PELIMPAHAN HAK CIPTA Dengan ini saya menyatakan bahwa skripsi berjudul Aplikasi Sequential Pattern Mining pada Data Titik Panas di Lahan Gambut Sumatra dan Kalimantan adalah benar karya saya dengan arahan dari komisi pembimbing dan belum diajukan dalam bentuk apa pun kepada perguruan tinggi mana pun. Sumber informasi yang berasal atau dikutip dari karya yang diterbitkan maupun tidak diterbitkan dari penulis lain telah disebutkan dalam teks dan dicantumkan dalam Daftar Pustaka di bagian akhir skripsi ini. Dengan ini saya melimpahkan hak cipta dari karya tulis saya kepada Institut Pertanian Bogor. Bogor, Januari 2017 Aizul Fadin NIM G64144004
ABSTRAK AIZUL FADIN. Aplikasi Sequential Pattern Mining pada Data Titik Panas di Lahan Gambut Sumatra dan Kalimantan. Dibimbing oleh IMAS SUKAESIH SITANGGANG. Salah satu bentuk penanggulangan terhadap bencana kebakaran hutan dan lahan adalah melakukan pemantauan titik panas menggunakan data pola sekuens. Data pola sekuens titik panas dapat diperoleh menggunakan teknik data mining. Penelitian sebelumnya telah membangun aplikasi visualisasi pola sekuens titik panas menggunakan framework Shiny, namun aplikasi tersebut hanya dapat membangkitkan data pola sekuens secara manual. Tujuan dari penelitian ini adalah membangun modul sequential pattern mining menggunakan framework Shiny dan mengintegrasikan modul sequential pattern mining dengan aplikasi visualisasi sekuens titik panas yang dihasilkan dari hasil penelitian sebelumnya. Data yang digunakan adalah data titik panas pada lahan gambut Sumatra dan Kalimantan tahun 2014 dan 2015. Penelitian ini menggunakan metode sequential pattern mining dan menerapkan algoritme SPADE. Pola sekuens yang dihasilkan dengan menggunakan minimum support 0.01 dan rentang antara 2 hingga 5 hari berjumlah 71 sekuens di Sumatra dan 9 sekuens di Kalimantan. Aplikasi ini memiliki dua modul utama yaitu modul SPADE dan modul visualisasi. Penelitian ini bermanfaat untuk menganalisis pola sekuens serta mendapatkan visualisasi sebaran pola sekuens melalui peta gambut di pulau Sumatra dan Kalimantan. Kata kunci: R, sequential pattern mining, Shiny, SPADE, titik panas
ABSTRACT AIZUL FADIN. Sequential Pattern Mining Application of Peatland Hotspot in Sumatra and Kalimantan. Supervised by IMAS SUKAESIH SITANGGANG. Forest and peatland fires prevention can be done by identifying sequences of hotspot. Sequence of hotspot can be obtained using data mining approach. The previous work has built a visualization module for sequential hotspot data using Shiny framework, however sequential patterns on hotspot data were processed manually. The objective of this study is to build a module of sequential pattern mining and integrate sequential pattern mining module to the hotspot sequences visualization application developed in the previous work. The data used are peatland hotspot in Sumatra and Kalimantan from 2014 to 2015. This study uses an algorithm in sequential pattern mining namely sequential pattern discovery using equivalence classes (SPADE). As many as 71 sequences in Sumatra and 9 sequences in Kalimantan have been generated at minimum support of 0.01 and in range of 2 to 5 days. The application has two main modules, the first module is SPADE and the second module is hotspot sequences visualization. This application can be used to analyze sequence pattern or visualize sequence patterns on peatland map in Sumatra and Kalimantan. Keywords: hotspot, R, sequential pattern mining, Shiny, SPADE
APLIKASI SEQUENTIAL PATTERN MINING PADA DATA TITIK PANAS DI LAHAN GAMBUT SUMATRA DAN KALIMANTAN
AIZUL FADIN
Skripsi sebagai salah satu syarat untuk memperoleh gelar Sarjana Komputer pada Departemen Ilmu Komputer
DEPARTEMEN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR BOGOR 2017
Penguji: 1 Husnul Khotimah, SKomp MKom 2 Mayanda Mega Santoni, SKomp MKom
Judul Skripsi : Aplikasi Sequential Pattern Mining pada Data Titik Panas di Lahan Gambut Sumatra dan Kalimantan Nama : Aizul Fadin NIM : G64144004
Disetujui oleh
Dr Imas Sukaesih Sitanggang, SSi MKom Pembimbing
Diketahui oleh
Dr Ir Agus Buono, MSi MKom Ketua Departemen
Tanggal Lulus:
PRAKATA Puji dan syukur penulis panjatkan kepada Allah subhanahu wa ta’ala atas segala karunia-Nya sehingga karya ilmiah ini berhasil diselesaikan. Tema yang dipilih dalam penelitian yang dilaksanakan sejak bulan Agustus 2016 ini ialah data mining, dengan judul Aplikasi Sequential Pattern Mining pada Data Titik Panas di Lahan Gambut Sumatra dan Kalimantan. Penulis menyadari bahwa dalam proses penulisan skripsi ini banyak mengalami kendala dan masalah, namun berkat bantuan, bimbingan, kerjasama dari berbagai pihak dan berkah dari Allah subhanahu wa ta'ala sehingga kendalakendala yang dihadapi tersebut dapat diatasi. Untuk itu penulis menyampaikan ungkapan terima kasih kepada Bapak Zulkarnain selaku ayah, Ibu Anim Diniati selaku ibu, serta seluruh keluarga atas segala doa dan kasih sayangnya. Serta ucapan terima kasih dan penghargaan kepada Ibu Dr Imas Sukaesih Sitanggang, SSi MKom selaku pembimbing yang telah dengan sabar, tekun, tulus dan ikhlas meluangkan waktu, tenaga, dan pikiran memberikan bimbingan, motivasi, arahan, dan saran-saran yang sangat berharga kepada penulis selama menyusun skripsi. Penulis juga menyampaikan terima kasih kepada: 1 Ibu Husnul Khotimah, SKomp MKom dan Ibu Mayanda Mega Santoni SKomp Mkom selaku penguji. 2 Bapak Dr Ir Agus Buono, MSi MKom selaku Ketua Departemen Ilmu Komputer IPB. 3 Seluruh dosen, staff tata usaha, dan staf pegawai Departemen Ilmu Komputer IPB. 4 Seluruh teman-teman sebimbingan yaitu Atikah, Apriliani, Nathalia, Widyalita, indo, Mutiara, dan Octa. 5 Teman-teman yang selalu mendukung yaitu Ihsan Arif, Fasalir, Gema, Citra, Aang, Putu, Ari, Nanda, Runi dan Nurul. 6 Seluruh teman-teman Program S1 Alih Jenis Ilmu Komputer IPB Angkatan 9. Semoga segala bantuan, bimbingan, motivasi, dan dukungan yang telah diberikan kepada penulis senantiasa dibalas oleh Allah subhanahu wa ta’ala. Semoga karya ilmiah ini bermanfaat bagi semua pihak yang membutuhkan.
Bogor, Januari 2017 Aizul Fadin
DAFTAR ISI DAFTAR TABEL
vi
DAFTAR GAMBAR
vi
DAFTAR LAMPIRAN
vi
PENDAHULUAN
1
Latar Belakang
1
Perumusan Masalah
2
Tujuan Penelitian
2
Manfaat Penelitian
2
Ruang Lingkup Penelitian
2
TINJAUAN PUSTAKA
3
Titik Panas
3
Sequential Pattern Mining
3
Sequential Pattern Mining pada Data Titik Panas
5
Framework Shiny
6
METODE
7
Data Penelitian
7
Tahapan Penelitian
7
Lingkungan Pengembangan
9
HASIL DAN PEMBAHASAN
9
Praproses Data
9
Pembuatan Modul Sequential Pattern Mining
11
Pengujian Modul Sequential Pattern Mining
15
Integrasi Modul Sequential Pattern Mining
15
Pembangkitan Pola Sekuensial dengan Algoritme SPADE
16
Visualisasi Pola Sekuensial Titik Panas pada Lahan Gambut
19
Kelebihan dan Kekurangan Sistem
20
SIMPULAN DAN SARAN
20
Simpulan
20
Saran
21
DAFTAR PUSTAKA
21
LAMPIRAN
23
RIWAYAT HIDUP
43
DAFTAR TABEL 1 2 3 4 5 6 7
Contoh data sekuensial Pola sekuens dengan minimum support = 25% atau berjumlah 2 Atribut dataset titik panas Dataset sekuensial titik panas Seluruh tabel yang terdapat di basis data ‘titikPanas’ Tahapan pengujian pada aplikasi sequential pattern mining Jumlah pola sekuens pada aplikasi sequential pattern mining
4 4 7 11 13 15 18
DAFTAR GAMBAR 1 Visualisasi sebaran titik panas pada aplikasi Abriantini (2016) 2 Tahapan penelitian 3 Dataset sekuensial titik panas pada lahan gambut di Kalimantan tahun 2015 4 Contoh dataset titik panas sebagai input algoritme SPADE 5 Kode program modul SPADE 6 Contoh pola sekuens titik panas sebagai modul output modul SPADE 7 Contoh fungsi visualisasi pola sekuens 8 Contoh kode program antarmuka modul sequential pattern mining 9 Menu utama aplikasi sequential pattern mining 10 Kode program pembangkitan pola sekuens 11 Contoh output pada modul SPADE untuk dataset Kalimantan 2014 12 Kode program untuk membangkitkan fungsi visualisasi pola sekuens 13 Modul visualisasi
6 8 10 11 12 12 14 16 16 17 18 19 20
DAFTAR LAMPIRAN 1 2 3 4 5 6 7 8
Fungsi visualisasi pola sekuens Kode program untuk pembangunan modul SPADE Pola sekuens titik panas dengan panjang 2-sekuens Pola sekuens titik panas dengan panjang 3-sekuens Pola sekuens titik panas dengan panjang 4-sekuens Kode program untuk menampilkan plot berdasarkan date code Tampilan modul visualisasi pola sekuens titik panas Tampilan modul visualisasi pola sekuens titik panas
23 26 31 34 35 36 39 40
PENDAHULUAN Latar Belakang Hutan di Indonesia saat ini menghadapi ancaman kerusakan hutan. Salah satunya dikarenakan adanya kebakaran hutan. Pencemaran kabut asap yang dihasilkan dari kebakaran tersebut merupakan masalah yang terus berulang setiap tahunnya, karena dampak dari kabut asap tersebut dapat merugikan masyarakat Indonesia maupun negara tetangga. Sebagian besar dari kebakaran hutan dan lahan di pulau Sumatra dan Kalimantan terjadi pada lahan gambut. Lahan gambut memiliki beberapa manfaat seperti kemampuan lahan gambut yang dapat menyimpan dan memelihara air dalam jumlah besar. Dengan kemampuan seperti itu, lahan gambut dapat mencegah terjadinya banjir pada musim hujan dan dapat mencegah terjadinya kekeringan pada musim kemarau (CCKP 2008). Kebakaran lahan gambut di Indonesia secara umum dipengaruhi oleh faktor manusia dan cuaca. Faktor cuaca merupakan salah satu faktor yang dapat diidentifikasi terjadinya kebakaran hutan dengan mengolah data titik panas (Agus dan Subiksa 2008). Titik panas merupakan suatu area yang memiliki suhu relatif lebih tinggi dibandingkan dengan sekitarnya yang dapat dideteksi oleh satelit (LAPAN 2016). Salah satu teknik yang dapat menganalisis data titik panas ialah teknik data mining. Cara mendeteksi terjadinya kebakaran hutan adalah dengan melakukan pengamatan terhadap sebaran titik panas (LAPAN 2016). Data sekuens titik panas dapat diperoleh menggunakan salah satu metode dari data mining yaitu sequential pattern mining. Salah satu algoritme dalam sequential pattern mining adalah sequential pattern discovery using equivelent classes (SPADE). Penelitian yang dilakukan oleh Hermawati dan Sitanggang (2016) telah berhasil membangun aplikasi berbasis web untuk melakukan clustering data titik panas menggunakan algoritme DBSCAN. Adapun Putri (2016) telah berhasil melakukan integrasi dan analisis usabilitas aplikasi spatial data mining untuk analisis data titik panas. Penelitian tentang pembangunan aplikasi visualisasi pola sekuens titik panas menggunakan sequential pattern mining dan framework Shiny telah dilakukan oleh Abriantini (2016) dengan menggunakan algoritme SPADE. Hasil penelitian yang telah dilakukan oleh Abriantini (2016) adalah modul visualisasi data titik panas pada lahan gambut di pulau Sumatra dan Kalimantan menggunakan framework Shiny. Akan tetapi penentuan pola sekuens dalam aplikasi tersebut masih dilakukan secara manual pada perangkat lunak R. Oleh karena itu penelitian ini akan membangun modul sequential pattern mining untuk data titik panas pada lahan gambut di Sumatra dan Kalimantan serta mengintegrasikan modul sequential pattern mining dengan aplikasi visualisasi pola sekuens titik panas yang telah dibangun oleh Abriantini (2016). Algoritme yang diterapkan pada penelitian ini adalah SPADE. Algoritme SPADE sudah tersedia pada package di perangkat lunak R sehingga mendukung untuk pembuatan modul sequential pattern mining di dalam framework Shiny.
2 Perumusan Masalah Pada penelitian Abriantini (2016) telah dilakukan visualisasi pola sekuens data titik panas pada lahan gambut yang diperoleh menggunakan algoritme SPADE dan framework Shiny. Akan tetapi pola sekuens titik panas di lahan gambut pada penelitian tersebut diperoleh dengan cara manual pada perangkat lunak R, bukan pada framework Shiny. Berdasarkan latar belakang, perumusan masalah dalam penelitian ini adalah: 1 Bagaimana membuat modul sequential pattern mining untuk data titik panas di lahan gambut pada framework Shiny? 2 Bagaimana menentukan pola sekuens titik panas di lahan gambut menggunakan algoritme SPADE pada framework Shiny? 3 Bagaimana mengintegrasikan modul sequential pattern mining ke dalam aplikasi visualisasi pola sekuens yang telah dibangun oleh penelitian Abriantini (2016)?
Tujuan Penelitian 1 2
Tujuan penelitian ini adalah: Membangun modul sequential pattern mining untuk data titik panas pada lahan gambut menggunakan framework Shiny. Mengintegrasikan modul sequential pattern mining dengan aplikasi visualisasi pola sekuens titik panas yang telah dibangun oleh Abriantini (2016) menggunakan framework Shiny.
Manfaat Penelitian Modul sequential pattern mining yang dibangun diharapkan dapat memudahkan pengguna dalam mendapatkan pola sekuens titik panas serta mendapat informasi mengenai sebaran pola sekuens titik panas pada lahan gambut di Sumatra dan Kalimantan.
Ruang Lingkup Penelitian 1 2
3
Ruang lingkup penelitian ini ialah: Penelitian ini menggunakan data titik panas di lahan gambut pulau Sumatra dan Kalimantan pada tahun 2014 dan 2015. Penelitian ini menerapkan algoritme SPADE yang terdapat pada perangkat lunak R yaitu pada package ‘arulesSequences’ yang berfungsi untuk mendapatkan pola sekuens. Penelitian ini memodifikasi aplikasi berbasis web yang telah dibuat oleh Abriantini (2016) menggunakan package Shiny.
3
TINJAUAN PUSTAKA Titik Panas Titik panas adalah suatu kawasan tertentu yang memiliki suhu relatif lebih tinggi di permukaan bumi dibandingkan dengan daerah di sekitarnya berdasarkan pendeteksian oleh satelit (LAPAN 2016). Kawasan tersebut memiliki koordinat dan direpresentasikan oleh suatu titik. Satelit yang dapat mendeteksi adanya titik panas di suatu kawasan tertentu terdiri dari beberapa satelit seperti satelit NOAA, Aqua, dan data satelit penginderaan jauh. Pemantauan titik panas merupakan suatu langkah pencegahan terjadinya kebakaran hutan dan lahan secara dini. Titik panas merupakan suatu indikator akan terjadinya kebakaran hutan atau lahan. Tidak semua titik panas mengindikasikan terjadinya kebakaran, sehingga analisis lebih lanjut pada data titik panas perlu dilakukan.
Sequential Pattern Mining Sequential pattern mining adalah pola yang merepresentasikan urutan waktu kejadian pada suatu peristiwa. Suatu pola dapat ditemukan apabila kejadian atau peristiwa yang berurutan terjadi beberapa kali dan memiliki data yang relatif besar (Han et al. 2011 dalam Agustina dan Sitanggang 2015). Agrawal dan Srikant adalah orang yang pertama kali memperkenalkan sequential pattern mining pada tahun 1995 yang digunakan untuk mencari adanya suatu item yang diikuti oleh item lain secara terurut berdasarkan waktu transaksi (Agrawal dan Srikant 1995 dalam Agustina dan Sitanggang 2015). Struktur dari Sequential pattern mining terdiri dari sejumlah urutan yang setiap urutannya terdiri atas sederetan elemen, dan setiap elemen terdiri atas sejumlah item, serta nilai minimum support yang telah ditentukan. Pola sekuensial merupakan sekuens dari itemset yang kejadiannya berurutan dan semua item terjadi dalam waktu yang hampir bersamaan (Zhao dan Bhowmick 2003). Adapun beberapa algoritme yang dapat digunakan dalam memperoleh pola sekuensial yaitu generalized sequential pattern mining (GSP), sequential pattern discovery using equivalence classes (SPADE), prefix projected sequential pattern mining (PrefixSpan), dan closed sequential pattern mining (CloSpan). Salah satu algoritme yang digunakan pada penelitian ini adalah algoritme SPADE. SPADE merupakan suatu algoritme yang dapat menguraikan masalah utama menjadi sub-masalah yang dapat diselesaikan secara terpisah (Zaki 2001). Algoritme SPADE dapat mengolah data masukan berupa data sekuensial. Sebagai contoh, Tabel 1 terdiri dari atribut sequential ID yang merupakan kode untuk setiap transaksi, event ID merupakan kejadian untuk setiap transaksi. Pada Tabel 1 terdapat sequential ID ‘2’ yang telah melakukan transaksi pada event ID ‘15’ dan menghasilkan item sebanyak 3 yang terdiri dari {A, B, F}. Contoh beriktnya, pada Tabel 1 terdapat sequential ID ‘4’ yang telah melakukan transaksi pada event ID ‘20’ dan menghasilkan item sebanyak 2 yang terdiri dari {B, F}.
4 Tabel 1 Contoh data sekuensial Sequential ID 1 1 1 1 2 2 3 4 4 4
Event ID 10 15 20 25 15 20 10 10 20 25
Items {C, D} {A, B, C} {A, B, F} {A, C, D, F} {A, B, F} {E} {A, B, F} {D, G, H} {B, F} {A, G, H}
Langkah-langkah dalam algoritme SPADE adalah (Zaki 2001): 1 Menghitung seluruh nilai support pada sekuens yang memiliki panjang 1sequence. 2 Menghitung seluruh nilai support pada sekuens yang memiliki panjang 2sequence. 3 Menghitung seluruh nilai support pada sekuens yang memiliki panjang paling maksimal sehingga tidak ada lagi sekuens yang melebihi nilai minimum support yang telah ditentukan. 4 Melakukan dekomposisi kelas terhadap semua sekuens berdasarkan panjang sekuensnya. 5 Melakukan enumerasi sekuens untuk membangkitkan sekuens baru. Apabila langkah-langkah algoritme SPADE telah diterapkan pada data sekuensial, maka didapatkan seluruh pola sekuens yang melebihi minimum support atau sering disebut sekuens yang frequent. Tabel 2 merupakan contoh pola sekuens yang frequent diperoleh dari data sekuensial pada Tabel 1. Tabel 2 Pola sekuens dengan minimum support = 25% atau berjumlah 2 Sequence Support Frequent 1-Sequences A 4 B 4 D 2 F 4 Frequent 2-Sequences AB 3 AF 3 BA 2 BF 4 DA 2 DB 2 DF 2 FA 2
5 Seluruh pola sekuens pada Tabel 2 merupakan sequence yang frequent. Sebagai contoh, pada Tabel 2 terdapat sequence ‘A’ pada 1-sequence yang memiliki nilai support sebesar ‘4’. Contoh berikutnya, terdapat sequence ‘AB’ pada 2-sequence. Sequence ‘AB’ dapat diartikan bahwa sequence ‘A’ terjadi pada waktu yang bersamaan dengan sequence ‘B’ yang memiliki nilai support sebesar ‘3’. Contoh berikutnya, terdapat sequence ‘DA’ pada 2-sequence. Sequence ‘DA’ dapat diartikan bahwa sequence ‘D’ terjadi terlebih dahulu sebelum sequence ‘A’, dengan memiliki nilai support sebesar ‘2’. Pada Tabel 2 terdapat ‘4’ 1-sequence yang frequent. Kemudian pada seluruh 1-sequence yang frequent tersebut akan dilakukan enumerasi untuk menghasilkan sequence baru dengan panjang 2-sequence. Terdapat ‘7’ item 2-sekuens yang frequent. Kemudian pada seluruh 2-sequence yang frequent tersebut akan dilakukan enumerasi untuk menghasilkan sequence baru dengan panjang 3sequence yang frequent. Proses tersebut terus dilakukan sampai tidak ada lagi sequence yang frequent.
Sequential Pattern Mining pada Data Titik Panas Penelitian sebelumnya oleh Abriantini (2016) telah berhasil mendapatkan pola sekuens titik panas di lahan gambut Sumatra dan Kalimantan. Ukuran panjang sekuens minimal 2-sekuens dalam rentang waktu kemunculan dari tanggal awal ke tanggal berikutnya adalah 2-5 hari. Rentang waktu 2-5 hari ditentukan sesuai dengan arahan pakar bahwa titik panas yang muncul berturutturut dalam 2-5 hari di lokasi yang sama merupakan indikator kuat terjadinya kebakaran hutan dan lahan. Setiap titik panas dari pola sekuens titik panas di-plot pada aplikasi berdasarkan karakteristik fisik lahan gambut. Pola sekuens titik panas yang dihasilkan yaitu sebanyak 89 sekuens di Sumatra tahun 2014, 147 sekuens di Sumatra tahun 2015, 48 sekuens di Kalimantan tahun 2014, dan 51 sekuens di Kalimantan tahun 2015. Aplikasi visualisasi titik panas berbasis web telah berhasil dibangun dengan menggunakan framework Shiny. Aplikasi ini memiliki beberapa fitur yaitu fitur utama yang berupa plot pola sekuens titik panas pada peta lahan gambut berdasarkan karakteristik lahan gambut di Sumatra, karakteristik lahan gambut di Kalimantan, cuaca, dan sosial ekonomi. Pada Gambar 1 hasil penelitian aplikasi Abriantini (2016) terdapat menu utama berupa plot berdasarkan karakteristik lahan gambut di Sumatra, karakteristik lahan gambut di Kalimantan, cuaca, dan sosial ekonomi. Kemudian terdapat dataset titik panas yang berfungsi sebagai input visualisasi pola sekuens. Kemudian sub-menu untuk visualisasi plot titik panas berdasarkan karakteristik lahan gambut yang lebih spesifik seperti tutupan lahan gambut, kedalaman gambut, dan tipe gambut. Kemudian terdapat peta gambut Sumatra dan Kalimantan yang berfungsi sebagai tempat melakukan plot sekuens titik panas pada peta lahan gambut. Kemudian legenda untuk membedakan plot titik panas pada lahan gambut.
6
Gambar 1 Visualisasi sebaran titik panas pada aplikasi Abriantini (2016) Framework Shiny Shiny merupakan sebuah package dari bahasa pemrograman R yang memudahkan pengguna dalam merancang suatu aplikasi web. Shiny dapat memberikan queries dan ringkasan data kepada pengguna melalui web browser dengan mudah. Shiny juga dapat diintegrasikan dengan HTML maupun CSS, bahkan JavaScript dan JQuery dapat digunakan untuk memperluas cakupan aplikasi Shiny (Beely 2013). Pembuatan aplikasi framework Shiny terdiri dari 2 fail utama, yaitu Server.R sebagai server dan UI.R sebagai antarmuka. Shiny sangat mudah untuk membangun aplikasi web interaktif dengan bahasa pemrograman R. Fungsi reaktif yang otomatis mengikat antara masukan dan keluaran dan bermacam-macam widget pada Shiny memungkinkan untuk membangun aplikasi yang user friendly, responsif, dan baik dengan mudah (RStudio 2014). Terdapat beberapa penelitian yang berhasil menerapkan framework Shiny. Seperti penelitian Hermawati dan Sitanggang (2016) telah berhasil membangun aplikasi berbasis web untuk melakukan clustering data titik panas menggunakan algoritme DBSCAN. Data yang digunakan adalah data titik panas tahun 2002 dan tahun 2013 pada lahan gambut di pulau Sumatra. Adapun penelitian Siknun dan Sitanggang (2016) telah berhasil membangun aplikasi berbasis web untuk menampilkan model klasifikasi menggunakan algoritme C5.0. Data yang digunakan adalah data kebakaran hutan Provinsi Riau pada tahun 2008. Penelitian Suci dan Sitanggang (2016) telah berhasil membangun aplikasi berbasis web untuk melakukan deteksi pencilan titik panas menggunakan algoritme clustering K-Means. Data yang digunakan adalah data titik panas harian di Provinsi Riau pada tahun 2001-2012. Kemudian penelitian Putri (2016) telah berhasil melakukan integrasi dan analisis usabilitas aplikasi spatial data mining dengan menerapkan framework Shiny untuk analisis data titik panas.
7
METODE Data Penelitian Data yang digunakan pada penelitian ini adalah data titik panas di lahan gambut pulau Sumatra dan Kalimantan pada bulan Januari 2014 sampai bulan Desember 2015. Disamping itu, penelitian ini menggunakan data peta di lahan gambut tahun 2002 dengan format shapefile (.shp) yang diperoleh dari Wetland Internasional. Peta lahan gambut digunakan untuk melakukan seleksi data titik panas pada lahan gambut. Data titik panas pada lahan gambut ini merupakan data dari penelitian yang telah dilakukan oleh Abriantini (2016). Atribut pada dataset titik panas yang digunakan dalam penelitian ini dapat dilihat pada Tabel 3. Tabel 3 Atribut dataset titik panas No 1 2 3 4
Nama Atribut Latitude Longitude Acq_date Confidence
Keterangan Koordinat lintang lokasi titik panas (°) Koordinat bujur lokasi titik panas (°) Tanggal kejadian titik panas Kualitas titik panas (0-100%)
Dataset titik panas dari penelitian Abriantini (2016) diperoleh dari Fire information for Resource Management System atau FIRMS NASA.
Tahapan Penelitian Pada penelitian ini terdapat 6 tahapan utama dalam membangun aplikasi sequential pattern mining yang terdiri dari praproses data, pembuatan modul sequential pattern mining dengan framework Shiny, pengujian terhadap modul sequential pattern mining, kemudian dilakukan integrasi modul sequential pattern mining, pembangkitan pola sekuensial menggunakan algoritme sequential pattern discovery using equivalence classes (SPADE), dan visualisasi pola sekuens titik panas pada lahan gambut. Keseluruhan tahapan pada penelitian ini dapat dilihat pada Gambar 2.
8
Mulai
Praproses Data
Integrasi modul sequential pattern mining
Ya
Pembuatan modul sequential pattern mining dengan framework Shiny
Data titik panas
Output sesuai console R?
Integrasi modul sequential pattern mining Tidak
Pembangktan pola sekuensial dengan algoritme SPADE
Pola sekuensial
Visualisasi pola sekuens titik panas pada lahan gambut
Selesai
Gambar 2 Tahapan penelitian Praproses Data Praproses dilakukan untuk meningkatkan kualitas data sehingga efisiensi pada data akan meningkat. Abriantini (2016) telah melakukan praproses sebelumnya dengan melakukan seleksi data, transformasi data, dan pembuatan data sekuensial. Seleksi data dilakukan dengan memilih atribut data titik panas. Transformasi data dilakukan untuk membuat data sekuensial yang dilakukan berdasarkan kebutuhan algoritme SPADE. Pembuatan Modul Sequential Pattern Mining dengan Framework Shiny Pembuatan modul sequential pattern mining terbagi menjadi 2 sub-modul yang terdiri dari modul SPADE dan modul visualisasi. Pembuatan modul SPADE dilakukan dengan mengolah data sekuensial dengan menggunakan fungsi ‘cspade’ yang sudah tersedia pada package ‘arulesSequence’ di dalam perangkat lunak R. Pengolahan data sekuensial dilakukan dengan menerapkan algoritme SPADE. Kemudian pembuatan modul visualisasi dilakukan dengan membuat beberapa fungsi visualisasi pola sekuens data titik panas di dalam basis data. Penelitian ini menggunakan basis data atau DBMS PostgreSQL untuk mendukung pembuatan aplikasi sequential pattern mining. Pengujian Modul Sequential Pattern Mining Pengujian dilakukan dengan menguji seluruh fitur pada modul sequential pattern mining dengan menggunakan beberapa skenario uji. Integrasi Modul Sequential Pattern Mining Sebelum melakukan integrasi modul dipastikan terlebih dahulu bahwa aplikasi visualisasi pola sekuens titik panas yang dibangun oleh Abriantini (2016) berjalan dengan baik di dalam komputer yang digunakan. Kemudian dilakukan perancangan antarmuka pada modul sequential pattern mining yang akan
9 dibangun. Kemudian melakukan pembuatan kode program untuk menggabungkan modul sequential pattern mining dengan aplikasi visualisasi pola sekuens titik panas dari hasil penelitian Abriantini (2016). Pembangkitan Pola Sekuensial dengan Algoritme SPADE Pembangkitan pola sekuens dilakukan dengan memilih sekuens yang panjang minimal sekuens-nya ialah dua kejadian terdeteksinya titik panas atau 2sekuens. Jumlah minimum support sebesar 0.01 dengan rentang waktu terdeteksinya titik panas dari tangga awal ke tanggal berikutnya adalah 2-5 hari. Visualisasi Pola Sekuensial Titik Panas pada Lahan Gambut Tahap terakhir melakukan visualisasi pola sekuens dengan cara membangkitkan fungsi visualisasi pola sekuens data titik panas yang akan dibuat pada tahap pembuatan modul visualisasi. Kemudian melakukan plot sebaran titik panas pada peta lahan gambut di pulau Sumatra dan Kalimantan menggunakan package ‘ggplot’ yang terdapat pada perangkat lunak R.
Lingkungan Pengembangan Spesifikasi perangkat keras dan perangkat lunak yang digunakan untuk penelitian ini adalah sebagai berikut: 1 Perangkat keras yang digunakan berupa komputer personal dengan spesifikasi: Intel® Core™ i5 CPU @2.50 GHz RAM 4 GB Harddisk Internal 366 GB 2 Perangkat lunak yang digunakan: Sistem Operasi Windows 7 64-bit Bahasa pemrograman R versi 3.3.1 untuk menjalankan RStudio RStudio versi dengan framework Shiny untuk membangun aplikasi dan package ‘arulesSequence’ untuk mendapatkan pola sekuens titik panas Microsoft Excel 2007 untuk pengolahan data titik panas PostgreSQL versi 9.3.2 sebagai server basis data
HASIL DAN PEMBAHASAN Praproses Data Pada penelitian Abriantini (2016) telah dilakukan praproses data titik panas yaitu seleksi data, transformasi data, dan pembuatan dataset titik panas. Gambar 3 merupakan contoh dataset sekuensial titik panas yang akan digunakan pada penelitian ini.
10 SID,date_code,size,item 1,4,1,4 2,4,1,4 3,7,2,7,7 4,7,1,7 108,9,1,9 109,9,1,9 110,9,1,9 115,9,1,9 118,9,1,9
Gambar 3 Dataset sekuensial titik panas pada lahan gambut di Kalimantan tahun 2015 Dataset sekuensial titik panas ini memiliki 4 kolom yaitu, SID, date_code, size, item. Kolom SID merupakan kode untuk setiap lokasi, kolom date_code menyatakan tanggal terdeteksinya titik panas yang sudah dikodekan. Kolom size merupakan banyaknya titik panas yang terjadi pada lokasi dan tanggal yang sama. Sementara itu, kolom item merupakan isi dari kolom date_code dan jumlah pada kolom item sesuai dengan nilai pada kolom size. Sebagai contoh, pada Gambar 3 terdapat record yang memiliki SID ‘1’ dengan date_code ‘4’ dan memiliki nilai size berjumlah ‘1’, sehingga kolom item untuk SID ‘1’ hanya bernilai ‘4’ sebanyak satu kali. Contoh berikutnya, pada Gambar 3 terdapat record yang memiliki SID ‘3’ dengan date_code ‘7’ dan memiliki nilai size berjumlah ‘2’, sehingga kolom item untuk SID ‘3’ bernilai ‘7’ sebanyak dua kali. Format dataset pada Gambar 3 belum cukup menghasilkan dataset yang relevan sesuai dengan kebutuhan algoritme SPADE. Maka dari itu perlu dilakukan penyesuaian dataset untuk algoritme SPADE. Terdapat dua tahapan dalam penyesuaian dataset yaitu modifikasi dataset dan transformasi format dataset. Modifikasi dataset Tahapan modifikasi dataset sekuensial titik panas pada penelitian ini ialah dengan melakukan penghapusan seluruh nama atribut atau header pada setiap dataset. Nama atribut pada dataset akan dihilangkan sehingga hanya terdapat seluruh data mengenai titik panasnya saja. Setelah melakukan penghapusan nama atribut, penyesuaian data selanjutnya adalah melakukan perubahan tanda koma menjadi spasi pada dataset. Tanda koma pada dataset tersebut adalah simbol pemisah atau sering disebut delimiter antar nilai pada atribut di dalam setiap dataset. Tahap terakhir dalam modifikasi dataset yaitu melakukan penghapusan spasi yang tidak terpakai pada dataset sekuensial titik panas. Transformasi format dataset Tahap ini melakukan transformasi pada format fail dataset. Format data awal pada dataset sekuensial titik panas ini berupa CSV dan akan diubah menjadi format TEXT. Gambar 4 merupakan contoh dataset yang sudah siap digunakan untuk proses input ke dalam algoritme SPADE.
11 1 4 2 4 3 7 4 7 108 109 110 115 118
1 1 2 1 9 9 9 9 9
4 4 7 7 1 1 1 1 1
7 9 9 9 9 9
Gambar 4 Contoh dataset titik panas sebagai input algoritme SPADE Setelah transformasi dataset selesai, maka seluruh dataset sekuensial titik panas di pulau Sumatra dan Kalimantan dapat dijadikan sebagai input untuk fungsi algoritme SPADE yang dijalankan pada perangkat lunak R. Dataset sekuensial titik panas yang digunakan pada penelitian ini dibagi menjadi empat dataset, yaitu dataset sekuensial titik panas pada lahan gambut di pulau Sumatra dan Kalimantan tahun 2014 dan dataset sekuensial titik panas pada lahan gambut di pulau Sumatra dan Kalimantan tahun 2015. Tabel 4 merupakan dataset sekuensial titik panas yang digunakan pada penelitian ini serta terdapat jumlah record untuk masing-masing dataset sekuensial titik panas. Tabel 4 Dataset sekuensial titik panas Dataset sekuensial titik panas Kalimantan 2014 Kalimantan 2015 Sumatra 2014 Sumatra 2015
Jumlah record 3 535 10 547 11 017 12 609
Pembuatan Modul Sequential Pattern Mining Dalam pembuatan modul sequential pattern mining digunakan basis data atau DBMS PostgreSQL. Nama basis data yang digunakan pada penelitian ini adalah ‘titikPanas’. Basis data ‘titikPanas’ ini digunakan untuk menyimpan seluruh data untuk kebutuhan modul sequential pattern mining. Pada perangkat lunak R terdapat package ‘RPostgreSQL’ yang berfungsi untuk melakukan koneksi dari perangkat lunak R ke DBMS PostgreSQL. Modul sequential pattern mining terbagi menjadi 2 sub-modul yang terdiri atas modul SPADE dan modul visualisasi. Modul SPADE Pembuatan modul SPADE dilakukan dengan menggunakan fungsi ‘cspade’. Fungsi ‘cspade’ dapat melakukan pengolahan seluruh data sekuensial titik panas sehingga dapat menghasilkan pola sekuens dengan menggunakan algoritme SPADE. Fungsi ‘cspade’ terdapat pada package ‘arulesSequences’ di dalam perangkat lunak R.
12 Fungsi ‘cspade’ memiliki beberapa parameter yang terdiri dari penentuan dataset sekuensial titik panas, nilai minimum support, jumlah panjang sekuens. Seluruh parameter pada fungsi ‘cspade’ akan dimodifikasi penentuan nilainya dengan cara memberikan form masukan parameter yang diimplementasikan pada modul SPADE. Gambar 5 merupakan potongan kode program pembuatan modul SPADE yang akan menghasilkan pola sekuens dengan menggunakan algoritme SPADE. 1 modSpade <- function(out2){ 2 x <- read_baskets(con = system.file("misc", dataset(), 3 package ="arulesSequences"), 4 info = c("sequenceID","eventID","SIZE")) 5 6 s0 <- cspade(x, parameter = list(support = input$minsup, 7 maxsize = 1, maxlen = input$maxlength), 8 control = list(verbose = TRUE)) 9 10 as(s0, "data.frame")
Gambar 5 Kode program modul SPADE Baris 1 sampai 4 pada Gambar 5 merupakan perintah untuk memilih salah satu dataset sekuensial titik panas. Dalam pemilihan dataset dilakukan modifikasi dengan membuat fungsi ‘dataset()’ agar pengguna dapat memilih salah satu dataset sekuensial titik panas sesuai dengan kebutuhan pengguna. Baris 6 sampai 8 merupakan perintah untuk menentukan parameter seperti minimum support dan panjang maksimum pola sekuens atau max length. Nilai parameter ‘support’ dan ‘maxlen’ pada Gambar 5 diberikan variabel masukan agar pengguna dapat menentukan sendiri nilai parameter sesuai dengan kebutuhan. Baris 7 merupakan kode untuk menghasilkan pola sekuens dari dataset sekuensial titik panas dan parameter yang telah ditentukan oleh penguna. Gambar 6 merupakan contoh output pola sekuens titik panas di pulau Kalimantan tahun 2014 yang diperoleh dari modul SPADE.
Gambar 6 Contoh pola sekuens titik panas sebagai modul output modul SPADE Parameter yang diberikan untuk hasil pola sekuens pada Gambar 6 berupa dataset sekuensial titik panas Kalimantan 2014, minimum support sebesar 0.01 dan max length berjumlah 2. Terdapat 4 atribut yang diperoleh dari hasil modul SPADE yaitu 1) atribut ‘sequence’ yang memiliki nilai sekuens dari date_code, 2) atribut ‘date’ atau tanggal terdeteksinya titik panas, 3) atribut ’support’ yang menyimpan nilai support pada setiap sekuens, 4) atribut ‘number of hotspot’
13 menyimpan jumlah titik panas untuk setiap sekuens. Nilai support pada setiap sekuens didapatkan dengan menghitung jumlah transaksi yang mengandung suatu sub-sekuens tertentu dibagi dengan total transaksi. Setiap pola sekuens yang dihasilkan melalui modul SPADE, secara otomatis pola sekuens tersebut akan tersimpan ke dalam tabel yang ada di dalam basis data ‘titikPanas’. Seluruh pola sekuens yang telah disimpan ke dalam tabel di basis data ‘titikPanas’ nantinya akan digunakan untuk tahapan visualisasi. Pada basis data ‘titikPanas’ terdapat beberapa tabel yang disimpan diantaranya ialah tabel hasil pola sekuens dan tabel titik panas. Tabel 5 merupakan isi seluruh tabel yang ada pada basis data ‘titikPanas’. Tabel 5 Seluruh tabel yang terdapat di basis data ‘titikPanas’ No 1
Nama Tabel Dua_Sequence_Kalimantan_2014
2
Dua_Sequence_Kalimantan_2015
3
Dua_Sequence_Sumatra_2014
4
Dua_Sequence_Sumatra_2015
5
Tiga_Sequence_Sumatra_2014
6
Tiga_Sequence_Sumatra_2015
7
Empat_Sequence_Sumatra_2015
8
Hotspot_Kalimantan_2014
9
Hotspot_Kalimantan_2015
10
Hotspot_Sumatra_2014
11
Hotspot_Sumatra_2015
Kegunaan Menyimpan data pola 2-sekuens di pulau Kalimantan tahun 2014 Menyimpan data pola 2-sekuens di pulau Kalimantan tahun 2015 Menyimpan data pola 2-sekuens di pulau Sumatra tahun 2014 Menyimpan data pola 2-sekuens di pulau Sumatra tahun 2015 Menyimpan data pola 3-sekuens di pulau Sumatra tahun 2014 Menyimpan data pola 3-sekuens di pulau Sumatra tahun 2015 Menyimpan data pola 4-sekuens di pulau Sumatra tahun 2015 Menyimpan data titik panas di pulau Kalimantan tahun 2014 Menyimpan data titik panas di pulau Kalimantan tahun 2015 Menyimpan data titik panas di pulau Sumatra tahun 2014 Menyimpan data titik panas di pulau Sumatra tahun 2015
Seluruh tabel pada basis data ‘titikPanas’ terdiri dari 7 tabel pola sekuens diantaranya 4 tabel untuk menyimpan pola sekuens dengan panjang 2-sekuens, 2 tabel untuk menyimpan pola sekuens dengan panjang 3-sekuens dan 1 tabel untuk menyimpan pola sekuens dengan panjang 4-sekuens. Adapun tabel titik panas terdiri dari 4 tabel diantaranya tabel titik panas di pulau Kalimantan tahun 2014 dan 2015, serta tabel titik panas di Pulau Sumatra tahun 2014 dan 2015. Modul Visualisasi Pembuatan modul visualisasi dibutuhkan beberapa data yang sudah tersimpan di basis data ‘titikPanas’ seperti yang terdapat pada Tabel 5. Data yang
14 dibutuhkan adalah data pola sekuens dan data titik panas di pulau Sumatra dan Kalimantan pada tahun 2014 dan 2015. Setelah seluruh data disimpan pada basis data ‘titikpanas’, maka akan dilakukan pembuatan suatu fungsi visualisasi pola sekuens di dalam basis data ‘titikPanas’. Fungsi visualisasi pola sekuens berguna untuk mendapatkan hasil sebaran pola sekuens titik panas pada lahan gambut di pulau Sumatra dan Kalimantan tahun 2014 dan 2015. Gambar 7 merupakan contoh fungsi visualisasi pola sekuens titik panas pada lahan gambut di pulau Kalimantan tahun 2014. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
CREATE OR REPLACE FUNCTION get_kalimantan_2014() RETURNS TABLE("long" double precision, lat double precision, tanggal text) AS $BODY$ DECLARE var_r record; BEGIN FOR var_r IN(SELECT date_code1,date_code2 FROM dua_sequence_kalimantan_2014) LOOP RETURN QUERY(SELECT longitude,latitude, ''|| var_r.date_code1 ||' - '|| var_r.date_code2 ||'' FROM hotspot_kalimantan_2014 WHERE date_code IN(''|| var_r.date_code1 ||'',''|| var_r.date_code2 ||'') GROUP BY longitude, latitude HAVING COUNT(date_code) > 1); END LOOP; END;
Gambar 7 Contoh fungsi visualisasi pola sekuens Baris 1 pada Gambar 7 merupakan perintah untuk membuat fungsi baru. Baris 2 sampai 3 merupakan perintah untuk membuat atribut dari hasil fungsi tersebut. Terdapat 3 atribut yang dibuat dari fungsi tersebut yang terdiri dari ‘long’, ‘lat’, dan ‘tanggal’. Baris 5 merupakan perintah untuk membuat variabel bernama ‘var_r’ dengan tipe data berupa ‘record’. Baris 7 sampai 8 melakukan pembuatan query untuk menghasilkan ‘date_code1’ dan ‘date_code2’ yang terdapat pada tabel ‘dua_sequence_kalimantan_2014’, kemudian disimpan ke dalam variabel ‘var_r’. Baris 9 hingga 17 dilakukan pembuatan query untuk menghasilkan ‘longitude’, ‘latitude’ dari tabel ‘hotspot_kalimantan_2014’ dimana ‘date_code’ pada tabel ‘hotspot_kalimantan_2014’ sama dengan ‘date_code1’ dan ‘date_code2’ yang terdapat pada tabel ‘dua_sequence_kalimantan_2014’. Perintah tersebut dilakukan perulangan hingga seluruh ‘date_code’ pada tabel ‘dua_sequence_kalimantan_2014’ telah dieksekusi secara keseluruhan. Hasil akhir dari fungsi visualisasi pola sekuens berupa data sebaran pola sekuens titik panas yang memiliki atribut longitude, latitude, dan date_code. Fungsi visualisasi pola sekuens pada penelitian ini terdiri dari 7 fungsi sesuai dengan banyaknya jumlah pola sekuens yang dihasilkan dari aplikasi sequential pattern mining. Seluruh fungsi visualisasi secara lengkap terdapat pada Lampiran 1.
15 Pengujian Modul Sequential Pattern Mining Pengujian dilakukan pada modul sequential pattern mining dengan beberapa skenario uji. Fitur-fitur pada modul modul sequential pattern mining seperti pemilihan dataset, penentuan parameter minimum support dan max length berfungsi dengan baik. Tahapan pengujian dapat dilihat pada Tabel 6. Tabel 6 Tahapan pengujian pada aplikasi sequential pattern mining No
Fitur Aplikasi
1
Memilih dataset ‘Pola sequential’
2
3
4
5
Skenario Uji
Pengguna memilih dataset ‘Pola sequential’ pada sidebar Menentukan Pengguna input nilai nilai parameter parameter minimum suppor dan max length pada sidebar Menampilkan Pengguna pola sekuens memilih dataset ‘Pola sequential’ dan mengisi seluruh nilai parameter dan menekan tombol ‘Start’ Memilih Pengguna dataset memilih dataset ‘Sequence ‘Sequence Pattern’ Pattern’pada sidebar Menampilkan Pengguna plot pola memilih dataset sekuens ‘Sequence Pattern’ dan menekan tombol ‘Show Plot’
Hasil yang Diharapkan Dataset ‘Pola sequential’ terpilih dalam sidebar
Berfungsi dengan Baik Ya
Nilai parameter minimum support dan max length tampil pada sidebar
Ya
Tabel hasil pola sekuens tampil pada modul SPADE
Ya
Dataset ‘Sequence Pattern’terpilih dalam sidebar
Ya
Peta plot hasil sebaran pola sekuens muncul disertai dengan pelabelan setiap date code
Ya
Integrasi Modul Sequential Pattern Mining Tahapan awal dalam melakukan integrasi modul sequential pattern mining ialah memastikan aplikasi visualisasi pola sekuens titik panas hasil penelitian Abriantini (2016) berfungsi dengan baik pada komputer yang digunakan dalam penelitian ini. Kemudian dilakukan perancangan tampilan utama untuk modul
16 sequential pattern mining yang telah dibangun, Gambar 8 merupakan contoh kode program untuk tampilan utama modul sequential pattern mining. 1 tabPanel("SPADE", hr(), 2 sidebarLayout(fluid = TRUE, 3 mainPanel(fluid = TRUE, 4 tabsetPanel(type="tab", tabPanel('Support Values’)) 5 ))), 6 tabPanel("Plot by Date Code", hr(), 7 sidebarLayout(fluid = TRUE, 8 mainPanel(fluid = TRUE, 9 tabsetPanel(type="tab", tabPanel('Plot by date code'), 10 11 ))))
Gambar 8 Contoh kode program antarmuka modul sequential pattern mining Baris 1 hingga 5 pada Gambar 8 merupakan kode program untuk tampilan utama pada modul SPADE, sedangkan baris 6 hingga baris 10 merupakan kode program untuk tampilan utama pada modul visualisasi. Setelah kode program berhasil dibuat, kemudian dilakukan penggabungan modul sequential pattern mining ke dalam aplikasi visualisasi pola sekuens penelitian Abriantini (2016). Gambar 9 merupakan tampilan utama aplikasi sequential pattern mining, dimana aplikasi ini merupakan penggabungan dari aplikasi hasil penelitian Abriantini (2016) dengan modul sequential pattern mining.
Gambar 9 Menu utama aplikasi sequential pattern mining Terdapat 2 sub-modul tambahan pada menu utama yaitu modul SPADE dan modul visualisasi. Pada aplikasi sequential pattern mining modul visualisasi diberi nama ‘Plot by Date Code’ dikarenakan modul visualisasi melakukan visualisasi berupa plot titik panas berdasarkan tanggal terdeteksinya titik panas atau date code. Aplikasi sequential pattern mining ini juga menyediakan fitur tambahan berupa pengunduhan hasil pola sekuens dalam bentuk fail CSV sesuai kebutuhan pengguna.
Pembangkitan Pola Sekuensial dengan Algoritme SPADE Pembangkitan pola sekuensial memiliki beberapa ketentuan diantaranya ialah hasil pola sekuensial yang digunakan pada penelitian ini minimal dua kejadian terdeteksinya titik panas atau 2-sekuens. Jumlah minimum support sebesar 0.01 dengan rentang waktu terdeteksinya titik panas dari tangga awal ke tanggal berikutnya adalah 2-5 hari. Ketentuan tersebut sesuai arahan pakar yang menunjukkan bahwa sekuens titik panas yang merupakan indikator kuat terjadinya kebakaran hutan dan lahan. Gambar 10 merupakan potongan kode program untuk membangkitkan pola sekuens menggunakan algoritme SPADE.
17
1 modSpade <- function(out2){ 2 x <- read_baskets(con = system.file("misc", dataset(), 3 package ="arulesSequences"), 4 info = c("sequenceID","eventID","SIZE")) 5 6 s0 <- cspade(x, parameter = list(support = input$minsup, 7 maxsize = 1, maxlen = input$maxlength), 8 control = list(verbose = TRUE)) 9 10 as(s0, "data.frame") 11 12 con <- dbConnect(dbDriver("PostgreSQL"), user="postgres", 13 password="spiderman", 14 dbname="titikPanas", host = "localhost", port = 5432) 15 16 setwd("d:/Visualisasi MODUL/eksport") 17 write.csv(as(s0, "data.frame"), "support_2seq_kalimantan_2014.csv") 18 19 spd <- dbSendQuery(con, "COPY dua_sequence_kalimantan_2014 20 (id, sequence, support) FROM 21 'D:/VisualisasiMODUL/eksport/ 22 support_2seq_kalimantan_2014.csv' 23 USING DELIMITERS ',' WITH CSV HEADER; 24 25 DELETE FROM dua_sequence_kalimantan_2014 26 WHERE (to_number(date_code2,'999') 27 -to_number(date_code1,'999')) 28 NOT between 1 and 4; 29 30 SELECT sequence,date_code1, date_code2, support 31 FROM dua_sequence_kalimantan_2014;") 32 33 out2 <<- fetch(spd, n = -1) }
Gambar 10 Kode program pembangkitan pola sekuens Baris 1 hingga baris 10 pada Gambar 10 merupakan perintah untuk menghasilkan pola sekuens. Baris kode program tersebut sama seperti perintah ketika tahap pembuatan modul SPADE yang terdapat pada Gambar 5. Baris 12 hingga 14 merupakan perintah untuk melakukan koneksi dari perangkat lunak R ke basis data ‘titikPanas’ di PostgreSQL. Baris 16 dan 17 merupakan perintah untuk menentukan lokasi penyimpanan hasil pola sekuens berbentuk fail ‘support_2seq_kalimantan_2014.csv’. Baris 19 hingga 23 merupakan perintah untuk melakukan import ‘support_2seq_kalimantan_2014.csv’ ke dalam tabel ‘dus_sequence_kalimantan_2014’ yang ada di dalam basis data ‘titikPanas’. Baris 25 hingga 28 melakukan penghapusan terhadap pola sekuens yang rentang waktu terdeteksinya titik panas dari tanggal awal ke tanggal berikutnya tidak termasuk ke dalam rentang 2-5 hari. Baris 30 hingga 31 merupakan perintah untuk mengambil seluruh pola sekuens yang terdapat pada tabel ‘dua_sequence_kalimantan_2014’. Baris 33 merupakan perintah untuk menyimpan seluruh hasil query ke variabel ‘out2’. Kode program selengkapnya dapat dilihat pada Lampiran 2. Langkah awal dalam membangkitkan pola sekuens pada aplikasi sequential pattern mining ialah dengan melakukan pemilihan dataset sekuensial titik panas pada modul SPADE. Kemudian melakukan pengisian nilai minimum support,
18 serta pengisian nilai max length untuk pola sekuens. Rentang nilai max length untuk pola sekuens adalah dari 2 hingga 4. Setelah seluruh parameter pada modul SPADE telah ditetapkan, maka hasil pola sekuens akan ditampilkan pada modul SPADE. Gambar 11 merupakan hasil pola sekuens titik panas di pulau Kalimantan tahun 2014 pada modul SPADE.
Gambar 11 Contoh output pada modul SPADE untuk dataset Kalimantan 2014 Terdapat 6 pola sekuens dengan panjang max length sebesar 2 yang dihasilkan pada dataset sekuensial titik panas di pulau Kalimantan 2014. Pada output dalam Gambar 11 terdapat pola sekuens <{204},{208}>, nilai 204 merupakan date_code untuk tanggal 26 Juli 2014 dan 208 untuk tanggal 30 Juli 2014. Pola sekuens tersebut menyatakan bahwa terdeteksinya kemunculan titik panas sebanyak 35 titik secara berurutan pada tanggal 26 Juli 2014 dan terdeteksi kembali pada tanggal 30 Juli 2014 dengan nilai support sebesar 0.01634750. Hasil pola sekuens titik panas pada lahan gambut Sumatra dan Kalimantan tahun 2014 dan 2015 dapat dilihat selengkapnya pada Lampiran 3, 4, dan 5. Adapun jumlah seluruh pola sekuens yang dihasilkan dari aplikasi sequential pattern mining ini dapat dilihat pada Tabel 7. Tabel 7 Jumlah pola sekuens pada aplikasi sequential pattern mining Dataset Titik Panas Kalimantan 2014 Kalimantan 2015 Sumatra 2014 Sumatra 2015
2-Sekuens 6 3 20 33
Pola sekuens 3-Sekuens 4 13
4-Sekuens 1
Pada Tabel 7 menunjukkan bahwa, untuk dataset Kalimantan tahun 2014 dan 2015, serta dataset Sumatra tahun 2014 tidak diperoleh sekuens dengan panjang 3-sekuens dan 4-sekuens. Hal ini dikarenakan terdapat nilai support pola sekuens titik panas yang tidak memadai sesuai dengan jumlah minimum support yang diberikan.
19 Visualisasi Pola Sekuensial Titik Panas pada Lahan Gambut Sebelum melakukan visualisasi, langkah pertama yang harus dilakukan ialah melakukan pembangkitan fungsi visualisasi pola sekuens. Fungsi visualisasi pola sekuens sudah terdapat pada basis data ‘titikPanas’ yang sebelumnya telah dibuat pada tahap pembuatan modul visualisasi. Fungsi visualisasi pola sekuens memiliki hasil berupa sebaran pola sekuens titik panas pada lahan gambut di pulau Sumatra dan Kalimantan tahun 2014 dan 2015. Hasil tersebut disimpan pada fail CSV dimana fail tersebut berfungsi sebagai input pada modul visualisasi. Gambar 12 merupakan potongan kode program untuk pembangkitan fungsi visualisasi pola sekuens. 1 2 3 4 5 6 7 8
con <- dbConnect(dbDriver("PostgreSQL"), user="postgres", password="spiderman", dbname="titikPanas", host = "localhost", port = 5432) spd2 <- dbSendQuery(con, "select * from get_kalimantan_2014()") out3 <<- fetch(spd2, n = -1) setwd("d:/Visualisasi MODUL/eksport") write.csv(out3,file="2-sequence_kalimantan_2014.csv")}
Gambar 12 Kode program untuk membangkitkan fungsi visualisasi pola sekuens Baris 1 hingga 3 pada Gambar 12 merupakan perintah untuk melakukan koneksi dari perangkat lunak R ke basis data ‘titikPanas’ di PostgreSQL. Baris 5 merupakan perintah untuk mangambil hasil pola sebaran pola sekuens titik panas yang disimpan pada fungsi ‘get_kalimantan_2014’. Baris 6 merupakan perintah untuk menyimpan hasil dari fungsi ‘get_kalimantan_2014’ ke dalam variabel ‘out3’. Baris 7 merupakan perintah untuk penentuan lokasi penyimpatan untuk hasil pola sebaran pola sekuens titik panas. Baris 8 merupakan perintah untuk melakukan eksport hasil sebaran pola sekuens titik panas dalam bentuk fail CSV. Kode program selengkapnya dapat dilihat pada Lampiran 6. Setelah hasil sebaran pola sekuens titik panas telah didapatkan dan disimpan dalam bentuk fail CSV, tahap selanjutnya ialah melakukan plot terhadap sebaran pola sekuens titik panas tersebut menggunakan fungsi ‘ggplot’ yang terdapat pada perangkat lunak R. Gambar 13 merupakan hasil modul visualisasi pola sekuens titik panas dengan panjang 2-sekuens di pulau Sumatra tahun 2014. Pada modul visualisasi ini dapat menampilkan plot sebaran pola sekuens titik panas pada pulau dan tahun yang ditentukan oleh pengguna berdasarkan tanggal terdeteksinya titik panas atau date code. Modul visualisasi ini terdapat fitur pemilihan dataset sebaran pola sekuens titik panas yang telah didapatkan dengan cara membangkitkan fungsi visualisasi pola sekuens. Kemudian dapat menampilkan plot sebaran pola sekuens titik panas melalui peta lahan gambut dan menggunakan fungsi ‘ggplot’ yang terdapat pada perangkat lunak R. Kemudian terdapat label untuk membedakan plot titik panas lahan gambut berdasarkan tanggal terdeteksinya titik panas atau date code. Visualisasi sebaran pola sekuens selengkapnya dapat dilihat pada Lampiran 7 dan 8.
20
Gambar 13 Modul visualisasi
Kelebihan dan Kekurangan Sistem Kelebihan pada aplikasi sequential pattern mining ialah aplikasi dapat melakukan pembangkitan pola sekuens dengan menerapkan algoritme SPADE pada framework Shiny. Aplikasi ini juga dapat memvisualisasikan titik panas berdasarkan tanggal terdeteksinya titik panas di pulau Sumatra dan Kalimantan tahun 2014 dan 2015. Kekurangan aplikasi ini ialah banyaknya pembuatan fungsi visualisasi pola sekuens dalam basis data ‘titikPanas’, menampilkan plot sebaran pola sekuens titik panas di pulau Sumatra dan Kalimantan tahun 2014 dan 2015 pada modul visualisasi masih dilakukan secara manual dengan cara melakukan pemilihan dataset pola sekuens tertentu, lokasi penyimpanan hasil pengunduhan pola sekuens hanya dapat ditentukan oleh sistem aplikasi sequential pattern mining.
SIMPULAN DAN SARAN Simpulan Aplikasi sequential pattern mining telah berhasil dibangun pada framework Shiny dengan menggunakan algoritme SPADE. Pola sekuens yang dihasilkan pada penelitian ini sebanyak 6 untuk 2-sekuens di Kalimantan 2014, 3 untuk 2sekuens di Kalimantan 2015, 20 untuk 2-sekuens di Sumatra 2014, 33 untuk 2sekuens di Sumatra 2015. 4 untuk 3-sekuens di Sumatra 2014, 13 untuk 3-sekuens di Sumatra 2015. 1 untuk 4-sekuens di pulau Sumatra 2015. Aplikasi sequential pattern mining memiliki 2 fitur utama yaitu pembangkitan pola sekuens titik panas dan visualisasi pola sekuens. Hasil pengujian berdasarkan skenario uji yang
21 ditentukan menunjukkan bahwa semua fitur dan hasil pada aplikasi ini berfungsi dengan baik. Saran Saran untuk penelitian dan pengembangan aplikasi selanjutnya adalah melakukan pembuatan fungsi dalam basis data untuk membangkitkan seluruh dataset sebaran pola sekuens untuk kebutuhan visualisasi pada aplikasi sequential pattern mining, kemudian menyediakan fitur tambahan untuk menghasilkan plot sebaran pola sekuens titik panas di pulau Sumatra dan Kalimantan tahun 2014 dan 2015 secara langsung tanpa harus melakukan pemilihan dataset pola sekuens titik panas terlebih dahulu, kemudian lokasi penyimpanan hasil pengunduhan pola sekuens dapat ditentukan oleh pengguna.
DAFTAR PUSTAKA Abriantini G. 2016. Visualisasi pola sekuens titik panas di lahan gambut Sumatra dan Kalimantan menggunakan framework Shiny [skripsi]. Bogor (ID): Institut Pertanian Bogor. Agrawal R, Srikant R. 1995. Mining Sequential Pattern. Di dalam: Philip S Yu, Arbee L P Chen, editor. Proceedings of the Eleventh International Conference on Data Engineering (ICDE '95); 1995 Maret 6-10; Taipei, Taiwan. Washington DC (US): IEEE Computer Society. hlm 3-14. Agus F, Subiksa IGM. 2008. Lahan Gambut: Potensi untuk Pertanian dan Aspek Lingkungan. Balai Penelitian Tanah dan World Agroforestry Centre (ICRAF), Bogor, Indonesia. Agustina T, Sitanggang IS. 2015. Sequential patterns for hotspot occurences based weather data using Clospan algorithm. Di dalam: International Conference on Adaptive and Intelligent Agroindustry (ICAIA); 2015 Agu 34; Bogor, Indonesia (ID). Beeley C. 2013. Web Application Development with R Using Shiny. Birmingham (UK): Packt. [CKPP] Konsorsium Central Kalimantan Peatlands Project. 2008. Tanya dan Jawab Seputar Gambut di Asia Tenggara Khususnya di Indonesia. Wetlands International. Bogor. Han J, Kamber M, Pei J. 2011. Data Mining: Concepts and Techniques, 3rd ed [internet]. America (US): Morgan Kaufmann. Hermawati R, Sitanggang IS. 2016. Web-based clustering application using shiny framework and DBSCAN algorithm for hotspots data in peatland in sumatra. Procedia Environmental Sciences. [LAPAN] Lembaga Penerbangan dan Antariksa Nasional. 2016. Panduan Teknis (V.01) Informasi Titik Panas (Hotspot) Kebakaran Hutan/Lahan. Edisi pertama : ISBN 978-602-96352-2-5 Putri WA. 2016. Integrasi dan analisis usabilitas aplikasi spatial data mining untuk analisis data titik panas [skripsi]. Bogor (ID): Institut Pertanian Bogor. RStudio. 2014. Package ‘shiny’ [internet]. [diunduh 2014 Des 23]. Tersedia pada: http://cran.r-project.org/web/packages/shiny/shiny.pdf.
22 Siknun GP, Sitanggang IS. 2016. Web-based classification application for forest fire data using the shiny framework and the C5.0 algorithm. Procedia Environmental Sciences. Suci AMYA, Sitanggang IS. 2016. Web-based application for outliers detection on hotspot data using k-means algorithm and shiny framework. IOP Conf. Ser.: Earth Environ. Sci. Zaki M. 2001. SPADE: An efficient algorithm for mining frequent sequences. Machine Learning, 42. hlm 31-60. Zhao Q, Bhowmick SS. 2003. Sequential pattern mining: A survey. Technical Report CAIS No.2003118. Singapore.
23 Lampiran 1 Fungsi visualisasi pola sekuens Fungsi visualisasi pola 2-sekuens pulau Kalimantan 2014 CREATE OR REPLACE FUNCTION get_2_kalimantan_2014() RETURNS TABLE("long" double precision, lat double precision, tanggal text) AS $BODY$ DECLARE var_r record; BEGIN FOR var_r IN(SELECT date_code1,date_code2 FROM dua_sequence_kalimantan_2014) LOOP RETURN QUERY(SELECT longitude,latitude, ''|| var_r.date_code1 ||' - '|| var_r.date_code2 ||'' FROM hotspot_kalimantan_2014 WHERE date_code IN(''|| var_r.date_code1 ||'', ''||var_r.date_code2 ||'') GROUP BY longitude, latitude HAVING COUNT(date_code) > 1); END LOOP; END;
Fungsi visualisasi pola 2-sekuens pulau Kalimantan 2015 CREATE OR REPLACE FUNCTION get_2_kalimantan_2015() RETURNS TABLE("long" double precision, lat double precision, tanggal text) AS $BODY$ DECLARE var_r record; BEGIN FOR var_r IN(SELECT date_code1,date_code2 FROM dua_sequence_kalimantan_2015) LOOP RETURN QUERY(SELECT longitude,latitude, ''|| var_r.date_code1 ||' - '|| var_r.date_code2 ||'' FROM hotspot_kalimantan_2015 WHERE date_code IN(''|| var_r.date_code1 ||'', ''||var_r.date_code2 ||'') GROUP BY longitude, latitude HAVING COUNT(date_code) > 1); END LOOP; END;
Fungsi visualisasi pola 2-sekuens pulau Sumatra 2014 CREATE OR REPLACE FUNCTION get_2_sumatra_2014() RETURNS TABLE("long" double precision, lat double precision, tanggal text) AS $BODY$ DECLARE var_r record; BEGIN FOR var_r IN(SELECT date_code1,date_code2 FROM dua_sequence_sumatra_2014) LOOP RETURN QUERY(SELECT longitude,latitude, ''|| var_r.date_code1 ||' - '|| var_r.date_code2 ||'' FROM hotspot_sumatra_2014 WHERE date_code IN(''|| var_r.date_code1 ||'', ''||var_r.date_code2 ||'') GROUP BY longitude, latitude HAVING COUNT(date_code) > 1); END LOOP; END;
24 Lampiran 1 Lanjutan Fungsi visualisasi pola 2-sekuens pulau Sumatra 2015 CREATE OR REPLACE FUNCTION get_2_sumatra_2015() RETURNS TABLE("long" double precision, lat double precision, tanggal text) AS $BODY$ DECLARE var_r record; BEGIN FOR var_r IN(SELECT date_code1,date_code2 FROM dua_sequence_sumatra_2015) LOOP RETURN QUERY(SELECT longitude,latitude, ''|| var_r.date_code1 ||' - '|| var_r.date_code2 ||'' FROM hotspot_sumatra_2015 WHERE date_code IN(''|| var_r.date_code1 ||'', ''||var_r.date_code2 ||'') GROUP BY longitude, latitude HAVING COUNT(date_code) > 1); END LOOP; END;
Fungsi visualisasi pola 3-sekuens pulau Sumatra 2014 CREATE OR REPLACE FUNCTION get_3_sumatra_2014() RETURNS TABLE("long" double precision, lat double precision, tanggal text) AS $BODY$ DECLARE var_r record; BEGIN FOR var_r IN(SELECT date_code1,date_code2 FROM tiga_sequence_sumatra_2014) LOOP RETURN QUERY(SELECT longitude,latitude, ''|| var_r.date_code1 ||' - '|| var_r.date_code2 ||'' FROM hotspot_sumatra_2014 WHERE date_code IN(''|| var_r.date_code1 ||'', ''||var_r.date_code2 ||'') GROUP BY longitude, latitude HAVING COUNT(date_code) > 1); END LOOP; END;
Fungsi visualisasi pola 3-sekuens pulau Sumatra 2015 CREATE OR REPLACE FUNCTION get_3_sumatra_2015() RETURNS TABLE("long" double precision, lat double precision, tanggal text) AS $BODY$ DECLARE var_r record; BEGIN FOR var_r IN(SELECT date_code1,date_code2 FROM tiga_sequence_sumatra_2015) LOOP RETURN QUERY(SELECT longitude,latitude, ''|| var_r.date_code1 ||' - '|| var_r.date_code2 ||'' FROM hotspot_sumatra_2015 WHERE date_code IN(''|| var_r.date_code1 ||'', ''||var_r.date_code2 ||'') GROUP BY longitude, latitude HAVING COUNT(date_code) > 1); END LOOP; END;
25 Lampiran 1 Lanjutan Fungsi visualisasi pola 4-sekuens pulau Sumatra 2015 CREATE OR REPLACE FUNCTION get_4_sumatra_2015() RETURNS TABLE("long" double precision, lat double precision, tanggal text) AS $BODY$ DECLARE var_r record; BEGIN FOR var_r IN(SELECT date_code1,date_code2 FROM empat_sequence_sumatra_2015) LOOP RETURN QUERY(SELECT longitude,latitude, ''|| var_r.date_code1 ||' - '|| var_r.date_code2 ||'' FROM hotspot_sumatra_2015 WHERE date_code IN(''|| var_r.date_code1 ||'', ''||var_r.date_code2 ||'') GROUP BY longitude, latitude HAVING COUNT(date_code) > 1); END LOOP; END;
26 Lampiran 2 Kode program untuk pembangunan modul SPADE modSpade <- function(out2){ x <- read_baskets(con = system.file("misc", dataset(), package = "arulesSequences"),info = c("sequenceID","eventID","SIZE")) s0 <- cspade(x, parameter = list(support = input$minsup, maxsize = 1, maxlen = input$maxlength),control = list(verbose = TRUE)) if(input$maxlength != 1 && input$maxlength != 2 && input$maxlength != 3 && input$maxlength != 4){ out2 <<- as(s0, "data.frame") }else{ as(s0, "data.frame") setwd("d:/Visualisasi MODUL/eksport") con <- dbConnect(dbDriver("PostgreSQL"), user="postgres", password="spiderman", dbname="titikPanas", host = "localhost", port = 5432) on.exit(dbDisconnect(con), add=TRUE) invert <- "'" if(input$datseq == 'seq01'){ if(input$maxlength == 1){ spd <- dbSendQuery(con, "DELETE FROM satu_sequence_kalimantan_2014;") write.csv(as(s0, "data.frame"), "support_1seq_kalimantan_2014.csv") spd <- dbSendQuery(con, "COPY satu_sequence_kalimantan_2014 (id, date_code, support) FROM 'D:/Visualisasi MODUL/eksport/support_1seq_kalimantan_2014.csv' USING DELIMITERS ',' WITH CSV HEADER; UPDATE satu_sequence_kalimantan_2014 SET date_code = replace(replace(date_code, '<{',''),'}>',''); SELECT DISTINCT * FROM satu_sequence_kalimantan_2014 ORDER BY date_code;") out2 <<- fetch(spd, n = -1)} else{ spd <- dbSendQuery(con, "DELETE FROM dua_sequence_kalimantan_2014;") write.csv(as(s0, "data.frame"), "support_2seq_kalimantan_2014.csv") spd <- dbSendQuery(con, "COPY dua_sequence_kalimantan_2014 (id, sequence,support) FROM 'D:/Visualisasi MODUL/eksport /support_2seq_kalimantan_2014.csv' USING DELIMITERS ',' WITH CSV HEADER; DELETE FROM dua_sequence_kalimantan_2014 WHERE length(sequence) < 8; UPDATE dua_sequence_kalimantan_2014 SET date_code1 = substring(sequence,3,3), date_code2 = substring(sequence,9,3); SELECT * FROM input_date_2seq_kali2014(); SELECT * FROM input_count_2seq_kali2014(); DELETE FROM dua_sequence_kalimantan_2014 WHERE (to_number(date_code2,'999')to_number(date_code1,'999')) NOT BETWEEN 1 and 4; SELECT sequence,date_1,date_2, support, number_of_hotspots FROM dua_sequence_kalimantan_2014
27 Lampiran 2 Lanjutan ORDER BY sequence;") out2 <<- fetch(spd, n = -1)}} else if(input$datseq == 'seq02'){ if(input$maxlength == 1){ spd <- dbSendQuery(con, "DELETE FROM satu_sequence_kalimantan_2015;") write.csv(as(s0, "data.frame"), "support_kalimantan_2015.csv") spd <- dbSendQuery(con, "COPY satu_sequence_kalimantan_2015 FROM 'D:/Visualisasi MODUL/eksport/support_kalimantan_2015.csv' USING DELIMITERS ',' WITH CSV HEADER; UPDATE satu_sequence_kalimantan_2015 SET date_code = replace(replace(date_code, '<{',''), '}>',''); SELECT DISTINCT * FROM satu_sequence_kalimantan_2015 ORDER BY date_code;") out2 <<- fetch(spd, n = -1)} else{ spd <- dbSendQuery(con, "DELETE FROM dua_sequence_kalimantan_2015;") write.csv(as(s0, "data.frame"), "support_2seq_kalimantan_2015.csv") spd <- dbSendQuery(con, "COPY dua_sequence_kalimantan_2015 (id, sequence, support)FROM 'D:/Visualisasi MODUL/eksport/ support_2seq_kalimantan_2015.csv' USING DELIMITERS ',' WITH CSV HEADER; DELETE FROM dua_sequence_kalimantan_2015 WHERE length(sequence) < 8; UPDATE dua_sequence_kalimantan_2015 SET date_code1 = substring(sequence,3,3), date_code2 = substring(sequence,9,3); SELECT * FROM input_date_2seq_kali2015(); SELECT * FROM input_count_2seq_kali2015(); DELETE FROM dua_sequence_kalimantan_2015 WHERE (to_number(date_code2,'999')to_number(date_code1,'999')) NOT BETWEEN 1 and 4; SELECT sequence,date_1,date_2, support, number_of_hotspots FROM dua_sequence_kalimantan_2015 ORDER BY sequence;") out2 <<- fetch(spd, n = -1)}} else if(input$datseq == 'seq03'){ if(input$maxlength == 1){ spd <- dbSendQuery(con, "DELETE FROM satu_sequence_sumatra_2014;") write.csv(as(s0, "data.frame"), "support_sumatra_2014.csv") spd <- dbSendQuery(con, "COPY satu_sequence_sumatra_2014 FROM 'D:/Visualisasi MODUL/eksport/support_sumatra_2014.csv' USING DELIMITERS ',' WITH CSV HEADER; UPDATE satu_sequence_sumatra_2014 SET date_code = replace(replace(date_code,
28 Lampiran 2 Lanjutan '<{',''), '}>',''); SELECT DISTINCT * FROM satu_sequence_sumatra_2014 ORDER BY date_code;") out2 <<- fetch(spd, n = -1)} else if(input$maxlength == 2){ spd <- dbSendQuery(con, "DELETE FROM dua_sequence_sumatra_2014;") write.csv(as(s0, "data.frame"), "support_2seq_sumatra_2014.csv") spd <- dbSendQuery(con, "COPY dua_sequence_sumatra_2014 (id, sequence, support)FROM 'D:/Visualisasi MODUL/eksport/support_2seq_sumatra_2014.csv' USING DELIMITERS ',' WITH CSV HEADER; DELETE FROM dua_sequence_sumatra_2014 WHERE length(sequence) < 8; UPDATE dua_sequence_sumatra_2014 SET date_code1 = substring(sequence,3,2), date_code2 = substring(sequence,8,2); SELECT * FROM input_date_2seq_suma2014(); SELECT * FROM input_count_2seq_suma2014(); DELETE FROM dua_sequence_sumatra_2014 WHERE (to_number(date_code2,'99')to_number(date_code1,'99')) NOT BETWEEN 1 and 4; SELECT distinct sequence,date_1,date_2, support, number_of_hotspots FROM dua_sequence_sumatra_2014 ORDER BY sequence;") out2 <<- fetch(spd, n = -1)} else{ spd <- dbSendQuery(con, "DELETE FROM tiga_sequence_sumatra_2014;") write.csv(as(s0, "data.frame"),"support_3seq_sumatra_2014.csv") spd <- dbSendQuery(con, "COPY tiga_sequence_sumatra_2014 (id, sequence, support)FROM 'D:/Visualisasi MODUL/eksport/support_3seq_sumatra_2014.csv' USING DELIMITERS ',' WITH CSV HEADER; DELETE FROM tiga_sequence_sumatra_2014 WHERE length(sequence) < 12; UPDATE tiga_sequence_sumatra_2014 SET date_code1 = substring(sequence,3,2), date_code2 = substring(sequence,8,2), date_code3 = substring(sequence,13,2); SELECT * FROM input_date_3seq_suma2014(); SELECT * FROM input_count_3seq_suma2014(); SELECT distinctsequence,date_1,date_2,date_3, support,number_of_hotspots FROM tiga_sequence_sumatra_2014 ORDER BY sequence;") out2 <<- fetch(spd, n = -1)}}
29 Lampiran 2 Lanjutan else if(input$datseq == 'seq04'){ if(input$maxlength == 1){ spd <- dbSendQuery(con, "DELETE FROM satu_sequence_sumatra_2015;") write.csv(as(s0, "data.frame"),"support_sumatra_2015.csv") spd <- dbSendQuery(con, "COPY satu_sequence_sumatra_2015 FROM 'D:/Visualisasi MODUL/eksport/ support_sumatra_2015.csv' USING DELIMITERS ',' WITH CSV HEADER; UPDATE satu_sequence_sumatra_2015 SET date_code = replace(replace(date_code, '<{',''), '}>',''); SELECT DISTINCT * FROM satu_sequence_sumatra_2015 ORDER BY date_code;") out2 <<- fetch(spd, n = -1)} else if(input$maxlength == 2){ spd <- dbSendQuery(con, "DELETE FROM dua_sequence_sumatra_2015;") write.csv(as(s0, "data.frame"), "support_2seq_sumatra_2015.csv") spd <- dbSendQuery(con, "COPY dua_sequence_sumatra_2015 (id, sequence, support)FROM 'D:/Visualisasi MODUL/eksport/support_2seq_sumatra_2015.csv' USING DELIMITERS ',' WITH CSV HEADER; DELETE FROM dua_sequence_sumatra_2015 WHERE length(sequence) < 13; UPDATE dua_sequence_sumatra_2015 SET date_code1 = substring(sequence,3,3), date_code2 = substring(sequence,9,3); SELECT * FROM input_date_2seq_suma2015(); SELECT * FROM input_count_2seq_suma2015(); DELETE FROM dua_sequence_sumatra_2015 WHERE (to_number(date_code2,'999')to_number(date_code1,'999')) NOT BETWEEN 1 and 4; SELECT distinct sequence,date_1,date_2, support,number_of_hotspots FROM dua_sequence_sumatra_2015 ORDER BY sequence;") out2 <<- fetch(spd, n = -1)}
30 Lampiran 2 Lanjutan else if(input$maxlength == 3){ spd <- dbSendQuery(con, "DELETE FROM tiga_sequence_sumatra_2015;") write.csv(as(s0, "data.frame"),"support_3seq_sumatra_2015.csv") spd <- dbSendQuery(con, "COPY tiga_sequence_sumatra_2015 (id, sequence, support)FROM 'D:/Visualisasi MODUL/eksport/support_3seq_sumatra_2015.csv' USING DELIMITERS ',' WITH CSV HEADER; DELETE FROM tiga_sequence_sumatra_2015 WHERE length(sequence) < 14; UPDATE tiga_sequence_sumatra_2015 SET date_code1 = substring(sequence,3,3), date_code2 = substring(sequence,9,3), date_code3 = substring(sequence,15,3); SELECT * FROM input_date_3seq_suma2015(); SELECT * FROM input_count_3seq_suma2015(); DELETE FROM tiga_sequence_sumatra_2015 WHERE (to_number(date_code2,'999')to_number(date_code1,'999')) NOT BETWEEN 1 and 4; SELECT DISTINCT sequence, date_1,date_2,date_3, support, number_of_hotspots FROM tiga_sequence_sumatra_2015 ORDER BY sequence;") out2 <<- fetch(spd, n = -1)} else if(input$maxlength == 4){ spd <- dbSendQuery(con, "DELETE FROM empat_sequence_sumatra_2015;") write.csv(as(s0, "data.frame"),"support_4seq_sumatra_2015.csv") spd <- dbSendQuery(con, "COPY empat_sequence_sumatra_2015 (id, sequence, support)FROM 'D:/Visualisasi MODUL/eksport/support_4seq_sumatra_2015.csv' USING DELIMITERS ',' WITH CSV HEADER; DELETE FROM empat_sequence_sumatra_2015 WHERE length(sequence) < 20; UPDATE tiga_sequence_sumatra_2015 SET date_code1 = substring(sequence,3,3), date_code2 = substring(sequence,9,3), date_code3 = substring(sequence,15,3), date_code4 = substring(sequence, 21,3); SELECT * FROM input_date_4seq_suma2015(); SELECT * FROM input_count_4seq_suma2015(); SELECT distinct sequence, date_1,date_2,date_3, date_4,support, number_of_hotspots FROM empat_sequence_sumatra_2015 ORDER BY sequence;") out2 <<- fetch(spd, n = -1)}}
31 Lampiran 3 Pola sekuens titik panas dengan panjang 2-sekuens Pola sekuens Kalimantan 2014
Pola sekuens Kalimantan 2015
Pola sekuens Sumatra 2014
32 Lampiran 3 Lanjutan
Pola sekuens Sumatra 2015
33 Lampiran 3 Lanjutan
34 Lampiran 4 Pola sekuens titik panas dengan panjang 3-sekuens Pola sekuens Sumatra 2014
Pola sekuens Sumatra 2015
35 Lampiran 5 Pola sekuens titik panas dengan panjang 4-sekuens Pola sekuens Sumatra 2015
36 Lampiran 6 Kode program untuk menampilkan plot berdasarkan date code selectedData7 <- reactive({ switch(input$datseq2, '2kl2014' = myobj <- as.data.frame(read.csv( 'D:/Visualisasi MODUL/eksport/ 2-sequence_kalimantan_2014.csv', sep = ',', header = TRUE)), '2kl2015' = myobj <- as.data.frame(read.csv( 'D:/Visualisasi MODUL/eksport/ 2-sequence_kalimantan_2015.csv', sep = ',', header = TRUE)), '2sm2014' = myobj <- as.data.frame(read.csv( 'D:/Visualisasi MODUL/eksport/ 2-sequence_sumatra_2014.csv', sep = ',', header = TRUE)), '2sm2015' = myobj <- as.data.frame(read.csv( 'D:/Visualisasi MODUL/eksport/ 2-sequence_sumatra_2015.csv', sep = ',', header = TRUE)), '3sm2014' = myobj <- as.data.frame(read.csv( 'D:/Visualisasi MODUL/eksport/ 3-sequence_sumatra_2014.csv', sep = ',', header = TRUE)), '3sm2015' = myobj <- as.data.frame(read.csv( 'D:/Visualisasi MODUL/eksport/ 3-sequence_sumatra_2015.csv', sep = ',', header = TRUE)), '4sm2015' = myobj <- as.data.frame(read.csv( 'D:/Visualisasi MODUL/eksport/ 4-sequence_sumatra_2015.csv', sep = ',', header = TRUE))) }) kalimantan_hotspot <- reactive({ setwd("d:/Visualisasi MODUL/eksport") con <- dbConnect(dbDriver("PostgreSQL"), user="postgres", password="spiderman", dbname="titikPanas", host = "localhost", port = 5432) on.exit(dbDisconnect(con), add=TRUE) invert <- "'" if(input$datseq2 == '2kl2014'){ spd2 <- dbSendQuery(con, "select * from get_kalimantan_2014()") out3 <<- fetch(spd2, n = -1) write.csv(out3,file="2-sequence_kalimantan_2014.csv")} else{ spd2 <- dbSendQuery(con, "select * from get_kalimantan_2015()") out3 <<- fetch(spd2, n = -1) write.csv(out3,file="2-sequence_kalimantan_2015.csv")} output$home1 <- renderText({ paste("") })
37 Lampiran 6 Lanjutan map <- readOGR(dsn="D:/Visualisasi MODUL", layer="kalimantan") map@data$id <- rownames(map@data) maps <- fortify(map) mergemap <- merge(maps, map@data, by="id") long <- selectedData7()$long lat <- selectedData7()$lat Date_Code <- selectedData7()$tanggal hotspot <- data.frame(long,lat,Date_Code) ggplot(mergemap, aes(long,lat)) + geom_point(data=maps, color= "grey") + theme(legend.position = "right", legend.direction="horizontal") + geom_point(data = hotspot, aes(long,lat,color=factor(Date_Code)), size=3) + ylab("Latitude") + xlab("Longitude") + guides(col = guide_legend(ncol=1, byrow = TRUE, override.aes = list(size=5))) + guides(fill = guide_legend(ncol=2, byrow = TRUE), size=1) + coord_equal()}) sumatra_hotspot <- reactive({ setwd("d:/Visualisasi MODUL/eksport") con <- dbConnect(dbDriver("PostgreSQL"),user="postgres", password="spiderman", dbname="titikPanas", host = "localhost", port = 5432) on.exit(dbDisconnect(con), add=TRUE) invert <- "'" if(input$datseq2 == '2sm2014'){ spd2 <- dbSendQuery(con, "select * from get_sumatra_2014()") out3 <<- fetch(spd2, n = -1) write.csv(out3,file="2-sequence_sumatra_2014.csv")} else if(input$datseq2 == '2sm2015'){ spd2 <- dbSendQuery(con, "select * from get_sumatra_2015()") out3 <<- fetch(spd2, n = -1) write.csv(out3,file="2-sequence_sumatra_2015.csv")} else if(input$datseq2 == '3sm2014'){ spd2 <- dbSendQuery(con, "select * from get_3_sumatra_2014()") out3 <<- fetch(spd2, n = -1) write.csv(out3,file="3-sequence_sumatra_2014.csv")} else if(input$datseq2 == '3sm2015'){ spd2 <- dbSendQuery(con, "select * from get_3_sumatra_2015()") out3 <<- fetch(spd2, n = -1) write.csv(out3,file="3-sequence_sumatra_2015.csv")} else{ spd2 <- dbSendQuery(con, "select * from get_4_sumatra_2015()") out3 <<- fetch(spd2, n = -1) write.csv(out3,file="4-sequence_sumatra_2015.csv")} output$home1 <- renderText({ paste("") })
38 Lampiran 6 Lanjutan map <- readOGR(dsn="D:/Visualisasi MODUL", layer="sumatera") map@data$id <- rownames(map@data) maps <- fortify(map) mergemap <- merge(maps, map@data, by="id") long <- selectedData7()$long lat <- selectedData7()$lat Date_Code <- selectedData7()$tanggal hotspot <- data.frame(long,lat,Date_Code) ggplot(mergemap, aes(long,lat)) + geom_point(data=maps, color= "grey") + theme(legend.position = "right", legend.direction="horizontal") + geom_point(data = hotspot, aes(long,lat,color=factor(Date_Code)), size=3) + ylab("Latitude") + xlab("Longitude") + guides(col = guide_legend(ncol=1, byrow = TRUE, override.aes = list(size=5))) + guides(fill = guide_legend(ncol=2, byrow = TRUE), size=1) + coord_equal()})
39 Lampiran 7 Tampilan modul visualisasi pola sekuens titik panas Pulau Kalimantan Visualisasi sebaran pola 2-sekuens Kalimantan 2014
Visualisasi sebaran pola 2-sekuens Kalimantan 2015
40 Lampiran 8 Tampilan modul visualisasi pola sekuens titik panas Pulau Sumatra Visualisasi sebaran pola 2-sekuens Sumatra 2014
Visualisasi sebaran pola 2-sekuens Sumatra 2015
41 Lampiran 8 Lanjutan Visualisasi sebaran pola 3-sekuens Sumatra 2014
Visualisasi sebaran pola 3-sekuens Sumatra 2015
42 Lampiran 8 Lanjutan Visualisasi sebaran pola 4-sekuens Sumatra 2015
43
RIWAYAT HIDUP Penulis dilahirkan di Kota Medan Provinsi Sumatra Utara pada tanggal 25 Desember 1993. Penulis adalah anak keempat dari lima bersaudara, anak dari pasangan Bapak Zulkarnain dan Ibu Anim Diniati. Penulis menempuh pendidikan Sekolah Menengah Atas di SMA Harapan 1 Kota Medan pada tahun 2008 hingga 2011. Kemudian penulis melanjutkan pendidikan Program Diploma 3 (D3) di Universitas Telkom Fakultas Ilmu Terapan Jurusan Manajemen Informatika pada tahun 2011 hingga 2014. Kemudian penulis melanjutkan pendidikan Program Sarjana Alih Jenis (S1) di Institut Pertanian Bogor Fakultas Matematika dan Ilmu Pengetahuan Alam Departemen Ilmu Komputer.