Penerapan Artificial Neural Network untuk Mengklasifikasikan Bunga Iris

Riefyal Arshyzha Mustain
4 min readJul 26, 2021

--

Assalamualaikum^^

Hai fellas, apa kabar?
Kali ini penulis akan share sedikit mengenai Artificial Neural Network atau biasa dikenal dengan ANN menggunakan software R. Yuk kita kupas tuntas!!

Apa itu Artificial Neural Network?
Secara bahasa Artificial Neural Network (ANN) memiliki arti jaringan saraf tiruan. ANN merupakan suatu sistem komputasi yang terinspirasi dari cara kerja sistem saraf otak manusia dalam memperoleh informasi. Didalam otak kita, ada jutaan sel saraf disebut neuron yang berfungsi untuk menerima, menanggapi, dan menyampaikan rangsangan/impuls dan dikirim menuju saraf pusat sehingga akan direspon menjadi suatu gerakan. Pada ANN, neuron juga akan menerima atau memiliki input dan menghasilkan suatu output. Input dari ANN hanya berupa data numerik dan terstruktur saja. Untuk data tidak tersturktur dan non-numerik seperti teks, gambar, dan suara maka dapat digunakan Convolutional Neural Netwroks (CNN) dan Recursive Neural Network (RNN).

source : towardsdatascience.com

Contoh Penerapan ANN pada Datasets Iris

source : bing.com

Sebagai contoh, penulis akan melakukan proses ANN menggunakan data iris yang telah tersedia di R. Data iris merupakan data obeservasi pada 3 spesies buanga iris, yaiatu iris setosa, iris versicolour, dan iris virginica. Berikut adalah langkah-langkah yang dilakukan penulis :

Langkah 1 : Memasukan Data.
Untuk menggunakan data iris pada R dapat menggunakan sintaks berikut.

# Load Data
data("iris")
head(iris)
str(iris)
summary(iris)

Dataset iris memiliki jumlah data sebanyak 150 dengan jumlah masing-masing spesies sebanyak 50. Ada 4 variabel yang dapat diukur dari masing-masing spesis dalam menentukan klasifikasi spesisenya, yaitu sepal length, sepal width, petal length, dan petal width.

Langkah 2: Partisi data.
Partisi data merupakah langkah untuk membagi data menjadi dua, yaitu data training dan testing. Data training digunakan untuk membentuk model sedangkan data testing digunakan untuk menguji model.

# Data Partition
samp <- sample(2, nrow(iris), replace = TRUE,
prob = c(0.75, 0.25)) #75% for testing; 25% for training
training <- iris[samp==1,]
testing <- iris[samp==2,]

Penulis membagi data menjadi dua dengan proporsi 75% untuk data training dan 25% untuk data testing. Diperoleh hasil untuk data training berjumlah 118 sedangkan data testing sebanyak 32.

Langkah 3: Pembentukan ANN dan visualisasi jaringan.
Struktur penulisan fungsi neuralnet diharuskan mendefinisikan rumusan atau formula dari variabel mana saja yang akan digunakan sehingga penulis harus mendefiniskannya terlebih dahulu.

library(neuralnet)
nn <- neuralnet(Species~.,
data = training,
hidden = 5,
stepmax = 100000)
plot(nn)

Pada perintah tersebut, penulis mendefinisikan formulanya sebagai Species~. dengan tanda titik (.) memiliki arti seluruh variabel selain species adalah variabel X. Penulis juga mendefinisikan hidden neuronnya sebanyak 5. Untuk menghindari algortma tidak konvergen, teman-teman bisa mendefinisikan dan menaikan jumlah maksimum stepnya.
Setelah berhasil maka buat plot nya untuk melihat visualisasi dari ANN yang terbentuk.

Berdasarkan plot jaringan neural network , dapat dilihat bahwa jaringan tersebut memiliki 4 input dimana masing-masing node input mewakili sebuah variabel. Kemudian, terdapat 5 neuron pada hidden layer dan neuron diatasnya (yang berwarna biru) merupakan bias yang memeiliki bobot nilai terhadap masing-masing neuron. Garis-garis yang menghubungkan masing-masing neuron merupakan synapse yang memiliki nilai bobot masing-masing (angka bobotnya terlihat pada plot). Lalu, dibagian bawah jaringan terdapat nilai error dan steps. Error merupakan nilai loss yang didapatkan ketika melakukan training pada network data iris, besarnya adalah 1,157338. Sedangkan, steps adalah jumlah iterasi yang dilakukan oleh mesin. Pada gambar jaringan tersebut, mesin telah melakukan 27000 kali iterasi.

Langkah 4: Nilai akurasi data. Penulis melakukan prediksi terhadap data testing yang menghasilkan output seperti pada gambar berikut.

# Prediction
pred <- predict(nn, testing)
con.matrix <- table(testing$Species, apply(pred, 1, which.max))
con.matrix
sum(diag(con.matrix))/sum(con.matrix) #akurasi

Berdasarkan hasil yang diperoleh dapat diketahui bahwa tingkat akurasi dari hasil prediksi sebesar 0,9375 atau 93,75% dengan jumlah setosa yang diprediksi benar setosa sabanyak 7, versicolor yang diprediksi benar versicolor sebanyak 11, versicolor yang diprediksi virginica sebanyak 2, serta virginica yang diprediksi benar virginica sebanyak 12.

Bagaimana jika kita mempunyai data baru dan ingin memprediksinya?
Untuk memprediksi bunga tersebut masuk kedalam jenis bunga iris yang mana, teman-teman bisa memanfaatkan mesin ANN yang sudah dibuat sebelumnya. Teman-teman terlebih dahulu membuat sebuah data frame yang berisikan 4 variabel dari karakterisitk bunga iris. Kemudian, lakukan predikisi menggunakan mesin ANN dan data baru yang sudah dibuat

# Memprediksikan jika kita memiliki data bunga baru
Sepal.Length=c(4.9, 7.1)
Sepal.Width=c(3.3, 2.3)
Petal.Length=c(1.3, 4.8)
Petal.Width=c(1.2, 1.3)
bungabaru=data.frame(Sepal.Length,Sepal.Width,Petal.Length,Petal.Width)
cobaprediksi=predict(nn,bungabaru)
cobaprediksi

Pada bunga pertama, nilai peluang terbesar dimiliki oleh setosa (kolom 1) yatu sebesar 0,9571. Oleh sebab itu, bungan baru pertama masuk kedalam spesies setosa. Pada bungan kedua, nilai probabilitas terbesarnya berada di kolom ke-3 (virginica) sehingga bunga ketiga diprediksi berjenis bunga iris virginica.

Alhamdulillah, kita sudah bisa menerapkan ANN pada contoh studi kasus diatas. Dengan berlatih terus-menerus dan membaca refrensi lain mengenai Artificial Neural Network, pastinya kita akan memahami lebih dalam lagi mengenai ANN beserta algortimanya.
Teman-teman bisa share pengalaman dalam menerapkan ANN melalui komentar dibawah ini^^

Sampai bertemu ditulisan selanjutnya, Wassalamualaikum

--

--

Riefyal Arshyzha Mustain

Seorang mahasiswa tingkat akhir jurusan statistika di Universitas Islam Indonesia yang sangat tertarik dengan data science dan machine learning.