Business Intelligence

Membicarakan Business Intelligence (BI), berarti membicarakan penerapan teknologi informasi untuk meningkatkan produktivitas dan daya saing sebuah organisasi. Ada salah satu makalah yang bisa diunduh gratis untuk merunut dasar-dasar istilah andalan bidang Sistem Informasi (SI) ini. Selain itu silahkan baca artikel-artikel referensi yang disitasi oleh artikel jenis review tersebut.

Singkat kata, BI memanfaatkan metode-metode baik yang lawas yang terdapat dalam Sistem Pengambil Keputusan (Decesion Support System) dengan teknologi pendukungnya seperti Data Warehouse, Machine Learning, maupun teknologi terkini yang masuk Industri 4.0 seperti Big Data, AI, dan lainya. Bagan berikut bisa dijadikan patokan framework BI:

Sebelumnya harus bisa dibedakan Online Transaction Processing (OLTP) yang bertanggung jawab terhadap data transaksi dengan Online Analytical Processing (OLAP) untuk analisis yang dipakai pada framework BI. Data Mart sangat penting untuk mendukung pengambil keputusan. Data ini memang ekstrak dari data total yang bersumber dari Data Warehouse yang menggunakan istilah Extract Transform Load (ETL) yang sumbernya bisa dari dalam dan bisa juga dari luar (internet).

Jadi BI memang luas dan melibatkan teknologi-teknologi sehingga beberapa institusi sudah menjadikan BI sebagai jurusan baru yang terpisah dari jurusan Teknik Informatika, Teknologi Informasi, maupun Sistem Informasi. Yuk, yang tertarik dengan bidang ini segera mempelajari informasi terkininya lewat jurnal-jurnal.

Merekam dan Memainkan Suara dengan Matlab (Versi Lama dan Baru)

Banyak aplikasi cerdas dengan Matlab yang membutuhkan pengolahan sinyal suara. Sebelum mengolah, salah satu fungsi penting adalah menangkap suara yang akan diolah. Postingan berikut ini membahas fungsi-fungsi yang diperlukan untuk menangkap suara, termasuk juga membunyikan hasil tangkapan suara tersebut (untuk menguji apakah fungsi perekaman berhasil).

Versi Lama

Matlab versi 2008 (versi 7.7) sedikit berbeda dengan versi terbaru. Versi lama ini menggunakan fungsi wavrecord, wavplay, dan wavwrite yang berfungsi berturut-turut untuk merekam, memainkan dan menulis. Kode singkat berikut ini bermaksud merekam, menyimpan dan memainkan suara. Tentu saja diperlukan fasilitas mic dan speaker (biasanya sudah ada pada setiap laptop).

  • clear all;
  • fs=8000;
  • y= wavrecord(5.0*fs, fs, ‘double’); %merekam suara
  • wavwrite(y,fs,‘aiueo.wav’);        %simpan rekaman ke hardisk
  • wavplay(y,fs);                %mainkan hasil rekaman
  • figure,plot(y);                %sinyal hasil rekaman di plot

Versi 2013 ke atas (Baru)

Sebenarnya kode sebelumnya bisa digunakan, hanya saja ada pesan (warning) dari Matlab bahwa wavrecord dan wavplay sebaiknya diganti dengan audiorecorder dan audioplayer untuk merekam dan memainkan.

Ganti kode sebelumnya dengan fungsi yang terbaru berikut ini, lihat referensinya di link resminya. Disini frekuensi sampling dan parameter lainnya standar 8000 Hz dan 8 bit.

  • % Record your voice for 5 seconds.
  • recObj = audiorecorder;
  • disp(‘Start speaking.’)
  • recordblocking(recObj, 5);
  • disp(‘End of Recording.’);
  • % Play back the recording.
  • play(recObj);
  • % Store data in double-precision array.
  • myRecording = getaudiodata(recObj);
  • % Plot the waveform.
  • plot(myRecording);

Jika fungsi menangkap bisa dijalankan, maka untuk mengolah lanjut dapat dilakukan dengan mudah. Banyak terapan-terapan yang menggunakan sinyal suara, antara lain:

  • Pengenalan suara
  • Deteksi kelainan detak jantung
  • Deteksi kerusakan mesin, dll

Suara yang terekam dapat dilihat grafiknya seperti di bawah ini. Sekian, semoga postingan singkat ini bermanfaat.

Penjelasan Sederhana Jaringan Syaraf Tiruan – Kasus Logika OR

Dulu sempat ambil mata kuliah “Artificial Intelligent & Neuro-Fuzzy” dengan buku referensi yang digunakan adalah “Neural Network Design” karangan Hagan. Materinya cukup berat karena satu buku tersebut harus dikuasai dalam setengah semester (sampai UTS/Midterm Examination). Selain itu buku tersebut sepertinya ditujukan untuk level advance (lanjut). Postingan ini bermaksud menjelaskan secara sederhana prinsip kerja jaringan syaraf tiruan. Kasus yang dijadikan contoh adalah bagaimana jaringan syaraf tiruan (JST) sederhana mampu menjalankan Logika OR.

Gambar berikut adalah JST dengan jumlah neuron hanya satu buah. Neuron adalah sel di otak yang memiliki kemampuan menyimpan dan mentransfer informasi. Disimpan dalam bentuk bobot dan bias serta mentransfer dengan fungsi aktivasi.

W1 dan W2 adalah bobot yang mengalikan tiap input yang akan diteruskan ke neuron lainnya. Sementara itu b adalah bias yang menjumlahkan total masukan yang telah dikalikan bobot. Pada gambar di atas fungsi aktivasi belum dilibatkan. Persamaan matematis gambar di atas adalah sebagai berikut:

Dengan cara training, misal backpropagation, W dan b dapat ditemukan. Tetapi sebenarnya dengan intuisi kita dapat menemukan bahwa W1 dan W2 berharga masing-masing “1” dan biasnya “nol”. Kita coba memasukan ke persamaan y di atas diperoleh akurasi yang baik hanya saja di bagian akhir, yaitu ketika masukan X1 dan X2 kedua-duanya “1” yang seharusnya keluaran y = 1 di sini berharga “2”. Oleh karena itu diperlukan fungsi aktivasi seperti gambar di bawah ini.

Di antara ketiga fungsi aktivasi, yaitu tangen sigmoid, tangga, dan purelin, yang cocok dengan kasus kita adalah tangen sigmoid. Di sini tangga bisa diterapkan, tetapi agak sulit jika digunakan untuk backpropagation yang membutuhkan diferensiasi. Tangen sigmoid (juga log sigmoid) jika diturunkan berharga -1, mudah untuk dikalkulasi saat proses pembobotan ulang (rambat balik dari target ke input). Sementara purelin tidak cocok karena jika input 2 keluarnya akan 2 juga (jika y=x persamaan purelin-nya). Dengan menambah fungsi aktivasi sebelum ke output, nilai 2 dengan fungsi tangen sigmoid bernilai 1 sehingga sesuai dengan table kebenaran logika OR. Gambar di atas sebenarnya cuplikan video yang saya upload di youtube berikut ini:

 

 

 

Kuesioner (Questionnaire) untuk AHP

Analytic Hierarchy Process (AHP) merupakan teknik untuk membandingkan satu pilihan dengan pilihan lainnya. Sangat bermanfaat bagi pengambil keputusan. Vendor terkenal yang serius mengenai hal ini adalah expert choice, yang juga menyediakan software berbayarnya. Lihat post sebelumnya. Postingan kali ini mencoba sharing tentang kuesionar yang diperlukan untuk mengisi data sebelum diolah oleh AHP yang dicetuskan pertama kali oleh L. Saaty (Saaty, 2008).

Pairwise Comparison

Terus terang saya malah belum pernah mendapatkan kuesioner dalam bahasa Indonesia. Dalam jurnal-jurnal internasional, yang sering disebutkan adalah pairwise comparison survey, yang isinya membandingkan antara satu pilihan dengan pilihan lainnya.

Survey dapat dilakukan dalam bentuk lembaran kertas ataupun online. Biasanya menggunakan Google Form, dengan tampilan yang menarik, serta mudah untuk direkap via Ms Excel. Jumlah koresponden karena ini membutuhkan pakar (expert) maka tidak perlu banyak-banyak, dan bisa di bawah sepuluh orang.

Memulai

Ada baiknya menjelaskan terlebih dahulu secara singkat masalah yang akan disurvey. Jangan lupa data tentang koresponden sangat penting untuk diketahui. Berikut tampilan awalnya.

Bagian Inti

AHP membutuhkan perbandingan satu pilihan (choice) dengan lainnya. Ada enam pilihan dengan tingkat paling rendah hingga tinggi, berturut-turut: less, equal, moderate, strong, very strong, dan extreme. Berikut contohnya:

AHP mengharuskan kondisi dimana tingkat konsistensi harus kurang dari 0.1. Ini penting untuk menjaga keanehan-keanehan dalam perbandingan. Misal tikus takut kucing, kucing takut dengan seorang ibu, dan seorang ibu takut tikus. Pada contoh di atas, Physical Health akan dibandingkan dengan Psychological Condition, Social Relationships, Environment, Economic Condition & Development, dan Access to Facilities & Services. Berikut contoh survey yang pernah saya sebar.

Minta Contoh Penulis Jurnal

Terkadang ada baiknya meminta contoh kuesioner dari seorang penulis jurnal, baik nasional maupun internasional. Walau terkadang tidak dibalas, tetapi banyak juga yang membalas dan memberikan respon. Setidaknya jika tidak memberikan sample dia menjelaskan apa isinya saja. Contoh di atas saya peroleh ketika meminta dari jurnal internasional ini (Bhatti, Tripathi, Nitivattananon, Rana, & Mozumder, 2015). Silahkan baca sumber referensi tentang AHP dari Springer ini.

Referensi:

Bhatti, S. S., Tripathi, N. K., Nitivattananon, V., Rana, I. A., & Mozumder, C. (2015). A multi-scale modeling approach for simulating urbanization in a metropolitan region. Habitat International, 50, 354–365. http://doi.org/10.1016/j.habitatint.2015.09.005

Saaty, T. L. (2008). Decision making with the analytic hierarchy process. International Journal of Services Sciences, 1(1), 83. http://doi.org/10.1504/IJSSCI.2008.017590

Link dari Google

 

Klasifikasi, Pengklusteran dan Optimasi

Bahasa merupakan pelajaran pertama tiap manusia. Untuk mempelajari komputasi pun pertama-tama membutuhkan bahasa. Sebagai contoh adalah judul di atas yang terdiri dari tiga kata: klasifikasi (classification), pengklusteran (clustering) dan optimasi (optimization). Postingan ringan ini membahas secara gampang tiga kata di atas.

Klasifikasi

Sesuai dengan arti katanya, klasifikasi berarti memilah obyek tertentu ke dalam kelas-kelas yang sesuai. Komponen utama dari klasifikasi adalah classifier yang artinya pengklasifikasi. Jika tertarik dengan bidang ini maka akan bermain pada bagian pengklasifikasi ini. Jika menggunakan jaringan syaraf tiruan (JST) maka akan meramu bobot, bias, dan layer pada JST agar mampu mengklasifikasi suatu obyek. Jika menggunakan Support Vector Machine (SVM) meramu persamaan pemisah antara dua kelas atau banyak kelas (multi-class).
Sepertinya tidak ada masalah untuk konsep ini. Masalah muncul ketika ada konsep baru, misalnya pengklusteran.

Pengklusteran

Manusia itu makin belajar makin bertambah merasa bodoh, karena makin banyak pertanyaan yang muncul. Ketika klasifikasi tidak ada masalah dalam memahami maksudnya, munculnya konsep pengklusteran membuat pertanyaan baru di kepala, apa itu? Paling gampang memahami arti dari kluster, yaitu satu kelompok dalam area tertutup, zona, atau istilah lain yang menggambarkan kelompok yang biasanya memiliki kesamaan. Pengklusteran berarti mengelompokan beberapa obyek berdasarkan kesamaannya. Jadi harus ada obyeknya dulu, karena kalau tidak ada apa yang mau dikelompokan?

Lalu bedanya dengan klasifikasi? Penjelasan gampangnya adalah klasifikasi memisahkan berdasarkan kelas-kelas yang sudah didefinisikan dengan jelas sementara pengklusteran kelompok yang akan dipisahkan tidak didefinisikan lebih dahulu. Bisa juga dengan melatih berdasarkan data yang sudah ada kelasnya (target/label nya). Misal untuk kasus penjurusan, kita bisa saja mengklasifikasikan siswa masuk IPA jika nilai IPA nya lebih baik dari IPS dan sebaliknya untuk jurusan IPS. Sementara pengklusteran kita biarkan sistem memisahkan sekelompok siswa menjadi dua kelompok yaitu kelompok IPA dan IPS. Masalah muncul ketika mengklasifikasikan berdasarkan nilai IPA dan IPS-nya, jika guru IPAnya “Killer” sementara yg guru IPS “baik hati”, maka dengan classifier itu tidak akan ada yang masuk jurusan IPA. Sementara pengklusteran akan memisahkan siswa-siswa itu menjadi dua kelompok. Bisa saja yang nilai IPA nya misalnya 6 masuk ke kelas IPA karena nilai 6 itu udah top di sekolah itu.

Optimasi

Nah, apalagi ini? Kembali lagi sesuai dengan arti katanya optimasi berarti mencari nilai optimal. Optimal tentu saja tidak harus maksimal/minimal, apalagi ketika faktor-faktor yang ingin dicari nilai optimalnya banyak, atau dikenal dengan istilah multiobjective. Apakah bisa untuk klasifikasi? Ya paling hanya mengklasifikasikan optimal dan tidak optimal saja. Biasanya optimasi digunakan untuk mengoptimalkan classifier dalam mengklasifikasi, misal untuk JST adalah komposisi neuron, layer, dan paramter-parameter lainnya. Atau gampangnya, kalau klasifikasi mengklasifikasikan siswa-siswi ganteng dan cantik, optimasi mencari yang ter-ganteng dan ter-cantik. Sederhana bukan? Ternyata tidak juga. Banyak orang baik di negara kita, tetapi mencari beberapa yang terbaik saja ternyata malah “hang” sistemnya.

Metode Menentukan Bobot pada Multi-Criteria Selain Pairwise Comparison (AHP)

Untuk mencari lokasi yang cocok untuk penggunaan lahan tertentu, optimasi rancangan, dan sejenisnya ada empat metode yang terkenal: ranking, rating, trade-off, dan pairwise. Cara penggunaannya dapat dilihat pada artikel berikut ini, dalam jurnal teknik sipil.

Di bagian kesimpulan, ketika faktor biaya, waktu dan kemudahan penggunaan menjadi perhatian maka metode ranking, rating, dan trade-off layak untuk digunakan. Tetapi ketika faktor akurasi dan fondasi teoritis yang menjadi perhatian maka metode pairwise yang biasanya dengan analytic hierarchy process (AHP) digunakan, dengan software yang terkenalnya “expert choice”.

Kelemahan multi-criteria dalam menentukan kesesuaian (suitability) terhadap suatu hal adalah sangat bergantung dengan penentuan bobot seperti diutarakan dalam presentasi oleh ESRI (vendor dari ArcGIS) berikut ini:

Semoga postingan ini bisa bermanfaat, terutama saya sendiri baru saja menjawab pertanyaan mengapa menggunakan metode pairwise tidak dengan metode yang lainnya.

Referensi:

http://www.iaeme.com/MasterAdmin/UploadFolder/IJCIET_06_11_012-2/IJCIET_06_11_012-2.pdf

https://maps.uky.edu/esri-uc/esri_uc_2k12/Files/130.pdf

Menghitung Keluaran Fuzzy

Jika sebelumnya telah dibahas perhitungan keluaran JST, sekarang akan kita coba bahas perhitungan keluaran Fuzzy, atau sering disebut Fuzzy Inference System (FIS). Mungkin soal ujian akhir mata kuliah AI & Neuro-Fuzzy berikut ini bisa dijadikan pelajaran bagaimana menghitung keluaran FIS. Terutama bagaimana menghitung besar fungsi keanggotaannya.

SOAL:

In a simple fuzzy-servo control of a DC motor, only relative position error is used to calculate for the required relative average voltage of PWM signal from motor driver. Assume relative position error and relative average voltage of PWM signal, both varying from –1 to 1, are classified into 5 levels; Negative Big (NB), Negative Small (NS), Zero (Z), Positive Small (PS), and Positive Big (PB), when membership functions are shown in the below figures.

Tentukan Relative Average Voltage (RAV) ketika relative position error (RPE) menjadi 0.2, asumsikan fuzzy inference rule mengikuti hubungan berikut ini:

Relative Position Error         NB NS Z PS PB

Relative Average Voltage     PB PS Z NS NB

JAWAB:

Berdasarkan soal, relative position error yang 0.2 dijumlahkan secara grafis dan dihubungkan dengan rule yang disebutkan dalam soal.

Gambar di bagian atas, garis tebal 0.2 tidak memotong NB dan dengan demikian tidak ada nilai PB di sebelah kanan (menurut rule NB rpe= PB rav). Garis tebal 0.2 berikutnya memotong NS di titik vertikal lalu diarahkan ke grafik kanan membentuk luasan gambar PS yang diarsir (menurut rule NS rpe = PS rav). Dan diteruskan hingga fungsi keanggotaan RPE terakhir (paling kanan) yaitu PB.

Berikutnya dijumlah luasan RAV dari atas ke bawah membentuk gabungan bangun segitiga dan persegipanjang. Untuk menghitung luas dan titik berat perlu mengetahui luas tiap komponen serta titik berat dari bangun segitiga dan persegipanjang.

Hasilnya kira-kira sebagai berikut.

Titik Berat (Center of Gravity) berdasarkan rumus adalah ∑ (area x titik berat) / ∑ (area) akan menghasilkan titik berat itu sendiri. Cukup rumit juga menghitung manual, apalagi jika fungsi keanggotaannya bukan garis lurus melainkan gauss atau bell. Tetapi untuk prakteknya ya tidak dihitung manual. Gunakan saja fuzzy di Matlab untuk mengecek jawaban jika ingin berlatih. Bagaimana untuk rule yang memiliki operasi AND dan OR? Mudah saja, AND ambil yang terkecil, sementara OR ambil yang terbesar dari fungsi keanggotaan yang dioperasikan (AND atau OR).

Jadi lebih ribet menghitung Fuzzy dibanding JST menurut saya. Semoga bermanfaat.