Mengetahui Data Network JST hasil Training

Postingan yang lalu sudah dibahas bagaimana mengelola Mat-file agar file hasil learning JST bisa dibuka kembali. Ketika dibuka dengan fungsi load pertama kali saya mencoba ternyata hanya variable hasil training yang muncul, misalnya variabel jst. Padahal kita ingin mengetahui bobot, bias, jumlah input, output dan neuronnya. Untuk mengetahui bagaimana melakukan training JST dapat Anda lihat postingan di menu JST. Sebenarnya kita sudah mengetahui jumlah neuron, bias dan bobot ketika kita melakukan proses pembelajaran, tetapi jika lupa mencatatnya maka kita dapat mengetahui paramater-parameter JST lewat langkah berikut ini.

Di sini kita mencoba menjawab pertanyaan berapa bobot, bias, dan jumlah neuron suatu JST? Seperti biasa buka Matlab dan masuk ke command window.

load training

Di sini saya memanggil file mat bernama “training” yang telah saya simpan sebelumnya dengan fungsi write. Perhatikan di jendela workspace, tampak muncul variabel baru bernama jst. Variabel itulah yang akan kita cari jawabannya. Caranya sederhana, ketik saja nama variabelnya

jst

Maka Anda akan disuguhkan oleh data-data yang tersimpan dalam variabel “jst”. Data-data itu tersusun dalam format bertitik. Perhatikan informasi bias dan bobot di bagian bawah.

  • >> bobot=jst.IW
  • bobot =
  • [9×4 double]

Maksud dari “jst.IW” adalah kita memanggil informasi bobot yang ada dalam variabel “jst” yang kemudian disimpan dalam variabel bernama “bobot”. Namun muncul masalah dimana bobot hanya menampilkan file bertipe structure. Tipe file ini sering digunakan oleh pengguna Matlab yang berkecimpung dengan database.

  • >> cell2mat(bobot)
  • ans =
  • 0.6300 0.9296 0.5837 -0.2078
  • 0.8001 -0.6945 0.9106 0.2863
  • -0.7114 0.9695 0.3352 -0.5743
  • 0.8743 0.9537 -0.8952 0.5222
  • 0.3212 0.0178 0.7384 -0.8089
  • -0.8575 0.5574 0.8318 -0.5720
  • -0.4038 -0.6834 0.3856 -0.8205
  • 0.1292 -0.1272 0.5403 -0.7231
  • 0.8403 0.7692 0.4331 0.4783

Sebenarnya jumlah bobot sudah terjawab, tetapi jika ingin mengetahui bobot tiap neuron berdasarkan masukan (ada 4 input) maka gunakan konversi dari cell ke mat (fungsi cell2mat). Begitu juga untuk biasnya:

  • >> bias=jst.b
  • bias =
  • [9×1 double]
  • [ -0.5114]
  • >> cell2mat(bias)
  • ans =
  • 0.3908
  • -0.3910
  • 0.9763
  • -0.8269
  • 0.0012
  • -0.3521
  • 0.6170
  • 0.6681
  • -0.7900
  • -0.5114

 

 

 

Mengelola Mat-File

Salah satu ketangguhan Matlab adalah kemampuannya menangani vektor dan matriks. Matriks yang telah diolah oleh matlab disimpan sementara di workspace yang biasanya terletak di pojok kanan atas. Jika Matlab ditutup, maka data di workspace akan hilang. Agar tidak hilang, maka data tersebut harus disimpan dalam bentuk file di komputer kita, salah satu caranya adalah dengan instruksi save. Untuk yang sudah mahir mungkin menyimpan hasil dengan mengkoneksikan Matlab ke database dan mengirim atau menerima data secara langsung dari database itu.

Menyimpan Mat-File

Sebagai contoh di workspace saya terdapat lima variabel hasil utak-atik jaringan syaraf tiruan untuk memprediksi. Misalnya kita diminta menyimpan hasil training jst (saya beri nama jst) tersebut ke dalam suatu file. Pada command window dapat Anda ketik:

  • save (‘training.mat’,’jst’)

Di sini file yang akan dibentuk saya beri nama “training.mat”. di sebelah kananya variabel yang akan tersimpan dalam file training.mat tersebut. Sebenarnya bisa juga dengan mengetik save training yang fungsinya menyimpan juga tapi kelima variabel akant tersimpan juga.

Memanggil Mat-File

Apakah variabel jst dapat dipanggil lagi walaupun Matlab sudah ditutup? Tentu saja bisa. Untuk latihan coba hapus variabel workspace dengan instruksi clear. Arahkan current directory di lokasi file mat dan ketik:

  • load training

Maka di workspace akan muncul variabel baru bernama jst yang telah disimpan sebelumnya. Jadi variabel jst itu bersembunyi di dalam file training.mat yang akan muncul jika dipanggil lewat instruksi load. Selamat mencoba.

 

 

 

 

Prediksi dengan Jaringan Syaraf Tiruan (Intervention Indicators)

Postingan ini merupakan kelanjutan dari diskusi kita tentang prediksi dengan jaringan syaraf tiruan, dasar-dasar, dan latihan awal time series tanpa variabel intervention. Berikutnya mulai masuk ke latihan ke terapannya dengan data real, dalam hal ini penggunaan lahan (landuse). Mengingat banyak pertanyaan mengenai kenapa hasil proyeksi tidak bisa membesar dan diduga hanya berada di harga antara maximum dan minimum saat pembelajaran jaringan syaraf tiruan, atau banyak hasil proyeksi yang stagnan di harga tertentu dengan besar yang sama. Berikut ini adalah data landuse untuk latihan, dengan intervention indikatornya proyeksi populasi (lihat situs bekasi ini sebagai contoh proyeksi di chart bagian bawah situs).

Tugas kita adalah mengisi kolom tanda tanya “?” hingga tahun 2030 dengan data yang tersedia hanya dari tahun 2003. Berikut langkah-langkah yang harus dibuat.

Menyiapkan data training

Cara paling gampang adalah melakukan training tiap landuse type dilanjutkan dengan meramu JST yang akan dilatih. Di sini kita bisa menentukan dua atau tiga masukan JST, sebaiknya jumlah masukan dan jumlah data sebanyak mungkin. Perhatikan jika kita membuat jumlah masukan sebanyak empat (th 2003, 2006, 2009, dan 2012) dengan target pelatihan 2015 maka datanya tentu saja hanya satu. Tetapi jika menggunakan tiga masukan, datanya ada dua set, yaitu set pertama (data: 2003, 2006, dan 2009, target: 2012) dan set kedua (data: 2006, 2009, dan 2012, target: 2015). Anda juga bisa membuat tiga set data pelatihan untuk jumlah masukan dua, tetapi tentu saja time series lebih banyak series-nya lebih baik, maka kita pilih jumlah masukan tiga tahun dan ditambah satu masukan dari proyeksi ke tahun yang akan diramal. Jadi total masukannya empat, tiga time series dan satu variabel intervensi.

Jadi data untuk misalnya tipe lahan commercial ada dua data yang kemudian dilatih membentuk satu network, katakanlah network1. Tipe lahan kedua dengan data medical dilatih dan menghasilkan network2 dan seterusnya hingga network6. Keenam network itu kemudian digunakan untuk memprediksi jumlah lahan hingga tahun 2030. Berikutnya kita mulai membuat JST-nya.

Meramu JST

Toolbox Matlab yang tersedia adalah nntool dan nftool. Semuanya saya coba ada kelemahan dan kelebihannya. Nntool sepertinya lebih fleksibel karena dapat merubah jenis transfer function (logsig, tansig, dan purelin) sementara nftool hanya dibatasi hanya satu hidden layer dengan dua transfer function berturut-turut logsig dan purelin. Di sinilah masalah sering terjadi jika kita tidak melakukan setingan ini. Jika kita memilih transfer function logsig logsig, maka kita akan memperoleh harga hanya maximum satu.

Tentu saja jika meramal proyeksi ke depan yang membesar terus, akan mengalami kesulitan jika tidak disertai variabel intervention. Pemilihan transfer function juga bisa berdasarkan dengan trend dan bentuk data pelatihan, jika membesar terus atau mengecil terus sebaiknya menggunakan pureline, alias garis lurus. Di sini maksudnya bukan bentuk prediksinya garis lurus, tapi bentuk keluaran dari transfer function di tiap-tiap neuron.

Jika anda yang suka ngoding, ada baiknya membuat kode sendiri untuk pelatihan JST karena saya sendiri malas menggunakan nntool karena harus menggunakan mouse untuk input data dan target dilanjutkan dengan membuat network baru, training dan seterusnya. Tetapi dengan script kita bisa langsung memanggil data dan melakukan training secara otomatis tanpa memainkan mouse, alias sekali jalan.

Selanjutnya lakukan training network1 hingga network6 baik dengan script maupun dengan toolbox. Tentu saja jangan lupa lakukan testing dengan data pelatihan, pastikan akurat, karena jika testing dengan data pelatihan saja sudah salah maka tentu saja dengan data sesungguhnya jadi meragukan. Jika diminta menguji dengan cross validation, maka Anda harus membuat pengelompokan data2 dimana data yang digunakan untuk training tidak boleh digunakan untuk testing (supaya adil maksudnya).

Proyeksi (Simulation)

Langkah terakhir adalah melakukan proyeksi, atau istilah JST – nya simulasi. Fungsi yang digunakan adalah fungsi “sim“. Proyeksi bisa dilakukan satu persatu, misal 2009, 2012,2015 kemudian menghasilkan ramalan di 2018, dilanjutkan dengan bergeser ke kanan satu-satu. Lihat situs ini jika ingin detilnya.

Istilahnya adalah “window” untuk tiap set training. Satu window itu untuk satu set data training yang ketika training digabung menjadi satu. Untuk testing juga dengan window, dimana hasil proyeksi digunakan lagi untuk proyeksi tahun-tahun berikutnya, atau Anda bisa menggunakan script untuk menggenerate tahun 2018 hingga 2030. Seperti ini kira-kira hasilnya. Oiya, perlu diketahui data ini adalah normal euclidean dari data sebenarnya. Untuk mengetahui data sebenarnya tinggal mengalikan data tersebut dengan normal euclidean data aslinya.

Tentu saja nomor 6 di tahun 2030 tidak bisa digunakan karena tidak ada lahan yang minus. Di sini nol mungkin wajar dimana sudah tidak ada lagi pemukiman padat. Benarkah?

 

 

 

 

 

Prediksi dengan Jaringan Syaraf Tiruan pada Matlab (Latihan Awal)

Ketika kita belajar statistik di bangku sekolah, pasti pernah diajarkan regresi, baik sederhana maupun yang agak lanjut misalnya regresi berganda (kecuali kalo jurusannya tata boga barangkali tidak diajarkan). Saat ini metode regresi banyak berkembang dengan menggabungkannya dengan metode soft computing. Jika dengan Support Vector Machine (SVM) namanya menjadi Support Vector Regression (SVR), kalau dengan Neural Network atau yang dalam bahasa Indonesianya jaringan syaraf tiruan menjadi Neural Network Regression. Di sini kita akan berlatih yang mudah dahulu yaitu neural network regression.

Seperti telah dibahas di postingan sebelumnya, pada prediksi dengan JST terkadang diperlukan data yang mempengaruhi pergerakan ramalan yang dikenal dengan istilah variabel intervention. Tapi tentu saja jangan sampai variabel ini sangat berpengaruh karena bisa berakibat bukan peramalan, melainkan prediksi seperti biasa. Langsung aja praktek, misalnya kita memiliki data temporal, misalnya 5 tahun dengan masing-masing 1,2,3,4, dan 5 (kan supaya gampang prakteknya). Variabel interventionnya misalnya berturut-turut 1000, 2000, 3000, 4000, 5000, 6000, 7000 dan seterusnya, biasanya kalo di realnya prediksi populasi penduduk, inflasi, dan sejenisnya yang ikut menentukan peramalan lima tahun itu. Siapkan datanya di Matlab. Untuk membersihkan layar ketik clc, dan untuk membersihkan variabel di workspace ketik clear (pasti ada yang belum tahu 🙂 ).

Saya lebih suka mengetiknya dengan gaya di atas, yaitu pada saat memasukan variabel pelatihan (data). Jadi JST akan kita beri dua data pelatihan (tentu saja untuk real Anda gunakan lebih dari dua data) yaitu 1,2,3 yang telah meramalkan 4 dan 2,3,4 yang telah meramalkan 5. Jadi jika kita ingin memprediksi tahun ke enam ya tinggal memasukan data 3,4,5 yang harapannya akan menghasilkan hasil ramalan, entah 5, 6 atau berapa, sesuai hasil training dua data sebelumnya. Anda bisa saja membuat tiga data pelatihan [1,2], [2,3],[3,4] tetapi ya kurang bagus kalo untuk peramalan Cuma dua series. Gimana intervention-nya? Intervention itu data input tambahan, jadi misalnya tadinya 1,2,3 karena ada data intervention menjadi 1,2,3, 4000 dan 2,3,4, 5000. Dari mana asal 4000 dan 5000, ya dari data untuk memprediksi berturut-turut tahun ke 4 dan ke-5 (mudah-mudahan nggak bingung). Ok, yg gampang dulu, ketik nntool dilanjutkan dengan mengimport variabel-variabel pelatihan ke toolbox tersebut. Ikutin prosedur-prosedur seperti postingan sebelumnya. Ketika memasukan dan mengeluarkan data sama dengan klasifikasi, tetapi untuk meramu JST, waspadalah .. waspadalah, sedikit berbeda.

Logis sedikit lah, kalo kita lihat trend datanya kan 1,2,3,4, dst, berarti linear kan? Pilihlah wakilmu yang dapat dipercaya, PURELIN alias si “pure linear”. Tapi kalau plot data yg akan diramal meliuk-liuk ya pilih tangen sigmoid aja (sorry kalo bikin pusing).

Lanjutkan dengan create hingga export hasil training (defaultnya bernama network1). Bereskah? Uji dahulu kalau begitu. Oiya ketika memprediksi data tahun ke 7, gunakan data hasil prediksi tahun ke 6, ya, di sini saya menggunakan 6.0000 karena kebetulan hasil prediksi data tahun ke 6 itu segitu, biasanya sih ga pas segitu, misal 5.889, gunakan angka itu untuk memprediksi tahun ke-7, bukannya 6.

Ok, selamat mencoba. Pencari ilmu itu harus haus, udah minum, pengen minum lagi, coba sendiri dengan menambahkan variabel intervention, dan juga data contoh yang tidak linear kayak di atas. Jika ingin pake bahasa vb, c#, java, silahkan buka m-file di matlab, pelajari dan coding ulang dengan bahasa yg menurut Anda the best, atau sesuaikan dengan permintaan jika ingin laku, informatics serves everything.

Ekspor KML dari Google Earth Pro ke SHP ESRI (ArcView/ArcGIS)

Salah satu kelebihan Google adalah aplikasi yang bersifat gratis, walaupun versi Pro pada Google Earth. Silahkan install dan kenali fasilitas dan kemudahan-kemudahan yang diberikan. Di sini sedikit dibahas bagaimana berinteraksi antara ArcGIS dengan Google Earth.

Untuk memasukan data shapefile dari arcGIS ke google earth, sepertinya tidak ada masalah, tinggal masuk ke menu File – Import. Agak sedikit ribet ketika mengekspor dari Google Earth ke ArcGIS, biasanya jika kita selesai menggambar polygon, atau memodifikasi points dari google earth untuk kemudian dianalisa di ArcGIS. Caranya mudah saja, di sini misalnya kita telah memodifikasi titik-titik komersial di suatu kota, misalnya Bekasi. Arahkan mouse ke data tersebut dan pilih Save Place As. Tidak ada pilihan shp, tapi tidak apa-apa, pilih saja KML atau KMZ, misalnya kita pilih KMZ.

Jika sudah diberi nama arahkan ke folder tujuan file kmz tersebut. Setelah itu buka arcGIS anda, oiya beri nama sementara dulu karena nanti harus sedikit modifikasi agar diperoleh data yang clean.

Pada ArcGIS terdapat fasilitas mengkonversi KMZ menjadi layer, letaknya dapat dicari di menu “Search“. Pilih KMZ to Layer. Jangan khawatir jika yang ditemukan KML to layer, karena sama saja.

Klik tool tersebut dilanjutkan dengan mencari letak file kmz yang telah kita ekspor dari google earth pro. Jangan lupa letak folder hasil konversi.

Klik OK maka Anda telah berhasil mengkonversi dari KMZ menjadi shapefile untuk diolah di arcView atau ArcGIS. Masalahnya adalah dari sisi tampilan kurang bagus, oleh karena itu saya sedikit memanipulasi dengan clipping agar dihasilkan points sesuai dengan keinginan.

Sepertinya kurang sedap dipandang mata. Buka menu Geoprocessing dan pilih Clip setelah sebelumnya menyortir data hasil konversi. Klik kanan pilih tabel.

Dari tabel sorot bagian yang diperlukan saja, biasanya Id atau atribut lainnya yang diperlukan saja. Gunakan cara yang sama ketika mengisi nama saat konversi kmz ke shp yang telah dijelaskan di muka. Hasilnya seperti di bawah ini.

Parallel Processing dengan Matlab

Selain kelebihan Matlab dalam penanganan matriks dan vektor, Matlab juga dapat menangani pemrosesan paralel. Berikut ini contoh sederhana pemanggilan dan penutupan engine dalam Matlab. Salah satu aspek penting dalam proses ini adalah kemampuan kita membuat aplikasi dengan kohesi sebesar mungkin dan kopling sekecil mungkin atau tanpa kopling sama sekali (kaya motor matic aja 🙂 ). Buat matriks 4 baris misal seperti ini:

  • x =
  • 1 2 3 4
  • 5 6 7 8
  • 9 10 11 12

Namanya latihan ya sederhana dulu saja, yang penting prinsipnya. Misal kita akan menjumlahkan tiap baris dan setelah itu dijumlahkan total hasil penjumlahan tiap baris itu. Tentu saja Anda dapat menggunakan satu mesin, dengan operasi matriks sederhana.

Anggaplah tiap menjumlahkan baris membutuhkan waktu satu jam, maka Anda sudah menghabiskan tiga jam sebelum ditotal. Tetapi jika tiap baris Anda jumlahkan dengan mesin terpisah, maka Anda akan menghemat dua jam jika menggunakan tiga mesin secara bersamaan ketika menghitung jumlah tiap barisnya. Sebenarnya saya juga masih “mencari” cara yang praktis untuk menghitung skor riset saya yang membutuhkan satu jam tiap tipe, padahal ada 10 tipe (waw). Simpan variabel x tersebut dengan instruksi save. Berikut fungsi untuk tiap engine (ganti angka 1 dengan 2 dan 3 untuk engine yang lain).

  • function y=rows1(x)
  • load x
  • x1=x(1,:);
  • y1=sum(x1)
  • save y1 ‘y1’
  • exit
  • end

Saya punya tiga m-file untuk menghitung jumlah tiap baris yaitu rows1, rows2 dan rows3 yang nanti dieksekusi oleh tiap engine. Perintah terakhir adalah mematikan engine jika sudah selesai (exit). Kemudian saya butuh satu m-file utama yang memanggil tiga engine dan menyuruhnya melakukan komputasi, diakhiri dengan mengumpulkan hasilnya lalu menjumlahkan totalnya.

  • load x
  • for i=1:3
  • i=num2str(i)
  • rows=[‘!matlab’ ‘ ‘ ‘-r’ ‘ ‘ ‘rows’ i ‘ ‘ ‘&’]
  • eval(rows)
  • end

Akan muncul tiga engine baru yang secara terpisah melakukan kalkulasi penjumlahan untuk masing-masing baris. Sementara perintah delete di akhir bermanfaat untuk menghapus file temporary tersebut. Lihat hasilnya:

  • load y1
  • load y2
  • load y3

Masih ada masalah berikutnya yaitu instruksi yang menandakan bahwa slave (rows1, rows2, dan rows3) sudah selesai. Sekali lagi tentu saja teknik ini digunakan jika menjumlahkan tiap baris membutuhkan waktu yang sangat lama jika perhitungan baris berikutnya dilakukan jika yang sebelumnya sudah selesai. Bagiku ini sungguh bermanfaat, lihat sumber ini. Pernah saya terapkan juga di pencarian beberapa nama yang sama di text mining pada data yang besar.

Membuat Peta Jarak Lokasi Tertentu dengan ArcGIS

Jika pada tulisan sebelumnya menggunakan ArcView, di sini kita coba dengan ArcGIS. Misalnya jarak tertentu terhadap lokasi pusat polusi (suara, udara, tanah, bau, dll). Kebetulan saya adanya untuk wilayah kota bekasi. Buka shapefile peta lokasi yang akan kita buat jaraknya. Cara terbaik buat orang awam atau pelupa seperti saya adalah dengan search lewat windowssearch (Ctrl-F).

Cari “distance” di kolom search yang akan memunculkan seluruh toolbox yang berhubungan dengan jarak. Pilih euclidean distance yang artinya metoda yang dipakai adalah jarak euclidean yaitu jarak geometris antara satu titik dengan titik lainnya. Emang ada jarak yg lain? ya ada banyak, mahalanobis, manhattan, dll atau juga istilah jarak ketika sesorang bilang ” sebaiknya kita jaga jarak” ..

Masukan sumber lokasi, beri nama target shapefile dan lanjut dengan mengisi environment. Kenapa harus masuk ke environment? Alasannya bisa liat di tulisan sebelumnya (sorry bhs inggris). Masuk environment dst … (lihat link itu), hasilnya adalah seperti ini.

Untuk apa sih itu? Ya untuk pemodelan. Setelah direclasify kemudian di overlay dengan faktor-faktor lain yang menentukan kelayakan suatu lokasi, misalnya perumahan.

Mengenal ArcCatalog

Salah satu keunggulan ArcGIS adalah pemodelan dan spatial analysisnya. Software yang harga lisensinya puluhan ribu dollar ini terus mengembangkan diri dengan versi-versi terbarunya. Sepertinya perorangan tidak efektif jika membeli lisensi sendiri, khusus pelajar biasanya numpang di kampus masing-masing yang sudah membeli lisensi. Gambar berikut merupakan contoh pembuatan model yang jika dirunning akan melakukan proses analisa spasial.

Perhatikan elips yang berwarna biru merupakan hasil proses dari segiempat (reclassify, raster to polygon dan weighted overlay). Di sini bobot kita isi dengan mengklik ganda proses weighted overlay, tetapi tidak bisa dirunning karena target sudah terisi oleh proses sebelumnya (lihat cara menghitung bobot dengan AHP). Nah, disitulah peranan arc Catalog, kita dapat merename file overlay dengan yg lain, atau bahkan mendelete-nya jika mau. Buka Arc Catalog dengan menekan simbol atau di menuwindowsCatalog.

Sebenarnya prinsipnya sama dengan folder/file explorer, tapi di sini lebih praktis menurut saya, karena hanya cukup membuka satu aplikasi di saat yang sama. Tetapi jika ingin mendelete lewat folder juga ga masalah, hanya saja repot karena ada tujuh file yang harus dihapus (*.dbf, *.shx, *.prj, *.sbn, *.shp, *.shp.xml, dan *.sbx), sementara lewat arc catalog hanya sekali klik.

Membuat Kuesioner di Google Form

Saat ini survey lewat online banyak dilakukan oleh para periset karena kemudahannya dibanding lewat paper-based. Bahkan teknik Delphi yang melakukan kuesioner berulang, bisa juga lewat mekanisme online atau email (Skumolski et al, 2007), juga metode Analytic Hierarchy Process (AHP) di tulisan yang lalu. Saat ini, aplikasi kuesioner yang terkenal adalah google form yang dapat Anda akses di tautan berikut ini. Anda harus login google terlebih dahulu, karena fasilitas form ini masuk dalam lingkungan google docs.

Di sini saya akan membuat kuesioner untuk menentukan kompatibilitas dan dependensi (ketergantungan) antara satu tipe lahan dengan tipe lahan lainnya. Misalnya tempat tinggal akan kompatible dengan rumah sakit, sekolah, dan lain-lain tetapi tidak dengan industri dan sejenisnya. Tekan tombol create new form.

Jika ingin membuat tulisan saja, misalnya judul atau penjelasan dapat dengan memilih Section Header. Berikutnya jika berupa multiple choice tinggal pilih jenis pertanyaannya. Jika tidak pilih yang sesuai.

Saya menggunakan Grid karena berupa skala dari berbagai pilihan. Terakhir, untuk mempermanis tampilan, Anda dapat memanfaatkan fasilitas Theme yang tersedia, berikut hasil yang saya buat.

Selamat mencoba kemudahan yang diberikan oleh Google, Oiya, hasilnya dapat Anda lihat berupa aplikasi online yang mirip Excel yang sepertinya harus diunduh dan dimodifikasi terlebih dahulu untuk diolah.

Mengolah Data dengan Metode Analtytic Hierarchy Process (AHP)

Dulu sempat mengambil mata kuliah Decision Support System (DSS) dan memperoleh materi khusus AHP dan sekarang ternyata “butuh lagi”. Ketika membuka lagi folder-folder lama dan ternyata masih ada. Sayang softwarenya tidak bisa diinstal di laptop saya karena versi yang sekarang windows 64 bit. Untung ada yang “share” program aplikasi tersebut di internet, ya sudah saya “pinjam”.

AHP biasanya dipergunakan untuk memilih pilihan yang tepat dari kriteria-kriteria tertentu. Tetapi disertasi saya hanya membutuhkan berapa bobot yang tepat untuk menentukan goal-nya nanti, tidak dengan AHP melainkan algoritma tertentu. Oke lah, saya sebar kuesioner ke beberapa responden yang mengerti masalah urban, lingkungan, atau optimasi pengalokasian lahan. Kuesioner dibuat dengan menggunakan google form.

Buka expert choice dilanjutkan dengan memberi nama project yang akan dibuat di software tersebut. AHP ini idenya dicetuskan oleh Saaty dan Vargas tahun 2000, silahkan unduh sendiri jurnalnya. Berikutnya adalah kita masukan variabel-variabel pendukung keputusan di menu edit (Ctrl-H).

Setelah variabel-variabelnya dimasukan, isi data hasil kuesioner ke expert choice untuk mengetahui berapa bobot yang diperoleh berdasarkan jawaban dari responden. Berikutnya adalah mengisi data dari hasil kuesioner yang disebar. Tekan simbol 3:1 untuk mengisi pairwise comparison.

Isi satu persatu dengan hati-hati karena excel hasil jawaban dari google form kurang rapi dan dikhawatirkan jawaban tertukar. Biasanya agar tidak tertukar saya mengurutkan variabel dan tiap pergantian variabel saya batasi dengan warna.

Pilih responden yang mengisi kuesionar dengan benar sesuai dengan formatnya. AHP melarang nilai konsistensi yang kurang dari 0.1. Konsistensi bisa saja terjadi jika banyak variabel yang terlibat. Maksud dari konsistensi adalah misal jika A > B dan B > C maka C > A tentu saja tidak konsisten, walaupun bisa saja terjadi (wanita berani dengan kucing, kucing berani dengan tikus, tetapi wanita takut dengan tikus, misalnya). Klik simbol ABC, maka kita akan menemukan skala, dan sebaiknya kuesioner menyesuaikan dengan skala ini.

Jadi jika responden menjawab very strong, maka kita pilih nilai 7, equal nilainya satu, dan seterusnya. Jawab untuk satu responden hingga menghasilkan skor di bawah ini misalnya.

residential

Perhatikan konsistensinya lebih besar dari 0.1, tetapi jangan khawatir, ini masih responden pertama, kita masukan responden yang lainnya. Tetapi dicatat saja, jika konsistensi akhir di atas 0.1 maka responden ini menjadi kandidat untuk tidak diikutsertakan. Jangan lupa, arah skornya ke kanan apa ke kiri (tulisan angka BERWARNA MERAH atau HITAM), karena salah geser, ke arah lawannya. Lanjutkan hingga seluruh responden dimasukan. Klik simbol participant terlebih dahulu (gambar dua orang) di bagian menu, tambahkan berapa responden yang akan dimasukan ke expert choice.

Pilih participant yang akan dimasukan skor hasil kuesionernya. Pilih P2 di bagian menu participant. Lanjutkan dengan mengisi data seperti langkah sebelumnya. Untuk responden kedua, nilai agak mendingan (konsistensi 0.17).

residential

Combine data Anda baik (both data and judgment) untuk menghasilkan total bobot seperti gambar di atas. Dan coba jangan sampai inconsistency di atas 0.1, jika lebih buang yang scor inconsistency-nya buruk (tapi jangan utak-atik data ya, karena melanggar prinsip riset ilmiah – namanya fabrikasi). Karena Expert choice, maka tidak perlu data sampel yang banyak, tetapi yang mengisi adalah pakar di bidangnya.

Prediksi dengan Jaringan Syaraf Tiruan (Dasar-dasar)

Jaringan Syaraf Tiruan (JST) merupakan metode komputasi yang meniru perilaku kerja otak makhluk hidup dalam merespon masukan. Dengan data berupa variabel-variabel masukan, JST memproses kemudian menghasilkan output tertentu sesuai dengan proses pembelajaran sebelumnya. JST telah banyak diterapkan di berbagai bidang antara lain:  kedokteran, keuangan, sistem kontrol, data mining, dan lain-lain. Lalu muncul pertanyaan, apakah bisa juga digunakan untuk prediksi?

Secara filosofis karena JST adalah usaha untuk meniru otak, maka tentu saja diharapkan dapat digunakan untuk prediksi karena otak kita juga bisa memprediksi sesuatu kan? Situs yang cukup baik menurut saya dalam menjelaskan peramalan dengan JST adalah berikut ini. Atau berikut penjelasannya bagi yang malas baca tulisan panjang ditambah bahasa Inggris pula.

Sebelumnya kita bahas terlebih dahulu JST yang tidak digunakan untuk meramal (forecast), misalnya penentuan harga baru berdasarkan jumlah penjualan dan pesanan. Jika penjualan meningkat dan pesanan meningkat sekian, maka harga baru naik sekian. Jika penjualan menurun dan pesanan menurun sekian maka harga baru turun sekian. Jadi JST akan menerima masukan jumlah penjualan periode tertentu dan berapa pesanan baru, maka JST akan menyarankan untuk menaikan atau menurunkan harga dengan prosentase tertentu berdasarkan informasi data yang lalu. Jadi jika perusahaan tersebut ditinggal oleh manajer pemasaran karena gaji kecil, ga dapet THR, ga dihargai, dll, manajer baru tinggal memakai data lama untuk mengambil keputusan ke depan.

Sementara itu peramalan menggunakan data lama sebagai variabel masukan, biasanya periodik, perbulan atau pertahun, yang tentu saja banyak (tidak hanya satu tahun/bulan). Untuk kasus penentuan harga barang, JST bisa digunakan untuk meramalkan kenaikan harga di masa yang akan datang. Termasuk variabel-variabel yang sebelumnya jadi masukan juga bisa diramal untuk ikut andil memprediksi yang dikenal dengan istilah variabel intervensi (intervening). Berikut satu ilustrasi yang cukup baik dari referensi yang disebutkan di awal.

Jika diperhatikan ada lima input untuk memprediksi satu keluaran. Tentu saja jumlah input harus tetap, jika ketika pelatihan ada lima tahun sebelumnya untuk memprediksi, maka JST akan error jika hanya empat atau tiga masukan yang tersedia. Salah satu kehebatan JST dibanding regressi yang lain adalah dengan mudah dapat ditambah variabel intervensi seperti gambar berikut. Kalau di kasus contoh sebelumnya misalnya jumlah penjualan dan pesanan baru yang masuk.

Disebutkan bahwa jumlah variabel intervensi (intervention indicator) jangan terlalu banyak karena akan mengganggu masukan yang lain yang utama (data history periode yang lampau). Untuk penerepannya dapat Anda lihat di postingan saya yang lain. Untuk yang lagi skripsi atau tesis tentang peramalan, tetap semangat !!!

Referensi:

JST, FIS, atau ANFIS?

Berikut kritik dan saran dari pembaca buku data mining dengan matlab, terutama di bab 3 (halaman 49) dan bab 4 (halaman 74) yang membahas mengenai Adaptive Neuro-Fuzzy Inference System (ANFIS) dan Jaringan Syaraf Tiruan (JST). Sebenarnya buku ini kelanjutan dari buku sebelumnya tentang soft computing, jadi beberapa bagian memang ada yang sama, terutama JST dan ANFIS yang berbasis machine learning. Maksudnya dimodif sedikit supaya beda sama yang dulu malah ada yang lupa diganti.

Di kode di atas halaman 49, harusnya tm bukan keuangan. Variabel tm sendiri maksudnya singkatan dari tingkat kemiskinan agar makin besar nilai variabel ini tm makin besar pula, maksudnya makin miskin agar untuk menjumlahkan nanti jadi besar (IPK besar TM juga besar) yang berpeluang mendapat beasiswa. Walaupun bisa saja dirancang dengan tk, tingkat kekayaan, makin besar makin kaya, tetapi walaupun bisa berjalan, bagi programmer yang ingin “testing”, logic error sedikit ribet. O iya, logic error berbeda dengan syntax error (akan diberitahu bahwa baris sekian ada kesalahan) karena sistem berjalan tetapi tidak sesuai dengan kenyataan, lebih berbahaya.

Berikutnya juga di halaman 74 ada beberapa bagian yang tidak saya tulis kodenya karena GUI bisa menggunakan GUI yang lain (FIS atau ANFIS). Memang harusnya buku itu disertai CD untuk kode program agar tidak perlu “latihan mengetik sepuluh jari” :D. Tetapi saya berikan di sini kode sumber untuk satu GUI yang berisi Decision Support System dengan tiga metode tersebut. Download dulu kodenya.

Ekstrak di satu folder, kemudian Matlab arahkan current directory-nya ke folder tersebut lalu jalankan dengan mengetik nama folder yang berekstensi .m di command window. Untuk melihat kodenya ketik edit disertai nama file berekstensi .m tersebut. Oiya, sesuaikan huruf besar dan huruf kecilnya karena Matlab case sensitive.

Tentu saja kalau data mining jumlah datanya ya tidak hanya segelintir seperti contoh (dengan excel), apalagi big data trend-nya sudah mulai, excel tentu saja tidak sanggup mengolah data hingga jutaan record. Buku berikutnya sudah sampai ke penerbit tentang data mining tetapi fokus ke penanganan Matlab untuk sistem basis data (database management system – DBMS) dengan Microsoft Access (sebagai perwakilan desktop DBMS) dan MySQL (perwakilan web-based) dengan bantuan ODBC.

Sustainable Development

Istilah sustainable development belakangan ini sering muncul setelah isu global warming sepertinya menjadi kenyataan. Istilah ini sebenarnya sudah muncul lama ketika munculnya World Commission on Environment and Development (dikenal dengan istilah Brundtland Commission) yang menerbitkan laporannya berjudul “Our Common Future (masa depan kita)” pada tahun 1987 (dikenal dengan istilah WCED 1987) dan memunculkan definisi terkenal dari sustainable development yaitu “development that meets the needs of the present without compromising the ability of future generations to meet their own needs (perkembangan yang memenuhi kebutuhan saat ini tanpa mengurangi kemampuan generasi yang akan datang memenuhi kebutuhannya)” (Steiner, 2008, Leitmann, 1999, Curwell, 2005).

Definisi tersebut ketika pertama kali membaca sangat membingungkan bagi saya dan belum begitu jelas. Ternyata bukan saya saja, ketika definisi tersebut dicetuskan, banyak ketidaksetujuan dari saintis yang menekuni bidang urban/city planning karena memang saat itu masih banyak yang beranggapan bahwa kota atau daerah urban adalah musuh dari lingkungan (Curwell, 2005,p.22). Menghabiskan banyak sumber daya, membuang banyak limbah, merusak lingkungan, dan tuduhan-tuduhan yang terelakan lainnya. Memang waktu itu komisi dikuasai oleh para pakar lingkungan yang dunia terpolarisasi, yang satu berusaha memakmurkan desa (rural) dan satunya lagi mengatasi masalah-masalah daerah urban (city). Akhirnya saya iseng-iseng ke perpustakaan, maklum orang yang sempat 6 tahun kuliah mesin dan dua tahun kuliah IT, mana ngerti masalah seperti itu. Akhirnya dapatlah dua buku yang habis saya lahap dalam dua hari.

Akhirnya muncul konverensi di Rio de Jeneiro Brazil tahun 1992, yang dikenal dengan Earth Summit (UNCED 1992). Dimunculkanlah istilah Agenda 21 “Policy plan for environment and sustainable development in the 21st Century”. Jadi 21 itu ternyata maknanya abad 21. Tetapi tetap saja kritik tetap saja bermunculan (ternyata tidak hanya ke Jokowi saja kritik). Kritiknya adalah Agenda 21 terlalu berfokus pada manusia (Curwell, 2005).

Ok, lama-lama juga paham. Tadinya saya fikir sustainable development itu suatu wilayah harus mampu mensuplai sendiri kebutuhannya baik pangan (dengan agriculture), energi (pembangkit listrik), dan membuang/mengolalah sampai yang dihasilkan dari proses kesehariannya (dibakar, diolah, atau dijadikan pupuk). Tetapi, kian lama, dan diperkirakan di tahun 2050, seluruh bagian di dunia 80% adalah kota atau daerah urban. Maka mau tidak mau perhatian utama haru tertuju ke daerah perkotaan, disamping memang kebanyakan muncul masalah di sana, tetapi kota adalah tempat dimana perekonomian, pendidikan, dan pengambil keputusan berada sehingga harus diberdayakan dengan baik. Jadi konsep urban tidak hanya dibatasi secara geografis di daerah urban saja, melainkan daerah pinggirannya baik rural maupun peri-urban. Misal Jakarta, tentu saja tidak bisa menghasilkan beras, buah dan sayur-sayuran sendiri, melainkan harus menjamin pasokannya dari daerah sekitar. Sampah harus diatasi, jangan sampai laju angkutan ke TPA bantar gebang terganggu, dan lain-lain. Singapura misalnya, masalah polusi, air bersih, energi dan sebagainya, untuk mencapai kondisi sustainable mau tidak mau harus menekan polusi, memiliki kilang minyak (yang katanya lebih banyak dari Indonesia), menjaga suplai air bersih dari Malaysia, dan lain-lain yang dengan teknik terkenalnya, yaitu fine policy (kebijakan denda berat). Seperti jantung di tubuh kita, agar bisa sustainable maka pasokan makanan dari darah harus terjamin, pengeluaran kotoran ke ginjal lewat pembuluh balik dan suplai oksigen dari paru-paru lewat darah juga harus terjaga. Gituuuu …

NB: Oiya, ada istilah Urban Oktober. Dirayakan tiap senin pertama bulan Oktober, tahun ini bertema public space for all, selengkapnya lihat situs ini.

Land Price Map

There is a transition in land tax in Indonesia from tax department to local district. Land prices in Indonesia called NJOP which mean selling point of tax payer of his/her building. There were many problems with the accuracy of NJOP. The value usually below the real value based on the selling transaction. When NJOP is handled by local government, the situation still the same since the local government human resources is not sufficient.

In order to fix this situation, the government tries to make a relation with MAPPI, the organization of price estimator in Indonesia, to get the near exact value of NJOP. The nominal may be do not accurate for NJOP but for whole region, the comparison value may be more accuracy. For example is land price in Bekasi City.

We have the prediction NJOP for every region in bekasi city. After we create the map, we try to make a presentation about NJOP comparison for every region in sub-district. Right click on the shapefile that we already have and come to Symbology in layer properties.

There are many choices for the quantities, for example graduated colors. After you choose it, you have to select the value. I already have land prices, so I chose it. Click Apply, you will get the land price map below.

Don’t worry, the land price in Bekasi is still low .. but the yellow area near the Bantar Gebang .. final garbage location :).

Global Variable in Matlab

I still learn Matlab code, and always finding some problems related to script creation. This time I want to share about what in Matlab called “global variable”. This kind of variable at the first time did not attractive to me because I did not find the usefulness of it. Now I understand the important of understanding the global variable.

I have created some algorithms such as genetic algorithms for my dissertation. When I try to create the function having many variables, I always been annoyed with an error “undefined variable …” and I revised the code with that variable included. But the declaration seems strange to me, like this.

So, I try to solve that problem by searching in the internet. I found that I have to use global variable that used everytime when some function called the variable. Explanation in web officially from mathworks is here. For everyone who like video in youtube, this problem is explained clearly here. Now I try to fix my function using global variables, and I do not have to delcare many variables in my function.

Let’s we try some simple function. We have to create main function and other function to calculate something from main function. For example we name the main function “energy” that called other function to calculate the internal energy “calc”. Type in the command window >> edit calc to create calc.m function. The message will be opened:

Just click “Yes” because it only informed that calc.m does not exist. But becarefull if the message does not shows to us. It means the name of our function has been used in Matlab, so we have to change to other names.

Now in the same way, create new m-file for main function with the name e.g “main”. Make sure your m-file name is not Matlab built-in functions.

Now try to run the m-file by clicking the run icon (green triangle). There is an error message:

You have to include the variable c in your calc function or you have to declare that variable in your main file as global variable. Add c as our global variable in the main function. Revise your main and calc file to include global variable c:

And try to run again, you have to get the result without error message (don’t forget to save your m-file everytime you edit it). No need to include c in calc variable function anymore 🙂.

  • E =
  • 1.8000e+018
  • ans =
  • 1.8000e+018

NOTE: future of Matlab said that … Ok, I paste the warning:

Warning: The value of local variables may have been changed to match the
globals.  Future versions of MATLAB will require that you
declare
a variable to be global before you use that variable.

So, we have to declare global c first before declare c=300000000;