Artificial Neural Network (ANN) Iris dataset using Rstudio (Part 1)

Venti Diah Intiari
5 min readJul 17, 2020

--

Pada kesempatan kali ini kita akan sama-sama belajar mengenai metode klustering menggunakan Artificial Neural Network (ANN) dengan software Rstudio. Data yang digunakan merupakan data yang telah disediakan oleh Rstudio yaitu ‘iris’ yang merupakan Edgar Anderson’s iris dataset yang terkenal memberikan pengukuran masing-masing dalam sentimeter dari variabel panjang dan lebar sepal dan panjang dan lebar kelopak untuk 50 bunga dari masing-masing dari 3 spesies iris. Spesiesnya adalah Iris setosa, versicolor, dan virginica.

Artificial Neural Network (ANN) merupakan simulasi jaringan yang mirip dengan cara kerja otak kita. Neural network terdiri dari lapisan input, hidden layer, dan output. Setiap node dalam satu lapisan terhubung ke setiapnode lain di lapisan berikutnya. Setiap link memiliki bobot numerik. Bobot ini menentukan kekuatan serta penanda dari sebuah konektivitas.

ANN terdiri dari banyak neuron di dalamnya. Neuron-neuron ini akan dikelompokkan ke dalam beberapa layer. Neuron yang terdapat pada tiap layer dihubungkan dengan neuron pada layer lainnya. Hal ini tentunya tidak berlaku pada layer input dan output, tapi hanya layer yang berada di antaranya. Informasi yang diterima di layer input dilanjutkan ke layer-layer dalam ANN secara satu persatu hingga mencapai layer terakhir/layer output. Layer yang terletak di antara input dan output disebut sebagai hidden layer. Namun, tidak semua ANN memiliki hidden layer, ada juga yang hanya terdapat layer input dan output saja.

Langkah pertama yang harus dilakukan adalah menginstall package yang akan digunakan

install.packages("nnet")
library(nnet)

Data yang digunakan merupakan dataset iris seperti output berikut,

Kemudian, melihat dimensi, klasifikasi, head data dan struktur data

#dimensi bunga iris
dim(iris)
#klasifikasi bunga iris
class(iris)
#melihat 6 data pertama
head(iris)
#struktur data
str(iris)

Dapat dilihat ternyata data iris merupakan data frame dengan dimensi 150x5 dan memiliki 5 variabel.

Lalu, kita merandom data untuk kemudian dijadikan data training dan data testing

sampel<-c(sample(1:50,25), sample(51:100,25), sample(101:150,25))
sampel

Nah inilah nomor urut yang dipilih secara random untuk diolah dalam data training data testing (hasil sampel berbeda2 karena dipilih secara random). Kemudian membagi data sampel menjadi data training dan data testing

iris.train<-iris[sampel,]
iris.train
iris.test<-iris[-sampel,]
iris.test

Berikut merupakan hasil pembagian 75 data iris untuk data training dan 75 data iris untukdata testing sesuai dengan nomor urut yang diambil secara acak pada sampel,

Kemudian, dilakukan analisis ANN menggunakan“nnet”. dengan jumlah node di dalam hidden layer sebanyak 2 dan maksimum iterasi sebanyak 200. Nilai maksimum iterasi bisa terus di ubah atau di tingkatkan hingga mendapati nilai yang kovergen. Perintah yang akan digunakan yaitu seperti berikut ini:

iris1<-nnet(Species~., data=iris.train, size=2, decay=5e-4, maxit=200)
iris1

Dari output tersebut didapatkan final value sebesar 0.815291 dan berhenti pada iterasi ke 200. Dari hasil tersebut juga dapat dilihat bahwa output “iris1” merupakan jaringan dengan 4 input, 2 node, dan 3 output. Dimana 4 mewakili Sepal Length, Sepal Width, Petal Length, dan Petal Width, sedangkan 2 node pada hiden layer, dan 3 mewakili output yaitu Setosa, Versicolor, dan Virginica.

Berikutnya, melihat hasil prediksi dari data testing yang telah dipisahkan sebelumnya,

y <-iris.test$Species
y
p <-predict(iris1,iris.test,type="class")
p

Karena masih terdapat kesalahan pada prediksi seperti berikut,

Maka untuk melihat kesalahan prediksi, dapat dibuatkan dalam bentuk tabel dengan menggunakan perintah seperti berikut ini.

tabelhasil<-table(y,p)
tabelhasil
sum(diag(table(y,p)))/75
jumlaherror<-mean(y!=p)
jumlaherror

Nah pada output diatas terlihat bahwa data aslinya yang seharusnya versi color namun diprediksi sebagai virginica sebanyak 1 dan yang seharusnya virginica namun diprediksi sebagai versicolor sebanyak 2. Maka dapat dirumuskan bahwa nilai prediksinya atau tingkat klasifikasi sebesar 0,96 atau 96% dengan tingkat kesalahan klasifikasi sebesar 0,04 atau 0.04%. Dari hasil ini didapatkan hasil bahwa metode ini Artificial Neural Network (ANN) dapat dengan baik memprediksikan klasifikasi pada kasus ini.

Kemudian membuat visualisasi dari jaringan yang telah dibuat dengan library(devtools) dan library(reshape) berikut menggunakan website dari gist yang mempermudah dalam pembuatan plot ini.

library(devtools)
library(reshape)
source_url('https://gist.githubusercontent.com/fawda123/7471137/raw/466c1474d0a505ff044412703516c34f1a4684a5/nnet_plot_update.r')
plot.nnet(iris1)

Dari hasil output tersebut didapat bahwa 4 input (Sepal Length, Sepal Width, Petal Length dan Petal Width), 3 output(Setosa, Versicolor dan Virginica) dan terdapat 2 hidden (H1,H2) dan juga setiap layer terdapat bias yang mengarah kepada masing-masing node kedalam layer hidden. Pada output iris1 terdapat nilai 19 weights yang dimana hasil ini sesuai dengan gambar di atas yang terdapat 19 garis atau panah, dimana setiap garis atau panah mewakili 1 bobot.

Kemudian kita dapat melihat nilai dari masing-masing bobot dengan menggunakan perintah di bawah ini:

names(iris1)
summary(iris1)

Dari output tersebut terlihat masing-masing bobot dalam jaringan yang kita miliki.

Cukup sekian contoh penggunaan Artificial Neural Network (ANN) pada kesempatan kali ini, semoga bermanfaat!;)

Referensi:

  1. Youtube Channel RB Fajriya Hakim
  2. https://gist.githubusercontent.com/fawda123/7471137/raw/466c1474d0a505ff044412703516c34f1a4684a5/nnet_plot_update.r
  3. https://towardsdatascience.com/applied-deep-learning-part-1-artificial-neural-networks-d7834f67a4f6

--

--