BAB I PENDAHULUAN

1.1 Latar Belakang

Artificial Neural Network (ANN) atau jaringan saraf tiruan merupakan metode pembelajaran mesin yang terinspirasi dari cara kerja jaringan saraf biologis. Metode ini mampu mempelajari pola hubungan antara variabel masukan dan keluaran melalui proses pelatihan. ANN dapat digunakan untuk menyelesaikan berbagai permasalahan analisis data, termasuk prediksi dan pengelompokan data. ANN dapat diterapkan pada analisis regresi dan klasifikasi. Regresi digunakan untuk memprediksi nilai numerik, sedangkan klasifikasi digunakan untuk menentukan kategori suatu data (Hasanah, 2019).

Penerapan ANN memerlukan evaluasi untuk mengetahui kemampuan model dalam menghasilkan prediksi yang sesuai dengan nilai aktual. Pada kasus regresi, evaluasi dapat dilakukan menggunakan Mean Squared Error (MSE) dan Mean Absolute Percentage Error (MAPE). MSE mengukur rata-rata kuadrat selisih antara nilai aktual dan nilai prediksi, sedangkan MAPE mengukur rata-rata persentase kesalahan prediksi terhadap nilai aktual (Masruroh, 2020).

Pada kasus klasifikasi, kinerja ANN dapat dievaluasi menggunakan akurasi dan presisi. Akurasi menunjukkan proporsi seluruh data yang diklasifikasikan dengan benar, sedangkan presisi menunjukkan proporsi prediksi positif yang benar-benar termasuk dalam kelas positif. Kedua metrik tersebut dapat digunakan untuk menilai ketepatan hasil klasifikasi (Sihombing, 2020).

1.2 Rumusan Masalah

Berdasarkan latar belakang tersebut, rumusan masalah dalam praktikum ini adalah sebagai berikut:

  1. Bagaimana konsep dan 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 Penelitian

Tujuan yang ingin dicapai dalam praktikum ini adalah sebagai berikut:

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

  2. Mahasiswa dapat mengevaluasi performa model 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 terinspirasi dari kerja otak manusia, di mana sejumlah neuron saling terhubung untuk memproses informasi dan mempelajari pola dari data. ANN terdiri dari beberapa lapisan, yaitu lapisan masukan (input layer), lapisan tersembunyi (hidden layer) dan lapisan keluaran (output layer). Setiap neuron menerima masukan yang dikalikan dengan bobot tertentu, kemudian ditambahkan bias dan diproses melalui fungsi aktivasi untuk menghasilkan keluaran. ANN memiliki tiga komponen utama, yaitu arsitektur jaringan yang menggambarkan pola hubungan antar neuron, algoritma pembelajaran yang digunakan untuk menyelesuaikan bobot jaringan, serta fungsi aktivasi yang menentukan keluaran setiap neuron. Neuron-neuron tersebut tersusun dalam lapisan dan saling terhubung melalui bobot sesuai dengan arsitektur jaringan yang digunakan (Fransiska, 2026).

2.2 ANN untuk Regresi

Regresi menggunakan ANN bertujuan memprediksi nilai numerik berdasarkan hubungan antara variabel masukan dan keluaran. Model dilatih menggunakan data yang memiliki nilai aktual sehingga dapat mempelajari pola hubungan antarvariabel (Huda dan Handayani, 2023).

2.3 ANN untuk Klasifikasi

Klasifikasi menggunakan ANN bertujuan mengelompokkan data ke dalam kelas tertentu berdasarkan karakteristik variabel masukan. Model mempelajari pola dari data latih, kemudian digunakan untuk memprediksi kelas pada data baru (Sihombing, 2020).

BAB III METODE PENELITIAN

3.1 Jenis dan Sumber Data

Jenis data yang digunakan dalam praktikum ini adalah data kategorik. Data kategorik adalah tipe data yang merepresentasikan karakteristik atau atribut dari objek yang diklasifikasikan ke dalam kategori tertentu. Sumber data yang digunakan merupakan data sekunder, yaitu data yang telah tersedia dan diperoleh melalui sumber yang sudah ada. Data yang digunakan adalah dataset BreastCancer dari package mlbench pada program R.

3.2 Variabel Penelitian

Variabel penelitian adalah segala sesuatu yang menjadi objek pengamatan dalam suatu penelitian. Variabel penelitian yang digunakan berasal dari dataset BreastCancer dengan jumlah 699 observasi dan 11 variabel. Variabel Class digunakan sebagai variabel respons dengan kategori benign dan malignant, sedangkan sembilan variabel prediktor yang digunakan adalah Clump Thickness, Uniformity of Cell Size, Uniformity of Cell Shape, Marginal Adhesion, Single Epithelial Cell Size, Bare Nuclei, Bland Chromatin, Normal Nucleoli dan Mitoses. Variabel Sample code number tidak digunakan dalam pemodelan karena hanya berfungsi sebagai identitas sampel.

3.3 Langkah-langkah Analisis

Langkah-langkah analisis data pada penelitian ini adalah sebagai berikut:

  1. Menyiapkan data yang akan dianalisis.

  2. Melakukan prapemrosesan data, meliputi pemilihan variabel, mengubah tipe data menjadi numerik, dan menangani data hilang.

  3. Membagi data menjadi data latih sebesar 80% dan data uji sebesar 20%.

  4. Melakukan standardisasi data berdasarkan parameter dari data latih.

  5. Membangun model ANN regresi menggunakan variasi jumlah hidden neuron 10, 20 dan 30 serta nilai maxit 250 dan 500.

  6. Melakukan prediksi pada data uji menggunakan setiap model yang telah dibentuk.

  7. Mengevaluasi kinerja model menggunakan MSE dan MAPE.

  8. Menentukan model terbaik berdasarkan nilai MSE terkecil dan membandingkan nilai aktual dengan hasil prediksi.

  9. Memeriksa status konvergensi model dan menginterpretasikan hasil prediksi.

BAB IV HASIL DAN PEMBAHASAN

4.1 Import Data dan Handling Misssing Value

Memanggil Package

Package yang digunakan adalah mlbench, randomForest, ggplot2 dan knitr. Package mlbench menyediakan dataset BreastCancer, randomForest digunakan untuk membangun model Random Forest, ggplot2 digunakan untuk visualisasi hasil analisis dan knitr digunakan untuk menampilkan hasil evaluasi dalam bentuk tabel.

# Memanggil paket yang digunakan
library(mlbench)       
library(nnet)         
library(ggplot2)      
library(knitr)         

Memuat Data dan Memeriksa Missing Value

data("BreastCancer", package = "mlbench")

# Mengubah kolom menjadi numerik
data_ann <- BreastCancer

kolom_numerik <- c(
  "Cl.thickness", "Cell.size", "Cell.shape",
  "Marg.adhesion", "Epith.c.size", "Bare.nuclei",
  "Bl.cromatin", "Normal.nucleoli", "Mitoses"
)

data_ann[kolom_numerik] <- lapply(
  data_ann[kolom_numerik],
  function(x) as.numeric(as.character(x))
)

# Memilih variabel respons dan prediktor
data_ann <- data_ann[, kolom_numerik]

# Menghapus observasi yang memiliki nilai hilang
data_ann <- na.omit(data_ann)

# Memeriksa data
dim(data_ann)
## [1] 683   9
summary(data_ann)
##   Cl.thickness      Cell.size        Cell.shape     Marg.adhesion  
##  Min.   : 1.000   Min.   : 1.000   Min.   : 1.000   Min.   : 1.00  
##  1st Qu.: 2.000   1st Qu.: 1.000   1st Qu.: 1.000   1st Qu.: 1.00  
##  Median : 4.000   Median : 1.000   Median : 1.000   Median : 1.00  
##  Mean   : 4.442   Mean   : 3.151   Mean   : 3.215   Mean   : 2.83  
##  3rd Qu.: 6.000   3rd Qu.: 5.000   3rd Qu.: 5.000   3rd Qu.: 4.00  
##  Max.   :10.000   Max.   :10.000   Max.   :10.000   Max.   :10.00  
##   Epith.c.size     Bare.nuclei      Bl.cromatin     Normal.nucleoli
##  Min.   : 1.000   Min.   : 1.000   Min.   : 1.000   Min.   : 1.00  
##  1st Qu.: 2.000   1st Qu.: 1.000   1st Qu.: 2.000   1st Qu.: 1.00  
##  Median : 2.000   Median : 1.000   Median : 3.000   Median : 1.00  
##  Mean   : 3.234   Mean   : 3.545   Mean   : 3.445   Mean   : 2.87  
##  3rd Qu.: 4.000   3rd Qu.: 6.000   3rd Qu.: 5.000   3rd Qu.: 4.00  
##  Max.   :10.000   Max.   :10.000   Max.   :10.000   Max.   :10.00  
##     Mitoses      
##  Min.   : 1.000  
##  1st Qu.: 1.000  
##  Median : 1.000  
##  Mean   : 1.603  
##  3rd Qu.: 1.000  
##  Max.   :10.000

Dataset yang digunakan adalah dataset BreastCancer yang memiliki 699 observasi dan 11 variabel. Terdapat 16 missing value pada variabel Bare.nuclei. Setelah menggunakan na.omit(), jumlah observasi berkurang menjadi 683 karena 16 baris yang mengandung missing value dihapus. Hasil pemeriksaan kembali menunjukkan bahwa seluruh variabel sudah tidak memiliki missing value, sehingga data siap digunakan untuk analisis selanjutnya.

4.2 Pembagian Data Latih dan Data Uji

Data dibagi menjadi 80% data training dan 20% data testing. Data training digunakan untuk membangun model, sedangkan data testing digunakan untuk mengevaluasi kemampuan prediksi model pada data yang tidak digunakan selama pelatihan.

# Menetapkan seed
set.seed(123)
n <- nrow(data_ann)

# Mengacak indeks observasi
indeks_train <- sample(
  seq_len(n),
  size = floor(0.8 * n)
)

# Membagi data
train <- data_ann[indeks_train, ]
test  <- data_ann[-indeks_train, ]

# Menampilkan jumlah data
cat("Jumlah data keseluruhan:", n, "\n")
## Jumlah data keseluruhan: 683
cat("Jumlah data training:", nrow(train), "\n")
## Jumlah data training: 546
cat("Jumlah data testing:", nrow(test), "\n")
## Jumlah data testing: 137

Pembagian data dilakukan dengan proporsi 80% untuk training dan 20% untuk testing. Dari total 683 observasi, sebanyak 546 observasi digunakan untuk melatih model ANN, sedangkan 137 observasi digunakan untuk menguji kinerja model pada data yang tidak digunakan selama pelatihan.

4.3 Standardisasi Data

Standardisasi dilakukan agar skala variabel lebih seragam dan proses pelatihan ANN lebih stabil. Parameter standardisasi dihitung hanya dari data training, kemudian diterapkan pada data testing untuk mencegah kebocoran informasi.

# Variabel prediktor dan respons
x_vars <- setdiff(names(train), "Cell.size")
y_var <- "Cell.size"

# Parameter standardisasi berdasarkan training
mean_x <- sapply(train[x_vars], mean)
sd_x   <- sapply(train[x_vars], sd)

mean_y <- mean(train[[y_var]])
sd_y   <- sd(train[[y_var]])

# Menghindari pembagian dengan nol
sd_x[sd_x == 0] <- 1
if (sd_y == 0) stop("Variabel respons tidak memiliki variasi.")

# Standardisasi prediktor
x_train <- as.data.frame(
  scale(train[x_vars], center = mean_x, scale = sd_x)
)
x_test <- as.data.frame(
  scale(test[x_vars], center = mean_x, scale = sd_x)
)

# Standardisasi respons
y_train <- (train[[y_var]] - mean_y) / sd_y

# Menggabungkan prediktor dan respons training
train_std <- x_train
train_std$Cell.size <- y_train

4.4 Membangun Model ANN Regresi

Model dibangun dengan mengombinasikan tiga jumlah hidden neuron dan dua nilai maxit, sehingga diperoleh enam model.

# Kombinasi parameter
hidden_neuron <- c(10, 20, 30)
maxit_values <- c(250, 500)

# Menyimpan model dan hasil evaluasi
daftar_model <- list()
hasil <- data.frame()

# Nilai aktual data testing
aktual <- test$Cell.size

for (h in hidden_neuron) {
  for (m in maxit_values) {

    # Membangun model ANN
    set.seed(123)

    model <- nnet(
      Cell.size ~ .,
      data = train_std,
      size = h,
      linout = TRUE,
      maxit = m,
      decay = 0.01,
       trace = FALSE,
      MaxNWts = 10000
    )

    # Prediksi data testing pada skala standar
    pred_std <- predict(model, newdata = x_test)

    # Mengembalikan prediksi ke skala asli
    prediksi <- as.numeric(pred_std) * sd_y + mean_y

    # Menghitung metrik evaluasi
    mse <- mean((aktual - prediksi)^2)

    mape <- mean(
      abs((aktual - prediksi) / aktual)
    ) * 100

    # Menyimpan model
    nama_model <- paste0("Hidden_", h, "_Maxit_", m)
    daftar_model[[nama_model]] <- model

    # Menyimpan hasil evaluasi
    hasil <- rbind(
      hasil,
      data.frame(Hidden_Neuron = h,
        Maxit = m,
        MSE = mse,
        MAPE = mape,
        Status = model$convergence
      )
    )
  }
}

# Menampilkan hasil evaluasi
hasil <- hasil[order(hasil$MSE), ]
rownames(hasil) <- NULL

print(hasil)
##   Hidden_Neuron Maxit      MSE     MAPE Status
## 1            10   250 2.721794 32.03359      1
## 2            10   500 3.228598 33.20903      0
## 3            30   250 4.604939 44.16902      1
## 4            20   500 4.678280 39.86326      1
## 5            20   250 4.761427 39.91302      1
## 6            30   500 6.038368 44.90220      1

Berdasarkan hasil evaluasi, kombinasi hidden neuron = 10 dan maxit = 250 menghasilkan kinerja terbaik dengan nilai MSE sebesar 2,7218 dan MAPE sebesar 32,03%. Hal ini menunjukkan bahwa model tersebut memiliki kesalahan prediksi paling rendah dibandingkan kombinasi parameter lainnya. Namun, nilai Status sebesar 1 menunjukkan bahwa algoritma belum mencapai status konvergensi yang berhasil. Sementara itu, kombinasi hidden neuron = 10 dan maxit = 500 memiliki status konvergensi 0, tetapi menghasilkan MSE sebesar 3,2286 dan MAPE sebesar 33,21%.

4.5 Perbandingan Hasil Model

Model dengan nilai MSE dan MAPE lebih rendah cenderung menghasilkan prediksi yang lebih baik pada data testing.

# Model terbaik berdasarkan MSE
model_terbaik <- hasil[which.min(hasil$MSE), ]

cat("Model terbaik berdasarkan MSE:\n")
## Model terbaik berdasarkan MSE:
print(model_terbaik)
##   Hidden_Neuron Maxit      MSE     MAPE Status
## 1            10   250 2.721794 32.03359      1
# Model terbaik berdasarkan MAPE
model_mape <- hasil[which.min(hasil$MAPE), ]

cat("\nModel terbaik berdasarkan MAPE:\n")
## 
## Model terbaik berdasarkan MAPE:
print(model_mape)
##   Hidden_Neuron Maxit      MSE     MAPE Status
## 1            10   250 2.721794 32.03359      1

Berdasarkan hasil, model terbaik berdasarkan MSE menggunakan 10 hidden neuron dan maxit = 250, dengan MSE sebesar 2,721794 dan MAPE sebesar 32,03359%. Model ini menghasilkan kesalahan prediksi terendah dibandingkan kombinasi parameter lainnya. Namun, nilai Status = 1 menunjukkan bahwa model belum berhasil mencapai konvergensi.

4.6 Visualisasi Prediksi Model Terbaik

# Mengambil model terbaik berdasarkan MSE
nama_terbaik <- paste0(
  "Hidden_", model_terbaik$Hidden_Neuron,
  "_Maxit_", model_terbaik$Maxit
)

model_final <- daftar_model[[nama_terbaik]]

# Prediksi data testing
prediksi_std <- predict(model_final, newdata = x_test)
prediksi_final <- as.numeric(prediksi_std) * sd_y + mean_y

# Tabel perbandingan nilai aktual dan prediksi
perbandingan <- data.frame(
  Aktual = as.numeric(aktual),
  Prediksi = round(prediksi_final, 3),
  Error = round(aktual - prediksi_final, 3)
)

# Menampilkan 10 observasi pertama
head(perbandingan, 10)
##    Aktual Prediksi  Error
## 1       1    1.223 -0.223
## 2       1    1.455 -0.455
## 3       1    1.128 -0.128
## 4       1    1.129 -0.129
## 5       5    9.628 -4.628
## 6       7    8.238 -1.238
## 7       1    1.067 -0.067
## 8       6    7.773 -1.773
## 9      10    9.287  0.713
## 10      1    0.969  0.031

Berdasarkan hasil perbandingan , nilai prediksi model ANN cukup dekat dengan nilai aktual pada beberapa observasi, tetapi masih terdapat selisih yang cukup besar pada observasi tertentu, seperti observasi ke-5 dengan nilai aktual 5 dan prediksi 9,628. Nilai Error menunjukkan selisih antara nilai aktual dan prediksi, error negatif berarti prediksi lebih besar daripada nilai aktual, sedangkan error positif berarti prediksi lebih kecil.

BAB V KESIMPULAN

5.1 Kesimpulan

Metode Artificial Neural Network (ANN) dapat diimplementasikan menggunakan bahasa pemrograman R untuk menyelesaikan permasalahan regresi dan klasifikasi. Penerapan ANN dilakukan melalui pembagian data latih dan data uji, penentuan arsitektur jaringan, serta pelatihan model untuk menghasilkan prediksi sesuai dengan jenis permasalahan.

Evaluasi performa model ANN dilakukan menggunakan metrik yang sesuai dengan tujuan analisis. Pada regresi, MSE dan MAPE digunakan untuk mengukur kesalahan prediksi, dengan nilai yang lebih kecil menunjukkan hasil prediksi yang lebih baik. Pada klasifikasi, akurasi digunakan untuk mengukur proporsi prediksi yang benar, sedangkan presisi mengukur ketepatan model dalam memprediksi kelas positif. Hasil evaluasi tersebut dapat digunakan untuk membandingkan kinerja model dan menentukan model yang lebih baik.

Berdasarkan hasil analisis regresi menggunakan Artificial Neural Network (ANN), model terbaik berdasarkan nilai MSE adalah model dengan 10 hidden neuron dan maxit = 250, yang menghasilkan MSE sebesar 2,721794 dan MAPE sebesar 32,03359%. Namun, model tersebut tidak konvergen karena nilai Status = 1. Oleh karena itu, hasil prediksi belum dapat dianggap optimal dan diperlukan penyesuaian parameter agar model mencapai konvergensi.

DAFTAR PUSTAKA

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

Hasanah, S. H. (2019). Perbandingan metode klasifikasi Artificial Neural Network Backpropagation dan regresi logistik. Jurnal Statistika dan Matematika.

Huda, D. N., & Handayani, S. (2023). Prediksi nilai ujian dengan Artificial Neural Network. Riset dan E-Jurnal Manajemen Informatika Komputer.

Masruroh. (2020). Perbandingan metode regresi linear dan Neural Network Backpropagation dalam prediksi nilai Ujian Nasional siswa SMP menggunakan software R. Journal of Informatic Unisla.

Sihombing, P. R. (2020). Perbandingan metode Artificial Neural Network (ANN) dan Support Vector Machine (SVM) untuk klasifikasi kinerja Perusahaan Daerah Air Minum (PDAM) di Indonesia. Jurnal Ilmu Komputer.