VISUALISASI POLA SEKUENS TITIK PANAS DI LAHAN GAMBUT SUMATRA DAN KALIMANTAN MENGGUNAKAN FRAMEWORK SHINY
GEMA ABRIANTINI
DEPARTEMEN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR BOGOR 2016
PERNYATAAN MENGENAI SKRIPSI DAN SUMBER INFORMASI SERTA PELIMPAHAN HAK CIPTA Dengan ini saya menyatakan bahwa skripsi berjudul Visualisasi Pola Sekuens Titik Panas di Lahan Gambut Sumatra dan Kalimantan Menggunakan Framework Shiny 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, Juni 2016 Gema Abriantini NIM G64120089
ABSTRAK GEMA ABRIANTINI. Visualisasi Pola Sekuens Titik Panas di Lahan Gambut Sumatra dan Kalimantan Menggunakan Framework Shiny. Dibimbing oleh IMAS SUKAESIH SITANGGANG. Lahan gambut merupakan lahan yang potensial di Indonesia. Namun, setiap tahun terjadi kebakaran di lahan gambut khususnya pulau Sumatra dan Kalimantan. Kebakaran pada lahan gambut dapat diidentifikasi dengan mengolah data titik panas menjadi pola sekuens titik panas. Pola sekuens titik panas menghasilkan titik api yang merupakan kandidat lokasi terjadinya kebakaran khususnya lahan gambut. Salah satu teknik data mining yang dapat digunakan yaitu sequential pattern mining dengan menerapkan algoritme SPADE untuk mendapatkan pola sekuens titik panas. Penelitian ini bertujuan 1) mendapatkan pola sekuens titik panas di Sumatra dan Kalimantan tahun 2014 dan 2015, dan 2) membangun aplikasi berbasis web untuk visualisasi pola sekuens titik panas berdasarkan karakteristik lahan gambut, berdasarkan cuaca, dan berdasarkan sosial ekonomi. Pola sekuens titik panas diperoleh pada nilai support minimum sebesar 0.01. Contoh pola sekuens dari dataset Kalimantan 2015 adalah <{287},{289}> dengan nilai support tertinggi. Aplikasi web ini dibangun menggunakan framework Shiny yang terdapat pada package R. Fitur-fitur dalam aplikasi telah diuji dan hasil pengujian menunjukkan bahwa semua fitur pada aplikasi berfungsi dengan baik dan menghasilkan keluaran sesuai dengan skenario uji. Kata kunci: R, sequential pattern mining, Shiny, SPADE, titik panas
ABSTRACT GEMA ABRIANTINI. Hotspot Sequential Pattern Visualization in Peatland in Sumatra and Kalimantan using Shiny Framework. Supervised by IMAS SUKAESIH SITANGGANG. Peatland is one of potential land in Indonesia. However, fires on peatland occured each year in Sumatra and Kalimantan islands. Fires on peatland can be identified by processing hotspot dataset into hotspot sequential patterns. Sequential pattern mining is one of data mining technique that can be used to analyze hotspot sequential patterns. Sequential pattern discovery equivalent classes (SPADE) algorithm can be applied to extract hotspot sequential patterns. The objectives of this work are: 1) obtain hotspot sequential patterns in Sumatra and Kalimantan in 2014 and 2015, and to 2) build a web based application using Shiny framework that is available in R package for hotspot sequential patterns visualization in peatland in Sumatra and Kalimantan. Hotspot sequential patterns were obtained by using minimum support of 0.01. For example, hotspot sequential pattern in Kalimantan in 2015 is <{287},{289}> which has the highest support. Hotspot sequential pattern is visualized based on peatland’s characteristics, weather, and social economy. The features in this web-based application have been tested and the test result show that the features work properly according to the test scenario. Keywords: hotspot, R, sequential pattern mining, Shiny, SPADE
VISUALISASI POLA SEKUENS TITIK PANAS DI LAHAN GAMBUT SUMATRA DAN KALIMANTAN MENGGUNAKAN FRAMEWORK SHINY
GEMA ABRIANTINI
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 2016
Penguji: 1 Muhammad Abrar Istiadi, SKomp MKom 2 Rina Trisminingsih, SKomp MT
Judul Skripsi : Visualisasi Pola Sekuens Titik Panas di Lahan Gambut Sumatra dan Kalimantan Menggunakan Framework Shiny Nama : Gema Abriantini NIM : G64120089
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 Januari 2016 ini ialah data mining, dengan judul Visualisasi Pola Sekuens Titik Panas di Lahan Gambut Sumatra dan Kalimantan Menggunakan Framework Shiny. Penulisan skripsi ini merupakan karya ilmiah pertama dari gelar Sarjana yang dilakukan oleh penulis sendiri. Banyak kendala dan tantangan dari awal penelitian dilaksanakan. Doa, dukungan, dan kasing sayang dari Mamah Ai Hasanah dan Papah Bubun Burhanudin serta keempat saudara penulis menjadi kekuatan untuk menyelesaikan penelitian ini. Terima kasih juga penulis sampaikan kepada Ibu Dr Imas Sukaesih Sitanggang, SSi MKom selaku pembimbing, yang senantiasa mengarahkan, memberikan solusi ketika kesulitan, dan ikhlas meluangkan waktunya untuk memberikan bimbingan selama penelitian. Selain itu, terima kasih pula penulis sampaikan kepada Ibu Dr Ir Lailan Syaufina, MSc selaku pakar kehutanan IPB yang telah memberi saran terkait penelitian dari sisi kehutanan. Penulis juga menyampaikan terima kasih kepada: 1 Bapak Muhammad Abrar Istiadi, SKomp MKom dan Ibu Rina Trisminingsih, SKomp MT selaku penguji. 2 Bapak Dr Ir Agus Buono, MSi MKom selaku Ketua Departemen Ilmu Komputer IPB. 3 Seluruh dosen, staf tata usaha, dan staf pegawai Departemen Ilmu Komputer IPB. 4 Seluruh teman-teman sebimbingan yaitu, Erna, Mirza, Lani, Nanda, Fikar, Mida, Ni’am, Defri, dan Wieke. 5 Teman-teman yang selalu mendukung yaitu Sarah, Farisah, Tiara, El, Ule, Kak Yenni, Anis, Yuli, dan Iwan. 6 Tim Agricoder yang membantu memberikan solusi dan kritik yaitu Egi, Radivan, dan Fahmi. 7 Seluruh teman-teman Program S1 Ilmu Komputer IPB angkatan 49. Semoga segala bantuan, bimbingan, motivasi, dan dukungan yang telah diberikan kepada penulis senantiasa dibalas oleh Allah subhanahu wa ta’ala. Semoga karya ilmiah ini memberikan manfaat dan menambah wawasan bagi pembaca.
Bogor, Juni 2016 Gema Abriantini
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
METODE
3
Data Penelitian
3
Tahapan Penelitian
3
Lingkungan Pengembangan
7
HASIL DAN PEMBAHASAN
8
Praproses Data
8
Pembangkitan Pola Sekuensial dengan Algoritme SPADE
10
Penentuan Pola Sekuens Titik Panas
11
Pembuatan Aplikasi Berbasis Web
13
Pengujian Aplikasi
16
Kelebihan dan Kekurangan Sistem
16
SIMPULAN DAN SARAN
17
Simpulan
17
Saran
17
DAFTAR PUSTAKA
18
LAMPIRAN
19
RIWAYAT HIDUP
40
DAFTAR TABEL 1 2 3 4 5 6 7 8 9 10 11 12 13
Atribut dataset titik panas Data transaksi terurut Large itemset, MinSupp = 40% Hasil transformasi database Contoh data sekuensial Atribut hasil seleksi data Contoh data dengan atribut yang terpilih Pengkodean tanggal Hasil seleksi jumlah titik panas Contoh hasil transformasi data Jumlah sekuens setiap dataset Contoh area titik panas berurutan Hasil pengujian fitur-fitur pada aplikasi
3 5 5 5 6 8 8 9 9 10 11 12 16
DAFTAR GAMBAR 1 2 3 4 5 6 7 8 9 10 11 12 13
Tahapan penelitian Contoh pembangkitan sekuens baru Contoh hasil pemilihan titik panas Data sekuensial sebagai input algoritme SPADE Contoh sekuens yang dihasilkan Sekuens Sumatra 2014 dengan ukuran 2-sekuens Sekuens Kalimantan 2015 dengan ukuran 2-sekuens Potongan fail server Potongan fail antarmuka Plot pola sekuens berdasarkan tutupan lahan Plot pola sekuens berdasarkan kedalaman gambut Plot pola sekuens berdasarkan tipe gambut Tabel ringkasan pola sekuens titik panas Sumatra 2014
4 7 9 10 11 12 13 13 13 14 14 15 15
DAFTAR LAMPIRAN 1 2 3 4 5 6 7 8 9 10
Pola sekuensial titik panas setiap dataset dengan ukuran 1-sekuens Pola sekuens titik panas Sumatra 2015 dengan ukuran minimal 2-sekuens Kode program R untuk algoritme SPADE Kode program untuk menampilkan plot berdasarkan karakteristik lahan gambut Kode program untuk menampilkan plot berdasarkan cuaca Kode program untuk menampilkan plot berdasarkan sosial ekonomi Tampilan antarmuka aplikasi plot pola sekuens titik panas Sumatra 2014 berdasarkan cuaca Tampilan antarmuka aplikasi plot pola sekuens titik panas Sumatra 2014 berdasarkan sosial ekonomi Tampilan antarmuka tab Help pada aplikasi Tampilan antarmuka tab About pada aplikasi
19 22 24 27 30 32 34 36 38 39
PENDAHULUAN Latar Belakang Menurut Kementrian Lingkungan Hidup (KLH 2006), lahan gambut di Indonesia memiliki luas sekitar 20 juta hektare. Lahan gambut yang paling dominan terdapat pada pulau Sumatra dan Kalimantan. Lahan gambut di Kalimantan sudah terbakar sekitar 2.66 juta hektare dan di Sumatra terbakar sekitar 1 juta hektare. Lahan gambut merupakan salah satu lahan yang potensial di Indonesia. Kemampuan lahan gambut untuk menyerap air pada musim hujan dapat mencegah terjadinya banjir. Kekeringan pada musim kemarau pun dapat diatasi dengan serapan air pada lahan gambut. Kebakaran pada lahan gambut menjadi salah satu bencana tahunan di Indonesia. Terjadinya kebakaran di lahan gambut dipengaruhi oleh beberapa faktor, di antaranya adalah faktor manusia dan cuaca. Faktor yang disebabkan oleh manusia sulit untuk dihilangkan karena butuh kesadaran dari manusia itu sendiri. Sedangkan musim kemarau yang berkepanjangan merupakan salah satu faktor cuaca yang mempengaruhi terjadinya kebakaran pada lahan gambut. Kebakaran dapat dideteksi dengan adanya data titik panas. Kebakaran berawal dari titik panas yang muncul berurutan sebanyak minimal 2 kali pada lokasi yang sama. Kemunculan titik panas yang menyebabkan kebakaran dapat diidentifikasi dengan teknik data mining. Data titik panas diolah menggunakan sequential pattern mining yang merupakan salah satu metode dalam data mining. Terdapat beberapa algoritme yang menerapkan sequential pattern mining yaitu, generalized sequential pattern (GSP), sequential pattern discovery using equivelent classes (SPADE), frequent-pattern projected sequential pattern mining (FreeSpan), prefix projected sequential pattern mining (PrefixSpan), dan mining closed frequent sequential pattern mining (CloSpan) (Han et al. 2005). Beberapa penelitian telah dilakukan mengenai pengolahan pada data titik panas. Agustina dan Sitanggang (2015) mendapatkan pola sekuens data titik panas dan data cuaca di Riau menggunakan algoritme CloSpan dan diamati keadaan cuaca untuk setiap sekuens titik panas. Penelitian yang dilakukan oleh Suci dan Sitanggang (2015) mendeteksi pencilan data titik panas harian dengan metode clustering K-Means pada aplikasi berbasis web yang dibangun menggunakan framework Shiny. Fitur-fitur pada aplikasi yang dibangun oleh Suci dan Sitanggang (2015) yaitu clustering data titik panas dan mendapatkan pencilan kolektif. Aplikasi berbasis web dengan framework Shiny dibangun oleh Hermawati dan Sitanggang (2016) untuk clustering DBSCAN pada data titik panas dan melakukan plot cluster pada peta Sumatra. Adapun Siknun dan Sitanggang (2016) membangun aplikasi berbasis web dengan framework Shiny untuk klasifikasi ke dalam kelas titik panas dan bukan titik panas menggunakan algoritme C5.0 pada data yang dimasukkan ke dalam aplikasi. Penelitian yang dilakukan bertujuan mendapatkan pola sekuensial titik panas di lahan gambut Sumatra dan Kalimantan hingga didapatkan pola sekuens titik panas untuk divisualisasi dalam aplikasi berbasis web. Pola sekuensial tersebut diamati berdasarkan fisikal lahan gambut di lokasi terjadinya kebakaran. Algoritme yang diterapkan pada penelitian ini adalah sequential pattern discovery using
2 equivalent classes (SPADE). Algoritme SPADE dapat menemukan pola sekuensial data secara cepat (Zaki 2001). Algoritme SPADE sudah terdapat pada package R sehingga mudah divisualisasikan menggunakan aplikasi yang dibangun dengan framework Shiny. Perumusan Masalah Kejadian berurutan (sekuens) titik panas dapat menjadi indikator kuat terjadinya kebakaran hutan. Pola sekuens titik panas didapat dengan menggunakan teknik sequential pattern mining. Salah satu algoritme dalam sequential pattern mining yang dapat diterapkan yaitu algoritme SPADE. Apabila selisih tanggal kemunculan awal titik panas hingga tanggal kemunculan berikutnya adalah 1-5 hari, maka titik panas pada pola sekuens yang dihasilkan dapat mengindikasikan lokasi terjadinya kebakaran. Berdasarkan latar belakang, perumusan masalah dalam penelitian ini adalah: 1 Bagaimana menentukan pola sekuensial titik panas menggunakan algoritme SPADE? 2 Seperti apa karakteristik fisik lahan gambut yang merupakan lokasi terjadinya pola sekuensial titik panas yang menjadi indikasi kuat terjadinya kebakaran di lahan gambut? 3 Bagaimana membangun modul visualisasi pola sekuens titik panas menggunakan framework Shiny? Tujuan Penelitian Tujuan penelitian ini adalah: 1 Mendapatkan pola sekuensial titik panas dan karakteristiknya pada lahan gambut yang mengindikasikan kebakaran di lahan gambut Sumatra dan Kalimantan. 2 Membuat aplikasi berbasis web dengan framework Shiny untuk visualisasi sequential pattern mining pada data titik panas.
Manfaat Penelitian Pola sekuens titik panas pada lahan gambut yang didapat dari penelitian ini dapat digunakan untuk mengetahui lokasi yang kemungkinan besar merupakan lokasi kebakaran lahan gambut. Pola sekuens titik panas dan karakteristik lahan gambut tempat terjadinya sekuens tersebut berguna untuk pencegahan terjadinya kebakaran di lahan gambut. Visualisasi pola sekuens titik panas pada aplikasi yang dibangun memudahkan pengguna dalam mendapatkan informasi mengenai sebaran pola sekuens titik panas di lahan gambut. Ruang Lingkup Penelitian Ruang lingkup pada penelitian ini yaitu: 1 Penelitian ini menggunakan data kemunculan titik panas di lahan gambut pulau Sumatra dan Kalimantan pada tahun 2014 dan 2015.
3 2 3
Karakteristik lahan gambut yang digunakan adalah jenis tutupan lahan gambut, tipe gambut, dan kedalaman gambut. Penelitian ini menerapkan algoritme SPADE yang terdapat pada R yaitu pada package ‘arulesSequences’ untuk mendapatkan pola sekuensial dan package Shiny untuk membangun aplikasi berbasis web.
METODE Data Penelitian Dataset yang digunakan pada penelitian ini adalah dataset titik panas dari FIRMS NASA (http://earthdata.nasa.gov). Dataset ini merupakan data koordinat titik panas di pulau Sumatra dan Kalimantan pada bulan Januari 2014 sampai bulan Desember 2015. Atribut pada dataset titik panas dapat dilihat pada Tabel 1.
No 1 2 3 4 5 6 7 8 9 10 11 12
Tabel 1 Atribut dataset titik panas Nama Atribut Keterangan Latitude Koordinat lintang lokasi titik panas (°) Longitude Koordinat bujur lokasi titik panas (°) Brightness Temperature Temperatur untuk kanal-21 atau kanal-22 (K) Scan Ukuran lebar piksel citra satelit Track Ukuran panjang piksel citra satelit Acq_date Tanggal kejadian titik panas Acq_time Waktu kejadian titik panas Satellite Satelit yang digunakan (Aqua, Terra) Confidence Kualitas titik panas (0-100%) Version 5.0 = MODIS NASA-LANCE, 5.1 = MODIS MODAPS-FIRMS Bright_t31 Temperatur untuk kanal-31 (K) Frp Fire radiative power (MegaWatts)
Selain menggunakan data titik panas, digunakan data tambahan berupa peta lahan gambut tahun 2002 dengan format shapefile (.shp) dari Wetland Internasional untuk kebutuhan clip data titik panas, menentukan karakteristik lahan gambut yang merupakan lokasi sekuens titik panas, dan visualisasi pola sekuens titik panas pada perangkat lunak QuantumGIS. Peta yang digunakan yaitu peta batas pulau Sumatra dan Kalimantan serta data peta lahan gambut Sumatra dan Kalimantan. Karakteristik lahan gambut didapat dari shapefile lahan gambut Sumatra dan Kalimantan yang terdiri dari tipe gambut, kedalaman gambut, dan jenis tutupan lahan gambut. Tahapan Penelitian Penelitian yang dilakukan melalui beberapa tahapan yang ditunjukkan pada Gambar 1.
4
Gambar 1 Tahapan penelitian Praproses Praproses terdiri atas beberapa tahapan yaitu seleksi data, transformasi data, dan pembuatan data sekuensial. Seleksi data dilakukan untuk memilih atribut yang digunakan pada penelitian dan memilih titik panas yang berada di luar lahan gambut pulau Sumatra dan Kalimantan. Transformasi data dilakukan untuk membuat data sekuensial. Pembuatan data sekuensial dilakukan berdasarkan kebutuhan algoritme SPADE pada perangkat lunak R. Pembangkitan Pola Sekuensial dengan Algoritme SPADE Pola sekuensial didapatkan dengan mengolah data sekuensial hasil praproses dari tahap sebelumnya. Data sekuensial diolah dengan menerapkan algoritme SPADE yang sudah tersedia pada package ‘arulesSequence’ perangkat lunak R.
Sequential Pattern Mining Data titik panas akan terus bertambah seiring berjalannya waktu. Database yang terdiri dari sekelompok sekuens kejadian yang direkam berdasarkan perubahan waktu dengan valid disebut time-series database (Zhao dan Bhowmick 2003). Kumpulan data titik panas yang sudah memiliki atribut waktu tergolong ke dalam time-series database. Terdapat 4 pola yang bisa didapat dengan mengolah data time-series, yaitu trend analysis, similarity search, sequential pattern, dan periodical pattern (Zhao dan Bhowmick 2003). Pola sekuensial merupakan sekuens dari itemset yang kemunculannya berurutan dan semua item terjadi dalam waktu yang hampir bersamaan (Zhao dan Bhowmick 2003). Terdapat sekuens ‹a1, a2, …, an› yang juga termasuk ke dalam sekuens ‹b1, b2, …, bm›, jika i1 < i2 < … < in pada a1 ⊆ bi1, a2 ⊆ bi2, …, an ⊆ bin. Sebagai contoh, sekuens ‹(3)(6, 7, 9)(7, 9)› dapat disebut sebagai bagian dari sekuens ‹(2)(3)(6, 7, 8, 9)(7, 9)› karena (3) ⊆ (3), (6, 7, 9) ⊆ (6, 7, 8, 9), (7, 9) ⊆ (7, 9). Akan tetapi, ‹(2)(3)› bukan bagian dari ‹(2, 3)› karena ‹(2)(3)› memiliki makna bahwa 3 terjadi setelah 2 sedangkan ‹(2, 3)› berarti 2 terjadi bersamaan dengan 3. Sebuah sekuens dikatakan maksimal apabila tidak termasuk ke dalam sekuens manapun (Zhao dan Bhowmick 2003). Contoh transformasi data transaksi menjadi data sekuensial dapat dilihat pada Tabel 2, Tabel 3, dan Tabel 4. Pada Tabel 2, terdapat ID pelanggan ‘2’ yang melakukan transaksi pada tanggal 27 Oktober 2002 dengan membeli barang dengan
5 kode 40, 60, dan 70 secara berurutan. Adapun pada Tabel 3 terdapat list k-itemset, dengan k merupakan banyaknya item, yang nilai support-nya sudah melebihi nilai support minimum yang ditentukan. Kemudian semua k-itemset pada Tabel 3 dikodekan untuk selanjutnya dibuat dalam bentuk sekuens. (40, 70) merupakan satu-satunya 2-itemset yang terdapat pada Tabel 3 yang dibentuk dari kombinasi setiap 1-itemset. Setiap kode barang yang dibeli oleh masing-masing pelanggan dibuat dalam bentuk sekuens pada Tabel 4. Pada Tabel 4, kolom pertama merupakan ID pelanggan, kolom kedua merupakan kode barang yang dibeli oleh setiap pelanggan dalam bentuk sekuens, kolom ketiga merupakan transformasi sekuens pada kolom kedua menjadi k-itemset seperti pada Tabel 3, dan kolom keempat merupakan bentuk sekuens kode barang yang sudah dilakukan pengkodean dari k-itemset. Tabel 2 Data transaksi terurut ID Waktu Kode Pelanggan Transaksi Barang 1 Oct 23’ 02 30 1 Oct 28’ 02 90 2 Oct 18’ 02 10, 20 2 Oct 21’ 02 30 2 Oct 27’ 02 40, 60, 70 3 Oct 15’ 02 30, 50, 70 4 Oct 08’ 02 30 4 Oct 16’ 02 40, 70 4 Oct 25’ 02 90 5 Oct 20’ 02 90 Tabel 3 Large itemset, MinSupp = 40% Large Kode Itemset Itemset (30) 1 (40) 2 (70) 3 (40, 70) 4 (90) 5 Tabel 4 Hasil transformasi database ID Pelanggan
Sekuens Pembelian Barang
1 2 3 4
‹(30)(90)› ‹(10, 20)(30)(40, 60, 70)› ‹(30, 50, 70)› ‹(30)(40, 70)(90)›
5
‹(90)›
Transformasi
Setelah Mapping
‹{(30)}{(90)}› ‹{(30)}{(40)(70)(40, 70)}› ‹{(30)}{(70)}› ‹{(30)}{(40)(70)(40, 70)}{(90)}› ‹{(90)}›
‹{1}{5}› ‹{1}{2,3,4}› ‹{1}{3}› ‹{1}{2,3,4} {5}› ‹{5}›
Support merupakan persentase jumlah transaksi yang mengandung suatu subsekuens tertentu dari total transaksi. Sebagai contoh, terdapat kode barang (40, 70)
6 pada Tabel 2, maka perhitungan nilai support dapat ditunjukkan sebagai berikut (Zhao dan Bhowmick 2003): Jumlah transaksi yang mengandung sub-sekuens (40, 70) Support (40, 70) = Jumlah transaksi 2 Support (40, 70) = = 0.4 5 Sequential pattern mining merupakan proses ekstraksi pola sekuens tertentu yang nilai support-nya melebihi nilai support minimum yang ditentukan (Zhao dan Bhowmick 2003). Data yang berbentuk sekuens biasanya termasuk data yang berukuran besar, sehingga akan lebih efisien apabila dilakukan pruning dengan adanya nilai support. Nilai support ditentukan oleh pengguna karena disesuaikan dengan kebutuhan masing-masing pengguna.
Algoritme SPADE Algoritme Sequential Pattern Discovery using Equivalence classes (SPADE) merupakan algoritme untuk mencari pola sekuensial yang menggunakan equivalence class untuk menguraikan masalah utama menjadi submasalah yang dapat diselesaikan secara terpisah menggunakan operasi penggabungan (Zaki 2001). Data masukan yang diolah menggunakan algoritme SPADE adalah data sekuensial. Contoh data sekuensial dapat dilihat pada Tabel 5. Pada Tabel 5, terdapat sequence ID ‘1’ yang melakukan transaksi pada tanggal ‘25’ sebanyak 4 items yang terdiri dari {A,C,D,F} yang terjadi secara berurutan. Kode program R untuk algoritme SPADE dapat dilihat pada Lampiran 3. Tabel 5 Contoh data sekuensial Sequence ID Event ID Size Items 1 10 2 {C,D} 1 15 3 {A,B,C} 1 20 3 {A,B,F} 1 25 4 {A,C,D,F} 2 15 3 {A,B,F} 2 20 1 {E} 3 10 3 {A,B,F} 4 10 3 {D,G,H} 4 20 2 {B,F} 4 25 3 {A,G,H} Langkah-langkah dalam Algoritme SPADE adalah (Zaki 2001): 1 Menghitung nilai support semua item dengan panjang 1-sekuens dan simpan sequence ID (SID) dari sekuens tersebut. 2 Menghitung nilai support semua item dengan panjang 2-sekuens dan simpan sequence ID (SID) dari sekuens tersebut. 3 Menghitung semua item hingga panjang sekuens paling maksimal sampai tidak ada lagi sekuens yang melebihi nilai support minimum yang ditentukan. 4 Melakukan dekomposisi kelas terhadap semua sekuens tersebut berdasarkan panjang sekuensnya. 5 Melakukan enumerasi seluruh sekuens tersebut untuk membangkitkan sekuens baru. Sebagai contoh pembangkitan sekuens dapat dilihat pada Gambar 2. Pada
7 Gambar 2, 3-sekuens [D→F→A] dibentuk dari kombinasi 2-sekuens [D→F] dan sekuens lain yang nilai support-nya melebihi nilai support minimum yang ditentukan atau disebut dengan sekuens yang frequent.
Gambar 2 Contoh pembangkitan sekuens baru Penentuan Pola Sekuens untuk Visualisasi pada Lahan Gambut Pola sekuens titik panas yang digunakan untuk visualisasi dengan ukuran minimal 2-sekuens dalam rentang waktu kemunculan dari tanggal awal ke tanggal berikutnya adalah 1-5 hari. Rentang waktu 1-5 hari ditentukan sesuai dengan arahan pakar yang menunjukkan titik panas kandidat lokasi terjadinya kebakaran. Setiap titik panas dari pola sekuens titik panas di-plot pada aplikasi berdasarkan karakteristik fisik lahan gambut. Pembuatan Aplikasi Berbasis Web Aplikasi berbasis web untuk plot pola sekuens titik panas dibangun menggunakan framework Shiny pada perangkat lunak R. Aplikasi ini memvisualisasikan pola sekuensial titik panas berdasarkan fisikal lahan gambutnya dalam bentuk peta statis. Pengujian Aplikasi Setelah aplikasi dibangun, dilakukan pengujian fitur-fitur utama pada aplikasi. Tahapan pengujian dilakukan untuk mengetahui bahwa semua fitur pada aplikasi berfungsi dengan baik sesuai skenario uji. Lingkungan Pengembangan Penelitian ini dilakukan dengan menggunakan perangkat keras dan perangkat lunak sebagai berikut: 1 Perangkat keras yang digunakan berupa komputer personal dengan spesifikasi: Intel® Core™ i3 CPU @1.33 GHz RAM 5 GB Harddisk Internal 320 GB 2 Perangkat lunak yang digunakan: Sistem Operasi Windows 10 64-bit
8
Bahasa pemrograman R versi 3.2.3 untuk menjalankan RStudio RStudio versi 0.99.483 dengan framework Shiny untuk membangun aplikasi dan package ‘arulesSequence’ untuk mendapatkan pola sekuens Microsoft Excel 2016 untuk membaca dataset PostgreSQL versi 9.3.2 sebagai server basis data QuantumGIS versi 2.8.1 untuk pengolahan data spasial dan visualisasi
HASIL DAN PEMBAHASAN Praproses Data Praproses data dilakukan untuk mendapatkan data yang sesuai dengan kebutuhan algoritme. Terdapat tiga tahapan dalam praproses data yaitu seleksi data, transformasi data, dan pembuatan data sekuensial. Dataset yang dipraproses dibagi menjadi empat bagian, yaitu titik panas Pulau Sumatra tahun 2014, titik panas Pulau Sumatra tahun 2015, titik panas Pulau Kalimantan tahun 2014, dan titik panas Pulau Kalimantan tahun 2015. Seleksi Data Tahap pertama dalam praproses data yaitu seleksi data. Seleksi data pada penelitian ini dengan melakukan seleksi atribut pada setiap dataset. Tabel 6 menunjukkan bahwa terdapat empat atribut yang digunakan untuk praproses data.
No. 1 2 3 4
Tabel 6 Atribut hasil seleksi data Atribut Deskripsi Longitude Koordinat lintang lokasi titik panas (°) Latitude Koordinat bujur lokasi titik panas (°) Acq_date Tanggal kejadian titik panas Confidence Kualitas titik panas (0-100%)
Longitude dan latitude yang digunakan hanya sampai dua angka di belakang tanda desimal dengan operasi round. Pembulatan hingga 0.01 degree dilakukan untuk mendapatkan titik panas di radius 1 km. Titik panas yang dipilih yaitu dengan nilai confidence lebih dari atau sama dengan 70%. Batas minimal confidence ditentukan berdasarkan arahan dari pakar bahwa titik panas tersebut mengindikasikan lokasi terjadinya kebakaran. Atribut tanggal diurutkan dari yang terlama hingga terbaru untuk memudahkan pengkodean tanggal. Contoh setiap atribut yang terpilih terdapat pada Tabel 7. Tabel 7 Contoh data dengan atribut yang terpilih Longitude Latitude Date Confidence (%) 98.41 3.16 4-Jan-14 100 103.12 0.89 4-Jan-14 76 98.41 3.16 6-Jan-14 83 104.23 0.72 11-Jan-14 100
9 Tanggal yang sudah terurut kemudian dikodekan. Hal ini dilakukan untuk persiapan pembuatan data sekuensial. Tanggal yang tertera pada baris pertama adalah ‘4-Jan-14’ seperti pada Tabel 7. Tanggal tersebut diberi kode ‘1’ sebagai nilai awal. Nilai kode bertambah sebanyak rentang waktu antara tanggal sebelum dan tanggal yang akan dikodekan. Contoh pengkodean tanggal dapat dilihat pada Tabel 8. Tabel 8 Pengkodean tanggal Longitude Latitude Acq_date Date_code 98.41 3.16 4-Jan-14 1 104.23 0.72 11-Jan-14 8 98.40 3.16 18-Dec-14 349 Titik panas kemudian dipilih hanya untuk lokasi yang berada pada lahan gambut di pulau Sumatra dan Kalimantan. Data titik panas di-plot pada QuantumGIS. Sebagai contoh hasil pemilihan titik panas dapat dilihat pada Gambar 3. Terdapat beberapa titik panas yang berada di luar salah satu pulau kecil yang ada di Sumatra.
Gambar 3 Contoh hasil pemilihan titik panas Titik panas yang berada di luar pulau dihilangkan dengan melakukan operasi clip pada QuantumGIS. Jumlah data dari masing-masing dataset yang terseleksi dapat dilihat pada Tabel 9. Tabel 9 Hasil seleksi jumlah titik panas Jumlah Titik Panas Jumlah Titik Panas Dataset Sebelum Seleksi Sesudah Seleksi Sumatra 2014 20 803 14 237 Sumatra 2015 25 698 16 720 Kalimantan 2014 15 277 3 951 Kalimantan 2015 27 001 13 053
10 Transformasi Data Pada tahap ini, terdapat penambahan atribut size dan sequence ID (SID). Dalam dataset titik panas, atribut size menyatakan banyaknya titik panas yang terjadi pada lokasi dan tanggal yang sama. Atribut SID merupakan kode untuk setiap lokasi yang berbeda. Baris data yang duplikat dihilangkan pada tahap ini. Contoh hasil transformasi data dapat dilihat pada Tabel 10. Tabel 10 Contoh hasil transformasi data Longitude Latitude Date_code Size SID 103.12 0.89 1 1 1 103.15 0.31 24 1 21 103.19 0.38 26 3 77 Pembuatan Data Sekuensial Dataset hasil transformasi dari tahap sebelumnya diubah menjadi data sekuensial. Data masukan untuk algoritme SPADE pada perangkat lunak R merupakan data sekuensial seperti pada Gambar 4.
Gambar 4 Data sekuensial sebagai input algoritme SPADE Data masukan ini tidak menggunakan header. Urutan kolom dari kiri ke kanan adalah SID, date_code, size, dan items. Kolom items menyesuaikan nilai pada kolom size. Date_code akan dijadikan bentuk sekuens sehingga kolom items diisi dengan date_code. Sebagai contoh, pada Gambar 4 terdapat SID ‘2’ dengan date_code ‘62’ terdapat satu titik panas yang terjadi sehingga kolom items hanya dinyatakan dengan date_code ‘62’ sebanyak satu kali. Selain itu, pada Gambar 4 terdapat SID ‘2’ dengan date_code ‘65’ terdapat dua titik panas yang terjadi sehingga kolom items dinyatakan dengan date_code ‘65’ sebanyak dua kali. Pembangkitan Pola Sekuensial dengan Algoritme SPADE Data titik panas hasil praproses diolah menggunakan perangkat lunak R dengan menerapkan algoritme SPADE. Pada penelitian ini digunakan nilai support minimum sebesar 0.01. Nilai support minimum sebesar 0.01 sudah menghasilkan 2-sekuens yaitu sekuens dengan ukuran 2 items (date_code). Contoh beberapa sekuens yang dihasilkan dapat dilihat pada Gambar 5. Hasil keluaran algoritme SPADE untuk setiap dataset dengan ukuran 1-sekuens terdapat pada Lampiran 1. Pada Gambar 5, terdapat sekuens <{41}> dengan nilai support tertinggi sebesar
11 0.04890333 untuk ukuran 1-sekuens. Kode tanggal 41 bermakna 10 Februari 2015, sehingga dapat dikatakan bahwa pada tanggal 10 Februari 2015 terdapat titik panas di beberapa lokasi. Jumlah sekuens untuk setiap dataset dapat dilihat pada Tabel 11.
Gambar 5 Contoh sekuens yang dihasilkan Tabel 11 Jumlah sekuens setiap dataset Dataset 1-Sekuens 2-Sekuens 3-Sekuens Sumatra 2014 61 24 4 Sumatra 2015 62 70 14 Kalimantan 2014 41 7 Kalimantan 2015 44 7 -
4-Sekuens 1 -
Penentuan Pola Sekuens Titik Panas Penentuan pola sekuens titik panas didapatkan dari hasil keluaran algoritme SPADE pada tahap sebelumnya. Pola sekuens yang digunakan memiliki minimal dua kejadian titik panas atau sekuens titik panas dengan ukuran 2-sekuens. Kemudian setiap titik yang terdapat pada setiap sekuens disimpan dalam fail .csv beserta tanggal kejadian. Pada Gambar 6, terdapat sekuens <{67},{69}> dengan nilai support tertinggi sebesar 0.03811117. Kode tanggal 67 bermakna 11 Maret 2014, sedangkan kode tanggal 69 bermakna 13 Maret 2014. Berdasarkan sekuens tersebut, dapat dikatakan bahwa pada tanggal 11 Maret 2014 terdapat titik panas di beberapa lokasi dan terjadi lagi pada tanggal 13 Maret 2014. Pada Gambar 7, terdapat sekuens <{203},{204}> dengan nilai support tertinggi sebesar 0.01868286. Kode tanggal 203 bermakna 25 Juli 2014, sedangkan kode tanggal 204 bermakna 26 Juli 2014. Berdasarkan sekuens tersebut, dapat dikatakan bahwa pada tanggal 25 Juli 2014 terdapat titik panas di beberapa lokasi dan terjadi lagi pada tanggal 26 Juli 2014. Pada Gambar 8, terdapat sekuens <{287},{289}> dengan nilai support tertinggi sebesar 0.02518278. Kode tanggal 287 bermakna 14 Oktober 2015, sedangkan kode tanggal 289 bermakna 16 Oktober 2015. Berdasarkan sekuens tersebut, dapat dikatakan bahwa pada tanggal 14 Oktober 2015 terdapat titik panas di beberapa lokasi dan terjadi lagi pada tanggal 16 Oktober 2015. Sebagai contoh beberapa nama kabupaten yang merupakan area terjadinya titik panas dalam pola berurutan dapat dilihat pada Tabel 12. Tabel 12 menunjukkan lokasi setingkat kabupaten setiap sekuens untuk setiap dataset yang memiliki nilai support tertinggi. Sekuens pada dataset Sumatra 2015 untuk ukuran minimal 2sekuens dapat dilihat pada Lampiran 2.
12
Gambar 6 Sekuens Sumatra 2014 dengan ukuran 2-sekuens
No. 1 2 3 4 5 6 7 8 9 10 11 12
Tabel 12 Contoh area titik panas berurutan Sumatra 2014 Sumatra 2015 Kalimantan 2014 Kalimantan 2015 Padang Lawas Meranti Ketapang Ketapang Utara Mandailing Siak Katingan Sukamara Natal Rokan Hilir Pelalawan Kota Palangka Kotawaringin Raya Barat Kota Dumai Indragiri Hilir Pulang Pisau Seruyan Mandau Musi Banyu Kapuas Kotawaringin Asin Timur Bengkalis Muaro Jambi Barito Selatan Katingan Siak Tanjung Kota Palangka Jabung Timur Raya Meranti Banyu Asin Pulang Pisau Pelalawan Ogan Kapuas Komering Ilir Indragiri Hilir Barito Selatan Tanjung Jabung Banjar Timur Muaro Jambi
13
Gambar 7 Sekuens Kalimantan 2015 dengan ukuran 2-sekuens Pembuatan Aplikasi Berbasis Web Aplikasi berbasis web ini dibangun dengan menggunakan framework Shiny. Aplikasi yang dibangun dengan framework Shiny terdiri atas 2 fail utama, yaitu Server.R sebagai server dan UI.R sebagai antarmuka. Data masukan pada aplikasi ini adalah dataset berupa fail .csv yang berisi longitude dan latitude dari pola sekuens titik panas di lahan gambut Sumatra dan Kalimantan. Potongan baris kode program pada fail server dan antarmuka dapat dilihat pada Gambar 9 dan Gambar 10. Baris kode secara utuh untuk setiap fungsi plot berdasarkan karakteristik lahan gambut dapat dilihat pada Lampiran 4. Baris kode secara utuh untuk setiap fungsi plot berdasarkan cuaca dapat dilihat pada Lampiran 5. Baris kode secara utuh untuk setiap fungsi plot berdasarkan sosial dan ekonomi dapat dilihat pada Lampiran 6. Template aplikasi ini mengacu pada aplikasi yang telah dibangun oleh Hermawati dan Sitanggang (2016). Pada Gambar 9 terdapat fungsi sebagai list dataset yang disediakan untuk masing-masing fitur utama. Gambar 10 merupakan baris kode antarmuka untuk menampilkan dropdown list yang menyediakan dataset yang terdapat pada masing-masing fitur utama.
Gambar 8 Potongan fail server
Gambar 9 Potongan fail antarmuka Terdapat 4 fitur utama pada aplikasi, yaitu plot berdasarkan karakteristik lahan gambut di Sumatra, plot berdasarkan karakteristik lahan gambut di Kalimantan, plot berdasarkan cuaca, dan plot berdasarkan sosial ekonomi. Terdapat fitur tambahan pada aplikasi yaitu menampilkan tabel ringkasan setiap dataset untuk memudahkan interpretasi visualisasi.
14
Gambar 10 Plot pola sekuens berdasarkan tutupan lahan Plot pola sekuens titik panas berdasarkan karakteristik lahan gambut dapat dilihat pada Gambar 11, Gambar 12, dan Gambar 13 serta tabel ringkasannya seperti pada Gambar 14. Terdapat petunjuk pada Gambar 11 untuk setiap fungsi pada antarmuka aplikasi. Terdapat kotak untuk memilih dataset yang tersedia, menu utama, sub-menu, dan legenda setelah dilakukan plot pola sekuens. Plot pola sekuens titik panas berdasarkan jenis tutupan lahan gambut terdapat pada Gambar 11. Plot pola sekuens titik panas berdasarkan kedalaman gambut terdapat pada Gambar 12. Plot pola sekuens titik panas berdasarkan tipe gambut terdapat pada Gambar 13. Setiap menu utama memiliki sub-menu masing-masing dan dataset yang berbeda.
Gambar 11 Plot pola sekuens berdasarkan kedalaman gambut
15
Gambar 12 Plot pola sekuens berdasarkan tipe gambut
Gambar 13 Tabel ringkasan pola sekuens titik panas Sumatra 2014 Setiap warna titik pada peta lahan gambut menggambarkan karakteristik lahan gambut seperti tipe gambut, kedalaman gambut, dan jenis tutupan lahan gambut. Tabel ringkasan pada Gambar 14 menunjukkan bahwa titik panas paling banyak dijumpai pada jenis tutupan lahan hutan rawa sesuai dengan plot yang ditampilkan. Pada tab ‘Plot by Weather’ terdapat 3 plot, yaitu plot berdasarkan suhu rata-rata (°C), kelembapan rata-rata (%), dan curah hujan (mm). Pada tab ‘Plot by Social Economy’ terdapat 3 plot, yaitu plot berdasarkan sumber penghasilan, kebakaran lahan, dan pendidikan. Plot pola sekuens titik panas berdasarkan cuaca dapat dilihat pada Lampiran 6. Adapun plot pola sekuens titik panas berdasarkan sosial dan ekonomi dapat dilihat pada Lampiran 7.
16 Pengujian Aplikasi Tahap pengujian telah dilakukan dengan beberapa skenario uji dan membandingkan hasil visualisasi setiap dataset dengan plot pada QuantumGIS. Fitur-fitur yang utama pada aplikasi yaitu, menampilkan plot pola sekuens titik panas berdasarkan karakteristik lahan gambut di Sumatra dan Kalimantan, plot pola sekuens titik panas berdasarkan cuaca, dan plot pola sekuens titik panas berdasarkan sosial ekonomi. Fitur tambahan pada aplikasi yaitu menampilkan tabel ringkasan untuk setiap dataset. Fitur utama dan fitur tambahan berfungsi dengan baik dan keluarannya sesuai dengan skenario uji. Tahap pengujian telah dilakukan dengan beberapa skenario uji seperti pada Tabel 13. Tabel 13 Hasil pengujian fitur-fitur pada aplikasi Skenario Uji
Hasil yang Diharapkan
Berfungsi dengan Baik Ya
No.
Fitur Aplikasi
1
Peatland Pengguna menekan Characteristics tombol “Show Plot in Plot” Sumatra
Muncul peta lahan gambut Sumatra dengan plot berdasarkan tutupan lahan, tipe gambut, dan kedalaman gambut
2
Peatland Pengguna menekan Characteristics tombol “Show Plot in Plot” Kalimantan
Muncul peta lahan gambut Kalimantan dengan plot berdasarkan tutupan lahan, tipe gambut, dan kedalaman gambut
Ya
3
Plot by Weather
Pengguna menekan tombol “Show Plot”
Muncul peta lahan gambut Sumatra dengan plot berdasarkan suhu, kelembaban, dan curah hujan
Ya
4
Plot by Social Economy
Pengguna menekan tombol “Show Plot”
Muncul peta lahan gambut Sumatra dengan plot berdasarkan sumber penghasilan, kebakaran lahan, dan jumlah sekolah
Ya
5
Summary
Pengguna memilih tab Summary
Muncul tabel ringkasan dari setiap dataset yang dipilih pada setiap tab
Ya
Kelebihan dan Kekurangan Sistem Kelebihan pada aplikasi yang telah dibangun yaitu aplikasi dapat memvisualisasikan seluruh dataset dan terdapat tabel ringkasan untuk setiap dataset. Tabel ringkasan memudahkan interpretasi dataset yang divisualisasikan. Kekurangan pada aplikasi yang telah dibangun yaitu aplikasi tidak dapat melakukan
17 proses pembangkitan pola sekuens di dalam aplikasi dengan menerapkan algoritme SPADE, waktu eksekusi cukup lama ketika aplikasi melakukan plot pola sekuens titik panas, dan tidak terdapat progress bar pada antarmuka aplikasi ketika melakukan plot lokasi pola sekuens titik panas.
SIMPULAN DAN SARAN Simpulan Kesimpulan dari hasil penelitian ini, yaitu pola sekuens titik panas di lahan gambut Sumatra dan Kalimantan telah berhasil didapatkan dengan menerapkan algoritme SPADE. 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. Adapun aplikasi visualisasi titik api berbasis web telah berhasil dibangun dengan menggunakan framework Shiny. Fitur utama 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. Fitur tambahan pada aplikasi yaitu menampilkan tabel ringkasan untuk setiap dataset. Fitur utama dan fitur tambahan telah diuji dan keluarannya sesuai dengan skenario uji sehingga keduanya dapat dikatakan berfungsi dengan baik. Saran 1 2 3 4 5 6
Saran untuk penelitian dan pengembangan selanjutnya sebagai berikut: Aplikasi dapat melakukan proses pembangkitan pola sekuens di dalam aplikasi yang sudah dibangun dengan menerapkan algoritme SPADE. Meminimalisasi waktu eksekusi ketika aplikasi melakukan plot pola sekuens titik panas pada aplikasi. Menambahkan progress bar pada antarmuka aplikasi ketika melakukan plot lokasi pola sekuens titik panas. Verifikasi nilai confidence titik panas dari setiap sekuens yang dihasilkan. Integrasi modul visualisasi pola sekuens titik panas dengan GIS engine untuk navigasi peta. Pengkodean tanggal dilakukan dengan kombinasi tahun, bulan, dan hari, sedangkan pengkodean SID dilakukan dengan kombinasi longitude dan latitude.
18
DAFTAR PUSTAKA 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 3-4; Bogor, Indonesia (ID). hlm 301-305. Han J, Pei J, Yan X. 2005. Sequential pattern mining by pattern-growth: principles and extensions. StudFuzz. 180: 183-220. 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 33. hlm 317-323. [KLH] Kementrian Lingkungan Hidup. 2006. Koordinasi kelembagaan pengelolaan lahan gambut di Indonesia [internet]. Jakarta (ID): KLH. [diunduh 2015 Desember 4]. Tersedia pada: http://www.menlh.go.id/koordinasikelembagaan-pengelolaan-lahan-gambut-di-indonesia/. 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 33. hlm 332-339. Suci AMYA, Sitanggang IS. 2015. Web-based application for outliers detection on hotspot data using K-Means clustering algorithm and Shiny framework. Di dalam: IOP Conference Series: Earth and Environmental Science 31; 2016; Indonesia (ID). Zaki MJ. 2001. SPADE: An efficient algorithm for mining frequent sequences. Machine Learning, 42, 31-60. Zhao Q, Bhowmick SS. Sequential pattern mining: A survey. Technical Report CAIS No.2003118. Singapore, 2003.
19 Lampiran 1 Pola sekuensial titik panas setiap dataset dengan ukuran 1-sekuens Dataset Sumatra 2014
Dataset Sumatra 2015
20 Lampiran 1 Lanjutan
Dataset Kalimantan 2014
Dataset Kalimantan 2015
21 Lampiran 1 Lanjutan
22 Lampiran 2 Pola sekuens titik panas Sumatra 2015 dengan ukuran minimal 2sekuens sequence support 63 <{68},{99}> 0.01087994 64 <{67},{98}> 0.01527009 65 <{8},{98}> 0.01374308 66 <{9},{68}> 0.02824967 67 <{8},{67}> 0.01679710 68 <{8},{39}> 0.01011643 69 <{255},{342}> 0.01355220 70 <{257},{342}> 0.01488834 71 <{281},{342}> 0.01164344 72 <{312},{342}> 0.01336133 73 <{281},{312}> 0.01431571 74 <{298},{300}> 0.01011643 75 <{291},{298}> 0.01431571 76 <{293},{298}> 0.02443214 77 <{294},{298}> 0.01145257 78 <{295},{298}> 0.02118725 79 <{296},{298}> 0.03225806 80 <{297},{298}> 0.01450659 81 <{296},{297},{298}> 0.01126169 82 <{295},{296},{298}> 0.01775148 83 <{294},{296},{298}> 0.01011643 84 <{293},{296},{298}> 0.01851498 85 <{291},{296},{298}> 0.01011643 86 <{293},{295},{296},{298}> 0.01240695 87 <{293},{295},{298}> 0.01469746 88 <{293},{297}> 0.01011643 89 <{296},{297}> 0.01393396 90 <{291},{296}> 0.01756060 91 <{293},{296}> 0.03130368 92 <{294},{296}> 0.01622447 93 <{295},{296}> 0.02729529 94 <{293},{295},{296}> 0.01966024 95 <{291},{295},{296}> 0.01030731 96 <{293},{294},{296}> 0.01183432 97 <{291},{293},{296}> 0.01374308 98 <{291},{295}> 0.01450659 99 <{293},{295}> 0.02729529 100 <{294},{295}> 0.01240695 101 <{291},{293},{295}> 0.01336133 102 <{291},{294}> 0.01164344 103 <{293},{294}> 0.01927849 104 <{289},{293}> 0.01259782 105 <{291},{293}> 0.03263982 106 <{292},{293}> 0.01259782 107 <{289},{291},{293}> 0.01030731 108 <{291},{292}> 0.01145257 109 <{287},{291}> 0.01469746 110 <{289},{291}> 0.02500477 111 <{287},{289},{291}> 0.01107082 112 <{286},{289}> 0.01355220 113 <{287},{289}> 0.02538652 114 <{286},{287},{289}> 0.01126169 115 <{282},{287}> 0.01317045 116 <{286},{287}> 0.01679710 117 <{282},{285}> 0.01126169
23 Lampiran 2 Lanjutan 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
sequence <{129},{282}> <{190},{282}> <{221},{282}> <{252},{282}> <{68},{282}> <{159},{281}> <{220},{281}> <{68},{272}> <{9},{272}> <{268},{271}> <{270},{271}> <{68},{271}> <{9},{271}> <{268},{270}> <{9},{270}> <{268},{269}> <{266},{268}> <{264},{266}> <{265},{266}> <{255},{257}> <{8},{241}> <{129},{221}> <{190},{221}> <{159},{220}> <{129},{190}> <{129},{160}> <{68},{160}> <{67},{159}> <{8},{159}> <{98},{159}>
support 0.01488834 0.01450659 0.01679710 0.01011643 0.01030731 0.01049819 0.01221607 0.01049819 0.01450659 0.01221607 0.01450659 0.01049819 0.01698797 0.01087994 0.01145257 0.01164344 0.02844054 0.02405039 0.01336133 0.01221607 0.01450659 0.01164344 0.01183432 0.01107082 0.01565184 0.01068906 0.01087994 0.01259782 0.01393396 0.01603359
24 Lampiran 3 Kode program R untuk algoritme SPADE function (data, parameter = NULL, control = NULL, tmpdir = tempdir()) { if (.Platform$OS == "windows" && .Platform$GUI == "Rgui") system2 <- function(command, args = character(), stdout = "", ...) { if (is.character(stdout) && nzchar(stdout)) { args <- c(args, ">", stdout) stdout <- NULL } args <- c("/c", shQuote(command), args) command <- Sys.getenv("COMSPEC") if (!nzchar(command)) stop("environment variable 'COMSPEC' not set") base::system2(command, args = args, stdout = stdout, ...) } if (!inherits(data, "transactions")) stop("'data' not of class transactions") if (!all(c("sequenceID", "eventID") %in% names(transactionInfo(data)))) stop("slot transactionInfo: missing 'sequenceID' and/or 'eventID'") class <- transactionInfo(data)[["classID"]] if (!is.null(class)) { names(class) <- transactionInfo(data)[["sequenceID"]] class <- class[!duplicated(names(class))] class <- factor(class) } if (!all(dim(data))) return(new("sequences")) parameter <- as(parameter, "SPparameter") control <- as(control, "SPcontrol") if (control@verbose) { t1 <- proc.time() cat("\nparameter specification:\n") cat(.formatSP(parameter), sep = "\n") cat("\nalgorithmic control:\n") cat(.formatSP(control), sep = "\n") cat("\npreprocessing ...") } exe <- "bin" if (.Platform$r_arch != "") exe <- file.path(exe, .Platform$r_arch) exe <- system.file(exe, package = "arulesSequences") file <- tempfile(pattern = "cspade", tmpdir) on.exit(unlink(paste(file, "*", sep = "."))) opt <- "" nop <- ceiling((dim(data)[1] + 2 * length(data@data@i)) * .Machine$sizeof.long/4^10/5) if (length(control@memsize)) { opt <- paste("-m", control@memsize) nop <- ceiling(nop * 32/control@memsize) } if (length(control@numpart)) { if (control@numpart < nop) warning("'numpart' less than recommended") nop <- control@numpart } out <- paste(file, "stdout", sep = ".") if (FALSE) { asc <- paste(file, "asc", sep = ".") write_cspade(data, con = asc) if (system2(file.path(exe, "makebin"), args = c(asc, paste(file, "data", sep = "."))) || system2(file.path(exe,
25 Lampiran 3 Lanjutan "getconf"), args = c("-i", file, "-o", file), stdout = out)) stop("system invocation failed") file.append("summary.out", out) } else makebin(data, file) if (system2(file.path(exe, "exttpose"), args = c("-i", file, "-o", file, "-p", nop, opt, "-l -x -s", parameter@support), stdout = out)) stop("system invocation failed") file.append("summary.out", out) if (!is.null(class)) write_class(class, paste(file, "class", sep = ".")) if (length(parameter@maxsize)) opt <- paste(opt, "-Z", parameter@maxsize, collapse = "") if (length(parameter@maxlen)) opt <- paste(opt, "-z", parameter@maxlen, collapse = "") if (length(parameter@mingap)) opt <- paste(opt, "-l", parameter@mingap, collapse = "") if (length(parameter@maxgap)) opt <- paste(opt, "-u", parameter@maxgap, collapse = "") if (length(parameter@maxwin)) opt <- paste(opt, "-w", parameter@maxwin, collapse = "") if (!length(control@bfstype) || !control@bfstype) opt <- paste(opt, "-r", collapse = "") if (control@tidLists) opt <- paste(opt, "-y", collapse = "") if (!is.null(class)) opt <- paste(opt, "-c", collapse = "") if (control@verbose) { t2 <- proc.time() du <- sum(file.info(list.files(path = dirname(file), pattern = basename(file), full.names = TRUE))$size) cat(paste("", nop, "partition(s),", round(du/4^10, digits = 2), "MB")) cat(paste(" [", format((t2 - t1)[3], digits = 2, format = "f"), "s]", sep = "")) cat("\nmining transactions ...") } out <- paste(file, "out", sep = ".") tmp <- paste(file, "tpose", sep = ".") if (nop > 1L) tmp <- paste(tmp, "P0", sep = ".") if (!file.exists(tmp)) local({ n <- readBin(paste(file, "conf", sep = "."), "integer") cat(file = out, sprintf("MINSUPPORT %s out of %s sequences\n", ceiling(parameter@support * n), n)) }) else if (system2(file.path(exe, "spade"), args = c("-i", file, "-s", parameter@support, opt, "-e", nop, "-o"), stdout = out)) stop("system invocation failed") if (control@verbose) { t3 <- proc.time() du <- file.info(out)$size cat(paste("", round(du/4^10, digits = 2), "MB")) cat(paste(" [", format((t3 - t2)[3], digits = 2, format = "f"), "s]", sep = "")) cat("\nreading sequences ...") } out <- read_spade(con = out, labels = itemLabels(data), transactions = if (control@tidLists)
26 Lampiran 3 Lanjutan data, class = class) out@info <- c(data = match.call()$data, ntransactions = length(data), out@info, support = parameter@support) if (control@verbose) { t4 <- proc.time() cat(paste(" [", format((t4 - t3)[3], digits = 2, format = "f"), "s]", sep = "")) cat("\n\ntotal elapsed time: ", (t4 - t1)[3], "s\n", sep = "") } if (!control@summary) unlink("summary.out") out } <environment: namespace:arulesSequences>
27 Lampiran 4 Kode program untuk menampilkan plot berdasarkan karakteristik lahan gambut #input dataset to data.frame selectedData2 <- reactive({ switch(input$firespot2, '2fs14' = myobj <- as.data.frame(read.csv('E:/Visualisasi SPADE/2sumatra2014.csv', sep = ',', header = TRUE)), '2fs14' = myobj <- as.data.frame(read.csv('E:/Visualisasi SPADE/2sumatra2015.csv', sep = ',', header = TRUE)), '3fs14' = myobj <- as.data.frame(read.csv('E:/Visualisasi SPADE/3sumatra2014.csv', sep = ',', header = TRUE)), '3fs14' = myobj <- as.data.frame(read.csv('E:/Visualisasi SPADE/3sumatra2015.csv', sep = ',', header = TRUE)), '4fs15' = myobj <- as.data.frame(read.csv('E:/Visualisasi SPADE/4sumatra2015.csv', sep = ',', header = TRUE)) ) }) #Plot by Landuse landuse_plot <- reactive({ # read shapefile (plot spatial data) map <- readOGR(dsn="E:/Visualisasi SPADE", layer="sumatra") #add to data a new column termed "id" composed of the rownames of data map@data$id <- rownames(map@data) # convert to dataframe maps <- fortify(map) #merge the fortified with data from spatial object mergemap <- merge(maps, map@data, by="id") long <- selectedData2()$longitude lat <- selectedData2()$latitude landuse <- selectedData2()$landuse hotspot <- data.frame(long,lat,landuse) ggplot(mergemap, aes(long,lat)) + geom_point(data=maps, aes(long, lat), color = "grey") + theme(legend.position = "right", legend.direction = "horizontal") + geom_point(data = hotspot, aes(long,lat, color=factor(landuse)), size=2) + ylab("Latitude") + xlab("Longitude") + guides(col = guide_legend(ncol=1, byrow = TRUE, override.aes = list(size=3))) + guides(fill = guide_legend(ncol=2, byrow = TRUE), size=1) + coord_equal() }) #Plot by Depth depth_plot2 <- reactive({ # read shapefile map <- readOGR(dsn="E:/Visualisasi SPADE", layer="sumatra") #add to data a new column termed "id" composed of the rownames of data map@data$id <- rownames(map@data) # convert to dataframe maps <- fortify(map) #merge the fortified with data from spatial object mergemap <- merge(maps, map@data, by="id") long <- selectedData2()$longitude
28 Lampiran 4 Lanjutan lat <- selectedData2()$latitude depth <- selectedData2()$depth hotspot <- data.frame(long,lat,depth) ggplot(mergemap, aes(long,lat)) + geom_point(data=maps, aes(long, lat), color="grey") + theme(legend.position = "right", legend.direction="horizontal") + geom_point(data = hotspot, aes(long,lat, color=factor(depth)), size=2) + ylab("Latitude") + xlab("Longitude") + guides(col = guide_legend(ncol=1, byrow = TRUE, override.aes = list(size=3))) + guides(fill = guide_legend(ncol=2, byrow = TRUE), size=1) + coord_equal() }) #Plot by type type_plot2 <- reactive({ # read shapefile map <- readOGR(dsn="E:/Visualisasi SPADE", layer="sumatra") #add to data a new column termed "id" composed of the rownames of data map@data$id <- rownames(map@data) # convert to dataframe maps <- fortify(map) #merge the fortified with data from spatial object mergemap <- merge(maps, map@data, by="id") long <- selectedData2()$longitude lat <- selectedData2()$latitude type <- selectedData2()$type hotspot <- data.frame(long,lat,type) ggplot(mergemap, aes(long,lat)) + geom_point(data=maps, aes(long, lat), color="grey") + theme(legend.position = "right", legend.direction="horizontal") + geom_point(data = hotspot, aes(long,lat, color=factor(type)), size=2) + ylab("Latitude") + xlab("Longitude") + guides(col = guide_legend(ncol=1, byrow = TRUE, override.aes = list(size=3))) + guides(fill = guide_legend(ncol=2, byrow = TRUE), size=1) + coord_equal() }) db_summarys <- reactive({ landuse <- selectedData2()$landuse depth <- selectedData2()$depth type <- selectedData2()$type sums <- data.frame(landuse, depth, type) tablesum <- summary.data.frame(sums) list(tablesum = tablesum) }) #output for plot by landuse output$luseplot <- renderPlot({ input$showplot12 if(input$showplot12 == 0) return("Please click 'Show Plot' button to see plot") else isolate(landuse_plot()) })
29 Lampiran 4 Lanjutan #output for plot by depth output$deplot2 <- renderPlot({ input$showplot22 if(input$showplot22 == 0) return("Please click 'Show Plot' button to see plot") else isolate(depth_plot2()) }) #output for plot by type output$typlot2 <- renderPlot({ input$showplot32 if(input$showplot32 == 0) return("Please click 'Show Plot' button to see plot") else isolate(type_plot2()) }) output$summarys <- renderTable( db_summarys()$tablesum,options = list(paging = FALSE, searching = FALSE, searchable = FALSE, pageLength = -1, sort=FALSE))
30 Lampiran 5 Kode program untuk menampilkan plot berdasarkan cuaca selectedData4 <- reactive({ switch(input$firespot4, fss14 = myobj <- as.data.frame(read.csv('E:/Visualisasi SPADE/cuaca sumatra 2014.csv', sep = ',', header = TRUE)), fss15 = myobj <- as.data.frame(read.csv('E:/Visualisasi SPADE/cuaca sumatra 2015.csv', sep = ',', header = TRUE)) ) }) temperature <- reactive({ # read shapefile map <- readOGR(dsn="E:/Visualisasi SPADE", layer="sumatra") #add to data a new column termed "id" composed of the rownames of data map@data$id <- rownames(map@data) # convert to dataframe maps <- fortify(map) #merge the fortified with data from spatial object mergemap <- merge(maps, map@data, by="id") long <- selectedData4()$longitude lat <- selectedData4()$latitude temperature <- selectedData4()$average_temperature hotspot <- data.frame(long,lat,temperature) ggplot(mergemap, aes(long,lat)) + geom_point(data=maps, aes(long, lat), color="grey") + theme(legend.position = "right", legend.direction="horizontal") + geom_point(data = hotspot, aes(long,lat, color=factor(temperature)), size=2) + ylab("Latitude") + xlab("Longitude") + guides(col = guide_legend(ncol=3, byrow = TRUE, override.aes = list(size=3))) + guides(fill = guide_legend(ncol=2, byrow = TRUE), size=1) + coord_equal() }) humidity <- reactive({ # read shapefile map <- readOGR(dsn="E:/Visualisasi SPADE", layer="sumatra") #add to data a new column termed "id" composed of the rownames of data map@data$id <- rownames(map@data) # convert to dataframe maps <- fortify(map) #merge the fortified with data from spatial object mergemap <- merge(maps, map@data, by="id") long <- selectedData4()$longitude lat <- selectedData4()$latitude humidity <- selectedData4()$average_humidity hotspot <- data.frame(long,lat,humidity) ggplot(mergemap, aes(long,lat)) + geom_point(data=maps, aes(long, lat), color="grey") + theme(legend.position = "right", legend.direction="horizontal") + geom_point(data = hotspot, aes(long,lat, color=factor(humidity)), size=2) + ylab("Latitude") + xlab("Longitude") +
31 Lampiran 5 Lanjutan guides(col = guide_legend(ncol=2, byrow = TRUE, override.aes = list(size=3))) + guides(fill = guide_legend(ncol=2, byrow = TRUE), size=1) + coord_equal() }) rain <- reactive({ # read shapefile map <- readOGR(dsn="E:/Visualisasi SPADE", layer="sumatra") #add to data a new column termed "id" composed of the rownames of data map@data$id <- rownames(map@data) # convert to dataframe maps <- fortify(map) #merge the fortified with data from spatial object mergemap <- merge(maps, map@data, by="id") long <- selectedData4()$longitude lat <- selectedData4()$latitude rain <- selectedData4()$precipitation hotspot <- data.frame(long,lat,rain) ggplot(mergemap, aes(long,lat)) + geom_point(data=maps, aes(long, lat), color="grey") + theme(legend.position = "right", legend.direction="horizontal") + geom_point(data = hotspot, aes(long,lat, color=factor(rain)), size=2) + ylab("Latitude") + xlab("Longitude") + guides(col = guide_legend(ncol=1, byrow = TRUE, override.aes = list(size=3))) + guides(fill = guide_legend(ncol=2, byrow = TRUE), size=1) + coord_equal() }) db_summaryw <- reactive({ temperature <- selectedData4()$average_temperature humidity <- selectedData4()$average_humidity precipitation <- selectedData4()$precipitation sumw <- data.frame(temperature, humidity, precipitation) tablesum <- summary.data.frame(sumw) list(tablesum = tablesum) }) output$splot <- renderPlot({ input$shows if(input$shows == 0) return("Please click 'Show Plot' button to see plot") else isolate(temperature()) }) output$chplot <- renderPlot({ input$showch if(input$showch == 0) return("Please click 'Show Plot' button to see plot") else isolate(rain()) }) output$kplot <- renderPlot({ input$showk if(input$showk == 0) return("Please click 'Show Plot' button to see plot") else isolate(humidity()) })
32 Lampiran 6 Kode program untuk menampilkan plot berdasarkan sosial ekonomi selectedData5 <- reactive({ switch(input$firespot5, fsss14 = myobj <- as.data.frame(read.csv('E:/Visualisasi SPADE/sosial ekonomi.csv', sep = ',', header = TRUE)) ) }) school <- reactive({ # read shapefile map <- readOGR(dsn="E:/Visualisasi SPADE", layer="sumatra") #add to data a new column termed "id" composed of the rownames of data map@data$id <- rownames(map@data) # convert to dataframe maps <- fortify(map) #merge the fortified with data from spatial object mergemap <- merge(maps, map@data, by="id") long <- selectedData5()$longitude lat <- selectedData5()$latitude number_of_school <- selectedData5()$number_of_school hotspot <- data.frame(long,lat,number_of_school) ggplot(mergemap, aes(long,lat)) + geom_point(data=maps, aes(long, lat), color="grey") + theme(legend.position = "right", legend.direction="horizontal") + geom_point(data = hotspot, aes(long,lat, color=factor(number_of_school)), size=2) + ylab("Latitude") + xlab("Longitude") + guides(col = guide_legend(ncol=2, byrow = TRUE, override.aes = list(size=3))) + guides(fill = guide_legend(ncol=2, byrow = TRUE), size=1) + coord_equal() }) db_summaryse <- reactive({ land_fire <- selectedData5()$land_fire income_source <- selectedData5()$income_source number_of_school <- selectedData5()$number_of_school sumse <- data.frame(land_fire, income_source, number_of_school) tablesum <- summary.data.frame(sumse) list(tablesum = tablesum) }) #output social economy output$ndplot <- renderPlot({ input$shownd if(input$shownd == 0) return("Please click 'Show Plot' button to see plot") else isolate(fire()) }) output$siplot <- renderPlot({ input$showsi if(input$showsi == 0) return("Please click 'Show Plot' button to see plot") else isolate(income()) }) output$nsplot <- renderPlot({
33 Lampiran 6 Lanjutan input$showns if(input$showns == 0) return("Please click 'Show Plot' button to see plot") else isolate(school()) }) output$summaryse <- renderTable( db_summaryse()$tablesum,options = list(paging = FALSE, searching = FALSE, searchable = FALSE, pageLength = -1, sort=FALSE))
34 Lampiran 7 Tampilan antarmuka aplikasi plot pola sekuens titik panas Sumatra 2014 berdasarkan cuaca
35 Lampiran 7 Lanjutan
36 Lampiran 8 Tampilan antarmuka aplikasi plot pola sekuens titik panas Sumatra 2014 berdasarkan sosial ekonomi
37 Lampiran 8 Lanjutan
38 Lampiran 9 Tampilan antarmuka tab Help pada aplikasi
39 Lampiran 10 Tampilan antarmuka tab About pada aplikasi
40
RIWAYAT HIDUP Penulis dilahirkan di Kota Serang Provinsi Banten pada tanggal 5 Oktober 1993. Penulis adalah anak keempat dari lima bersaudara, anak dari pasangan Bubun Burhanudin dan Ai Hasanah. Penulis menempuh pendidikan Sekolah Menengah Atas di SMA Negeri 1 Kota Serang pada tahun 2009 hingga 2012. Kemudian penulis melanjutkan pendidikan perguruan tinggi di Departemen Ilmu Komputer IPB melalui jalur SNMPTN Tulis. Penulis berpengalaman di bidang organisasi kemahasiswaan, di antaranya Sekretaris Umum Himpunan Mahasiswa Ilmu Komputer (Himalkom) periode 2013 – 2014 dan Sekretaris Umum Himalkom periode 2014 – 2015. Selain itu, penulis juga berpengalaman menjadi asisten praktikum mata kuliah Rangkaian Digital dan mata kuliah Bahasa Pemrograman. Pertengahan tahun 2015, penulis melaksanakan Praktek Kerja Lapang di PT Pertamina Persero bagian Shared Processing Center Procurement Operation (SPC PO).