Algoritma Genetika di Matlab 2008 lebih baik dari Matlab 2013

Setelah pada tulisan yang lalu saya membuktikan Neural Network di Matlab 2007 lebih baik dari Matlab 2008 (https://rahmadya.com/2013/06/27/matlab-2007-lebih-baik-dari-pada-matlab-2008/), kini terjadi lagi di Matlab 2008 dengan Matlab 2013, dimana untuk algoritma genetika, hasil matlab versi lama lebih baik dari matlab versi baru. Saya masih bingung apa penyebabnya.

Kejadiannya waktu itu rekan saya mengajak diskusi tentang optimasi kontroller orde satu dan orde dua dengan menggunakan algoritma genetika. Fungsi tujuan sudah dibuat, dengan variabel yang dibentuk adalah variabel laplace s, yang merupakan hal baru selama saya menggunakan algoritma genetika. Biasanya saya menggunakan variabel biasa, seperti waktu, jarak, dan sejenisnya. Untuk contoh lain penerapan GA bisa dilihat kasus pada GIS seperti tulisan saya sebelumnya (https://rahmadya.com/2013/11/12/algoritma-genetik-dengan-toolbox-matlab/).

Saya coba menggunakan matlab versi 2013 dengan toolbox algoritma genetikanya. Dengan memasukkan fungsi tujuan, konstrain, serta variabel lainnya seperti maksimum generation = 100, stall generation = 100, mutation function = gaussian, initial population range = [0;100], cross over function, intermediate dengan ratio = 0.8, serta mencentang output berupa best fitness dan best individual.

Setelah memasukan nama fitness function, jumlah variabel, bound (batas atas dan batas bawah) saya mulai menjalankan dengan menekan tombol “start”. Diperoleh hasil fitness terbaik sebesar 1.942 dengan x1 = 109.6 dan x2 = 3.92, seperti tampak pada gambar di bawah ini.

Dari hasil riset terdahulu yang kami baca ternyata hasil terbaiknya 1.838, mengapa bisa memperoleh nilai lebih buruk? Padahal dugaan saya, riset dilakukan pada tahun 2008, kemungkinan besar dia menggunakan matlab 2008 juga. Akhirnya karena penasaran, kami menggunakan matlab 2008b sesuai dengan perkiraan saya bahwa dia menggunakan matlab 2008 saat melakukan benchmarking.

Dengan memasukan variabel, fungsi tujuan, konstrain, dan parameter-parameter lain yang sama dengan matlab versi 2013 dan merujuk penelitian tahun 2008 tersebut, secara mengejutkan diperoleh hasil yang lebih baik seperti tampak pada gambar di bawah ini.

Tampak diperoleh hasil fitness value yang lebih baik (lebih kecil/minimum) sebesar 1.837 dengan x1 = 135.07 dan x2 = 4.65 yang sedikit lebih baik dari hasil penelitian sebelumnya. Akhirnya kejadian seperti kasus neural network sebelumnya terulang kembali. Sebagai tambahan, toolbox GA bisa digenerate menjadi script dengan menekan menu FileGenerate M-File – dilanjutkan dengan memberi nama. Maka akan dihasilkan script sebagai berikut.

 

Student Visa dan Masalah Pelik Lainnya

Untuk yang tertarik memperoleh beasiswa studi lanjut bisa menghubungi link khusus dosen dan staf administrasi di: http://beasiswa.dikti.go.id/web/ sedangkan untuk yang tidak punya nidn, bukan dosen, atau instansi lain bisa mencoba di sini: http://www.lpdp.depkeu.go.id/ atau bisa lewat beasiswa-beasiswa lainnya (kedubes-kedubes, kampus tujuan, USAID, dll) walaupun menurut sebagian besar info, kedua beasiswa itu (terutama biaya hidup) lebih besar dari beasiswa-beasiswa lainnya. Departemen agama untuk dosen-dosen UIN/IAIN ternyata ada juga dan sejak tulisan ini dibuat baru dua gelombang. Persyaratan berskala internasional seperti passport dan lain-lain, termasuk bahasa internasional sesuai tujuan (Inggris, Prancis, Jepang, Arab) mutlak diperlukan. Salah satu yang penting adalah Visa Pelajar yang diterbitkan oleh negara tempat kampus tujuan belajar calon penerima beasiswa.

a. Mengurus Student Visa

Pelajari atau bertanya kepada teman-teman yang sudah berangkat sepertinya menjadi keharusan, karena jika hanya browsing di internet, kasusnya mungkin berbeda, misalnya saya yang memilih Thailand sebagai negara tujuan akan berbeda dengan Jepang, Amerika Serikat, dan negara lainnya. Jepang, misalnya mengharuskan kita memiliki sejenis orang tua asuh, atau orang yang siap sebagai penanggung jawab kita di sana. Taiwan, lebih rumit lagi, karena tidak ada kedutaan besar taiwan di Indonesia, jadi harus lewat kantor dagangnya (di Jakarta, alamat lengkapnya bisa dicari di internet).

Untuk Thailand, butuh waktu kurang dari seminggu untuk membuat visa pelajar, dengan melampirkan paspor dan surat tanda diterima (LOA) dari kampus tujuan. Biaya, standar, sekitar hampir satu juta dan jangan lupa, beli dollar terlebih dahulu, karena tidak menerima uang rupiah, atau bisa juga beli ke satpam seperti yang saya lakukan, tetapi resikonya kursnya berbeda.

b. Keberangkatan

Siapkan segala hal yang diperlukan untuk berangkat seperti no booking, passpor dan berkas lainnya. Timbang dulu bawaan Anda karena excess baggage mahal banget, teman saya sampai biayanya seharga satu tiket. Dan jangan lupa ketika kita diminta menulis data saat di pesawat, isi dengan benar.

Jadi supaya ga perlu bongkar-bongkar tas yang udah masuk di kabin, siapkan alat tulis sendiri jika malas meminjam ke teman sebelah (kadang teman sebelah juga ga pegang alat tulis). Dulu saya kira itu hanya untuk perjalanan saja, ternyata itu melekat di passpor kita (biasanya disteples) dan tidak boleh hilang. Bagaimana jika hilang? Menurut informasi bagian imigrasi di kampus saya belajar, harus ke kantor polisi terdekat untuk laporan barang hilang.

Masalah yang perlu diperhatikan adalah Student Visa kita hanya berlaku sementara 90 hari sebelum bisa diperpanjang jadi satu tahun. Dan jika sudah satu tahun, kita tetap wajib lapor diri tiap maksimal 90 hari yang dihitung dari kedatangan kita di kantor imigrasi bandara, bukan dari awal kedatangan. Kebetulan saya tiap dua bulan pulang, jadi tidak perlu lapor diri karena otomatis tidak pernah mencapai batas maksimal. Nah teman saya yang tidak pernah pulang, ternyata ketahuan hampir lewat dua bulan dari 90 hari itu dan terancam dengan denda 2000 baht di imigrasi, atau jika ketahuan di bandara bisa kena 5000 baht, angka yang kalau dirupiahkan sekitar hampir 2 juta.

c. Lapor diri ke Kedutaan Besar RI

Ketika sampai di negara tujuan, jangan lupa langsung ke kedutaan besar RI di sana (minimal beberapa bulan) kecuali kalo tidak perlu kiriman dari DIKTI atau pemberi beasiswa yang berasal dari lingkungan depertement di Indonesia. Jangan heran kalau kita tidak disambut hangat oleh staff di sana karena memang staff diharuskan sedikit galak, penuh curiga, dan lain-lain, walau menurut tebakan saya di hati mereka gembira ada orang sebangsa yang berada di negara tersebut. Untuk yang Bankok bisa lihat tulisan saya sebelumnya: https://rahmadya.com/2013/10/02/lapor-diri-di-kedutaan-besar-republik-indonesia-kbri-bangkok/

Terakhir, berusahalah mempelajari bahasa tempat tujuan, karena saya sering ditantang oleh imigrasi di bandara dengan bahasa Thai, dan sepertinya mereka kecewa waktu saya tidak bisa jawab. O iya, banyak orang Indonesia yang setelah lulus menjadi pengajar di kampus Thailand dan beberapa sudah siap menjadi warga negara Thailand. Sebaiknya kita pulang dan membangun negara kita yang walau bagaimanapun keadaannya tetap tanah air kita.

Habis Update Connectify LAN dan Wireless LAN Error ..

Bermula dari update windows yang terpending, muncul masalah di connectify. Connectify adalah salah satu software yang fungsinya mirip tethering pada android yaitu sharing koneksi internet. Koneksi internet yang hanya bisa dilakukan lewat kabel, dengan software ini laprop kita dapat berfungsi sebagai hotspot. Tadinya mungkin connectify error karena harus update, ternyata ketika software tersebut saya update, malah koneksi jaringan saya error. Sempat terfikir apakah harware lan card error, ternyata setelah saya booting dengan ubuntu, jaringan ok, berarti hardware tidak bermasalah.

Untuk mengetahui dimana errornya, lakukan langkah sederhana dengan mengklik kanan computer dan pilih property. Tampak spesifikasi windows Anda, jumlah RAM, tipe 64 atau 32 bit, dan lain-lain. Di bagian kanan atas ada “device manager” yang berfungsi untuk mengetahui hardware yang ada pada komputer kita, termasuk hardware yang error tadi.

Network adapter saya, tadinya muncul tanda “!” seru yang berarti ada masalah. Saya sempat pinjam laptop teman untuk mendownload driver laptop saya (Thosiba Satellite M840). Setelah itu saya coba install dengan driver tersebut, tetapi gagal. Jika saya klik kanan pada network dan pilih “detect new hardwware” laptop mampu mendeteksi network card saya tetapi ketika install driver otomatis, muncul pesan kesalahan.

  1. Langkah Klasik, Restore System

Langkah andalan saya adalah restore system, dan biasanya berhasil, begitu saran dari mbah google. Tetapi sayangnya restore point saya tidak ada yang berhasil, padahal tiap kali restore membutuhkan waktu yang cukup lama sekitar 15 menit. Giliran selesai, ada pesan restore gagal.

  1. Langkah Modern, Driver Cleaning

Semalaman saya surfing di internet untuk mengobati masalah ini. Beberapa menyarankan driver cleaner, misalnya CCcleaner, Wintools.net, System Ninja, dan sejenisnya, tetapi frustasi juga karena mereka hanya memasarkan produk mereka, sementara driver tidak kunjung benar. Bahkan dari youtube ada yang kasusnya seperti saya, tetapi sampai selesai dia hanya menunjukkan errornya saja tidak ada penyelesaiannya, begitu pula ketika saya baca komentarnya hanya berisi saran2 sederhana seperti restore dan install ulang windows.

  1. Langkah Sesuai Teori, Safe Mode

Akhirnya, sesuai dengan basic dari sistem operasi pada window, dikenal istilah safe mode, dimana windows beroperasi dengan driver minimal. Langkah masuk ke save mode adalah dengan menekan F8 ketika selesai booting komputer/laptop Anda. Piliah Safe Mode. Tentu saja saat menjalankan ini, masih ada sanksi di otak saya, berhasil atau tidak. Tetapi logika saya mengatakan bahwa sebenarnya Windows mampu mendetek lan card, hanya saja ketika menginstall driver, seperti ada yang menghalangi (mungkin karena connectify atau update windows yang terpending, belum jelas juga).

Setelah masuk ke “Device Manager”, saya terkejut juga ketika merefresh dengan klik “Scan for hardware Changes” ternyata LAN berhasil terdeteksi. Tinggal dag dig dug .. setelah keluar dari safe mode dan ke mode normal, apakah terdeteksi juga. Dan ternyata , Alhamdulillah .. OK.

Akhirnya langkah pamungkas yaitu install ulang windows tidak perlu dijalankan. Semoga bermanfaat.

Tidak Bisa Receive File via Bluetooth di Windows 7

Ganti OS terkadang kita harus bisa beradaptasi dengan sistem yang baru. Salah satu yang terpenting adalah aspek komunikasi data dengan lingkungan sekitarnya baik kabel, device, maupun yang tanpa kabel, salah satunya adalah bluetooth. Komunikasi dengan bluetooth walaupun tidak secanggih wifi terkadang tetap wajib jika ingin berhubungan dengan perangkat lain seperti handphone, tablet, dan lain-lain.

Entah mengapa walaupun bluetooth sudah aktif, tetap saja ketika tablet atau ponsel mengirimkan data ke laptop lewat bluetooth selalu muncul gagal terkirim “sent failed”. Tetapi jika kirim data bisa, lewat klik kanan dan pilih send to bluetooth. Jawabannya ternyata sederhana, pada menu bluetooth di windows kita harus mengetik “receive file” terlebih dahulu sebelum alat lain mengirimkan file lewat mekanisme bluetooth.

Klik receive a File sebelum anda mengirimkan file kemudian muncul jendela baru dimana Windows siap menerima file. Lokasi penyimpanan dapat juga disetting sesuai dengan keinginan kita.

Mudah bukan, semoga sedikit bermanfaat.

Teknik Text Mining dengan Matlab

Hari ini adalah hari penghakiman untuk tugas project mata kuliah Decision Support Technology (DST). Kasus yang kami pilih adalah menentukan dari puluhan juta record berisi pengarang dan tulisannya dan kita diminta mencari nama-nama yang seharusnya digabung berdasarkan field-field yang ada yaitu affiliation, konference, judul, dan kata kunci.

Kami sekelompok sepakat menggunakan tools Java dengan postgresql, sementara saya tetap setia menggunakan Matlab dengan Microsoft Access sebagai sistem basis datanya. Rekan saya yang berasal dari Thailand dan Uzbekistan cukup mahir dalam memainkan Java. Untuk tahap pertama mereka sudah berhasil melakukan cleaning data. Pengarang yang namanya sama jika affiliation-nya sama maka dikategorikan dalam satu pengarang yang sama.

Saya bertugas mensuplai data similarity dari pengarang-pengarang itu. Teknik pertama dengan mencari nama yang sama persih, menghasilkan akurasi 60%. Jika nama sama dan dicek affiliation-nya mirip, akurasi meningkat menjadi 70%. Berikutnya teknik-teknik lain digunakan mulai dari nama singkatan dan nama belakang, misalnya rahmadya trias handayanto, dicari apakah ada yang mirip r. t. handayanto? Diperoleh akurasi 80%. Rekan saya menganjurkan teknik switching nama pertama dengan nama terakhir, jadi dicari rahmadya handayanto dengan handayanto rahmadya, apakah ditemukan? Namun akurasinya hanya naik 1 persen menjadi 81%.

Selepas kuliah ISDM, saya berkumpul kembali dan saya menunjukkan bahwa saya menemukan nama-nama yang sama dengan menanggalkan nama tengah. Jadi misalnya rahmadya trias handayanto, akan saya cari dengan r. handayanto, apakah ada atau tidak. Mereka langsung mengecek satu sample data yang saya berikan, dan mereka terkejut ternyata ada beberapa nama yang tidak ditulis nama tengahnya dan memiliki affiliasi yang sama. Dan kami terkejut ketika akurasi naik 3 persen jadi 84%.

Sebenarnya masih banyak cara lain, seperti yang disarankan oleh Dr. Paul, dosen kami, misalnya missing word, spelling of word (france and germany), serta nama cina yang bermarga di depan. Untuk melihat contoh bagaimana Matlab mendeteksi dapat dilihat di youtube ini:

Looking for a Similar Name in Text Mining with Matlab

Some names has first name, middle name, and last name. The last name is a family name, except some country like Chine. Many literatures for simplicity only show the last name with abbreviation to the first and middle ones. For example Rahmadya Trias Handayanto will be written as R. T. Handayanto or Handayanto, R. T. (see e.g in IEEE: http://ieeexplore.ieee.org/search/searchresult.jsp?newsearch=true&queryText=handayanto) so we want to predict that R. T. Handayanto is similar to Rahmadya Trias Handayanto. For experiment try to type in Matlab:

As usual, I use ‘{‘ instead of ‘(‘ because I made a cell type that fit the record on database. We want to collect other name that has similar to it like r. t. handayanto. For collecting the last name you can see my other post using regular expression: https://rahmadya.com/2014/04/18/how-to-search-last-name-using-matlab/. Therefore, we just add the first and middle, or only the last name if only a single name.

The logic is we find first the index of space that indicate the first or middle name with last name. After we count the total number of name we represent only first character with point for first name and middle name. I use if-else to detect whether the name only has one name (last name).

Try using a command window to convert the name become short name. You see that now rahmadya trias handayanto became r. t. handayanto that will compare to other that similar to it using format character (see the bottom line).

For example, we have 10 data:

You can see that Ahmed Abdul-hamid and A. Abdul-hamid that has similar name, but A. Cain may be different from A. J. Cain.

The result state that there is two names with similarity of last name and abbreviation of firs name that id=3 and id=10. With function lower we change all author name into lower case in order to easily compare. Of course, to get this code we have to understand how to manipulate matrices in Matlab.

 

How to Search Last Name using Matlab

It is a hard day, because I always sleep over the mid night. Ok, it’s about text mining. We want search from the data that has a particular family name, for example, may name, rahmadya trias handayanto. Ok, because our data usually cell type (for database), use this kind of data type:

name={‘rahmadya trias handayanto’}

We use symbol { for creating a cell type that we always find in table format. The logic for searching my lastname is by finding the last space. Try using the regular expression.

index=regexp(name,’ ‘)

Don’t forget to type space between ‘ because we want to search the index of space for name. Type celldisp(index) to see the content of index, because it is cell type. Many people have more than two names, with middle name. So we have to choose the biggest index using function max.

bigindex=max(index{1})

We have to convert the name into character if we want to present the last name using char function.

charname=char(name);

key=charname(bigindex+1:end)

We use ‘+1’ because we don’t include space to our last name. You can see the instruction below, it is very easy.

Parallel Processing on Matlab

Untuk memproses 2000-an record terhadap 2 juta record jika dijalankan dengan satu proses akan memakan waktu cukup lama karena karakternya yang serial. Untuk menjalankan proses yang parallel secara bersama maka kita dapat menjalankan lebih dari satu matlab dalam satu computer. Biasanya ini dilakukan jika kita ingin memproses data berukuran besar (big data).

First, you have to change current directory of your first matlab. If we want to create with two machines, you can open your Matlab again form start menu or from your shortcut wall. For example I want to use three Matlab for computing my algorithm at the same time for faster result.

Second, things that we have to consider is the location of the result, if you have the similar name to the output, you have to separate current directory because of the conflict of output (the last output will replace the previous one).

Last, you have to count the power of your machine. I use i5 processor, and sometimes I use four processing. The picture below show my Matlab that process 3 text processing of 2 thousand of author to other 2 million author.

Parallel Processing dengan Matlab

Melanjutkan tulisan yang lalu (https://rahmadya.com/2014/04/04/mengimpor-big-data-ke-matlab/) tentang import big data ke Matlab, saya akan sharring suka dukanya mengolah big data dengan Matlab. Setelah berhasil meramu kode untuk mencari data dan mengumpulkannya dalam satu tabel untuk data kecil, ketika diterapkan ke data besar muncul masalah besar juga. Mencari 2 juta nama yang memiliki kemiripan harus saya hentikan karena 14 jam baru selesai pengarang ke 16442 yang sedang dibandingkan ke pengarang ke 1.352.700. Tobat.

Algoritmanya sederhana, misalnya kita punya 4 nama A,B,C dan D. Akan kita cek apakah di antara 4 nama itu ada sama nama belakangnya. Alurnya adalah A dibandingkan dengan B, C, dan D. Berikutnya B dibandingkan dengan C, dan D. Terakhir C dibandingkan dengan D. Jika prosesnya memakan waktu sehari maka dapat saja kita pecah jadi misalnya dua proses. Proses pertama membandingkan A,B dengan B,C, D dan proses kedua membandingkan C,D dengan B,C,D. Maka waktu prosesnya diperkirakan jadi setengah hari. Jika dibagi menjadi empat proses, jauh lebih cepat lagi. Setelah diperoleh hasil, perlu satu kode untuk menggabungkan tabel-tabel hasil pencarian yang terpisah tersebut.

Apakah memerlukan komputer yang berbeda? Ternyata tidak, Matlab dapat dijalankan lebih dari satu jendela. Coba Anda buka Matlab Anda, kemudian Anda buka lagi Matlabnya, maka Anda telah menjalankan dua mesin Matlab. Hanya saja Anda harus membedakan variabel pada proses 1 dengan proses 2 karena akan bentrok nantinya, minimal membedakan current directory jika Anda malas merubah listing programnya. Oke, kita buat data baru ujicoba:

Berikutnya jalankan kode untuk mencari nama yang sama seperti tulisan yang lalu dengan bantuan fungsi strfind Matlab (https://rahmadya.com/2014/04/07/mencari-kata-dalam-text-dengan-matlab/). Misal saya memecah menjadi 2 maka dari total 20 nama, maka proses pertama i=1 sampai 10, proses kedua i=11 sampai 20.

Perhatikan untuk proses 1 diperoleh hasil yang banyak karena memang data cenderung terbagi dua karena sementara proses 2 hanya diperoleh satu yang sam yang kebetulan sudah diperoleh juga di proses 1. Seandainya data memang terbagi dua, maka proses 2 tidak menemukan kesamaan.

Pemilihan Umum 2014

Berbagai caruk maruk permasalah negara Indonesia dari kasus-kasus korupsi para politisi-politisi yang bukan hanya dari partai umum, bahkan partai yang mengatasnamakan agama pun ikut terlibat. Walaupun menurut informasi bahwa jumlah pemilih golput meningkat dari pemilu tahun 2009, tetapi pelaksanaan pemilihan umum hari ini cukup berjalan dengan baik.

Yang membuat saya berhasrat untuk menulis di blog tentang pemilu ini adalah karena saat ini saya sedang menjalani tugas belajar di negeri gadjah Thailand. Berbeda karena pemilu luar negeri hanya memilih DPR pusat saja, juga tarik menarik kepentingan partai sangat terasa di sini.

Hegomoni PKS terhadap mahasiswa-mahasiswa Indonesia yang sedang tugas belajar sepertinya mulai meredup, mungkin karena berita buruk yang belakangan tersiar di berbagai media masa yang menurut mereka tidak adil terhadap partainya. Di Thailand sendiri, PKS merupakan partai pemenang pemilu tahun 2009 yang lalu. Tetapi kenyataan saat ini berbeda, di tanah air sendiri hasil quick count PKS tidak memperoleh target 3 besar yang diharapkannya, bahkan kalah oleh PKB yang meningkat hampir dua kali lipat dari pemilu yang lalu. Lebih sial lagi adalah Partai Demokrat yang cukup drastis turunnya akibat kasus-kasus yang menimpa ketua partainya yang dulu, Anas Urbaningrum. Untung saja strategi SBY untuk menggalang kekuatan dari capres-capres potensialnya sebagai pendongkrak suara sepertinya cukup berhasil. Gerindra sepertinya tertawa lebar karena kenaikannya hampir tiga kali lipat, karena memang mesin politiknya yang bekerja cukup baik dari kader-kadernya yang terus dilatih, baik real maupun lewat media internet. PDIP sendiri walaupun peringkat pertama, tetapi prosentasenya di bawah target (27%) yang mungkin akibat selain banyak kasus yang menimpanya, magnet Jokowi kurang berhasil mendongkrak suara, karena banyak pemilih yang belum tahu bahwa Jokowi capres dari PDIP. Tentu saja dampak dari lainnya seperti citra negatif oleh lawan-lawan politiknya di media, cukup mengganggu kenaikan hasil pemilu, walaupun dibanding tahun 2009, PDIP tetap naik sekitar 1 persen.

Untuk pemilu presiden 91 hari lagi, sepertinya akan terjadi pertarungan sengit antara Jokowi dengan Prabowo. Isu adanya poros tengah dari partai-partai Islam yang akan menyokong Mahfud MD juga perlu diwaspadai oleh capres PDIP dan Gerindra itu. Golkar diperkirakan akan bergabung dengan capres yang akan unggul karena partai ini dikenal sebagai partai yang selalu berkoalisi dengan pemerintahan. Bagaimana dengan PKS? Ini merupakan pertanyaan yang unik mengingat perseteruannya dengan PDIP sangat tajam. Jika PDIP menang di pilpres, PKS sepertinya akan menjadi partai oposisi, walaupun tentu bisa saja berkoalisi dengan PDIP di pemerintahan walaupun koalisi yang dilakukan oleh PKS cukup unik, dan tidak dapat saya beberkan di sini karena bisa menyinggung perasaan kader2nya. Salah satunya adalah PKS kerap keluar dari kebijakan koalisi yang sempat membuat ketua partai koalisi, SBY, sedikit geram dengan sikap partai yang dua muka tersebut.

Apapun hasilnya harus kita terima dengan lapang dada. Saya ucapkan Alhamdulillah karena berjalan dengan lancar dan memenuhi perundang-undangan. Gambar di atas foto bareng dengan panitia pemilu Bangkok yang datang menjemput bola para pemilih di kampus Asian Institute of Technology (AIT) Thailand (Saya kebetulan pake kaos warna kebangsaan he he). Coba kita perhatikan negara lain, seperti Afganistan yang untuk memilih saja rakyatnya kesulitan karena ancaman dari pihak pengacau keamanan. Di tempat saya belajar pun, Thailand, pemilu bulan februari lalu dibatalkan oleh pengadilan Thailand karena tingkat partisipasinya yang jauh dari persyaratan, baik jumlah pemilih, maupun jumlah wilayah yang mengadakan pemilihan umum.

Mencari Kesamaan Text dengan Matlab

Kalau pada tulisan yang dulu (https://rahmadya.com/2014/04/07/mencari-kata-dalam-text-dengan-matlab/) ketika mencari kata kita terlebih dahulu menentukan keyword (atau diistilahkan dengan term), untuk mencari nama yang sama mau tidak mau Matlab harus menentukan sendiri term yang akan dicari kesamaan dengan kata pada record yang lain. Sebagai contoh di sini saya menentukan 13 nama yang memiliki 6 orang dengan nama yang sama.

Cara kerjanya adalah pertama-tama Matlab mengambil kata kunci record pertama yaitu “ayman kaheel” sebagai term yang akan dibandingkan dengan record kedua, ketiga, dan seterusnya hingga panjang maksimal record (dalam hal ini 13 record). Jika ditemukan nama yang sama, dengan instruksi isempty, baik record term maupun yang mirip dengannya dipisahkan dalam satu tabel result. Ceritanya panjang, lebih baik langsung saya tampilkan saja kode program:

Seperti biasa, fungsi strfind bermaksud membandingkan suatu string pada vektor. Cellstr berfungsi merubah string menjadi cell karena kalau tidak dirubah, tidak bisa digabungkan menjadi satu matriks karena string berbeda-beda ukurannya, sedangkan cell selalu tetap, berapapun panjang string, tetap dianggap satu sel. Pindahkan script itu ke command window, anda akan memperoleh hasil berikut ini:

Ketika hasil diketik (result) akan memunculkan deretan nama yang sama dengan no urutnya. Berikutnya adalah bagaimana cara untuk mencari nama yang nama keluarganya sama, karena terkadang dalam literatur ilmiah, misalnya ayman kaheel, terkadang ditulis a. kaheel, sehingga jika digunakan cara di atas akan tidak berhasil. Selamat mencoba !

Mencari Kata dalam Text dengan Matlab

Matlab selain digunakan untuk perhitungan angka ternyata dapat juga digunakan untuk mengolah kata dalam Text Data Mining (TDM). Singkat saja, di sini kita buat data yang berisi sepuluh nama orang yang akan kita searching.

Kita akan mencari beberapa nama yang ada unsur “abdul”, misalnya, terlebih dahulu, konversi menjadi huruf kecil semua dengan fungsi lower.

Perhatikan, seluruh record menjadi huruf kecil semua, berikutnya kita membuat script yang akan digunakan untuk mencari orang yang ada unsur nama ‘abdul’-nya, kemudian memunculkan kode author beserta nama lengkapnya dalam satu matriks.

Sebelumnya Anda harus memasukkan terlebih dahulu vektor kode author (di sini dengan nama auth1) yang sesuai dengan nama author. Perhatikan cara penggunaan fungsi regular expression yang tersedia di Matlab (regexp).Copy kode tersebut kemudian jalankan di command window:

Berikutnya tugas berat menanti, di sini keywoard untuk mencari sudah tersedia, yakni contohnya ‘abdul’. Bagaimana jika kata kuncinya berdasarkan tiap record. Misalnya kita akan mencari dari sekumpulan nama-nama yang bernama belakang ada yang sama.

Mengimpor Big Data ke Matlab

Jika data berukuran kecil dan sedang, dengan mudah kita mengimport suatu data dari excel, notepad, dan sejenisnya. Tetapi jika berukuran besar akan menjadi masalah jika kita mengimport data dari kedua text editor tersebut. Hal ini terjadi ketika saya akan membuat vektor dan matriks data ke dalam vormat Matlab agar bisa dilakukan text mining. Excel cenderung akan memotong data menjadi 65 ribuan record saja. Sementara notepad memiliki masalah ketika akan dieksport ke Matlab (Mat).

Langkah yang cukup akurat adalah menggunakan sistem manajemen basis data, misalnya Microsoft Access. Langkah pertama adalah membuka file data tersebut (misalnya berformat xls, atau csv) ke microsoft access untuk dilakukan pemilahan menjadi kolom-kolom yang sesuai jika data yang ada berbeda jenisnya. Jangan lupa menghilangkan Field Name dengan mengisi check pada kotak isian seperti gambar di bawah ini.

Berikutnya setelah dipilah-pilah, data kita eksport ke format text yang ada di menu Micorosft Access. Tunggu hingga selesai karena jika datanya berukuran besar (sekitar 1 giga) akan memakan waktu yang lama.

Jika selesai maka secara otomatis akan berganti menjadi pesan yang ada di access.

Berikutnya tinggal kita tarik data tersebut dengan Matlab. Buka matlab anda, dan tekan tombol impor yang ada di jendela Workspace (mudah2an tidak tersembunyi). Cari datanya, lalu lakukan proses impor dengan mudah.

Tekan tombol yang bertanda panah ke bawah dilanjutkan dengan mencari file txt yang telah disimpan sebelumnya. Untuk gampangnya, simpanlah di current directory Anda.

 

Berikutnya tinggal mengklik tombol Next hingga tombol finish muncul. Tampak di workspace variabel yang telah Anda masukan. Coba iseng jalankan, jangan semua record dilihat, takutnya matlab Anda hang.

Baru kali ini saya mengalami mengolah file matlab (MAT) hingga kehabisan sumber daya RAM.

Hal Sepele Tapi Penting di Matlab

Beberapa lamanya saya mencari cara bagaimana agar layar Command Window bersih. Ternyata caranya mudah, dengan mengetik clc. Sementara instruksi clear tidak membersihkan layar melainkan membersihkan variabel yang ada di workspace.

Salah satu hal penting lainnya adalah membuat suatu vektor normal. Untuk matlab versi 2014 sih mudah saja, dengan instruksi normalize. Tetapi untuk versi yang lama, tidak dapat berjalan. Untungnya kita dapat dengan mudah memanfaatkan fungsi norm. Tinggal membagi vektor yang akan dicari normalnya dengan euclidean distancenya.

Menggunakan Fungsi Find di Matlab

Sehubungan dengan tugas mata kuliah Decision Support Technology (DST) yang saya ambil, saya diminta mengolah data yang tidak lazim, yang terkadang formatnya tidak baris dan kolom seperti yang diterapkan di beberapa sistem database. Kemampuan mengolah data yang tidak terstruktur menjadi data terstruktur agar dapat diolah dengan Matlab, mengharuskan kita terlatih dalam mengimport data baik dari database ataupun format data lainnya yang biasanya berformat dat, csv, xls, dan sejenisnya.

Baiklah di sini diandaikan kita telah berhasil mengimport data yang kita akan oleh. Pertama-tama kita praktekan mengolah data numerik. Buat data baru:

x = [2 5 7 4 3 3 3]

Maka Anda memiliki data suatu vektor. Jika seumpamanya kita ingin mencari data berisi angka 3, ketik instruksi berikut ini:

>> position = find(x==3)

position =

5 6 7

Maka anda akan memperoleh 5,6, dan 7 yang berarti posisi angka 3 ada di index 5,6, dan 7 dari vektor x.

Bagaimana jika datanya bukan numeric, misalnya string? Coba kita buka dulu sampel data:

str = ‘0.41 8.24 3.57 6.24 9.27’;

Data di atas merupakan data string, walaupun berisi angka di dalamnya. Kita akan mencari nilai numerik dari data tersebut dengan fungsi textscan.

C = textscan(str,’%f’);

C =

[5×1 double]

Tampak hasilnya adalah data C yang berisi cell dengan format membernya floating point yang diindikasikan dengan ‘%f’. Untuk melihat isi dari cell tersebut lakukan instruksi berikut ini:

celldisp(C)

C{1} =

0.4100

8.2400

3.5700

6.2400

9.2700

Hasilnya adalah nilai numerik dari data str yang tadinya berformat string. Gunakan fungsi find, misalnya kita akan mencari lokasi angka 9.27, gunakan instruksi:

find(C{1}==9.27)

ans =

5

Lokasi telah ditemukan di index 5 dari data C{1}. Ok, selamat mencoba dan mengutak-atik, jika ada masalah silahkan menghubungi situs resmi Matlab.