BAB I PENDAHULUAN

1.1 Latar Belakang Masalah

Perkembangan teknologi informasi telah mendorong meningkatnya kebutuhan terhadap metode analisis data yang mampu mengolah informasi dalam jumlah besar dan menghasilkan prediksi secara akurat. Salah satu metode yang banyak digunakan dalam bidang pembelajaran mesin (machine learning) adalah Artificial Neural Network (ANN). Metode ini merupakan model komputasi yang terinspirasi dari cara kerja jaringan saraf manusia dalam memproses informasi. ANN bekerja dengan menghubungkan sejumlah neuron melalui bobot dan bias yang disesuaikan selama proses pelatihan (Fransiska, 2026).

Secara umum, ANN dapat digunakan untuk dua jenis permasalahan, yaitu regresi dan klasifikasi. Pada regresi, ANN digunakan untuk memprediksi nilai numerik atau kontinu berdasarkan pola hubungan antara variabel prediktor dan variabel respons. Sementara itu, pada klasifikasi, ANN digunakan untuk mengelompokkan data ke dalam kategori atau kelas tertentu berdasarkan karakteristik yang dimiliki.

Implementasi ANN dapat dilakukan menggunakan berbagai bahasa pemrograman, salah satunya adalah R. R merupakan bahasa pemrograman yang banyak digunakan dalam pengolahan dan analisis data statistik karena menyediakan berbagai paket yang mendukung penerapan metode pembelajaran mesin. Berdasarkan uraian tersebut, praktikum ini dilakukan untuk memahami konsep serta mengimplementasikan metode Artificial Neural Network untuk permasalahan regresi dan klasifikasi menggunakan bahasa pemrograman R.

1.2 Rumusan Masalah

Berdasarkan latar belakang, rumusan masalah pada penelitian ini adalah:

  1. Bagaimana konsep dan cara mengimplementasikan model Artificial Neural Network (ANN) untuk regresi dan klasifikasi menggunakan bahasa pemrograman R?

  2. Bagaimana cara mengevaluasi performa model ANN menggunakan metrik evaluasi MSE dan MAPE untuk regresi, serta akurasi dan presisi untuk klasifikasi?

1.3 Tujuan

Berdasarkan rumusan masalah di atas, tujuan yang dapat disimpulkan adalah:

  1. Memahami konsep dan mengimplementasikan model Artificial Neural Network (ANN) untuk regresi dan klasifikasi menggunakan bahasa pemrograman R.

  2. Mengevaluasi performa model ANN menggunakan metrik evaluasi MSE dan MAPE untuk regresi, serta akurasi dan presisi untuk klasifikasi.

BAB II TINJAUAN PUSTAKA

2.1 Ensemble Learning

Ensemble learning adalah teknik dalam algoritma pembelajaran mesin (ML) dengan kombinasi dua algoritma atau lebih untuk mendapatkan solusi yang lebih baik dari model sebelumnya. Ensemble learning adalah metode yang melibatkan beberapa algoritma ML dengan hasil rendah kemudian ditingkatkan untuk mendapatkan hasil yang lebih tinggi. Teknik ensemble learning terdiri dari bagging. boosting dan stacking (Churniansyah dan Utomo, 2024). Secara formal, ensemble learning dapat didefinisikan sebagai paradigma pembelajaran di mana beberapa pengklasifikasi dasar dilatih dan digabungkan untuk menghasilkan keputusan klasifikasi akhir. Prediksi ensemble diperoleh melalui suatu fungsi agregasi yang mengombinasikan keluaran model-model tersebut. Efektivitas ensemble learning erat kaitannya dengan dekomposisi bias varians dari galat klasifikasi (Rachmatullah, 2021).

2.2 Artificial Neural Network (ANN)

Artificial Neural Network (ANN) tersusun atas tiga komponen utama, yaitu arsitektur jaringan, algoritma pembelajaran, dan fungsi aktivasi. Arsitektur jaringan menunjukkan susunan serta pola keterhubungan antar-neuron, sedangkan algoritma pembelajaran berperan dalam mengatur dan memperbarui bobot jaringan selama proses pelatihan. Adapun fungsi aktivasi digunakan untuk menentukan keluaran yang dihasilkan oleh setiap neuron. Neuron-neuron tersebut disusun dalam beberapa lapisan dan dihubungkan melalui bobot sesuai dengan struktur jaringan yang diterapkan (Fransiska, 2026).

Secara umum, arsitektur ANN terdiri atas tiga lapisan, yaitu lapisan input, lapisan tersembunyi (hidden layer), dan lapisan output. Lapisan input berfungsi menerima data yang digunakan sebagai masukan dalam proses pemodelan. Selanjutnya, data diteruskan menuju lapisan tersembunyi untuk diproses melalui perhitungan berbobot dan fungsi aktivasi. Pada tahap ini, jaringan mempelajari pola serta hubungan antarvariabel, termasuk hubungan yang bersifat nonlinier. Hasil pemrosesan kemudian diteruskan ke lapisan output untuk menghasilkan keluaran sesuai dengan tujuan analisis, baik berupa nilai prediksi maupun kategori tertentu.

Proses pembelajaran ANN umumnya menggunakan pendekatan supervised learning, yaitu metode pembelajaran yang memanfaatkan data latih beserta nilai target yang telah diketahui. Selama proses pelatihan, keluaran yang dihasilkan jaringan dibandingkan dengan nilai aktual untuk memperoleh besarnya kesalahan (error). Kesalahan tersebut selanjutnya digunakan dalam algoritma backpropagation untuk memperbarui bobot jaringan secara berulang. Proses pembaruan dilakukan hingga diperoleh bobot yang dapat menghasilkan kesalahan prediksi lebih kecil dan meningkatkan kemampuan model dalam memprediksi data (Fadil dkk., 2026).

2.2.1 Artificial Neural Network (ANN) Regresi

ANN regresi merupakan penerapan jaringan saraf tiruan yang bertujuan memprediksi variabel respons berupa nilai numerik kontinu. Dalam penerapannya, lapisan output umumnya menggunakan fungsi aktivasi linear sehingga model dapat menghasilkan nilai prediksi dalam bentuk numerik sesuai dengan karakteristik variabel respons yang dianalisis (Fransiska, 2026).

  1. Algoritma Backpropagation

Backpropagation merupakan algoritma pembelajaran yang digunakan untuk memperbarui bobot pada jaringan ANN berdasarkan kesalahan antara hasil prediksi dan nilai aktual. Dalam pemodelan regresi, proses pembelajaran diarahkan untuk memperoleh nilai kesalahan sekecil mungkin, salah satunya dengan menggunakan Mean Squared Error (MSE). Secara umum, tahapan dalam algoritma backpropagation meliputi:

  1. Forward Propagation, yaitu proses menghitung keluaran jaringan dengan memasukkan data ke dalam jaringan melalui bobot dan fungsi aktivasi pada setiap lapisan.

  2. Backward Propagation, yaitu proses menghitung gradien kesalahan yang digunakan untuk mengetahui besarnya perubahan bobot agar kesalahan prediksi dapat dikurangi.

  3. Pembaruan Bobot, yaitu proses menyesuaikan nilai bobot berdasarkan gradien yang telah dihitung pada tahap sebelumnya. Proses ini dilakukan secara berulang selama pelatihan untuk meminimalkan kesalahan prediksi.

  1. Fungsi Aktivasi

Fungsi aktivasi merupakan fungsi yang menentukan nilai keluaran dari suatu neuron berdasarkan hasil penjumlahan berbobot dari seluruh masukan dan bias. Penggunaan fungsi aktivasi memungkinkan ANN mempelajari pola hubungan yang bersifat nonlinear. Dalam pemodelan regresi, terdapat beberapa jenis fungsi aktivasi yang dapat digunakan sesuai dengan kebutuhan dan karakteristik data. Jenis-jenis fungsi aktivasi tersebut disajikan pada tabel berikut.

2.2.2 Artificial Neural Network (ANN) klasifikasi

Artificial Neural Network (ANN) klasifikasi merupakan penerapan jaringan saraf tiruan yang bertujuan memprediksi variabel respons dalam bentuk kategori atau kelas tertentu. Berdasarkan jumlah kategori yang digunakan, ANN klasifikasi dapat dikelompokkan menjadi dua jenis, yaitu klasifikasi biner dan klasifikasi multikelas (Fransiska, 2026).

  1. Klasifikasi Biner, merupakan metode klasifikasi yang melibatkan dua kategori atau kelas. Pada jenis klasifikasi ini, lapisan output umumnya menggunakan satu neuron dengan fungsi aktivasi sigmoid untuk menghasilkan nilai probabilitas antara 0 dan 1.

  2. Klasifikasi Multikelas, merupakan metode klasifikasi yang digunakan ketika variabel respons memiliki lebih dari dua kategori. Lapisan output biasanya menggunakan fungsi aktivasi softmax untuk memperoleh probabilitas dari setiap kelas, dengan total probabilitas seluruh kelas bernilai 1.

Pada ANN klasifikasi, proses pembelajaran dilakukan dengan memperbarui bobot jaringan agar kesalahan dalam mengelompokkan data dapat diminimalkan. Salah satu fungsi kerugian (loss function) yang digunakan adalah cross-entropy loss. Fungsi ini mengukur perbedaan antara probabilitas yang diprediksi oleh model dan kategori aktual dari setiap pengamatan.

BAB III METODE PENELITIAN

3.1 Sumber Data

Jenis data yang digunakan dalam penelitian ini berupa data kuantitatif dan data kualitatif. Data kuantitatif adalah jenis data yang dapat diukur (measurable) atau dihitung secara langsung sebagai variabel angka. Sumber data yang digunakan dalam penelitian ini yaitu data sekunder. Data sekunder adalah data yang diperoleh secara tidak langsung oleh peneliti melainkan melalui prantara. Data sekunder dalam penelitian ini diperoleh dari dari dataset Iris pada Program R.

3.2 Variabel Penelitian

Variabel adalah objek penelitian atau apa yang menjadi titik perhatian. Dalam penelitian ini terdapat beberapa variabel. Variabel penelitian terdiri atas variabel respons dan variabel prediktor. variabel respons yang digunakan adalah Species, yang terdiri atas tiga kategori, yaitu setosa, versicolor, dan virginica. Variabel prediktor yang digunakan terdiri atas empat variabel, yaitu Sepal.Length, Sepal.Width, Petal.Length, dan Petal.Width. Keempat variabel tersebut merupakan karakteristik ukuran bagian bunga iris yang digunakan untuk mengklasifikasikan spesies bunga ke dalam kategori yang sesuai.

3.3 Langkah-langkah Analisis

Langkah-langkah analisis yang dilakukan adalah:

  1. Menyiapkan dataset yang akan digunakan untuk analisis ANN klasifikasi menggunakan bahasa pemrograman R.

  2. Membagi data menjadi data training dan data testing untuk membangun serta mengevaluasi model ANN.

  3. Membangun model ANN klasifikasi dengan menentukan arsitektur jaringan serta parameter yang sesuai dengan jumlah kelas pada variabel respons.

  4. Melakukan proses pelatihan model menggunakan data training untuk memperoleh bobot jaringan yang sesuai.

  5. Melakukan prediksi menggunakan masing-masing model ANN terhadap data testing.

  6. Mengevaluasi performa model ANN klasifikasi menggunakan metrik akurasi dan presisi berdasarkan hasil confusion matrix.

  7. Membandingkan hasil evaluasi model regresi dan klasifikasi untuk mengetahui kemampuan ANN dalam menyelesaikan kedua jenis permasalahan tersebut.

  8. Menarik kesimpulan berdasarkan hasil implementasi dan evaluasi model ANN.

BAB IV HASIL DAN PEMBAHASAN

4.1 Library dan Dataset

#Library
library(nnet)
library(NeuralNetTools)
# Membentuk dataset
data(iris)
head(iris)
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa
summary(iris)
##   Sepal.Length    Sepal.Width     Petal.Length    Petal.Width   
##  Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100  
##  1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300  
##  Median :5.800   Median :3.000   Median :4.350   Median :1.300  
##  Mean   :5.843   Mean   :3.057   Mean   :3.758   Mean   :1.199  
##  3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800  
##  Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500  
##        Species  
##  setosa    :50  
##  versicolor:50  
##  virginica :50  
##                 
##                 
## 
# Melihat jumlah data
nrow(iris)
## [1] 150

Dataset yang digunakan adalah dataset iris yang merupakan dataset bawaan R. Dataset ini terdiri atas empat variabel prediktor, yaitu Sepal.Length, Sepal.Width, Petal.Length, dan Petal.Width, serta satu variabel respons yaitu Species. Berdasarkan hasil ringkasan statistik, variabel Sepal.Length memiliki nilai minimum 4,3, maksimum 7,9, dan rata-rata 5,843. Variabel Sepal.Width memiliki nilai minimum 2,0, maksimum 4,4, dan rata-rata 3,057. Selanjutnya, variabel Petal.Length memiliki nilai minimum 1,0, maksimum 6,9, dan rata-rata 3,758, sedangkan Petal.Width memiliki nilai minimum 0,1, maksimum 2,5, dan rata-rata 1,199.Variabel respons Species terdiri atas tiga kategori, yaitu setosa, versicolor, dan virginica, dengan masing-masing kategori berjumlah 50 observasi. Dengan demikian, dataset memiliki distribusi kelas yang seimbang, sehingga setiap spesies memiliki jumlah observasi yang sama sebelum dilakukan pembagian data training dan testing.

4.3 Pembagian Data

# Membagi data training 80% dan testing 20%
set.seed(917)
index80 <- sample(1:nrow(iris), round(0.8*nrow(iris)))
train80 <- iris[index80, ]
test20 <- iris[-index80, ]
nrow(train80)
## [1] 120
nrow(test20)
## [1] 30
# Membagi data training 60% dan testing 40%
set.seed(917)
index60 <- sample(1:nrow(iris), round(0.6*nrow(iris)))
train60 <- iris[index60, ]
test40 <- iris[-index60, ]
nrow(train60)
## [1] 90
nrow(test40)
## [1] 60

Dataset Iris memiliki total 150 observasi. Pada skenario pertama, sebanyak 120 observasi digunakan sebagai data training dan 30 observasi sebagai data testing. Pada skenario kedua, sebanyak 90 observasi digunakan sebagai data training dan 60 observasi sebagai data testing. Pembagian ini dilakukan untuk mengetahui bagaimana perubahan proporsi data training dan testing memengaruhi kemampuan klasifikasi model ANN.

4.3 Model Artificial Neural Network (ANN)

###ANN klasifikasi dengan training 80% dan testing 20%###
#1. Hidden neuron = 10
# Membuat formula
i <- names(train80)
form80 <- as.formula(paste("Species ~",
        paste(i[!i %in% "Species"], collapse = " + ")))
# ANN dengan 10 hidden neuron
set.seed(917)
nn10_80 <- nnet.formula(form80, size = 10, data = train80, trace = FALSE, maxit = 500)

# Prediksi
pred10_80 <- predict(nn10_80, newdata = test20, type = "class")
# Tabel klasifikasi
tab10_80 <- table(test20$Species, pred10_80); tab10_80
##             pred10_80
##              setosa versicolor virginica
##   setosa          8          0         0
##   versicolor      0         10         0
##   virginica       0          1        11
# Classification rate
cr10_80 <- sum(diag(tab10_80))/nrow(test20); cr10_80
## [1] 0.9666667
# Visualisasi
plotnet(nn10_80)

neuralweights(nn10_80)
## $struct
## [1]  4 10  3
## 
## $wts
## $wts$`hidden 1 1`
## [1]  7.169818 41.224811 16.356507 32.701727  9.981863
## 
## $wts$`hidden 1 2`
## [1] -1.770717 -4.778936 -4.556577  3.306599  1.341234
## 
## $wts$`hidden 1 3`
## [1]  69846.74  15337.22  17220.58 -33083.65 -31284.31
## 
## $wts$`hidden 1 4`
## [1] -0.13719739  2.34225555  1.56985503  0.07872238  0.66923921
## 
## $wts$`hidden 1 5`
## [1]   2.773370   3.647873  14.693767 -27.166511 -13.288376
## 
## $wts$`hidden 1 6`
## [1]  147.0233   48.8413 -107.3870  107.5460 -407.6691
## 
## $wts$`hidden 1 7`
## [1] 1.191369 4.814613 2.699559 2.419712 1.023875
## 
## $wts$`hidden 1 8`
## [1]  52.754075 -22.849384  16.756984   4.176676  13.079041
## 
## $wts$`hidden 1 9`
## [1] 1.449401 5.022240 1.787742 2.994866 1.667018
## 
## $wts$`hidden 1 10`
## [1]   83.76293 1737.95463  933.94913  815.52393 1141.02420
## 
## $wts$`out 1`
##  [1] -113.391046 -113.969899   -8.680701 5769.988144 -112.983353 5818.116901
##  [7]    0.521013 -109.598297    7.072335 -114.395085 -111.678096
## 
## $wts$`out 2`
##  [1]    43.808741    42.682528     3.932973 13417.863223    43.343680
##  [6] -5804.517833    80.322517    41.261141    10.382521    45.728645
## [11]    32.667594
## 
## $wts$`out 3`
##  [1]     70.755302     72.488606      4.125059 -19188.604933     69.438861
##  [6]    -13.855415    -81.814286     67.155814    -17.490480     69.354725
## [11]     79.061373
olden(nn10_80)
## Warning in olden.default(wts_in, x_names, y_names, skip_wts = skip_wts, :
## Results for first response variable only, use out_var argument to change
## Warning: `label` cannot be a <ggplot2::element_blank> object.

Berdasarkan sintaks yang digunakan, model ANN dibangun dengan empat neuron pada input layer yang mewakili empat variabel prediktor, yaitu Sepal.Length, Sepal.Width, Petal.Length, dan Petal.Width. Selanjutnya, terdapat 10 neuron pada hidden layer yang berfungsi memproses pola hubungan antara variabel prediktor. Pada output layer terdapat tiga neuron yang mewakili tiga kategori spesies, yaitu setosa, versicolor, dan virginica.

Tabel klasifikasi menunjukkan perbandingan antara kelas spesies aktual dengan kelas spesies hasil prediksi model ANN.

Spesies setosa: Dari 8 observasi aktual, seluruhnya berhasil diklasifikasikan dengan tepat sebagai setosa. Tidak terdapat observasi yang salah diklasifikasikan ke kategori lainnya.

Spesies versicolor: Dari 10 observasi aktual, seluruhnya berhasil diklasifikasikan dengan tepat sebagai versicolor.

Spesies virginica: Dari 12 observasi aktual, sebanyak 11 observasi diklasifikasikan dengan tepat sebagai virginica, sedangkan 1 observasi salah diklasifikasikan sebagai versicolor.

Secara keseluruhan, model mampu mengklasifikasikan 29 dari 30 observasi dengan tepat. Kesalahan klasifikasi hanya terjadi pada satu observasi spesies virginica yang diprediksi sebagai versicolor. Hal ini menunjukkan bahwa model ANN dengan 10 hidden neuron memiliki kemampuan klasifikasi yang sangat baik pada data testing dalam skenario pembagian 80:20.

Nilai classification rate sebesar 96,67% menunjukkan bahwa model ANN dengan 10 hidden neuron mampu mengklasifikasikan sebanyak 96,67% dari seluruh data testing secara tepat. Dari total 30 observasi, terdapat 29 observasi yang diprediksi sesuai dengan kelas aktual, sedangkan satu observasi lainnya mengalami kesalahan klasifikasi.

#2. Hidden neuron = 20
set.seed(917)
nn20_80 <- nnet.formula(form80, size = 20, data = train80, trace = FALSE, maxit = 500)

pred20_80 <- predict(nn20_80, newdata = test20, type = "class")

tab20_80 <- table(test20$Species, pred20_80); tab20_80
##             pred20_80
##              setosa versicolor virginica
##   setosa          8          0         0
##   versicolor      0         10         0
##   virginica       0          3         9
cr20_80 <- sum(diag(tab20_80))/nrow(test20); cr20_80
## [1] 0.9
plotnet(nn20_80)

neuralweights(nn20_80)
## $struct
## [1]  4 20  3
## 
## $wts
## $wts$`hidden 1 1`
## [1] 1.6050613 7.2155719 0.7957941 4.2245879 4.0211044
## 
## $wts$`hidden 1 2`
## [1] -472.8107 -141.5539 -216.1869  314.5886  260.2032
## 
## $wts$`hidden 1 3`
## [1]  837.56618   20.50964 -113.05350   56.62710 -540.28313
## 
## $wts$`hidden 1 4`
## [1]   1.314193   4.971404   8.781659 -11.081389  -6.122160
## 
## $wts$`hidden 1 5`
## [1] -0.7649622 -3.5727136  0.1570238 -6.7624681 -3.0923554
## 
## $wts$`hidden 1 6`
## [1] -0.7494100 -1.6623998 -0.6647645 -0.5545969  0.1236089
## 
## $wts$`hidden 1 7`
## [1] -0.1104088 -1.9472115 -0.8274361 -0.6150798  0.6136638
## 
## $wts$`hidden 1 8`
## [1]  -4.846334  -2.895763 -31.479272  41.525674  20.054666
## 
## $wts$`hidden 1 9`
## [1]  0.48223448  0.08394376 -0.99384048  0.80647684  1.30349129
## 
## $wts$`hidden 1 10`
## [1]  1.474046 72.370864 45.064435 72.013803 38.686835
## 
## $wts$`hidden 1 11`
## [1] 0.7293279 2.7852904 1.4932619 1.0454559 0.2738718
## 
## $wts$`hidden 1 12`
## [1] -0.07436679 -3.41046650 -1.45101263 -2.29371516 -0.43795599
## 
## $wts$`hidden 1 13`
## [1] 0.4616693 2.1413598 1.2717046 0.5511106 0.1349638
## 
## $wts$`hidden 1 14`
## [1] -0.4027012 -2.4584125 -1.2488464 -1.8488999 -0.7980844
## 
## $wts$`hidden 1 15`
## [1] -0.0347089779 -1.8331595431  0.0008824558 -2.2619196606 -1.5382363501
## 
## $wts$`hidden 1 16`
## [1]  22.647982  -1.619870 -52.178314  -6.241236 100.870727
## 
## $wts$`hidden 1 17`
## [1]  0.3010643  2.6010768 -0.2816671  4.9643077  2.8494258
## 
## $wts$`hidden 1 18`
## [1]  0.8999773  4.9085191  5.6937003 -4.2343449 -1.7092977
## 
## $wts$`hidden 1 19`
## [1] -0.18524836  1.05793886  0.01927402  1.11603431  0.45284070
## 
## $wts$`hidden 1 20`
## [1]  0.02166499 -1.30624757 -0.61502313 -0.48498581 -0.54821012
## 
## $wts$`out 1`
##  [1]   15.35971694   14.72239437  -44.58733547   37.51834363  200.48422093
##  [6]    1.41117496   -0.12309704   -0.07649367 -168.20732617   14.92848521
## [11]   16.10164367   16.13703522    0.20286247   20.50989342   -1.14259406
## [16]    0.50820651   -2.67467840   11.96694565   18.68893116   15.10283825
## [21]    0.50982152
## 
## $wts$`out 2`
##  [1]   13.4482261   13.3493841 -433.4736275  139.0988267 -184.9940314
##  [6]    1.2424024   -0.2132768   -0.2021760  183.8296175   13.1295485
## [11]   14.9094055   13.3615717    1.5944383   10.5582772    0.1121413
## [16]    0.6618699   43.6909558   16.8134125   13.1964554   12.5292947
## [21]    0.1755814
## 
## $wts$`out 3`
##  [1]  -29.4946485  -27.1650015  477.9949910 -176.5966694  -15.6335146
##  [6]   -3.7268551    0.1398273    0.1489806  -15.8762715  -28.6298280
## [11]  -30.9840353  -29.7936840   -2.1970656  -30.8865428    0.9286408
## [16]   -1.1922131  -40.5298457  -27.9661348  -31.2539959  -27.7021504
## [21]    0.2328568
olden(nn20_80)
## Warning in olden.default(wts_in, x_names, y_names, skip_wts = skip_wts, :
## Results for first response variable only, use out_var argument to change
## Warning: `label` cannot be a <ggplot2::element_blank> object.

Berdasarkan hasil confusion matrix, model ANN dengan 20 hidden neurons mampu mengklasifikasikan 27 dari 30 data testing secara tepat, dengan nilai classification rate sebesar 90%. Seluruh data spesies setosa sebanyak 8 pengamatan dan versicolor sebanyak 10 pengamatan diklasifikasikan dengan tepat. Namun, pada spesies virginica, hanya 9 dari 12 pengamatan yang diklasifikasikan dengan tepat, sedangkan 3 pengamatan lainnya diprediksi sebagai versicolor. Hal ini menunjukkan bahwa kesalahan klasifikasi terjadi pada kedua spesies yang memiliki karakteristik relatif sulit dibedakan oleh model, yaitu versicolor dan virginica. Dibandingkan model dengan 10 hidden neurons, penambahan jumlah neuron menjadi 20 tidak meningkatkan ketepatan klasifikasi, bahkan menghasilkan nilai classification rate yang lebih rendah

#3. Hidden neuron = 30
set.seed(917)
nn30_80 <- nnet.formula(form80, size = 30, data = train80, trace = FALSE, maxit = 500)

pred30_80 <- predict(nn30_80, newdata = test20, type = "class")

tab30_80 <- table(test20$Species, pred30_80); tab30_80
##             pred30_80
##              setosa versicolor virginica
##   setosa          8          0         0
##   versicolor      0          8         2
##   virginica       0          1        11
cr30_80 <- sum(diag(tab30_80))/nrow(test20); cr30_80
## [1] 0.9
plotnet(nn30_80)

neuralweights(nn30_80)
## $struct
## [1]  4 30  3
## 
## $wts
## $wts$`hidden 1 1`
## [1] -21.7122890  12.2304316 -16.9373937  -0.5620642  -1.9265031
## 
## $wts$`hidden 1 2`
## [1] -123.87476  -43.01549   73.01048   37.11897   19.89174
## 
## $wts$`hidden 1 3`
## [1]  0.5419568  1.3659890  0.8344088 -0.2604491 -0.6022689
## 
## $wts$`hidden 1 4`
## [1] 0.6180106 8.1435266 3.7167845 5.6441265 2.4276525
## 
## $wts$`hidden 1 5`
## [1] 128.316483 -23.080072 137.146209 -84.791955  -1.480883
## 
## $wts$`hidden 1 6`
## [1] -0.6450407 -0.8834464  0.9920019 -3.8540441 -1.1866434
## 
## $wts$`hidden 1 7`
## [1]  16.788912  -9.021507   6.651238  -3.829295 -17.149399
## 
## $wts$`hidden 1 8`
## [1]  0.6259553 -1.9111727  5.1379319 -9.9346614 -1.7771080
## 
## $wts$`hidden 1 9`
## [1]  -2.021599  -5.913783   4.209806 -25.114676 -11.250664
## 
## $wts$`hidden 1 10`
## [1]  0.4621833 -2.4621634 -0.3130237  1.2076031  1.8176727
## 
## $wts$`hidden 1 11`
## [1] 150.763824  14.242805 -38.573093   7.891491 -98.191212
## 
## $wts$`hidden 1 12`
## [1]  4.5764006 -0.3617093  6.8911185 -7.1157097  9.3677221
## 
## $wts$`hidden 1 13`
## [1] 0.4901803 0.9159511 0.6287223 0.7065193 0.1266292
## 
## $wts$`hidden 1 14`
## [1] -0.6768569 -3.3331594  0.5248239 -7.9226056 -2.6506822
## 
## $wts$`hidden 1 15`
## [1] -7.1169890 -0.2389677  4.6509788 -0.5159390  1.0478526
## 
## $wts$`hidden 1 16`
## [1]  18.667586  15.824766 -27.107281 -12.531143   1.067954
## 
## $wts$`hidden 1 17`
## [1] -3.432315 -2.154999 -7.374948 15.739648 12.620339
## 
## $wts$`hidden 1 18`
## [1]   4.338185   7.649460   8.405540 -23.462435 -18.384545
## 
## $wts$`hidden 1 19`
## [1]   4.748865   5.486784 -10.194927  -5.826805  -3.358474
## 
## $wts$`hidden 1 20`
## [1]  13.869302  -2.795010   8.900775  -4.516975 -10.211983
## 
## $wts$`hidden 1 21`
## [1]   4.023930   4.296543   7.293921 -19.293906 -16.309311
## 
## $wts$`hidden 1 22`
## [1] -0.12615811  0.11185470  0.04695173 -0.62808251 -0.41484937
## 
## $wts$`hidden 1 23`
## [1]  48.705242   4.745346 -30.819358  -6.351858 -12.475392
## 
## $wts$`hidden 1 24`
## [1]  -0.3310687 -12.4357011  -3.5565819 -19.5474875 -11.0596475
## 
## $wts$`hidden 1 25`
## [1] -0.1144402 -0.3065988 -0.5941850  0.6307480  0.3530388
## 
## $wts$`hidden 1 26`
## [1] -0.6014521 -4.0804130 -1.6617161 -3.4059031 -0.2524630
## 
## $wts$`hidden 1 27`
## [1]  -0.6599913  -9.4801751   0.3073908 -18.7992694  -8.1865908
## 
## $wts$`hidden 1 28`
## [1]  25.152039   4.773204   5.558095 -16.523219  -9.293496
## 
## $wts$`hidden 1 29`
## [1] -1.7072137 -2.8621147 -0.4505145  3.5236871  1.8605399
## 
## $wts$`hidden 1 30`
## [1]  4.375648 -1.282474 -8.366022 13.358362 14.113602
## 
## $wts$`out 1`
##  [1]   7.61096146 -31.21693364   5.35665075  -0.50603288  -0.11409219
##  [6]  17.60732554   2.01125898  -7.79252681  10.30929539  27.22579961
## [11]   9.20001317  12.23209113   1.67910677   6.53308592  -0.30674968
## [16]  11.30579961  28.38486966 -20.92187795  33.71354032  -4.19167275
## [21]  17.89868643  26.66705607   0.76827353  -4.59157379  13.76291925
## [26]   8.66147943   0.05221825  -3.59377189  16.98617681   5.96681085
## [31] -50.81640578
## 
## $wts$`out 2`
##  [1]  -1.2528179 -29.4331520 -50.7413856  -2.9912414  -5.1573011  70.0909622
##  [7]   4.1348097   8.2325378  -3.7772785 -22.9159404  -0.1625199  50.1387341
## [13]   9.5443656  -4.9614704   3.4778536 -17.1689082  12.1027409  22.3498493
## [19] -28.8765783  25.5277789   6.8343092 -24.9508227   0.2780044  65.6057365
## [25]   8.1739562  -2.5428691   0.5743157  -1.9388418  23.9939978  -5.9966683
## [31]  54.8510833
## 
## $wts$`out 3`
##  [1]  -5.5964325  61.6942055  45.2706916   3.1756247   4.2930938 -88.3721316
##  [7]  -5.4699983  -0.3979862  -6.2543098  -3.6719070 -10.1742747 -62.4045615
## [13] -11.7263316  -1.6094596  -3.5729402   5.3367591 -40.1077014  -1.8747111
## [19]  -4.6941778 -21.8817517 -25.0843051  -1.0913851  -1.3412564 -59.5548254
## [25] -22.3142142  -6.6097010  -1.1565041   5.5951613 -40.8017562  -1.3098139
## [31]  -3.7011399
olden(nn30_80)
## Warning in olden.default(wts_in, x_names, y_names, skip_wts = skip_wts, :
## Results for first response variable only, use out_var argument to change
## Warning: `label` cannot be a <ggplot2::element_blank> object.

Berdasarkan hasil confusion matrix, model ANN dengan 30 hidden neurons mampu mengklasifikasikan 27 dari 30 data testing secara tepat, dengan nilai classification rate sebesar 90%. Seluruh data spesies setosa sebanyak 8 pengamatan diklasifikasikan dengan tepat. Pada spesies versicolor, terdapat 8 pengamatan yang diklasifikasikan dengan tepat dan 2 pengamatan yang keliru diprediksi sebagai virginica. Sementara itu, pada spesies virginica, terdapat 11 pengamatan yang diklasifikasikan dengan tepat dan 1 pengamatan yang diprediksi sebagai versicolor. Kesalahan klasifikasi tersebut memperlihatkan bahwa model masih mengalami kekeliruan dalam membedakan spesies versicolor dan virginica. Dengan demikian, penggunaan 30 hidden neurons pada pembagian data 80% training dan 20% testing menghasilkan ketepatan klasifikasi sebesar 90%, sama dengan model yang menggunakan 20 hidden neurons.

###ANN klasifikasi dengan training 60% dan testing 40%###
#1. Hidden neuron = 10
i <- names(train60)
form60 <- as.formula(paste("Species ~", paste(i[!i %in% "Species"], collapse = " + ")))

set.seed(917)
nn10_60 <- nnet.formula(form60,size = 10, data = train60, trace = FALSE, maxit = 500)

pred10_60 <- predict(nn10_60, newdata = test40, type = "class")

tab10_60 <- table(test40$Species, pred10_60); tab10_60
##             pred10_60
##              setosa versicolor virginica
##   setosa         17          0         0
##   versicolor      0         23         1
##   virginica       0          2        17
cr10_60 <- sum(diag(tab10_60))/nrow(test40); cr10_60
## [1] 0.95
plotnet(nn10_60)

neuralweights(nn10_60)
## $struct
## [1]  4 10  3
## 
## $wts
## $wts$`hidden 1 1`
## [1] 1.4461665 5.1720595 2.9526194 1.2022832 0.5980032
## 
## $wts$`hidden 1 2`
## [1]  -3.687825 -21.970512  -8.409398 -19.792353  -7.736795
## 
## $wts$`hidden 1 3`
## [1]  0.08374682 -0.37005906 -0.81563387  0.58158007 -0.01803074
## 
## $wts$`hidden 1 4`
## [1] 0.1749863 5.1311474 2.6288429 3.6357443 2.2435517
## 
## $wts$`hidden 1 5`
## [1] 117.764598   7.755390  -1.120751 -19.263802 -39.976492
## 
## $wts$`hidden 1 6`
## [1] -1.18638368 -3.39982979 -2.53374514 -0.01477436  0.42013679
## 
## $wts$`hidden 1 7`
## [1]   2.458986   4.303700  15.323174 -20.297432 -12.363386
## 
## $wts$`hidden 1 8`
## [1]  -7.950632 -41.761033 -25.515442 -17.384779  -3.295873
## 
## $wts$`hidden 1 9`
## [1]  0.8688696  0.6346647 -2.7527752 -1.5356477 -4.2424414
## 
## $wts$`hidden 1 10`
## [1]  -2.439455  -5.681976 -22.326970  29.993115  13.719606
## 
## $wts$`out 1`
##  [1]  -9.7159250 -16.3416535  -9.5088012   0.2487206  -7.0742329  74.0960661
##  [7]   1.4235324  29.9725029  10.4523452  16.5889788 -42.1033817
## 
## $wts$`out 2`
##  [1]   4.2309156   6.4943277   2.0635151  -0.2605037   0.6332944  52.0271478
##  [7]  -0.2901501 -23.8309569  15.2352489  13.2405427   7.6696220
## 
## $wts$`out 3`
##  [1]    6.6580064   11.0485610    6.8226182   -0.7417826    6.2401260
##  [6] -126.3795614   -2.1041382   -7.3228874  -25.7232179  -29.1412368
## [11]   34.4846309
olden(nn10_60)
## Warning in olden.default(wts_in, x_names, y_names, skip_wts = skip_wts, :
## Results for first response variable only, use out_var argument to change
## Warning: `label` cannot be a <ggplot2::element_blank> object.

Berdasarkan hasil confusion matrix, model ANN dengan 10 hidden neurons mampu mengklasifikasikan 57 dari 60 data testing secara tepat, dengan nilai classification rate sebesar 95%. Seluruh data spesies setosa sebanyak 17 pengamatan diklasifikasikan dengan tepat. Pada spesies versicolor, terdapat 23 pengamatan yang diklasifikasikan dengan tepat dan 1 pengamatan yang keliru diprediksi sebagai virginica. Sementara itu, pada spesies virginica, terdapat 17 pengamatan yang diklasifikasikan dengan tepat dan 2 pengamatan yang diprediksi sebagai versicolor. Hasil tersebut menunjukkan bahwa model memiliki ketepatan klasifikasi yang tinggi, meskipun masih terdapat kesalahan dalam membedakan spesies versicolor dan virginica. Secara keseluruhan, model dengan 10 hidden neurons pada pembagian data 60% training dan 40% testing memberikan nilai classification rate sebesar 95%.

#2. Hidden neuron = 20
set.seed(917)
nn20_60 <- nnet.formula(form60,size = 20,  data = train60, trace = FALSE, maxit = 500)

pred20_60 <- predict(nn20_60, newdata = test40, type = "class")

tab20_60 <- table(test40$Species, pred20_60); tab20_60
##             pred20_60
##              setosa versicolor virginica
##   setosa         17          0         0
##   versicolor      0         23         1
##   virginica       0          2        17
cr20_60 <- sum(diag(tab20_60))/nrow(test40); cr20_60
## [1] 0.95
plotnet(nn20_60)

neuralweights(nn20_60)
## $struct
## [1]  4 20  3
## 
## $wts
## $wts$`hidden 1 1`
## [1]  -2.06986369 -11.39089945 -11.01281027  -6.05596214  -0.09785201
## 
## $wts$`hidden 1 2`
## [1] -0.7410213 -1.4650687 -0.5082156 -0.0760350 -0.4654813
## 
## $wts$`hidden 1 3`
## [1] -0.0182286 -1.2624219 -1.1738600 -0.4082634 -0.4230323
## 
## $wts$`hidden 1 4`
## [1]  0.53848113  5.00885110  4.36949386 -1.01149646  0.03433979
## 
## $wts$`hidden 1 5`
## [1] -1.005464 -3.463395 -1.136596 -3.610947 -1.650545
## 
## $wts$`hidden 1 6`
## [1] -0.6700492 -1.2372013 -0.4511003 -0.3997868  0.1797674
## 
## $wts$`hidden 1 7`
## [1] -0.01797337 -1.44048392 -0.57359576 -0.41288620  0.69846426
## 
## $wts$`hidden 1 8`
## [1] -0.2539389 -3.2628279 -1.9501448 -1.1781397  0.4486655
## 
## $wts$`hidden 1 9`
## [1]  0.4723365  0.9385642 -0.9276784  2.9606139  2.4580552
## 
## $wts$`hidden 1 10`
## [1] 1.592777 5.013146 3.254458 3.841262 1.248868
## 
## $wts$`hidden 1 11`
## [1]  0.50539867  1.47133526  0.87810115  0.10603135 -0.02489633
## 
## $wts$`hidden 1 12`
## [1]  0.2814658 -1.2889174 -0.6903227 -0.6855720  0.1508766
## 
## $wts$`hidden 1 13`
## [1]  1.242404  2.669401  4.382132 -6.975539 -4.198690
## 
## $wts$`hidden 1 14`
## [1] -0.4671180 -1.8038076 -1.2913348  0.2397712  0.3683546
## 
## $wts$`hidden 1 15`
## [1] 163.138174  11.745966  -8.591999 -25.659493 -49.781207
## 
## $wts$`hidden 1 16`
## [1] -0.3185583 -1.9623894 -1.8657089 -0.8666278 -0.6304724
## 
## $wts$`hidden 1 17`
## [1]  0.2644635 -1.0841768 -4.2734356  8.5307727  8.1684636
## 
## $wts$`hidden 1 18`
## [1] -0.7587711 -2.2514495 -0.5552854 -3.3283705 -0.7193346
## 
## $wts$`hidden 1 19`
## [1]  0.6362752  2.9262566  0.9685288 -0.1857804 -1.2252064
## 
## $wts$`hidden 1 20`
## [1]  0.0600113 -1.1238690 -0.4807865 -0.4616996 -0.5525877
## 
## $wts$`out 1`
##  [1]   5.06331225 -11.34573483   0.18496169   0.19896678  10.44026666
##  [6]   1.55934382  -0.18798579  -0.04067613   0.45448916   3.89093699
## [11]   4.36992841   5.59367687  -0.02698644   5.52819600   0.23050849
## [16]  13.64800031   0.26442671 -51.02525088  -0.09894944  -3.51212428
## [21]   0.38857167
## 
## $wts$`out 2`
##  [1]  -7.27403743  -1.93431632  -0.87295985  -0.07109228 -11.17039595
##  [6]  -0.89874246  -0.27491833  -0.40422383  -0.78447362  -8.95662210
## [11]  -8.25837684  -7.19408303  -0.01732315  -2.14037545  -0.50876786
## [16]  58.35830230   0.03962073  37.05722441   0.37693594  -7.03331531
## [21]   0.20670562
## 
## $wts$`out 3`
##  [1]   1.52401979  14.18682814   0.62202627  -0.10737352   0.58680416
##  [6]  -1.73387907   0.26635759   0.31521089   0.07600433   4.49389079
## [11]   3.91546232   1.30532914  -0.35545522  -3.20619272   0.17644746
## [16] -72.02843929   0.18238425  14.78224982   0.35340414  10.47542211
## [21]   0.32298236
olden(nn20_60)
## Warning in olden.default(wts_in, x_names, y_names, skip_wts = skip_wts, :
## Results for first response variable only, use out_var argument to change
## Warning: `label` cannot be a <ggplot2::element_blank> object.

Berdasarkan hasil confusion matrix, model ANN dengan 20 hidden neurons mampu mengklasifikasikan 57 dari 60 data testing secara tepat, dengan nilai classification rate sebesar 95%. Seluruh data spesies setosa sebanyak 17 pengamatan diklasifikasikan dengan tepat. Pada spesies versicolor, terdapat 23 pengamatan yang diklasifikasikan dengan tepat dan 1 pengamatan yang diprediksi sebagai virginica. Sementara itu, pada spesies virginica, terdapat 17 pengamatan yang diklasifikasikan dengan tepat dan 2 pengamatan yang diprediksi sebagai versicolor. Hasil confusion matrix ini menunjukkan pola klasifikasi yang sama dengan model yang menggunakan 10 hidden neurons. Dengan demikian, penambahan jumlah hidden neurons dari 10 menjadi 20 pada pembagian data tersebut belum memberikan perubahan terhadap ketepatan klasifikasi model, yaitu tetap sebesar 95%.

#3. Hidden neuron = 30
set.seed(917)
nn30_60 <- nnet.formula(form60, size = 30, data = train60, trace = FALSE, maxit = 500)

pred30_60 <- predict(nn30_60, newdata = test40, type = "class")

tab30_60 <- table(test40$Species, pred30_60); tab30_60
##             pred30_60
##              setosa versicolor virginica
##   setosa         17          0         0
##   versicolor      0         24         0
##   virginica       0          3        16
cr30_60 <- sum(diag(tab30_60))/nrow(test40); cr30_60
## [1] 0.95
plotnet(nn30_60)

neuralweights(nn30_60)
## $struct
## [1]  4 30  3
## 
## $wts
## $wts$`hidden 1 1`
## [1]  0.3659854 -0.4919334 -1.2016239 -0.8587622 -0.2090998
## 
## $wts$`hidden 1 2`
## [1] -0.54622517 -0.01319148  0.13348067  1.85214487  0.40617550
## 
## $wts$`hidden 1 3`
## [1]  0.04409606 -1.07312994 -0.84526366 -0.66830808 -0.51565386
## 
## $wts$`hidden 1 4`
## [1] -1.0935773 -3.5959536 -1.0416201 -4.7197986 -0.9631804
## 
## $wts$`hidden 1 5`
## [1]  0.8802445  0.2445697  6.1101160 -8.7789184 -7.5467680
## 
## $wts$`hidden 1 6`
## [1] -0.3990659 -0.1592269  0.7645958 -1.1521829 -0.1732768
## 
## $wts$`hidden 1 7`
## [1]  3.47311510 -0.06215185  1.37796375 -0.54422499  0.56788718
## 
## $wts$`hidden 1 8`
## [1]   1.691160   2.551463   8.153303 -10.600185  -4.376367
## 
## $wts$`hidden 1 9`
## [1]  0.1960628 -2.9044044 -1.2657341 -3.9189200 -0.5408783
## 
## $wts$`hidden 1 10`
## [1] 1.133004 3.173150 2.933850 3.264524 1.856598
## 
## $wts$`hidden 1 11`
## [1]  56.370760   5.627432  10.726844 -13.512618 -32.336028
## 
## $wts$`hidden 1 12`
## [1]  1.1575522 -0.7791960  0.5050398 -2.4659556 -0.6972282
## 
## $wts$`hidden 1 13`
## [1] 0.7889411 4.4437681 1.8840568 3.1081858 0.9917691
## 
## $wts$`hidden 1 14`
## [1] -0.17518420 -0.75066073 -0.04794119 -0.46328711  0.02323331
## 
## $wts$`hidden 1 15`
## [1] -1.3717894  0.5395809  0.3662331  1.0306861  0.3230964
## 
## $wts$`hidden 1 16`
## [1]  0.4782409  1.7354123  0.9385660 -0.4091523 -0.7261673
## 
## $wts$`hidden 1 17`
## [1] -41.2142396   0.6564388   2.2199674  -0.5660259  19.2757455
## 
## $wts$`hidden 1 18`
## [1] -0.3835626  0.2137676  0.2361684 -1.0284429 -0.0498075
## 
## $wts$`hidden 1 19`
## [1]  0.3487041 -0.6736838 -0.5681109 -0.7742122  0.6692838
## 
## $wts$`hidden 1 20`
## [1]  7.961881 18.029787  8.158764 12.774707 -7.378796
## 
## $wts$`hidden 1 21`
## [1]  11.1441259  -0.8011109   0.3285176  -7.8491019 -23.1101052
## 
## $wts$`hidden 1 22`
## [1] -0.2246510 -0.2336561 -0.1978943 -0.6537962 -0.4524440
## 
## $wts$`hidden 1 23`
## [1]   4.776635 -10.912888  -3.889346 -10.529007 -12.974244
## 
## $wts$`hidden 1 24`
## [1]  0.4460665 -1.3111283  0.2593165 -2.0563515 -1.7152535
## 
## $wts$`hidden 1 25`
## [1] 0.21720104 1.09734236 0.77230555 0.31086021 0.09975271
## 
## $wts$`hidden 1 26`
## [1] -0.1452425 -1.6690595 -0.7534898 -1.3783911  0.1956552
## 
## $wts$`hidden 1 27`
## [1]  75.545229   5.305391   9.349316 -15.991645 -32.345403
## 
## $wts$`hidden 1 28`
## [1]  0.1642446 -0.2915637  0.6294396 -0.8455919 -0.5921772
## 
## $wts$`hidden 1 29`
## [1]  0.4666729  0.5802128 -0.4798862  1.3036522  0.2265400
## 
## $wts$`hidden 1 30`
## [1] -6.890464  7.227311 -1.086593 -6.715829 12.739415
## 
## $wts$`out 1`
##  [1]  -1.02452092  -3.07979987  -0.83095392   0.17022916   0.05931297
##  [6]  25.07200341   1.09505055   0.20243976  18.12667623  -0.68532628
## [11]  -1.14023077   5.32774902   1.09180628  -0.34348911   0.29199821
## [16]  -0.92434241   2.60339489  -9.20076722   0.35596344  -0.95423434
## [21]  11.16266342  12.67899828   0.31374503   6.01015965   1.92752633
## [26]  -0.75424528  -0.07423766   7.25671408   0.08898254  -2.00092846
## [31] -17.14363771
## 
## $wts$`out 2`
##  [1]  -0.08751061  -1.19081587  -1.20607968  -0.56224545  -0.37588941
##  [6] -18.76929766   0.88207969  -0.36669416 -13.41184241   1.01557725
## [11]  -0.41349987  18.33680182   1.76636781  -0.63344026  -0.29582435
## [16]  -4.44586504  -2.92905706 -13.93566501   0.32238129   3.74824169
## [21]   4.70791337   6.94830120  -0.06730247  10.04154989  -1.34732453
## [26]  -1.31860546  -0.16307214  32.25875783   1.40415504  -0.81490021
## [31]   1.30264109
## 
## $wts$`out 3`
##  [1]   1.8737427   5.3147356   1.9229904   0.0703667  -0.6617230  -6.9765496
##  [7]  -1.3010599   0.2062791  -4.4371267   0.3077012   0.4169492 -23.6982871
## [13]  -3.3610333   0.9390852  -0.3980101   4.8438579   0.7055713  22.6896926
## [19]  -0.5355605  -3.3396530 -16.2218863 -19.0024513  -0.5414209 -14.5923722
## [25]  -0.9575405   1.5817601  -0.2926603 -39.4529244  -1.3147192   1.4761573
## [31]  16.1745343
olden(nn30_60)
## Warning in olden.default(wts_in, x_names, y_names, skip_wts = skip_wts, :
## Results for first response variable only, use out_var argument to change
## Warning: `label` cannot be a <ggplot2::element_blank> object.

Berdasarkan hasil confusion matrix, model ANN dengan 30 hidden neurons mampu mengklasifikasikan 57 dari 60 data testing secara tepat, dengan nilai classification rate sebesar 95%. Seluruh data spesies setosa sebanyak 17 pengamatan dan seluruh data versicolor sebanyak 24 pengamatan diklasifikasikan dengan tepat. Namun, pada spesies virginica, terdapat 16 dari 19 pengamatan yang diklasifikasikan dengan tepat, sedangkan 3 pengamatan lainnya diprediksi sebagai versicolor. Hasil tersebut menunjukkan bahwa model dapat mengklasifikasikan spesies setosa dan versicolor secara tepat pada data testing, tetapi masih terdapat kesalahan dalam mengidentifikasi sebagian pengamatan virginica. Secara keseluruhan, model dengan 30 hidden neurons menghasilkan nilai classification rate sebesar 95%, sama dengan model yang menggunakan 10 dan 20 hidden neurons pada pembagian data 60% training dan 40% testing.

##tabel perbandingan classification rate
hasil <- data.frame(
  Pembagian = c("80:20", "80:20", "80:20",
                "60:40", "60:40", "60:40"),
  
  Hidden_Neuron = c(10, 20, 30, 10, 20, 30),
  
  Classification_Rate = c(
    cr10_80, cr20_80, cr30_80,
    cr10_60, cr20_60, cr30_60
  )
)

hasil$Akurasi_Persen <- hasil$Classification_Rate * 100

hasil
##   Pembagian Hidden_Neuron Classification_Rate Akurasi_Persen
## 1     80:20            10           0.9666667       96.66667
## 2     80:20            20           0.9000000       90.00000
## 3     80:20            30           0.9000000       90.00000
## 4     60:40            10           0.9500000       95.00000
## 5     60:40            20           0.9500000       95.00000
## 6     60:40            30           0.9500000       95.00000

Berdasarkan tabel perbandingan nilai classification rate dari keenam model ANN, diperoleh bahwa model dengan pembagian data 80% training dan 20% testing serta 10 hidden neurons menghasilkan nilai ketepatan klasifikasi tertinggi, yaitu sebesar 96,67%. Sementara itu, model dengan pembagian data yang sama tetapi menggunakan 20 dan 30 hidden neurons masing-masing menghasilkan classification rate sebesar 90%. Pada pembagian data 60% training dan 40% testing, ketiga model dengan jumlah hidden neurons 10, 20, dan 30 menghasilkan nilai classification rate yang sama, yaitu sebesar 95%. Hasil ini menunjukkan bahwa penambahan jumlah hidden neurons tidak selalu meningkatkan ketepatan klasifikasi model ANN. Dalam percobaan ini, model dengan 10 hidden neurons pada pembagian data 80:20 memberikan hasil klasifikasi terbaik dibandingkan lima model lainnya. Meskipun demikian, perbedaan nilai tersebut hanya menggambarkan performa model pada pembagian data dan pengaturan yang digunakan dalam percobaan ini, sehingga belum dapat disimpulkan bahwa konfigurasi tersebut selalu menjadi model terbaik untuk data lainnya.

BAB V KESIMPULAN

5.1 Kesimpulan

Model Artificial Neural Network (ANN) dapat diterapkan untuk menyelesaikan permasalahan regresi dan klasifikasi menggunakan bahasa pemrograman R. Penerapan ANN dilakukan melalui tahapan persiapan data, pembentukan arsitektur jaringan, pelatihan model menggunakan algoritma pembelajaran, hingga prediksi terhadap data pengujian. Pada regresi, ANN digunakan untuk memprediksi nilai numerik kontinu, sedangkan pada klasifikasi ANN digunakan untuk mengelompokkan data ke dalam kategori tertentu. Dengan demikian, ANN dapat digunakan untuk kedua jenis permasalahan tersebut sesuai dengan karakteristik variabel respons dan struktur data yang dianalisis.

Evaluasi performa model ANN dilakukan menggunakan metrik yang disesuaikan dengan jenis analisis. Pada regresi, MSE dan MAPE digunakan untuk mengukur tingkat kesalahan antara nilai aktual dan prediksi, sehingga nilai yang semakin kecil menunjukkan kesalahan prediksi yang semakin rendah. Sementara itu, pada klasifikasi, akurasi digunakan untuk mengukur proporsi prediksi yang tepat dari seluruh pengamatan, sedangkan presisi mengukur ketepatan model dalam memprediksi suatu kelas. Oleh karena itu, penggunaan metrik evaluasi tersebut dapat memberikan gambaran mengenai kemampuan model ANN dalam menghasilkan prediksi pada permasalahan regresi maupun klasifikasi.

Berdasarkan hasil analisis klasifikasi menggunakan metode Artificial Neural Network (ANN) pada data Iris dengan variasi jumlah hidden neurons sebanyak 10, 20, dan 30 serta pembagian data training dan testing sebesar 80:20 dan 60:40, dapat disimpulkan bahwa seluruh konfigurasi model menghasilkan nilai classification rate yang cukup tinggi, yaitu berkisar antara 90% hingga 96,67%. Model dengan pembagian data 80:20 dan 10 hidden neurons memberikan nilai ketepatan klasifikasi tertinggi sebesar 96,67%, sedangkan model dengan pembagian data 80:20 dan 20 maupun 30 hidden neurons menghasilkan nilai sebesar 90%. Pada pembagian data 60:40, ketiga variasi jumlah hidden neurons menghasilkan nilai ketepatan klasifikasi yang sama, yaitu 95%. Selain itu, seluruh model mampu mengklasifikasikan spesies setosa dengan tepat, sedangkan kesalahan klasifikasi lebih banyak terjadi pada spesies versicolor dan virginica. Hasil ini menunjukkan bahwa jumlah hidden neurons dan proporsi pembagian data training serta testing dapat memberikan hasil klasifikasi yang berbeda. Namun, penambahan jumlah hidden neurons tidak selalu meningkatkan ketepatan klasifikasi. Berdasarkan percobaan yang dilakukan, konfigurasi 80:20 dengan 10 hidden neurons merupakan model dengan performa klasifikasi tertinggi.

DAFTAR PUSTAKA

Fadil, H. A., Rouza, E., Andriansya., Mutaqqin, Z., Mahendra, K. P., Abdi, K. (2026). Implementasi Artificial Neural Network (ANN) Untuk Memprediksi Cuaca Harian Berdasarkan Data Suhu Dan Kelembapan. Journal of Artificial Intelligence and Digital Business (RIGGS), 4(4)

Fransiska, H. (2026). Modul Praktikum Machine Learning and Modern Prediction. Laboratorium Statistika, Universitas Bengkulu.

Rachmatullah, M. I. C. (2025). Ensemble learning untuk klasifikasi: Tinjauan komprehensif metode, aplikasi, dan perkembangan terkini. Improve, 17(1), 29–31.