Menyelesaikan masalah “Architecture Mismatch Driver & Application” ketika mengakses Database di Matlab

Melanjutkan postingan yang lalu tentang problematika explore database di Matlab yang melibatkan versi 64 atau 32 bit. Masalah incompatible ini sepertinya tidak direspon dengan baik. Baik oleh Windows maupun Matlab. Sepertinya ada sedikit “paksaan” bagi pengguna versi 32 bit untuk beralih ke versi 64 bit. Padahal banyak yang masih menerapkan versi 32 bit di sistem yang sedang berjalan.

Install Microsoft Access Versi 64 Bit

Pengguna Matlab 64 bit sepertinya sudah harus beralih ke versi 64 bit untuk semua hal yang terlibat dengan Matlab (environment), seperti OS dan sistem basis data-nya. Jika tidak maka akan muncul peringatan adanya ketidaksesuaian dari sisi arsitektur antara driver ODBC dan aplikasi. Perbedaan arsitektur merupakan perbedaan yang tidak sepele dalam suatu sistem perangkat lunak.

Repotnya untuk Microsoft Access, tidak bisa langsung memasang yang 64 bit tanpa meng-uninstall versi yang sebelumnya. Perlu diperhatikan jika ada visio versi 32 bit, windows meminta uninstall juga. Jadi kalau sayang dengan visio yang 32 bit atau tidak punya installer visio yang 64 bit, sebaiknya difikirkan terlebih dahulu, atau siapkan dulu visio versi 64 bitnya.

Tadinya saya masih ragu, jangan-jangan ketika uninstall yang 32 bit dan install yang 64 bit tetap saja database tidak bisa diakses Matlab 64 bit, tetapi ternyata Alhamdulillah bisa. Mungkin ini bisa menjawab pertanyaan dari pembeli buku saya tentang database di Matlab yang tidak bisa terkoneksi dengan access karena beda versi “bit”nya. Oiya, jangan khawatir, semua settingan di office 32 bit yang lalu tetap otomatis terbawa di versi 64 bit yang baru.

Mengecek Koneksi Database di Matlab

Ketika sudah menginstall versi 64 bit, pastikan di ODBC yang 64 bit terisi driver dan platform-nya yang baru (64 bit). Selalu gunakan driver untuk kedua versi access (*.mdb dan *.accdb). Pastikan ketika mengklik Configure… tida ada pesan “architecture mismatch ..” lagi.

Tambahkan satu User DSN baru dan coba buka dengan Matlab 64 bit. Setelah mengetik dexplore di command window Matlab, cari ODBC yang baru saja dibuat. Pastikan database yang dibuat dengan Access dapat dilihat isinya.

Sekian dulu info singkat ini, semoga bermanfaat dan semoga pula naskah tentang data spasial dan bigdata dengan Matlab dapat rampung secepatnya.

Iklan

Problematika Explore Database pada Matlab

Matlab terkini sudah memiliki fasilitas untuk mengeksplore suatu database. Hampir semua database dapat diakses dengan Matlab, khususnya yang berbasis Windows. Hanya saja ada sedikit permasalahan dengan kompatibilitas antara 64 bit dengan yang 32 bit. Berikut beberapa kemungkinan yang terjadi antara Windows, Matlab, dan Sistem database yang digunakan.

Baik Windows, Matlab dan Database 32 Bit atau 64 Bit

Untuk kasus ini tidak ada masalah yang berarti. Banyak tutorial yang membahas bagaimana mengkoneksikan database dengan Matlab dengan versi bit yang sama. Kebanyakan database dapat digunakan dengan menggunakan fasilitas Open Database Connectivity (ODBC) bawaan Windows. Link youtube ini cukup baik menjelaskan bagaimana mengkoneksikan database ke Matlab 64 bit.

Windows 64 Bit, tetapi Matlab dan Database 32 Bit

Untuk kasus ini ada sedikit masalah ketika mengeset ODBC karena driver yang tidak muncul. Untungnya Windows 64 bit masih memberikan fasilitas untuk mengelola ODBC versi sebelumnya (ODBC 32 bit). Cara mudahnya adalah dengan mengetik: odbcad32 di menu RUN. Letak file ‘odbcad32.exe’ ada di: C:\Windows\SysWOW64\odbcad32.exe.

Windows dan Matlab 64 Bit, tetapi database 32 Bit

Masalah ini banyak ditanyakan oleh pengguna di internet. Hampir semua jawaban tidak memuaskan, bahkan ketika ditanyakan ke pihak Microsoft. Kebanyakan kasusnya adalah user menginstall microsoft access 32 bit sebagai database tetapi memiliki Matlab versi 64 bit, misalnya Matlab 2013b.

Dikatakan bahwa DSN pada ODBC yang dibuat tidak matching antara arsitektur dengan driver aplikasi. Saran yang paling ampuh adalah menginstall ulang Microsoft Access dengan versi yang sama dengan Matlab tersebut (versi 64 bit). Matlab sendiri menganjurkan menggunakan 64 bit karena memiliki keunggulan tersendiri dalam penggunaan RAM maksimalnya (melebihi 3 Gb).

Menggunakan Database non Microsoft

Sebenarnya saya mencari driver yang bisa menambahkan driver access di kolom isian driver 64 bit. Ternyata selalu saja ada instruksi error bahwa access yang diinstall tidak 64 bit. Jika enggan menguninstall office 32 bit, ada alternatif database lain yang bisa digunakan yaitu MySQL. Ketika menginstall ODBC untuk MySQL maka di driver pada ODBC 64 bit muncul driver baru seperti di bawah ini.

Tampak MySQL ODBC 5.3 pada driver. MySQL sendiri dapat menggunakan aplikasi XAMM yang ringan karena Apache tidak selalu “ON” ketika tidak digunakan. Untuk menjalankannya tinggal men-doble klick XAMM start di explore.

Untuk mengujinya silahkan menggunakan fasilitas dexplore pada Matlab dengan mengetikannya di command window. Tekan “connect” yang terletak di kiri atas Matlab (atau otomatis akan meminta koneksi ke ODBC yang diinginkan). Pilih ODBC yang sudah dibentuk sebelumnya dengan pilihan driver MySQL.

Kemudian pastikan tampak fields yang ada di tabelnya. Silahkan yang suka “ngetik coding” di command window mengecek apakah koneksi sudah berjalan seperti berikut ini.

Pastikan isconnection bernilai “1” yang menandakan bahwa database telah berhasil terkoneksi ke Matlab anda. Selamat mencoba dan semoga bermanfaat.

NB: Silahkan beli buku yang disertai source code untuk melakukan komputasi dengan Matlab yang terintegrasi dengan database (access dan mysql), online maupun di toko buku Gramedia (semoga stok masih ada): https://www.gramedia.com/pemrograman-basis-data-di-matlab-cd.html.

Curve Fitting dengan Matlab

Curve fitting artinya membuat sebuah kurva dari rentetan titik. Kurva yang dihasilkan berupa persamaan linear ataupun non linear (matlab menyediakan quadratic hingga polinomial pangkat sembilan). Silahkan lihat post sebelumnya untuk membedakannya dengan interpolasi. Biasanya dijumpai ketika praktikum yang menguji satu variabel dengan perbedaan perlakuan tertentu. Saya sendiri menjumpai pertama kali kasus ini ketika praktikum fisika dasar di tingkat pertama kuliah. Hasilnya pun hanya dengan menarik garik lurus (linear) terhadap serangkaian titik hasil uji coba tersebut.

Matlab menyediakan toolbox dengan nama “cftool” yang dapat diakses dengan mengetik fungsi tersebut di command window. Misalnya kita memiliki serangkaian data sebagai berikut:

  • data =
  • 19.8960
  • 16.9290
  • 15.6660
  • 19.8870
  • 17.9100
  • 18.4260
  • 18.9570
  • 18.7710
  • 15.4860
  • 17.1510
  • 15.3210
  • 18.2580
  • 17.8860
  • 13.7100
  • 17.6040
  • 16.7610
  • 15.8880
  • 16.6200

Langkah pertama adalah memasukan data tersebut ke dalam cftool. Tekan tombol “data” untuk memunculkan jendela data.

 

Karena data hanya satu seri, isi dengan data x atau data y. Saya coba keduanya ternyata hasilnya sama karena memang datanya hanya satu seri. Setelah menekan “create data set” maka toolbox akan terisi data tersebut. Kembali ke jendela “cftool” tekan “Fitting” untuk memulai proses curve fitting. Muncul jendala baru untuk mengisi parameter-parameter yang sesuai (linear / non linear).

Setelah memasukan jenis polinomialnya, lanjutkan dengan menekan “Apply“. Hasil polinomialnya tampak dalam kolom “Result” dan grafiknya dapat dilihat di jendela “Cftool“.

 

Hasil di kolom result dapat dilihat. Parameter yang dihasilkan adalah konstanta persamaan linear beserta parameter-parameter lainnya seperti Goodness of fit, SSE, R-square, dan lain-lain yang dapat dilihat dari pelajaran statistik. Silahkan coba untuk korelasi dua variabel.

  • Linear model Poly1:
  • f(x) = p1*x + p2
  • Coefficients (with 95% confidence bounds):
  • p1 = -0.1403 (-0.2877, 0.007083)
  • p2 = 18.62 (17.02, 20.21)
  • Goodness of fit:
  • SSE: 37.47
  • R-square: 0.2029
  • Adjusted R-square: 0.1531
  • RMSE: 1.53

Epoch, Iteration, dan Stop Condition

Perkembangan Soft-computing menciptakan istilah-istilah baru yang sebelumnya belum pernah ada. Hal ini terjadi karena soft computing mengadopsi istilah-istilah lain. Sebagai contoh dalam algoritma genetika, istilah-istilah mutasi, kromosom, dan istilah-istilah yang berasal dari teori genetik dan evolusi menjadi istilah dalam ilmu komputer. Bahkan algoritma yang sudah sejak lama digunakan sudah bergeser ke arah metode. Metode lebih general dibanding algoritma yang lebih spesifik dan penerapan khusus. Jika Anda perhatikan algoritma genetika, beberapa tulisan menulisnya dalam bahasa Inggris dengan Genetic Algorithms dengan tambahan “s” di belakang algoritma. Hal ini karena algoritma genetika melibatkan beberapa algoritma seperti roulette wheel, encoding ke bits string dan sebaliknya (decoding), dan lain-lain. Namun beberapa buku tidak menambahkan “s” di belakang algoritma (Genetic Algorithm) dengan anggapan bahwa algoritma genetika adalah satu metode.

Beberapa rekan menanyakan istilah terkenal dalam machine learning yaitu “Epoch”. Banyak yang mengartikannya dengan iterasi. Tetapi mengapa tidak mengambil istilah iterasi saja? Jawabannya berasal dari training artificial neural network. Salah satu metode training, yaitu propagasi balik (backpropagation), menggunakan istilah epoch karena ketika melakukan satu kali iterasi dilakukan dengan rambatan balik. Untuk gampangnya, misalnya satu iterasi melibatkan proses a-b-c-d, maka epoch dalam satu “iterasi”-nya (dengan istilah satu kali epoch) melibatkan a-b-c-d-c-b-a. Dua iterasi: a-b-c-d-a-b-c-d, sementara dua epoch: a-b-c-d-c-b-a-b-c-d-c-b-a. Atau gampangnya iterasi itu epoch tanpa rambatan balik (hanya maju saja).

Beberapa rekan juga menanyakan metode yang cocok untuk stop condition. Untuk iterasi, sejak dulu kita sudah mengenal dengan error atau delta error. Jika error antara satu iterasi dengan iterasi berikutnya cukup kecil maka proses perhitungan berhenti. Error yang saat ini sering digunakan adalah Mean Square Error. Silahkan gunakan metode lain, misalnya Gradient Descent dengan prinsip kemiringan. Kemiringan diambil dari posisi saat ini dibanding epoch maupun iterasi sebelumnya. Jika masih besar selisihnya berarti masih miring. Ibaratnya kendaraan beroda jika masih miring masih bergerak turun, sementara jika sudah tidak begitu miring jalanan-nya, kendaraan itu bergerak perlahan, dan walaupun belum berhenti, dalam komputasi sudah dihentikan demi efisiensi. Untuk prakteknya perhatikan grafik hasil pelatihan jaringan syaraf tiruan di akhir prosesnya. Teringat saya ketika presentasi hasil penelitian di kampus. Karena reviewer adalah doktor dari FAI mempertanyakan mengapa perlu “pelatihan” karena buang-buang waktu dan biaya (dikiranya pelatihan JST itu: pelatihan/kursus/workshop).

Melihat Data Network Hasil Training JST – Versi GUI

Pada postingan yang lalu telah dibahas cara mengetahui hasil training Jaringan Syaraf Tiruan (JST) dengan command window. Begitu juga bagaimana mengupdate salah satu parameternya, misalnya bias dan bias, sudah dibahas. Tetapi beberapa pembaca sepertinya agak kesulitan dengan instruksi-instruksi lewat command window. Oleh karena itu di sini akan dibahas cara yang jauh lebih mudah yaitu dengan “nntool”, salah satu GUI bawaan Matlab untuk merakit JST.

Sebenarnya masalah ini muncul ketika saya mencari kembali hasil training JST untuk peramalan (lihat post peramalan dengan JST di sini). Masalah yang sering dijumpai adalah “lupa”, karena banyaknya yang harus dikerjakan terkadang membuat seseorang lupa. Untungnya saya aktif menulis, tinggal masukan kata kunci di kolom “search” blog, catatan terdahulu yang dicari langsung ketemu. Jadi blog itu seperti catatan yang disimpan di “awan (cloud)” yang bisa diakses di mana saja dan kapan saja. Buka Matlab dan ketik nntool di command window.

Sebelumnya load terlebih dahulu Mat-file hasil training yang berisi variabel-variabel network. Di sini saya ada 7 variabel network yang saya sendiri lupa konfigurasinya. Setelah menekan “Import” di nntool maka muncul pilihan variabel yang akan dilihat. Ambil salah satu variabel hasil loading yang ada di workspace Matlab, dilanjutkan dengan kembali menekan Import setelah memilihnya.

Tekan Ok ketika ada informasi bahwa netwok telah berhasil diimpor. Tutup lagi sementara jendela Import to network/Data Manger. Perhatikan nntool kini telah muncul Network1 hasil impor. Untuk melihat isi dari variabel itu dobel klik saja di variabel tersebut.

Sebenarnya gambar di atas sudah cukup untuk mengetahui struktur JST yang telah dilatih dahulu. Misalnya input yang berjumlah 4 variabel dengan 1 keluaran. Hidden layer yang terletak di tengah tampak berjumlah sembilan. Gambar di atas khusus untuk Matlab versi 2013 ke atas, sementara Matlab versi yang terdahulu tidak memunculkan informasi tentang neuron-neuronnya. Silahkan tekan View/Edit Weights jika ingin melihat konfigurasi bobot-bobotnya. Kebetulan saya memiliki 4 variabel data yang akan dicoba prediksi dengan JST tersebut. Atau jika tidak ada, buat saja sendiri di command window. Tambahkan data input di nntool.

Tekan tombol Simulate pada network untuk memprediksi. Cara ini bisa juga dengan command window lewat instruksi sim.

Ada pesan untuk melihat nntool karena hasilnya dikirim ke sana. Jika sudah kembali ke nntool, tekan dua kali Output. Tampak hasilnya.

Sepertinya dengan nntool tidak banyak mengetik, alias tinggal klak-klik mouse saja. Jadi dengan empat masukan pada data akan menghasilkan satu keluaran (0.48). Di sini sebaiknya kita menggunakan normalisasi data, kalau bisa normal Euclidean, karena matrix yang dibuat dengan normal euclidean ortogonal yang disukai JST.

Cluster Data dari ArcGIS ke Matlab

Postingan kali ini bermaksud mencoba membuat video tutorial bagaimana mengkluster data dari arcgis dengan software matlab. Iseng-iseng dengan pengisi suara dari translate google, ternyata oke juga. Hasilnya pun lumayan jelas dibanding saya yang ngomong .. haha.

Ada dua kandidat software perekam yang digunakan yaitu ‘screen-o-matic’ dan ‘microsoft expression’ yang keduanya gratis untuk menggunakannya. Hanya saja microsoft expression kali ini unggul karena bisa merekam suara dari ‘translate google’ dan saya belum berhasil dengan ‘screen-o-matic’ yang unggul jika ingin ada cam-nya. Silahkan lihat videonya.

Ups .. ternyata terpotong karena lebih 10 menit. Hasilnya adalah berikut ini.

Grafik Curve Fitting pada Matlab

Banyak tools untuk membuat grafik, salah satunya adalah Microsoft Excel. Berikut ini contoh bagaimana suatu data dikonversi menjadi grafik berbentuk interpolasi. Cara mudahnya sebagai berikut: setelah men-sort data isian, pilih insert dan pilih grafik yang sesuai, dalam hal ini scatter dengan line.

Grafik itu menurut saya sudah baik, akan tetapi untuk dipublikasi dalam suatu jurnal ada baiknya membuat dengan format lain, salah satunya adalah Matlab. Fungsi yang digunakan adalah fungsi fit dilanjutkan dengan plot (lihat subplot untuk membuat lebih dari satu grafik pada postingan yang lalu). Buka matlab dan pindahkan tahun dan nilai ke workspace. Metode interpolasi yang cocok seperti di excel ternyata ‘pchipinterp’.

  • >> tahun=[2000;2010;2015;2017];
  • >> nilai=[2;5;9;4];
  • >> curvefit=fit(tahun,nilai,’pchipinterp’)
  • curvefit =
  • Shape-preserving (pchip) interpolant:
  • curvefit(x) = piecewise polynomial computed from p
  • Coefficients:
  • p = coefficient structure

Pastikan curvefit (bisa dengan nama lain) berhasil dibentuk. Lanjutkan dengan plotting dengan fungsi plot (lihat help untuk lebih jelasnya bagaimana menggunakan fungsi ini):

  • >> plot(tahun,nilai,’*’);
  • >> hold
  • Current plot held
  • >> plot(curvefit)

Hasilnya dapat dilihat pada gambar berikut.

Oiya, jangan printscreen gambar di atas untuk jurnal, lebih baik gunakan versi printing supaya hasilnya standar seperti di bawah ini (tekan simbol printer di menu). Semoga bermanfaat.