Artificial Neural Network (ANN) merupakan model pembelajaran mesin yang terinspirasi dari cara kerja jaringan saraf biologis. Model ini tersusun atas neuron yang diorganisasi dalam lapisan input, lapisan tersembunyi (hidden layer), dan lapisan output. Salah satu arsitektur yang banyak digunakan adalah multilayer perceptron yang dilatih menggunakan algoritma backpropagation (Martínez-García dkk., 2025). ANN dapat digunakan untuk regresi, yaitu memprediksi respons numerik, maupun klasifikasi, yaitu memprediksi kelas suatu pengamatan.
Pada tugas klasifikasi, tinjauan sistematis terhadap 30 studi yang terbit pada 2019 sampai 2024 menunjukkan bahwa ANN banyak diterapkan dengan arsitektur multilayer perceptron dan convolutional neural network (Molina Menéndez & Parraga-Alava, 2024). Performa ANN dipengaruhi oleh berbagai pengaturan model, salah satunya jumlah neuron pada lapisan tersembunyi (Rahman dkk., 2021), serta oleh cara data dibagi menjadi data training dan data testing (Bichri dkk., 2024).
Pada praktikum ini, ANN diterapkan untuk klasifikasi menggunakan data
Breast Cancer dari paket mlbench pada program R.
Model dibentuk dengan jumlah hidden neuron sebesar 10, 20, dan
30, masing-masing pada pembagian data training 80% dan testing 20% serta
training 60% dan testing 40%. Performa model dievaluasi menggunakan
akurasi dan presisi, kemudian hasilnya diinterpretasikan untuk setiap
model.
Artificial Neural Network (ANN) merupakan model komputasi yang terdiri atas neuron-neuron yang saling terhubung dan tersusun dalam lapisan input, lapisan tersembunyi, dan lapisan output. Salah satu arsitektur yang umum digunakan adalah multilayer perceptron yang dilatih dengan algoritma backpropagation (Martínez-García dkk., 2025).
Setiap neuron pada lapisan tersembunyi menghitung kombinasi linear dari input yang diterimanya, kemudian meneruskannya melalui fungsi aktivasi. Untuk neuron ke-\(j\), perhitungan tersebut dapat dituliskan sebagai berikut (Martínez-García dkk., 2025):
\[ z_j=\sum_{i=1}^{p}w_{ji}x_i+b_j,\qquad a_j=f(z_j) \]
dengan \(x_i\) merupakan input ke-\(i\), \(w_{ji}\) bobot yang menghubungkan input ke-\(i\) dengan neuron ke-\(j\), \(b_j\) bias, dan \(f(\cdot)\) fungsi aktivasi. Fungsi aktivasi logistik \(f(z)=1/(1+e^{-z})\) menghasilkan nilai antara 0 dan 1 sehingga dapat digunakan untuk menyatakan probabilitas pada klasifikasi dua kelas (Martínez-García dkk., 2025).
Pada tugas klasifikasi, Molina Menéndez dan Parraga-Alava (2024) menelaah 30 studi yang terbit pada 2019 sampai 2024. Hasil telaah tersebut menunjukkan bahwa arsitektur yang banyak digunakan adalah convolutional neural network untuk data citra dan multilayer perceptron, dan jaringan feedforward memiliki rata-rata akurasi tertinggi pada sampel studi yang ditelaah (Molina Menéndez & Parraga-Alava, 2024).
Pelatihan ANN dilakukan dengan memperbarui bobot jaringan secara iteratif agar selisih antara keluaran model dan nilai aktual semakin kecil. Pada algoritma backpropagation, pengaturan parameter pelatihan, seperti learning rate dan momentum, memengaruhi efisiensi konvergensi dan kestabilan model (Syaharuddin dkk., 2025). Syaharuddin dkk. (2025) juga menyebutkan bahwa overfitting dan ketergantungan pada data yang besar masih menjadi tantangan pada pelatihan jaringan saraf tiruan.
Overfitting terjadi ketika model terlalu menyesuaikan diri dengan data training sehingga performanya pada data baru lebih rendah. Karena tantangan tersebut masih muncul pada pelatihan jaringan saraf tiruan (Syaharuddin dkk., 2025), performa ANN perlu dibandingkan antara data training dan data testing.
Data umumnya dibagi menjadi data training yang digunakan untuk membentuk model dan data testing yang digunakan untuk mengevaluasi model pada data baru. Bichri dkk. (2024) menguji rasio pembagian 60-40, 70-30, 80-20, dan 90-10 pada tiga model pra-latih dengan tiga data citra dua kelas. Hasilnya menunjukkan bahwa rasio pembagian memengaruhi performa model, dengan rasio 80-20 dan 90-10 memberikan hasil terbaik pada sebagian besar kasus (Bichri dkk., 2024). Meskipun konteks penelitian tersebut adalah klasifikasi citra, temuan ini menunjukkan bahwa perbandingan beberapa rasio pembagian data relevan dilakukan.
Evaluasi model klasifikasi umumnya diawali dengan matriks konfusi (confusion matrix) yang membandingkan kelas aktual dan kelas prediksi (Tharwat, 2021). Untuk klasifikasi dua kelas, matriks konfusi memuat empat nilai berikut (Tharwat, 2021).
| Prediksi positif | Prediksi negatif | |
|---|---|---|
| Aktual positif | TP (true positive) | FN (false negative) |
| Aktual negatif | FP (false positive) | TN (true negative) |
Akurasi menyatakan proporsi observasi yang diklasifikasikan dengan benar dari seluruh observasi, sedangkan presisi menyatakan proporsi prediksi positif yang benar-benar positif (Tharwat, 2021).
\[ Akurasi=\frac{TP+TN}{TP+TN+FP+FN}, \qquad Presisi=\frac{TP}{TP+FP} \]
Nilai akurasi dan presisi yang lebih tinggi menunjukkan kinerja klasifikasi yang lebih baik (Tharwat, 2021). Akurasi dapat menyesatkan apabila proporsi kelas tidak seimbang sehingga ukuran lain seperti presisi perlu dilihat bersama akurasi (Tharwat, 2021).
Pada ANN untuk regresi, performa model diukur menggunakan Mean Squared Error (MSE) dan Mean Absolute Percentage Error (MAPE) (Chicco dkk., 2021). MSE menggunakan norma kuadrat sehingga memberi bobot lebih besar pada galat yang besar, sedangkan MAPE merupakan ukuran galat relatif dalam bentuk persentase (Chicco dkk., 2021).
\[ MSE=\frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y}_i)^2, \qquad MAPE=\frac{100\%}{n}\sum_{i=1}^{n}\left|\frac{y_i-\hat{y}_i}{y_i}\right| \]
Jenis data yang digunakan dalam praktikum ini adalah data kuantitatif dan kategorik. Data kuantitatif merupakan data yang dinyatakan dalam bentuk angka, sedangkan data kategorik merupakan data yang dikelompokkan berdasarkan kategori tertentu. Data yang digunakan mencakup variabel prediktor numerik dan variabel respons kategorik yang sesuai untuk analisis klasifikasi. Variabel prediktor berupa skor karakteristik sel pada skala 1 sampai 10 yang diperlakukan sebagai data numerik, sedangkan variabel respons berupa kategori tumor.
Data yang digunakan dalam praktikum ini adalah data Breast
Cancer Wisconsin yang diperoleh dari paket mlbench
dalam program R (Leisch & Dimitriadou, 2026). Data tersebut terdiri
atas 699 observasi dan 11 variabel, yaitu variabel identitas
(Id), sembilan variabel prediktor, dan satu variabel
respons (Class). Variabel Id tidak digunakan
dalam pemodelan, dan 16 nilai hilang pada data menyebabkan observasi
yang tidak lengkap dikeluarkan sehingga jumlah observasi yang dianalisis
menjadi 683. Data tersebut digunakan untuk membentuk model
Artificial Neural Network (ANN) dengan jumlah neuron
tersembunyi 10, 20, dan 30 serta proporsi pembagian data training dan
testing sebesar 80%:20% dan 60%:40%. Data training digunakan untuk
membentuk model klasifikasi, sedangkan data testing digunakan untuk
mengevaluasi kemampuan model dalam mengklasifikasikan data.
Variabel penelitian yang digunakan dalam praktikum ini terdiri dari
sepuluh variabel, yaitu sembilan variabel prediktor dan satu variabel
respons. Variabel prediktor merupakan karakteristik sel yang digunakan
sebagai dasar dalam proses klasifikasi, sedangkan variabel respons
merupakan kelas yang menjadi sasaran prediksi. Sembilan variabel
prediktor meliputi ketebalan gumpalan sel (Cl.thickness),
ukuran sel (Cell.size), bentuk sel
(Cell.shape), perlekatan tepi sel
(Marg.adhesion), ukuran sel epitel
(Epith.c.size), inti sel kosong (Bare.nuclei),
kromatin (Bl.cromatin), jumlah nukleolus normal
(Normal.nucleoli), dan jumlah pembelahan sel
(Mitoses). Sementara itu, variabel respons adalah
Class yang menunjukkan kategori jinak (benign)
atau ganas (malignant). Hubungan antara variabel prediktor dan
variabel respons dipelajari melalui pemodelan ANN untuk menghasilkan
klasifikasi berdasarkan karakteristik yang dimiliki setiap
observasi.
Rumusan masalah dan tujuan praktikum mencakup ANN untuk regresi dan klasifikasi. Namun, batasan analisis pada praktikum ini adalah ANN klasifikasi dengan hidden neuron sebesar 10, 20, dan 30, menggunakan pembagian data training 80% dan testing 20% serta training 60% dan testing 40%. Oleh karena itu, implementasi dan evaluasi pada Bab IV difokuskan pada klasifikasi dengan akurasi dan presisi. Metrik MSE dan MAPE untuk regresi dijelaskan pada landasan teori dan tidak dihitung pada analisis komputasi.
Id, dan mengeluarkan observasi yang memiliki nilai
hilang.set.seed(123).nnet() dengan hidden neuron 10, 20, dan 30
pada setiap rasio pembagian data (Ripley & Venables, 2026).Paket mlbench digunakan untuk memuat data,
nnet untuk membentuk model ANN, sedangkan
dplyr, tidyr, ggplot2, dan
knitr digunakan untuk pengolahan data, visualisasi, dan
penyajian hasil.
# Instal paket jika belum tersedia:
# install.packages(c("mlbench", "nnet", "dplyr", "tidyr", "ggplot2", "knitr"))
library(mlbench)
library(nnet)
library(dplyr)
library(tidyr)
library(ggplot2)
library(knitr)
data(BreastCancer)
str(BreastCancer)## 'data.frame': 699 obs. of 11 variables:
## $ Id : chr "1000025" "1002945" "1015425" "1016277" ...
## $ Cl.thickness : Ord.factor w/ 10 levels "1"<"2"<"3"<"4"<..: 5 5 3 6 4 8 1 2 2 4 ...
## $ Cell.size : Ord.factor w/ 10 levels "1"<"2"<"3"<"4"<..: 1 4 1 8 1 10 1 1 1 2 ...
## $ Cell.shape : Ord.factor w/ 10 levels "1"<"2"<"3"<"4"<..: 1 4 1 8 1 10 1 2 1 1 ...
## $ Marg.adhesion : Ord.factor w/ 10 levels "1"<"2"<"3"<"4"<..: 1 5 1 1 3 8 1 1 1 1 ...
## $ Epith.c.size : Ord.factor w/ 10 levels "1"<"2"<"3"<"4"<..: 2 7 2 3 2 7 2 2 2 2 ...
## $ Bare.nuclei : Factor w/ 10 levels "1","2","3","4",..: 1 10 2 4 1 10 10 1 1 1 ...
## $ Bl.cromatin : Factor w/ 10 levels "1","2","3","4",..: 3 3 3 3 3 9 3 3 1 2 ...
## $ Normal.nucleoli: Factor w/ 10 levels "1","2","3","4",..: 1 2 1 7 1 7 1 1 1 1 ...
## $ Mitoses : Factor w/ 9 levels "1","2","3","4",..: 1 1 1 1 1 1 1 1 5 1 ...
## $ Class : Factor w/ 2 levels "benign","malignant": 1 1 1 1 1 2 1 1 1 1 ...
Variabel Id tidak digunakan sebagai prediktor sehingga
dihapus. Observasi yang memiliki nilai hilang dikeluarkan, kemudian
seluruh prediktor diubah menjadi numerik.
n_awal <- nrow(BreastCancer)
n_na <- sum(!complete.cases(BreastCancer))
data_bc <- BreastCancer %>%
select(-Id) %>%
na.omit()
fitur <- setdiff(names(data_bc), "Class")
data_bc[fitur] <- lapply(data_bc[fitur], function(x) as.numeric(as.character(x)))
data_bc$Class <- factor(as.character(data_bc$Class),
levels = c("benign", "malignant"))
cat("Jumlah observasi awal :", n_awal, "\n")## Jumlah observasi awal : 699
## Observasi dengan nilai NA : 16
## Jumlah observasi dianalisis: 683
##
## benign malignant
## 444 239
Dari 699 observasi awal, terdapat 16 observasi yang memuat nilai hilang sehingga data yang dianalisis berjumlah 683 observasi. Kelas benign berjumlah 444 observasi (65.01%) dan kelas malignant berjumlah 239 observasi (34.99%).
Distribusi kelas diamati untuk mengetahui apakah proporsi kedua kelas seimbang.
ggplot(data_bc, aes(x = Class)) +
geom_bar() +
geom_text(stat = "count", aes(label = after_stat(count)), vjust = -0.4) +
labs(
title = "Distribusi Kelas",
x = "Kelas",
y = "Frekuensi"
) +
theme_minimal()Gambar 1. Distribusi kelas pada data Breast Cancer
Gambar 1 menunjukkan bahwa kelas benign lebih banyak daripada kelas malignant, dengan proporsi kelas ganas sebesar 34.99%. Proporsi ini tidak terlalu timpang sehingga akurasi masih dapat digunakan sebagai ukuran utama, tetapi presisi tetap dilaporkan untuk melihat ketepatan prediksi kelas ganas.
Prediktor dinormalisasi dengan metode min-max menggunakan
nilai minimum dan maksimum dari data training agar informasi data
testing tidak ikut digunakan saat pelatihan. Model ANN dibentuk dengan
fungsi nnet() pada satu lapisan tersembunyi. Jumlah
hidden neuron dibandingkan pada nilai 10, 20, dan 30, sedangkan
pembagian data dibandingkan pada rasio 80:20 dan 60:40. Kelas
malignant ditetapkan sebagai kelas positif.
hidden_neuron <- c(10, 20, 30)
rasio_train <- c(0.8, 0.6)
hitung_klasifikasi <- function(aktual, prediksi, positif = "malignant") {
aktual <- as.character(aktual)
prediksi <- as.character(prediksi)
tp <- sum(aktual == positif & prediksi == positif)
tn <- sum(aktual != positif & prediksi != positif)
fp <- sum(aktual != positif & prediksi == positif)
fn <- sum(aktual == positif & prediksi != positif)
data.frame(
TP = tp, FP = fp, FN = fn, TN = tn,
Akurasi = (tp + tn) / length(aktual),
Presisi = ifelse(tp + fp == 0, NA, tp / (tp + fp))
)
}
jalankan_ann <- function(rasio, hidden, seed = 123) {
# Pembagian data
set.seed(seed)
n <- nrow(data_bc)
id_train <- sample(seq_len(n), size = floor(rasio * n))
train <- data_bc[id_train, ]
test <- data_bc[-id_train, ]
# Normalisasi min-max berdasarkan data training
mn <- sapply(train[fitur], min)
mx <- sapply(train[fitur], max)
skala <- function(d) {
d[fitur] <- Map(function(x, a, b) (x - a) / (b - a), d[fitur], mn, mx)
d
}
train_s <- skala(train)
test_s <- skala(test)
# Pelatihan ANN satu lapisan tersembunyi
set.seed(seed + hidden)
model <- nnet(Class ~ ., data = train_s, size = hidden,
maxit = 500, rang = 0.1, decay = 0, trace = FALSE)
pred_train <- predict(model, train_s, type = "class")
pred_test <- predict(model, test_s, type = "class")
m_train <- hitung_klasifikasi(train_s$Class, pred_train)
m_test <- hitung_klasifikasi(test_s$Class, pred_test)
data.frame(
Skenario = sprintf("%d:%d", round(rasio * 100), round((1 - rasio) * 100)),
Hidden = hidden,
N_Train = nrow(train),
N_Test = nrow(test),
Akurasi_Train = m_train$Akurasi,
Akurasi_Test = m_test$Akurasi,
Presisi_Test = m_test$Presisi,
TP = m_test$TP, FP = m_test$FP, FN = m_test$FN, TN = m_test$TN,
Konvergen = model$convergence == 0
)
}
hasil_list <- list()
for (r in rasio_train) {
for (h in hidden_neuron) {
hasil_list[[length(hasil_list) + 1]] <- jalankan_ann(r, h)
}
}
hasil_ann <- bind_rows(hasil_list)Enam model terbentuk dari kombinasi tiga jumlah hidden neuron dan dua rasio pembagian data. Hasil evaluasi pada data testing dipaparkan pada subbab berikut untuk masing-masing rasio.
hasil_80 <- hasil_ann %>% filter(Skenario == "80:20")
kable(hasil_80 %>% select(Hidden, Akurasi_Train, Akurasi_Test, Presisi_Test, TP, FP, FN, TN, Konvergen),
digits = 4,
caption = "Hasil ANN pada Skenario 80:20 (TP, FP, FN, TN dihitung pada data testing)")| Hidden | Akurasi_Train | Akurasi_Test | Presisi_Test | TP | FP | FN | TN | Konvergen |
|---|---|---|---|---|---|---|---|---|
| 10 | 0.9872 | 0.9708 | 0.9574 | 45 | 2 | 2 | 88 | TRUE |
| 20 | 0.9982 | 0.9635 | 0.9565 | 44 | 2 | 3 | 88 | TRUE |
| 30 | 1.0000 | 0.9562 | 0.9556 | 43 | 2 | 4 | 88 | TRUE |
Tabel di atas memuat akurasi pada data training dan testing, presisi pada data testing, serta matriks konfusi data testing dengan kelas malignant sebagai kelas positif. Pada skenario ini, data training berjumlah 546 observasi dan data testing berjumlah 137 observasi.
Hidden neuron = 10. Model mencapai konvergensi. Dari 137 observasi testing, 133 diklasifikasikan dengan benar sehingga akurasi testing sebesar 97.08%. Model memprediksi 47 observasi sebagai ganas (malignant) dan 45 di antaranya benar-benar ganas, sehingga presisi sebesar 95.74%. Kesalahan klasifikasi terdiri atas 2 kasus jinak yang diprediksi ganas (false positive) dan 2 kasus ganas yang diprediksi jinak (false negative); jenis kesalahan kedua perlu mendapat perhatian pada konteks diagnosis karena kasus ganas tidak terdeteksi. Akurasi training sebesar 98.72%, dengan selisih terhadap akurasi testing hanya 1.64 poin persentase sehingga tidak tampak overfitting yang berarti.
Hidden neuron = 20. Model mencapai konvergensi. Dari 137 observasi testing, 132 diklasifikasikan dengan benar sehingga akurasi testing sebesar 96.35%. Model memprediksi 46 observasi sebagai ganas (malignant) dan 44 di antaranya benar-benar ganas, sehingga presisi sebesar 95.65%. Kesalahan klasifikasi terdiri atas 2 kasus jinak yang diprediksi ganas (false positive) dan 3 kasus ganas yang diprediksi jinak (false negative); jenis kesalahan kedua perlu mendapat perhatian pada konteks diagnosis karena kasus ganas tidak terdeteksi. Akurasi training sebesar 99.82%, lebih tinggi 3.47 poin persentase daripada akurasi testing, yang mengindikasikan kecenderungan overfitting.
Hidden neuron = 30. Model mencapai konvergensi. Dari 137 observasi testing, 131 diklasifikasikan dengan benar sehingga akurasi testing sebesar 95.62%. Model memprediksi 45 observasi sebagai ganas (malignant) dan 43 di antaranya benar-benar ganas, sehingga presisi sebesar 95.56%. Kesalahan klasifikasi terdiri atas 2 kasus jinak yang diprediksi ganas (false positive) dan 4 kasus ganas yang diprediksi jinak (false negative); jenis kesalahan kedua perlu mendapat perhatian pada konteks diagnosis karena kasus ganas tidak terdeteksi. Akurasi training sebesar 100.00%, lebih tinggi 4.38 poin persentase daripada akurasi testing, yang mengindikasikan kecenderungan overfitting.
Pada skenario 80:20, akurasi testing tertinggi sebesar 97.08% dicapai oleh model dengan hidden neuron 10. Selisih akurasi testing antara model terbaik dan terendah adalah 1.46 poin persentase, sehingga perbedaan performa antarmodel relatif kecil pada skenario ini. Satu observasi testing setara dengan 0.73 poin persentase akurasi, sehingga selisih yang hanya beberapa observasi sebaiknya tidak ditafsirkan berlebihan.
hasil_60 <- hasil_ann %>% filter(Skenario == "60:40")
kable(hasil_60 %>% select(Hidden, Akurasi_Train, Akurasi_Test, Presisi_Test, TP, FP, FN, TN, Konvergen),
digits = 4,
caption = "Hasil ANN pada Skenario 60:40 (TP, FP, FN, TN dihitung pada data testing)")| Hidden | Akurasi_Train | Akurasi_Test | Presisi_Test | TP | FP | FN | TN | Konvergen |
|---|---|---|---|---|---|---|---|---|
| 10 | 0.9878 | 0.9562 | 0.9231 | 84 | 7 | 5 | 178 | TRUE |
| 20 | 1.0000 | 0.9453 | 0.9302 | 80 | 6 | 9 | 179 | TRUE |
| 30 | 1.0000 | 0.9343 | 0.9176 | 78 | 7 | 11 | 178 | TRUE |
Pada skenario ini, data training berjumlah 409 observasi dan data testing berjumlah 274 observasi.
Hidden neuron = 10. Model mencapai konvergensi. Dari 274 observasi testing, 262 diklasifikasikan dengan benar sehingga akurasi testing sebesar 95.62%. Model memprediksi 91 observasi sebagai ganas (malignant) dan 84 di antaranya benar-benar ganas, sehingga presisi sebesar 92.31%. Kesalahan klasifikasi terdiri atas 7 kasus jinak yang diprediksi ganas (false positive) dan 5 kasus ganas yang diprediksi jinak (false negative); jenis kesalahan kedua perlu mendapat perhatian pada konteks diagnosis karena kasus ganas tidak terdeteksi. Akurasi training sebesar 98.78%, lebih tinggi 3.16 poin persentase daripada akurasi testing, yang mengindikasikan kecenderungan overfitting.
Hidden neuron = 20. Model mencapai konvergensi. Dari 274 observasi testing, 259 diklasifikasikan dengan benar sehingga akurasi testing sebesar 94.53%. Model memprediksi 86 observasi sebagai ganas (malignant) dan 80 di antaranya benar-benar ganas, sehingga presisi sebesar 93.02%. Kesalahan klasifikasi terdiri atas 6 kasus jinak yang diprediksi ganas (false positive) dan 9 kasus ganas yang diprediksi jinak (false negative); jenis kesalahan kedua perlu mendapat perhatian pada konteks diagnosis karena kasus ganas tidak terdeteksi. Akurasi training sebesar 100.00%, lebih tinggi 5.47 poin persentase daripada akurasi testing, yang mengindikasikan kecenderungan overfitting.
Hidden neuron = 30. Model mencapai konvergensi. Dari 274 observasi testing, 256 diklasifikasikan dengan benar sehingga akurasi testing sebesar 93.43%. Model memprediksi 85 observasi sebagai ganas (malignant) dan 78 di antaranya benar-benar ganas, sehingga presisi sebesar 91.76%. Kesalahan klasifikasi terdiri atas 7 kasus jinak yang diprediksi ganas (false positive) dan 11 kasus ganas yang diprediksi jinak (false negative); jenis kesalahan kedua perlu mendapat perhatian pada konteks diagnosis karena kasus ganas tidak terdeteksi. Akurasi training sebesar 100.00%, lebih tinggi 6.57 poin persentase daripada akurasi testing, yang mengindikasikan kecenderungan overfitting.
Pada skenario 60:40, akurasi testing tertinggi sebesar 95.62% dicapai oleh model dengan hidden neuron 10. Selisih akurasi testing antara model terbaik dan terendah adalah 2.19 poin persentase, sehingga jumlah hidden neuron memberikan perbedaan performa yang cukup terlihat pada skenario ini. Satu observasi testing setara dengan 0.36 poin persentase akurasi, sehingga selisih yang hanya beberapa observasi sebaiknya tidak ditafsirkan berlebihan.
Perbandingan akurasi dan presisi pada data testing untuk seluruh model disajikan pada tabel dan grafik berikut.
kable(hasil_ann %>% select(Skenario, Hidden, Akurasi_Test, Presisi_Test, FP, FN),
digits = 4,
caption = "Perbandingan Akurasi dan Presisi Testing pada Seluruh Model")| Skenario | Hidden | Akurasi_Test | Presisi_Test | FP | FN |
|---|---|---|---|---|---|
| 80:20 | 10 | 0.9708 | 0.9574 | 2 | 2 |
| 80:20 | 20 | 0.9635 | 0.9565 | 2 | 3 |
| 80:20 | 30 | 0.9562 | 0.9556 | 2 | 4 |
| 60:40 | 10 | 0.9562 | 0.9231 | 7 | 5 |
| 60:40 | 20 | 0.9453 | 0.9302 | 6 | 9 |
| 60:40 | 30 | 0.9343 | 0.9176 | 7 | 11 |
hasil_ann %>%
select(Skenario, Hidden, Akurasi_Test, Presisi_Test) %>%
pivot_longer(cols = c(Akurasi_Test, Presisi_Test),
names_to = "Metrik", values_to = "Nilai") %>%
mutate(
Metrik = recode(Metrik, Akurasi_Test = "Akurasi", Presisi_Test = "Presisi"),
Hidden = factor(Hidden)
) %>%
ggplot(aes(x = Hidden, y = Nilai, fill = Metrik)) +
geom_col(position = "dodge", na.rm = TRUE) +
geom_text(aes(label = sprintf("%.3f", Nilai)),
position = position_dodge(width = 0.9), vjust = -0.4, size = 3, na.rm = TRUE) +
facet_wrap(~ Skenario, labeller = labeller(Skenario = function(x) paste("Training:Testing =", x))) +
coord_cartesian(ylim = c(0, 1.08)) +
labs(
title = "Akurasi dan Presisi Data Testing",
x = "Jumlah hidden neuron",
y = "Nilai metrik",
fill = "Metrik"
) +
theme_minimal()Gambar 2. Akurasi dan presisi pada data testing untuk setiap model
Gambar 2 menunjukkan bahwa akurasi dan presisi pada seluruh model berada pada kisaran 93.43% sampai 97.08% untuk akurasi, dan 91.76% sampai 95.74% untuk presisi. Rata-rata akurasi testing pada skenario 80:20 adalah 96.35% dan pada skenario 60:40 adalah 94.53%, dengan selisih 1.82 poin persentase. Rata-rata presisi testing pada skenario 80:20 adalah 95.65% dan pada skenario 60:40 adalah 92.37%. Pada 3 dari 3 konfigurasi hidden neuron akurasi testing skenario 80:20 lebih tinggi daripada skenario 60:40, sama pada 0 konfigurasi, dan lebih rendah pada 0 konfigurasi. Skenario 80:20 memberikan akurasi rata-rata yang lebih tinggi, yang sejalan dengan temuan bahwa proporsi data training yang lebih besar umumnya menguntungkan (Bichri dkk., 2024). Kedua skenario menggunakan data testing yang berbeda (137 dan 274 observasi), sehingga perbandingan ini bersifat indikatif dan bukan perbandingan pada data uji yang sama.
Jika dirata-ratakan pada kedua skenario, akurasi testing sebesar 96.35% untuk 10 hidden neuron, 95.44% untuk 20 hidden neuron, dan 94.53% untuk 30 hidden neuron, sedangkan rata-rata presisi berturut-turut 94.03%, 94.34%, dan 93.66%. Akurasi rata-rata tertinggi diperoleh pada 10 hidden neuron, sehingga jumlah hidden neuron yang lebih besar tidak selalu menghasilkan performa yang lebih baik.
Model terbaik ditentukan berdasarkan akurasi testing tertinggi. Apabila terdapat nilai akurasi yang sama, dipilih model dengan presisi testing yang lebih tinggi, kemudian model dengan jumlah hidden neuron yang lebih sedikit.
urut_model <- hasil_ann %>%
mutate(Presisi_urut = ifelse(is.na(Presisi_Test), 0, Presisi_Test)) %>%
arrange(desc(Akurasi_Test), desc(Presisi_urut), Hidden)
model_terbaik <- urut_model %>% slice(1)
kable(model_terbaik %>% select(Skenario, Hidden, Akurasi_Train, Akurasi_Test, Presisi_Test, TP, FP, FN, TN),
digits = 4, caption = "Model ANN Terbaik")| Skenario | Hidden | Akurasi_Train | Akurasi_Test | Presisi_Test | TP | FP | FN | TN |
|---|---|---|---|---|---|---|---|---|
| 80:20 | 10 | 0.9872 | 0.9708 | 0.9574 | 45 | 2 | 2 | 88 |
Berdasarkan kriteria tersebut, model terbaik adalah model dengan 10 hidden neuron pada skenario 80:20. Model ini menghasilkan akurasi testing sebesar 97.08% dan presisi sebesar 95.74%. Dari 137 observasi testing, 133 diklasifikasikan dengan benar, dengan 2 false positive dan 2 false negative.
Jika dikaitkan dengan rumusan masalah, ANN klasifikasi telah
diimplementasikan menggunakan fungsi nnet() pada data
Breast Cancer dengan enam kombinasi hidden neuron dan rasio
pembagian data. Performa model dievaluasi menggunakan akurasi dan
presisi, dengan akurasi testing berkisar 93.43% sampai 97.08% dan
presisi testing berkisar 91.76% sampai 95.74%. Evaluasi regresi dengan
MSE dan MAPE tidak dihitung karena berada di luar batasan analisis.
Berdasarkan praktikum ANN klasifikasi pada data Breast Cancer (683 observasi setelah observasi dengan nilai hilang dikeluarkan), model dibentuk dengan hidden neuron sebesar 10, 20, dan 30 pada dua rasio pembagian data, yaitu training 80% dan testing 20% serta training 60% dan testing 40%. Performa model dievaluasi pada data testing menggunakan akurasi dan presisi dengan kelas malignant sebagai kelas positif.
Akurasi testing seluruh model berkisar 93.43% sampai 97.08% dan presisi testing berkisar 91.76% sampai 95.74%. Rata-rata akurasi testing skenario 80:20 sebesar 96.35% dan skenario 60:40 sebesar 94.53%. Model terbaik adalah model dengan 10 hidden neuron pada skenario 80:20, dengan akurasi testing 97.08% dan presisi 95.74%. Karena jumlah observasi testing terbatas, selisih performa yang kecil antarmodel sebaiknya tidak ditafsirkan sebagai perbedaan yang pasti.
Bichri, H., Chergui, A., & Hain, M. (2024). Investigating the impact of train / test split ratio on the performance of pre-trained models with custom datasets. International Journal of Advanced Computer Science and Applications, 15(2).
Chicco, D., Warrens, M. J., & Jurman, G. (2021). The coefficient of determination R-squared is more informative than SMAPE, MAE, MAPE, MSE and RMSE in regression analysis evaluation. PeerJ Computer Science, 7, e623. https://doi.org/10.7717/peerj-cs.623
Leisch, F., & Dimitriadou, E. (2026). mlbench: Machine learning benchmark problems (R package version 2.1-11). https://CRAN.R-project.org/package=mlbench
Martínez-García, J., Montaño, J. J., Jiménez, R., Gervilla, E., Cajal, B., Núñez, A., Leguizamo, F., & Sesé, A. (2025). Decoding artificial intelligence: A tutorial on neural networks in behavioral research. Clínica y Salud, 36(2), 77–95. https://doi.org/10.5093/clh2025a13
Molina Menéndez, E., & Parraga-Alava, J. (2024). Artificial neural networks for classification tasks: A systematic literature review. Enfoque UTE, 15(4), 1–10. https://doi.org/10.29019/enfoqueute.1058
Rahman, M. A., Muniyandi, R. C., Albashish, D., Rahman, M. M., & Usman, O. L. (2021). Artificial neural network with Taguchi method for robust classification model to improve classification accuracy of breast cancer. PeerJ Computer Science, 7, e344. https://doi.org/10.7717/peerj-cs.344
Ripley, B., & Venables, W. (2026). nnet: Feed-forward neural networks and multinomial log-linear models (R package version 7.3-21). https://CRAN.R-project.org/package=nnet
Syaharuddin, Abdillah, Mariono, & Mehmood, S. (2025). Parameter tuning in backpropagation neural networks: Impact of learning rate and momentum on performance. JITK, 11(1), 110–124. https://doi.org/10.33480/jitk.v11i1.6484
Tharwat, A. (2021). Classification assessment methods. Applied Computing and Informatics, 17(1), 168–192. https://doi.org/10.1016/j.aci.2018.08.003