Pendahuluan
Pada post sebelumnya mengenai implementasi artificial neural network (ANN) menggunakan Python, mungkin ada yang bertanya apakah terdapat tool yang lebih membantu (dalam hal ini mengurangi coding, bagi yang kurang suka coding tentunya). Well, jawabnya banyak tool yang bisa digunakan. Mulai dari yang paling populer dan free yaitu Weka, R Studio, sampai dengan yang propietary yaitu Matlab yang menyediakan toolbox khusus ANN.
Pada post kali ini saya akan bahas sebuah alternatif dari tool yang terakhir saya sebut yaitu Matlab. Matlab yang kita tahu adalah tool berbayar, untuk yang versi standar harganya sekitar 2000 USD, dan yang termurah adalah versi pelajar sekitar 29 USD. Jika anda memiliki ketertarikan dengan cara penggunaan dan kemampuan Matlab namun tidak ingin mengeluarkan biaya sepeserpun, saat ini terdapat tool alternatif yaitu Scilab, yang menurut saya sudah cukup mumpuni untuk menggantikan Matlab.
Bagaimana Mendapatkan Scilab?
Scilab dapat diunduh secara cuma-cuma dari official website Scilab. Platform sistem operasi yang didukung cukup lengkap, mulai dari Windows, Linux, dan MacOS. Pada post kali ini saya menggunakan versi Linux karena saya sendiri menggunakan Ubuntu pada laptop yang saya gunakan. Cukup mudah untuk melakukan instalasi Scilab, installer ataupun file binary tidak memerlukan konfigurasi yang cukup berarti, jadi tidak perlu saya jelaskan secara khusus di sini. Berikut ini adalah tampilan awal dari Scilab jika instalasi sudah berhasil anda lakukan:
Meskipun tool yang tidak berbayar dan kemampuan fitur-fitur utamanya bergantung pada komunitas, namun Scilab terbilang cukup lengkap dalam menyediakan toolbox dan fitur-fitur yang sering digunakan untuk data analysis.
Fitur-fitur yang diberikan dapat anda lihat sendiri di bagian Help di Scilab.
Implementasi ANN di Scilab
Implementasi ANN kali ini menggunakan bantuan toolbox ANN pada Scilab. Pada instalasi standar, toolbox ini tidak akan anda temukan. Sebaliknya, anda harus menginstal sendiri melalui module manager Scilab, yaitu ATOMS. Untuk toolbox ANN dapat anda temukan pada katagori data analysis.
Let's do it...
Kita akan coba salah satu metode yang paling sederhana dari ANN, yaitu Feed Forward ANN (FFANN). Arsitektur secara umum dari FFANN ini dapat dilihat pada gambar di bawah ini (courtesy: WikiPedia):

Dapat dilihat, metode ini memiliki arsitektur yang terbilang sederhana yaitu hanya terdiri dari tiga layer, input, hidden, dan output layer. Bagaimana implementasi di Scilab? Untuk mempermudah memahami cara kerjanya, kita gunakan data riil yaitu data Iris yang cukup populer penggunaannya untuk mempelajari data analysis.
Iris dataset dapat didownload dari UCI. Bagi yang belum tahu, Iris adalah data penelitian bunga Iris terdiri dari 150 baris, dan empat fitur (sepal width, sepal length, petal width, dan petal length). Terdapat tiga spesies bunga Iris yang terdapat pada dataset ini, yaitu Setosa, Versicolour, dan Virginica. Tiga spesies ini yang akan kita gunakan untuk uji coba klasifikasi data. Dan kita akan cari tahu apakah teknik FFANN pada Scilab ini dapat dengan baik melakukan klasifikasi spesies Iris.
Pertama-tama kita impor terlebih dahulu data Iris, pada Scilab data training harus tersedia dalam bentuk column wised (ke samping). Jadi kita akan melakukan matrix transpose terlebih dahulu dari data yang tersedia. Anda bisa menggunakan tool bantu seperti Excel, atau jika sedikit coding tidak akan melukai anda, script berikut ini dapat anda gunakan:
for i=1:150
xiris(:,i) = x(i,:)'
end;
Di mana xiris adalah matrix berukuran 4x150, dan x adalah dataset Iris berukuran 150x4 (minus target class). Jika sudah anda impor, maka xiris seharusnya akan berisi data seperti di bawah ini:
Langkah berikutnya adalah kita akan beritahukan Scilab untuk membentuk model ANN sesuai dengan data yang akan kita analisa.
N = [4 10 3]
Penjelasan dari script di atas adalah, N merupakan informasi neuron yang akan dibentuk terdiri dari 4 input node (karena terdapat 4 fitur dari Iris), 10 hidden layer (bebas jumlahnya), dan 3 kelas target (3 spesies Iris).
Seperti yang sudah dijelaskan pada post sebelumnya, bobot pada masing-masing node memegang peran penting. Di sini, untuk menentukan bobot awal, kita gunakan fungsi ann_FF_init(N).
W = ann_FF_init(N)
Berikutnya matriks target t yang akan digunakan sebagai acuan evaluasi dari proses training, kita tentukan melalui script di bawah ini.
t = zeros(3, 150)
Matriks t ini merupakan one hot matrix di mana struktur masing-masing kolom (masing-masing individu bunga Iris) direpresentasikan sebagaimana contoh berikut:
[1 ...
0 ...
0]
Di mana nilai 1 mempunyai makna bahwa individu tersebut masuk ke dalam kelas indeks ke-1, jika dalam kasus data yang kita gunakan adalah Setosa.
Variabel lain yang tidak kalah penting adalah learning rate dan batas toleransi error yang akan kita tentukan pada model. Dalam uji coba kali ini, masing-masing kita set pada nilai 0.01 dan 0.0001.
Setelah dataset training dan variabel untuk model telah kita persiapkan, tiba saatnya untuk melakukan uji coba, dengan cukup menjalankan script di bawah ini.
W = ann_FF_Std_batch(xiris,t,N,W,lp,epochs);
Tunggu hingga selesai, dan seketika setelah selesai kita bisa melakukan uji coba pada model yang telah kita bangun, ambil beberapa sample. Misal ambil row ke-31 yang masuk pada kelas Setosa, jalankan script berikut.
y = ann_FF_run(xiris(:,31), N, W)
y =
0.8137302
0.2258932
0.0253081
Dapat dilihat bahwa pada terdapat 3 nilai dari objective function yang merepresentasikan kelas target dari data yang diujikan. Dari ketiganya, nilai pertama adalah yang paling tertinggi, menunjukkan bahwa data yang diuji masuk pada kelas pertama (Setosa). Untuk data-data yang lain, dapat anda ambil secara acak. Atau jika ingin melakukan uji secara holistik Anda dapat menggunakan metode k-folding.
Kita coba data yang lain yaitu row/individu ke 58, diharapkan model akan mengklasifikasikan individu tersebut ke dalam kelas Versicolour.
y = ann_FF_run(xiris(:,58), N, W)
y =
0.2439087
0.4616318
0.2581493
Dan, model sukses mengklasifikasikan individu tersebut ke dalam kelas Versicolour.
Penutup
Dari uji coba di atas, kita cukup dimudahkan untuk melakukan klasifikasi data menggunakan ANN Toolbox. Sebenarnya terdapat beberapa metode lain yang cukup menarik untuk dicoba pada Scilab, termasuk unsupervised learning seperti Clustering. Semoga dalam waktu dekat bisa diluangkan waktu untuk membahasnya.
Credit: ANN Toolbox Tutorial



Komentar
Posting Komentar