BAB I PENDAHULUAN

1.1 Latar Belakang Masalah

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.

1.2 Rumusan Masalah

  1. Bagaimana cara memahami konsep dan mengimplementasikan model Artificial Neural Network (ANN) untuk regresi dan klasifikasi menggunakan bahasa pemrograman R?
  2. Bagaimana cara mengevaluasi performa model Artificial Neural Network (ANN) menggunakan metrik evaluasi MSE dan MAPE untuk regresi, serta akurasi dan presisi untuk klasifikasi?

1.3 Tujuan

  1. Memahami konsep dan mengimplementasikan model Artificial Neural Network (ANN) untuk regresi dan klasifikasi menggunakan bahasa pemrograman R.
  2. Mengevaluasi performa model Artificial Neural Network (ANN) menggunakan metrik evaluasi MSE dan MAPE untuk regresi, serta akurasi dan presisi untuk klasifikasi.

BAB II TINJAUAN PUSTAKA

2.1 Artificial Neural Network

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).

2.2 Pelatihan Model dengan Backpropagation

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.

2.3 Jumlah Hidden Neuron

Jumlah neuron pada lapisan tersembunyi menentukan kapasitas model dalam mempelajari pola pada data. Rahman dkk. (2021) menggunakan metode Taguchi untuk menentukan jumlah neuron pada satu lapisan tersembunyi dalam klasifikasi kanker payudara menggunakan data Wisconsin Diagnostic Breast Cancer yang terdiri atas 569 sampel. Pada penelitian tersebut, model dengan 15 neuron dan pembagian data 70/15/15 (training, validasi, testing) memberikan performa terbaik dengan akurasi pada data testing sekitar 98,8% (Rahman dkk., 2021).

Hasil tersebut menunjukkan bahwa jumlah hidden neuron merupakan parameter yang layak dibandingkan pada ANN (Rahman dkk., 2021). Kompleksitas model yang tinggi berkaitan dengan risiko overfitting, yang disebut sebagai salah satu tantangan pada pelatihan backpropagation (Syaharuddin dkk., 2025).

2.4 Pembagian Data Training dan 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.

2.5 Evaluasi Model Klasifikasi

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).

2.6 Evaluasi Model Regresi

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| \]

BAB III METODE PENELITIAN

3.1 Sumber Data

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.

3.2 Variabel Penelitian

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.

3.3 Batasan Analisis

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.

3.4 Langkah-langkah Analisis

  1. Memanggil paket yang diperlukan pada program R.
  2. Memuat data Breast Cancer, menghapus variabel Id, dan mengeluarkan observasi yang memiliki nilai hilang.
  3. Mengubah variabel prediktor menjadi numerik dan memeriksa distribusi kelas.
  4. Membagi data menjadi data training dan testing dengan rasio 80:20 dan 60:40 menggunakan set.seed(123).
  5. Menormalisasi prediktor dengan metode min-max berdasarkan nilai minimum dan maksimum data training.
  6. Membentuk model ANN dengan satu lapisan tersembunyi menggunakan fungsi nnet() dengan hidden neuron 10, 20, dan 30 pada setiap rasio pembagian data (Ripley & Venables, 2026).
  7. Melakukan prediksi pada data training dan data testing.
  8. Menghitung matriks konfusi, akurasi, dan presisi dengan kelas malignant sebagai kelas positif.
  9. Menginterpretasikan hasil setiap model, membandingkan kedua rasio pembagian data, dan menentukan model terbaik.

BAB IV HASIL DAN PEMBAHASAN

4.1 Library dan Persiapan Data

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
cat("Observasi dengan nilai NA  :", n_na, "\n")
## Observasi dengan nilai NA  : 16
cat("Jumlah observasi dianalisis:", nrow(data_bc), "\n")
## Jumlah observasi dianalisis: 683
table(data_bc$Class)
## 
##    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%).

4.2 Eksplorasi Data

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. 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.

4.3 Pembentukan Model ANN

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.

4.4 Hasil dengan Data Training 80% dan Testing 20%

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)")
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.

4.5 Hasil dengan Data Training 60% dan Testing 40%

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)")
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.

4.6 Perbandingan Kedua Skenario

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")
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. 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.

4.7 Model Terbaik dan Interpretasi Keseluruhan

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")
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.

BAB V KESIMPULAN

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.

DAFTAR PUSTAKA

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