Regresi dan klasifikasi merupakan dua tugas utama dalam machine learning. Regresi bertujuan memprediksi variabel respons berupa nilai numerik kontinu, sedangkan klasifikasi bertujuan memprediksi variabel respons berupa kategori, berdasarkan sekumpulan variabel prediktor. Pada banyak kasus, hubungan antara prediktor dan respons tidak selalu linear dan dapat melibatkan interaksi antarvariabel, sehingga model yang sederhana belum tentu mampu menangkap pola data dengan baik. Salah satu metode yang dapat digunakan untuk mempelajari hubungan semacam ini adalah Artificial Neural Network (ANN), yaitu model komputasi yang terinspirasi dari kerja otak manusia, di mana sejumlah neuron saling terhubung untuk memproses informasi dan mempelajari pola dari data (Haykin, 2009).
ANN tersusun atas lapisan masukan (input layer), lapisan tersembunyi (hidden layer), dan lapisan keluaran (output layer). Setiap neuron menerima masukan yang dikalikan dengan bobot, ditambahkan bias, lalu diproses melalui fungsi aktivasi untuk menghasilkan keluaran (Haykin, 2009). Jaringan tanpa lapisan tersembunyi hanya mampu mempelajari hubungan linear, sedangkan Multi-Layer Perceptron (MLP) yang memiliki satu atau lebih lapisan tersembunyi mampu mempelajari hubungan nonlinear sehingga dapat digunakan untuk regresi maupun klasifikasi (Goodfellow et al., 2016). Perbedaan keduanya terletak pada lapisan keluaran. Pada regresi, lapisan keluaran umumnya menggunakan fungsi aktivasi linear agar jaringan dapat menghasilkan nilai prediksi sesuai rentang respons, sedangkan pada klasifikasi biner digunakan fungsi sigmoid yang menghasilkan probabilitas antara 0 dan 1, dan pada klasifikasi multikelas digunakan fungsi softmax yang menghasilkan probabilitas setiap kelas (Bishop, 2006; Fransiska, 2026).
Proses pembelajaran ANN dilakukan melalui algoritma backpropagation, yaitu menyesuaikan bobot jaringan berdasarkan kesalahan prediksi (Rumelhart et al., 1986). Prosesnya terdiri atas perhitungan keluaran jaringan (forward propagation), perhitungan gradien kesalahan terhadap bobot (backward propagation), dan pembaruan bobot untuk mengurangi kesalahan prediksi. Pada regresi, kesalahan diukur misalnya dengan Mean Squared Error (MSE), sedangkan pada klasifikasi digunakan fungsi kerugian seperti cross-entropy yang mengukur perbedaan antara probabilitas prediksi dan kelas aktual (Haykin, 2009; Fransiska, 2026).
Meskipun mampu memodelkan pola yang kompleks, kinerja ANN dipengaruhi oleh arsitektur dan pengaturan pelatihan yang harus ditentukan oleh pengguna, seperti jumlah neuron pada lapisan tersembunyi dan jumlah iterasi pelatihan. Jaringan yang terlalu sederhana dapat mengalami underfitting, sedangkan jaringan yang terlalu kompleks dapat mengalami overfitting, yaitu sangat sesuai dengan data pelatihan tetapi kurang mampu memprediksi data baru (Goodfellow et al., 2016). Oleh karena itu, selain memahami cara kerja ANN, diperlukan kemampuan mengevaluasi performa model pada data pengujian menggunakan ukuran yang sesuai dengan jenis analisisnya, yaitu Mean Squared Error (MSE) dan Mean Absolute Percentage Error (MAPE) untuk regresi, serta akurasi dan presisi yang dihitung dari confusion matrix untuk klasifikasi (Fransiska, 2026). Di samping itu, ANN sering dianggap sebagai black box karena sulit menjelaskan hubungan antarvariabel dari model yang terbentuk (Beck, 2018), sehingga diperlukan pula alat bantu untuk memvisualisasikan jaringan dan menilai kontribusi masing-masing prediktor.
Pada perangkat lunak R, ANN dengan satu lapisan tersembunyi dapat
diimplementasikan menggunakan package nnet
(Venables & Ripley, 2002), sedangkan package
NeuralNetTools menyediakan fungsi untuk memvisualisasikan
jaringan dan mengevaluasi kepentingan variabel dari model yang dibentuk
(Beck, 2018). Berdasarkan uraian tersebut, praktikum ini dilakukan agar
mahasiswa dapat memahami konsep Artificial Neural Network dan
mengimplementasikannya untuk regresi dan klasifikasi menggunakan program
R, serta mengevaluasi performa model menggunakan ukuran evaluasi yang
sesuai.
Berdasarkan latar belakang, rumusan masalah yang dapat disimpulkan yaitu sebagai berikut:
Berdasarkan rumusan masalah, tujuan yang dapat disimpulkan yaitu sebagai berikut:
Adapun manfaat pada penelitian ini yaitu:
Bagi penulis:
Bagi pembaca:
Adapun batasan masalah pada penelitian ini yaitu, lakukan ANN Regresi
dengan Hidden Neuron=c(10,20,30) dengan data
training 80% dan testing 20%. kemudian coba buat
dengan maxit=(250, 500). kemudian interprestasikan output
dengan jelas! Note : Menggunakan data Iris, Friedman, Breast
Cancer, etc.
Adapun sistematika penulisan dari praktikum ini adalah:
BAB I PENDAHULUAN
Bab ini merupakan bab yang memuat latar belakang, rumusan masalah, tujuan dan manfaat, batasan masalah dan sistematika penulisan.
BAB II TINJAUAN PUSTAKA
Bab ini merupakan bab yang memuat pengertian dan teori yang diperlukan untuk rancangan penelitian pada bab-bab berikutnya.
BAB III METODE PENELITIAN
Bab ini merupakan bab yang memuat jenis dan sumber data, variabel penelitian, dan analisis data yang diperlukan untuk rancangan penelitian pada bab-bab berikutnya.
BAB IV HASIL DAN PEMBAHASAN
Bab ini merupakan bab yang memuat hasil dan pembahasan yang telah dilakukan pada program, kemudian diinterpretasikan untuk rancangan penelitian pada bab-bab berikutnya.
BAB V KESIMPULAN DAN SARAN
Bab ini merupakan bab yang memuat kesimpulan dan saran yang telah dilakukan.
DAFTAR PUSTAKA
Machine learning merupakan pendekatan komputasi yang memungkinkan sistem mempelajari pola dari data untuk menghasilkan prediksi atau keputusan tanpa harus diprogram secara eksplisit untuk setiap aturan. Dalam penelitian statistik dan ilmu data, machine learning digunakan untuk memodelkan hubungan antara variabel prediktor dan variabel respons, terutama ketika hubungan tersebut bersifat nonlinear atau melibatkan interaksi antarkomponen data. Penggunaan machine learning berkembang dalam berbagai bidang karena algoritmanya dapat digunakan untuk klasifikasi, regresi, pendeteksian pola, dan pengambilan keputusan berbasis data (Mienye & Sun, 2022; Zhang et al., 2022).
Secara umum, machine learning dapat dibedakan menjadi pembelajaran terawasi (supervised learning), pembelajaran tidak terawasi (unsupervised learning), dan pembelajaran semi-terawasi. Penelitian yang menggunakan ANN umumnya termasuk dalam pembelajaran terawasi karena model dibangun berdasarkan data pelatihan yang memiliki variabel respons atau label. Pada pembelajaran terawasi, model mempelajari fungsi pemetaan antara himpunan prediktor dan respons. Untuk permasalahan klasifikasi, respons berbentuk kategori, sedangkan pada regresi respons berbentuk numerik kontinu.
Tujuan utama pemodelan machine learning bukan hanya memperoleh kecocokan yang baik terhadap data pelatihan, tetapi juga menghasilkan kemampuan generalisasi yang baik pada data baru. Model yang terlalu kompleks dapat mengalami overfitting, yaitu ketika model sangat sesuai dengan data pelatihan tetapi kurang mampu memprediksi data pengujian. Sebaliknya, model yang terlalu sederhana dapat mengalami underfitting. Oleh karena itu, pemilihan algoritma, pengaturan hiperparameter, pembagian data, dan validasi model merupakan bagian penting dalam penelitian machine learning (Zhao et al., 2025).
Artificial Neural Network (ANN) atau jaringan saraf tiruan merupakan metode machine learning yang terinspirasi dari cara kerja jaringan saraf biologis. ANN memproses informasi melalui sejumlah unit komputasi yang disebut neuron. Neuron-neuron tersebut tersusun dalam beberapa lapisan, yaitu lapisan masukan, lapisan tersembunyi, dan lapisan keluaran. Lapisan masukan menerima variabel prediktor, lapisan tersembunyi mempelajari pola hubungan antarvariabel, sedangkan lapisan keluaran menghasilkan nilai prediksi atau kelas hasil klasifikasi.
Secara umum, setiap neuron menerima sejumlah masukan yang dikalikan dengan bobot tertentu. Hasil perkalian tersebut dijumlahkan dengan nilai bias, kemudian diproses menggunakan fungsi aktivasi. Secara matematis, keluaran sebuah neuron dapat dituliskan sebagai:
\[z = \sum_{i = 1}^{p}{w_{i}x_{i} + b}\]
\[y = f(z)\]
Keterangan:
Fungsi aktivasi memungkinkan ANN mempelajari hubungan non-linier. Beberapa fungsi aktivasi yang umum digunakan adalah fungsi sigmoid, hiperbolik tangen, dan ReLU. Pemilihan fungsi aktivasi bergantung pada jenis permasalahan dan struktur model. Pada keluaran regresi, lapisan keluaran umumnya menggunakan fungsi aktivasi linear. Pada klasifikasi biner, fungsi sigmoid dapat digunakan untuk menghasilkan probabilitas suatu observasi masuk ke kelas tertentu. Pada klasifikasi multikelas, fungsi softmax dapat digunakan untuk menghasilkan probabilitas pada setiap kelas (Bishop, 2026).
ANN melakukan proses pembelajaran dengan menyesuaikan bobot dan bias berdasarkan kesalahan prediksi. Proses tersebut umumnya dilakukan melalui algoritma backpropagation dan optimasi menggunakan metode seperti gradient descent. Model menghasilkan prediksi, menghitung selisih antara prediksi dan nilai aktual, kemudian memperbarui bobot agar kesalahan pada iterasi berikutnya menjadi lebih kecil. Goel et al. (2023) menjelaskan bahwa ANN termasuk metode pembelajaran terawasi yang dapat digunakan untuk permasalahan klasifikasi maupun regresi.
Keunggulan utama ANN terletak pada kemampuannya dalam mempelajari hubungan kompleks dan non-linier. Meskipun demikian, ANN memerlukan data pelatihan yang memadai, pemilihan arsitektur yang sesuai, serta pengaturan hiperparameter yang tepat. Model dengan struktur terlalu kompleks dapat mengalami overfitting, sedangkan model yang terlalu sederhana dapat mengalami underfitting. Selain itu, ANN sering dianggap sulit diinterpretasikan karena hubungan antara masukan dan keluaran tidak selalu dapat dijelaskan secara langsung.
Regresi merupakan metode analisis yang digunakan untuk memprediksi variabel respons berbentuk numerik atau kontinu. Dalam regresi berbasis ANN, model mempelajari hubungan antara satu atau beberapa variabel prediktor dengan variabel respons. ANN untuk regresi dapat dirumuskan sebagai fungsi:
\[\widehat{y} = f(X;\theta)\]
Keterangan:
Klasifikasi merupakan proses pengelompokan suatu objek atau pengamatan ke dalam kelas tertentu berdasarkan karakteristik variabel prediktornya. Berbeda dari regresi yang menghasilkan nilai kontinu, klasifikasi menghasilkan label kategori. Klasifikasi dapat dibedakan menjadi klasifikasi biner dan klasifikasi multikelas. Klasifikasi biner hanya memiliki dua kelas, sedangkan klasifikasi multikelas memiliki lebih dari dua kelas.
Dalam analisis spasial, ANN untuk klasifikasi dapat digunakan untuk memetakan kelas penggunaan lahan, tingkat kerawanan bencana, kesesuaian lahan, kualitas lingkungan, atau zona potensi sumber daya alam. Variabel masukan dapat berupa data citra satelit, elevasi, kemiringan lereng, jarak dari sungai, kepadatan jalan, kepadatan penduduk, serta indikator lingkungan lainnya.
Untuk klasifikasi biner, keluaran ANN umumnya berupa probabilitas yang berada pada rentang 0 sampai 1. Nilai tersebut kemudian diubah menjadi kelas berdasarkan nilai ambang tertentu. Untuk klasifikasi multikelas, ANN dapat menggunakan fungsi softmax sehingga menghasilkan probabilitas untuk setiap kelas. Kelas dengan probabilitas tertinggi dipilih sebagai hasil klasifikasi.
Kinerja Classification dievaluasi dengan membandingkan kelas aktual dan kelas hasil prediksi pada data testing. Hasil perbandingan tersebut disajikan dalam confusion matrix (Fransiska, 2026), yaitu tabel yang memuat jumlah prediksi benar dan salah untuk setiap kelas.
| Prediksi Positif | Prediksi Negatif | |
|---|---|---|
| Aktual Positif | True Positive (TP) | False Negative (FN) |
| Aktual Negatif | False Positive (FP) | True Negative (TN) |
Keterangan: TP adalah pengamatan positif yang diprediksi positif, TN adalah pengamatan negatif yang diprediksi negatif, FP adalah pengamatan negatif yang salah diprediksi positif, dan FN adalah pengamatan positif yang salah diprediksi negatif. Berdasarkan confusion matrix, beberapa ukuran evaluasi yang digunakan adalah sebagai berikut.
\[ Accuracy=\frac{TP+TN}{TP+TN+FP+FN} \]
\[ Precision=\frac{TP}{TP+FP} \]
\[ Recall=\frac{TP}{TP+FN} \]
\[ Specificity=\frac{TN}{TN+FP} \]
\[ F1\text{-}Score=2\times\frac{Precision\times Recall}{Precision+Recall} \]
Accuracy mudah diinterpretasikan, tetapi dapat menyesatkan apabila proporsi kelas tidak seimbang, sehingga perlu dilengkapi dengan sensitivity, specificity, precision, dan F1-Score. Pada kasus medis seperti diagnosis kanker, nilai sensitivity menjadi perhatian utama karena kesalahan false negative (kasus positif yang terlewat) umumnya memiliki konsekuensi yang lebih serius daripada false positive.
Selain itu, kemampuan model membedakan kedua kelas pada berbagai ambang klasifikasi dapat dinilai menggunakan kurva Receiver Operating Characteristic (ROC). Kurva ini menggambarkan hubungan antara true positive rate (sensitivity) pada sumbu vertikal dan false positive rate (\(1-Specificity\)) pada sumbu horizontal (Fawcett, 2006). Ringkasan numeriknya adalah Area Under the Curve (AUC), yaitu luas di bawah kurva ROC. Nilai AUC berkisar antara 0 hingga 1; semakin mendekati 1, semakin baik kemampuan model membedakan kelas, sedangkan nilai 0,5 setara dengan tebakan acak (Fawcett, 2006).
Kinerja model regresi dapat dievaluasi menggunakan mean squared error (MSE) atau mean absolute error (MAE). MSE menghitung rata-rata kuadrat selisih antara nilai aktual dan nilai prediksi, sedangkan MAE menghitung rata-rata nilai absolut selisih tersebut. Kinerja model regresi juga dapat dinilai menggunakan root mean square error (RMSE) dan koefisien determinasi \(R^{2}\) serta MAPE (Fransiska, 2026).
\[ MSE=\frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y}_i)^2 \]
\[RMSE = \sqrt{\frac{1}{n}\sum_{i = 1}^{n}\left( y_{i} - {\widehat{y}}_{i} \right)^{2}}\]
\[MAE = \frac{1}{n}\sum_{i = 1}^{n}|y_{i} - {\widehat{y}}_{i}|\]
\[R^{2} = 1 - \frac{\sum_{i = 1}^{n}\left( y_{i} - {\widehat{y}}_{i} \right)^{2}}{\sum_{i = 1}^{n}\left( y_{i} - {\overline{y}}\right)^{2}}\] Dengan \(n\) merupakan jumlah pengamatan, \(y_i\) merupakan nilai aktual, dan \(\hat{y}_i\) merupakan nilai prediksi. Nilai MSE yang lebih kecil menunjukkan tingkat kesalahan prediksi yang lebih rendah pada data evaluasi. Nilai RMSE dan MAE yang lebih kecil menunjukkan kesalahan prediksi yang lebih rendah. Sementara itu, nilai \(R^{2}\) yang lebih besar menunjukkan kemampuan model yang lebih baik dalam menjelaskan variasi variabel respons.
Jenis data pada penelitian ini adalah data numerik. Data numerik adalah jenis data yang terdiri dari angka dan dapat diukur atau dihitung secara kuantitatif. Data ini digunakan untuk merepresentasikan nilai atau ukuran tertentu dalam berbagai konteks, seperti sains, ekonomi, statistik, dan matematika. Data numerik sering digunakan untuk melakukan perhitungan, analisis, dan visualisasi data.
sumber data yang digunakan pada penelitian ini adalah data sekunder,
yaitu data yang telah dikumpulkan dan disusun oleh pihak lain di luar
praktikan itu sendiri. Data pada praktikum ini yaitu dataset
Friedman yang tersedia di R, dimana penelitian ini menggunakan data
kuantitatif simulasi yang dibangkitkan secara komputasional menggunakan
fungsi mlbench.friedman1() dari paket mlbench
pada perangkat lunak R.
Variabel penelitian terdiri atas variabel respons dan variabel prediktor. Dimana variabel respons nya kontinu, yaitu \(Y\), dan sepuluh variabel prediktor numerik, yaitu \(X_1\) sampai \(X_{10}\). Variabel \(X_1\) sampai \(X_5\) memiliki hubungan dengan variabel respons, sedangkan \(X_6\) sampai \(X_{10}\) berperan sebagai variabel tambahan yang tidak memiliki pengaruh langsung terhadap respons.
Langkah-langkah analisis yang dilakukan dalam praktikum Artificial Neural Network (ANN) untuk regresi adalah sebagai berikut.
nnet,
NeuralNetTools, mlbench, dan
tidyverse.mlbench.friedman1() dengan
set.seed(234).y sebagai variabel respons dan
x.1 sampai x.10 sebagai variabel
prediktor.sample() dengan
set.seed(918).nnet.formula() dengan 10 hidden neuron,
linout = TRUE, dan maxit = 500 sesuai sintaks
asisten.plotnet(),
menampilkan bobot jaringan dengan neuralweights(), dan
menilai kepentingan variabel dengan olden() pada model
acuan.maxit = 250, 500.maxit terhadap kinerja model.Tahap pertama adalah memanggil library yang dibutuhkan.
Dimana digunakan Package nnet untuk membangun ANN
dengan satu lapisan tersembunyi, lalu NeuralNetTools untuk
memvisualisasikan jaringan dan menilai kepentingan variabel, serta
mlbench untuk membangkitkan data Friedman.
library(nnet)
library(NeuralNetTools)
library(mlbench)
library(tidyverse) # dimuat terakhir agar fungsi dplyr tidak tertutup package lain
# fungsi bantu: format angka dengan koma desimal untuk teks interpretasi
koma <- function(x, d = 4) format(round(x, d), decimal.mark = ",", nsmall = 0)
# Membangkitkan data Friedman (200 observasi)
set.seed(234)
reg.data <- as.data.frame(mlbench.friedman1(200))
head(reg.data)## x.1 x.2 x.3 x.4 x.5 x.6 x.7
## 1 0.74562000 0.5754994 0.02885590 0.7201653 0.8748022 0.2761835 0.93319087
## 2 0.78171242 0.3157821 0.93745388 0.1849746 0.7039934 0.6426889 0.40177800
## 3 0.02003711 0.7646459 0.79777294 0.5338609 0.9515834 0.9873938 0.08742998
## 4 0.77608539 0.2289793 0.66797951 0.5534984 0.4780999 0.8425175 0.89302195
## 5 0.06691009 0.1715219 0.59740948 0.7547957 0.5332404 0.7327976 0.10244557
## 6 0.64479512 0.6473963 0.01351334 0.7894812 0.2376348 0.4302338 0.88236742
## x.8 x.9 x.10 y
## 1 0.607462891 0.7560942 0.7179672 24.349507
## 2 0.003687496 0.4046106 0.5338439 18.046792
## 3 0.010598118 0.2473974 0.6669937 12.018651
## 4 0.446393069 0.1443539 0.6802987 12.101870
## 5 0.834936006 0.1874371 0.5950115 9.911772
## 6 0.843509237 0.6166422 0.1081932 21.874286
## 'data.frame': 200 obs. of 11 variables:
## $ x.1 : num 0.7456 0.7817 0.02 0.7761 0.0669 ...
## $ x.2 : num 0.575 0.316 0.765 0.229 0.172 ...
## $ x.3 : num 0.0289 0.9375 0.7978 0.668 0.5974 ...
## $ x.4 : num 0.72 0.185 0.534 0.553 0.755 ...
## $ x.5 : num 0.875 0.704 0.952 0.478 0.533 ...
## $ x.6 : num 0.276 0.643 0.987 0.843 0.733 ...
## $ x.7 : num 0.9332 0.4018 0.0874 0.893 0.1024 ...
## $ x.8 : num 0.60746 0.00369 0.0106 0.44639 0.83494 ...
## $ x.9 : num 0.756 0.405 0.247 0.144 0.187 ...
## $ x.10: num 0.718 0.534 0.667 0.68 0.595 ...
## $ y : num 24.35 18.05 12.02 12.1 9.91 ...
## x.1 x.2 x.3 x.4
## Min. :0.001198 Min. :0.004583 Min. :0.01021 Min. :0.00707
## 1st Qu.:0.274097 1st Qu.:0.255644 1st Qu.:0.24506 1st Qu.:0.20772
## Median :0.541847 Median :0.436813 Median :0.48965 Median :0.50295
## Mean :0.509759 Mean :0.465323 Mean :0.48570 Mean :0.48821
## 3rd Qu.:0.741416 3rd Qu.:0.651439 3rd Qu.:0.73476 3rd Qu.:0.76599
## Max. :0.993590 Max. :0.999850 Max. :0.99985 Max. :0.99761
## x.5 x.6 x.7 x.8
## Min. :0.008246 Min. :0.005504 Min. :0.001884 Min. :0.002496
## 1st Qu.:0.267523 1st Qu.:0.194431 1st Qu.:0.226788 1st Qu.:0.249826
## Median :0.522081 Median :0.446060 Median :0.491332 Median :0.480306
## Mean :0.503282 Mean :0.468544 Mean :0.503754 Mean :0.482050
## 3rd Qu.:0.751688 3rd Qu.:0.746035 3rd Qu.:0.780325 3rd Qu.:0.696675
## Max. :0.994604 Max. :0.999021 Max. :0.993044 Max. :0.995613
## x.9 x.10 y
## Min. :0.004483 Min. :0.005544 Min. : 3.082
## 1st Qu.:0.203254 1st Qu.:0.329160 1st Qu.:10.593
## Median :0.453476 Median :0.592614 Median :13.810
## Mean :0.471873 Mean :0.540708 Mean :14.270
## 3rd Qu.:0.742412 3rd Qu.:0.765353 3rd Qu.:18.063
## Max. :0.997436 Max. :0.998141 Max. :26.146
## [1] 200 11
Data Friedman dibangkitkan secara komputasional sehingga terdiri dari
200 observasi dan 11 variabel, yaitu satu variabel respons
y dan sepuluh variabel prediktor x.1 sampai
x.10 yang seluruhnya bertipe numerik. Variabel respons
dibentuk dari persamaan
\[ y = 10\sin(\pi x_1 x_2) + 20(x_3 - 0{,}5)^2 + 10x_4 + 5x_5 + \varepsilon, \qquad \varepsilon \sim N(0,1) \]
sehingga hanya x.1 sampai x.5 yang
berpengaruh terhadap y, sedangkan x.6 sampai
x.10 merupakan variabel pengganggu (noise) tanpa
pengaruh. Hubungan x.1 dengan x.2 bersifat
nonlinear dan saling berinteraksi, x.3 berpengaruh secara
kuadratik, sedangkan x.4 dan x.5 berpengaruh
linear. Struktur ini membuat data Friedman cocok untuk menguji kemampuan
ANN mempelajari hubungan nonlinear. Variabel y memiliki
rata-rata 14,27, simpangan baku 5,08, dan berkisar dari 3,08 hingga
26,15, sedangkan seluruh prediktor berada pada rentang 0 sampai 1
sehingga tidak diperlukan penskalaan tambahan.
## x.1 x.2 x.3 x.4 x.5 x.6 x.7 x.8 x.9 x.10 y
## 0 0 0 0 0 0 0 0 0 0 0
cor_y <- cor(reg.data[, names(reg.data) != "y"], reg.data$y)[, 1]
tabel_cor <- data.frame(Variabel = names(cor_y), Korelasi_dengan_y = round(as.numeric(cor_y), 3))
knitr::kable(tabel_cor, align = "c", caption = "Korelasi linear setiap prediktor dengan y")| Variabel | Korelasi_dengan_y |
|---|---|
| x.1 | 0.480 |
| x.2 | 0.374 |
| x.3 | -0.069 |
| x.4 | 0.591 |
| x.5 | 0.244 |
| x.6 | -0.080 |
| x.7 | 0.011 |
| x.8 | 0.111 |
| x.9 | 0.023 |
| x.10 | 0.049 |
ggplot(reg.data, aes(x = y)) +
geom_histogram(bins = 25, fill = "#008080", color = "black") +
labs(title = "Distribusi Variabel Respons y", x = "y", y = "Frekuensi") +
theme_minimal()Setelah dilakukan pengecekan data tidak memiliki missing
value (0 nilai hilang) karena dibangkitkan secara simulasi.
Korelasi linear tertinggi dengan y dimiliki oleh x.4
(0,591), sedangkan lima variabel pengganggu x.6 sampai
x.10 memiliki korelasi yang mendekati nol (nilai mutlak
terbesar 0,111). Korelasi x.1, x.2, dan
x.3 terhadap y relatif kecil (0,48, 0,374, dan
-0,069), padahal ketiganya sebenarnya berpengaruh. Dimana hal terjadi
karena koefisien korelasi hanya menangkap hubungan linear, sedangkan
pengaruh ketiga variabel tersebut bersifat nonlinear dan interaksi. Hal
inilah alasan model nonlinear seperti ANN diperlukan.
Data dibagi menjadi data training (80%) dan data
testing (20%). Pengambilan sampel dilakukan secara acak
menggunakan sample() dengan set.seed(918).
## [1] 200
# Mengambil secara acak 80% data untuk sampel training
index <- sample(1:nrow(reg.data), round(0.8 * nrow(reg.data)))
train <- reg.data[index, ]; nrow(train)## [1] 160
## [1] 40
ringkas <- rbind(
Data_Asli = c(Mean_y = mean(reg.data$y), SD_y = sd(reg.data$y)),
Data_Training = c(Mean_y = mean(train$y), SD_y = sd(train$y)),
Data_Testing = c(Mean_y = mean(test$y), SD_y = sd(test$y))
)
knitr::kable(ringkas, digits = 3, align = "c", caption = "Ringkasan variabel respons y pada tiap himpunan data")| Mean_y | SD_y | |
|---|---|---|
| Data_Asli | 14.270 | 5.078 |
| Data_Training | 14.523 | 4.997 |
| Data_Testing | 13.256 | 5.335 |
Berdasarkan output data terbagi menjadi 160 observasi
training dan 40 observasi testing (80:20). Dengan
rata-rata dan simpangan baku y pada kedua himpunan data
berdekatan dengan data asli, sehingga pembagian acak dinilai cukup
representatif. Data training digunakan untuk melatih bobot
jaringan, sedangkan data testing hanya digunakan untuk mengukur
kemampuan prediksi pada pengamatan baru.
Sebelum membandingkan berbagai pengaturan, terlebih dahulu dibangun
model acuan yaitu, ANN dengan 10 hidden neuron dan
maxit = 500. Rumus model disusun dari nama variabel pada
data training, dengan y sebagai respons dan
seluruh variabel lain sebagai prediktor. Dimana arti pengaturan pada
nnet.formula() adalah sebagai berikut.
size: jumlah neuron pada lapisan tersembunyi
(hidden neuron).linout = TRUE: fungsi aktivasi pada lapisan keluaran
berupa fungsi linear, sebagaimana diperlukan pada regresi agar prediksi
dapat bernilai di luar rentang 0 sampai 1.maxit: jumlah iterasi maksimum pelatihan. Pelatihan
berhenti lebih awal bila sudah konvergen.trace = FALSE: menyembunyikan catatan proses
iterasi.Bobot awal jaringan diambil secara acak, sehingga
set.seed(918) dipanggil sebelum setiap model dilatih agar
hasilnya dapat direproduksi.
# Sintaks ANN: menyusun rumus model
i <- names(train)
form <- as.formula(paste("y ~", paste(i[!i %in% "y"], collapse = " + ")))
form## y ~ x.1 + x.2 + x.3 + x.4 + x.5 + x.6 + x.7 + x.8 + x.9 + x.10
## Sintaks Neural Networks: 10 hidden neuron
set.seed(918)
nn <- nnet.formula(form, size = 10, data = train, linout = TRUE,
maxit = 500, trace = FALSE)
nn## a 10-10-1 network with 121 weights
## inputs: x.1 x.2 x.3 x.4 x.5 x.6 x.7 x.8 x.9 x.10
## output(s): y
## options were - linear output units
## hasil prediksi
predict_regresi <- predict(nn, newdata = test, type = "raw")
## hasil evaluasi
error <- test$y - predict_regresi
head(data.frame(Aktual = test$y, Prediksi = as.numeric(predict_regresi),
Galat = as.numeric(error), Galat_Mutlak = abs(as.numeric(error))), 10)## Aktual Prediksi Galat Galat_Mutlak
## 1 10.335689 14.52301 -4.1873178 4.1873178
## 2 16.727262 14.52301 2.2042549 2.2042549
## 3 12.693668 14.52301 -1.8293438 1.8293438
## 4 14.253885 14.52301 -0.2691219 0.2691219
## 5 11.321374 14.52301 -3.2016333 3.2016333
## 6 9.552838 14.52301 -4.9701693 4.9701693
## 7 4.104309 14.52301 -10.4187059 10.4187059
## 8 8.731957 14.52301 -5.7910496 5.7910496
## 9 13.464266 14.52301 -1.0587406 1.0587406
## 10 19.657470 14.52301 5.1344634 5.1344634
MAE_acuan <- mean(abs(error))
RMSE_acuan <- sqrt(mean((test$y - as.numeric(predict_regresi))^2))
MAE_acuan## [1] 4.47793
## [1] 5.41829
Keluaran nn menunjukkan arsitektur jaringan 10-10-1,
yaitu 10 neuron masukan (sepuluh prediktor), 10 hidden neuron,
dan 1 neuron keluaran dengan total 121 bobot (termasuk bias), serta
menggunakan keluaran linear (linear output units). Pada data
testing, model acuan menghasilkan MAE sebesar 4,4779 dan RMSE
sebesar 5,4183, artinya rata-rata prediksi menyimpang sekitar 4,48
satuan dari nilai aktual y. Dimana MAE dihitung dengan
mean(abs(error)) agar sesuai dengan definisinya, yaitu
rata-rata galat mutlak. Rata-rata galat bertanda pada model acuan adalah
-1,2669, yang menunjukkan prediksi model secara rata-rata sedikit lebih
tinggi daripada nilai aktual.
Diagram di atas menggambarkan arsitektur jaringan pada model acuan.
Lapisan masukan (I1 sampai I10) berisi sepuluh prediktor, lapisan
tersembunyi (H1 sampai H10) berisi sepuluh neuron, dan lapisan keluaran
(O1) berisi satu neuron untuk prediksi y. Garis hitam
menunjukkan bobot positif, garis abu-abu menunjukkan bobot negatif, dan
ketebalan garis sebanding dengan besar bobot. Neuron B1 dan B2 adalah
bias pada lapisan tersembunyi dan lapisan keluaran. Pada jaringan yang
terhubung penuh (fully connected) seperti ini, setiap prediktor
terhubung ke setiap hidden neuron, sehingga garis yang tebal
pada suatu prediktor menandakan prediktor tersebut berkontribusi besar
terhadap hasil jaringan.
## $struct
## [1] 10 10 1
##
## $wts
## $wts$`hidden 1 1`
## [1] -6.202385 -2.109143 -1.347211 -3.989987 -2.004069 -3.295069 -3.025520
## [8] -2.547282 -1.744627 -2.028968 -2.002841
##
## $wts$`hidden 1 2`
## [1] -6.293183 -3.470866 -2.710535 -3.371020 -3.102570 -3.461920 -3.035710
## [8] -3.236018 -3.118535 -2.860204 -3.522202
##
## $wts$`hidden 1 3`
## [1] -7.171676 -2.388281 -1.451843 -3.083067 -2.385102 -2.153646 -3.089805
## [8] -3.111106 -2.545382 -2.967236 -3.152825
##
## $wts$`hidden 1 4`
## [1] -5.802412 -2.755960 -3.255327 -2.994492 -3.165933 -3.255913 -2.953869
## [8] -2.785000 -2.527090 -2.651316 -3.349276
##
## $wts$`hidden 1 5`
## [1] -12.210815 -5.566041 -4.744753 -5.551504 -5.032429 -5.704718
## [7] -5.632307 -6.007471 -5.515508 -5.647151 -6.042871
##
## $wts$`hidden 1 6`
## [1] -7.244389 -2.883554 -1.678060 -3.452762 -2.124291 -1.757717 -2.737311
## [8] -2.875979 -2.037843 -3.267992 -2.698318
##
## $wts$`hidden 1 7`
## [1] -7.521479 -3.011331 -2.387148 -3.516417 -2.574367 -3.003475 -3.520077
## [8] -3.572862 -3.132868 -2.866839 -3.165089
##
## $wts$`hidden 1 8`
## [1] 9.964286 2.178255 1.558299 4.730028 1.491754 4.084822 5.197241 4.646239
## [9] 3.217802 3.795255 4.036364
##
## $wts$`hidden 1 9`
## [1] -13.049439 -5.315010 -4.874585 -5.314961 -5.123696 -4.919152
## [7] -6.985787 -5.923817 -6.747700 -6.547414 -5.343853
##
## $wts$`hidden 1 10`
## [1] -9.201606 -4.821415 -3.682852 -4.968899 -4.420695 -4.953370 -4.507024
## [8] -4.673750 -4.920118 -4.715574 -4.438351
##
## $wts$`out 1`
## [1] 15.823042 11.158415 6.339004 2.851027 13.713408 21.342319 4.985420
## [8] 3.567082 -1.300036 7.420857 22.661643
Keluaran neuralweights() menampilkan seluruh bobot
jaringan: bobot dari setiap neuron masukan (dan bias) menuju setiap
hidden neuron, serta bobot dari setiap hidden neuron
(dan bias) menuju neuron keluaran. Total terdapat 121 bobot, jauh lebih
banyak daripada jumlah koefisien pada regresi linear (sebelas
koefisien). Jumlah parameter yang banyak ini membuat ANN fleksibel dalam
mempelajari hubungan nonlinear, tetapi nilai bobot tidak dapat
ditafsirkan satu per satu seperti koefisien regresi, sehingga ANN sering
dianggap sebagai black box.
imp_acuan <- olden(nn, bar_plot = FALSE)
imp_acuan_df <- data.frame(Variabel = rownames(imp_acuan), Importance = imp_acuan[[1]])Untuk melihat kepentingan model digunakan metode Olden. Metode Olden
merupakan metode yang menjumlahkan hasil kali bobot sepanjang jalur dari
setiap prediktor ke keluaran, sehingga nilainya dapat positif maupun
negatif (arah pengaruh) dan makin besar nilai mutlaknya makin besar
kontribusi variabel. Pada model acuan, variabel dengan kontribusi
terbesar secara berurutan adalah x.3, x.6, dan x.7. Variabel yang
sebenarnya berpengaruh (x.1 sampai x.5)
menyumbang 48,69% dari total nilai mutlak kepentingan, sedangkan lima
variabel pengganggu (x.6 sampai x.10) hanya
menyumbang 51,31%. Hal ini menunjukkan bahwa jaringan belum sepenuhnya
memisahkan variabel yang berpengaruh dari variabel pengganggu, yang
dapat disebabkan oleh bobot awal acak atau jumlah iterasi yang
terbatas.
Setiap model digunakan untuk memprediksi y pada data
training dan data testing. Kinerja dihitung dengan
lima ukuran, yaitu MSE, RMSE, MAE, MAPE, dan \(R^2\).Nilai MSE, RMSE, MAE, dan MAPE yang
lebih kecil menunjukkan prediksi yang lebih akurat, sedangkan \(R^2\) yang lebih besar (mendekati 1)
menunjukkan model menjelaskan lebih banyak variasi y.
hitung_metrik <- function(aktual, pred) {
pred <- as.numeric(pred)
err <- aktual - pred
data.frame(MSE = mean(err^2),
RMSE = sqrt(mean(err^2)),
MAE = mean(abs(err)),
MAPE = mean(abs(err / aktual)) * 100,
R2 = 1 - sum(err^2) / sum((aktual - mean(aktual))^2))
}
pred_test <- lapply(model_ann, function(m) as.numeric(predict(m, newdata = test, type = "raw")))
pred_train <- lapply(model_ann, function(m) as.numeric(predict(m, newdata = train, type = "raw")))
tabel_test <- do.call(rbind, lapply(seq_along(pred_test), function(k) {
cbind(grid_ann[k, c("size", "maxit")], hitung_metrik(test$y, pred_test[[k]]))
}))
tabel_train <- do.call(rbind, lapply(seq_along(pred_train), function(k) {
cbind(grid_ann[k, c("size", "maxit")], hitung_metrik(train$y, pred_train[[k]]))
}))
rownames(tabel_test) <- NULL
rownames(tabel_train) <- NULL
knitr::kable(tabel_test, digits = 4, align = "c",
caption = "Metrik evaluasi model ANN pada data testing")| size | maxit | MSE | RMSE | MAE | MAPE | R2 |
|---|---|---|---|---|---|---|
| 10 | 250 | 29.3579 | 5.4183 | 4.4779 | 50.2311 | -0.0578 |
| 20 | 250 | 15.3844 | 3.9223 | 2.9968 | 32.7047 | 0.4457 |
| 30 | 250 | 7.3164 | 2.7049 | 2.2087 | 20.1884 | 0.7364 |
| 10 | 500 | 29.3579 | 5.4183 | 4.4779 | 50.2311 | -0.0578 |
| 20 | 500 | 15.6318 | 3.9537 | 3.0162 | 32.9675 | 0.4368 |
| 30 | 500 | 7.3164 | 2.7049 | 2.2087 | 20.1884 | 0.7364 |
knitr::kable(tabel_train, digits = 4, align = "c",
caption = "Metrik evaluasi model ANN pada data training")| size | maxit | MSE | RMSE | MAE | MAPE | R2 |
|---|---|---|---|---|---|---|
| 10 | 250 | 24.8175 | 4.9817 | 4.0663 | 36.7441 | 0 |
| 20 | 250 | 0.0001 | 0.0074 | 0.0047 | 0.0335 | 1 |
| 30 | 250 | 0.0000 | 0.0007 | 0.0005 | 0.0039 | 1 |
| 10 | 500 | 24.8175 | 4.9817 | 4.0663 | 36.7441 | 0 |
| 20 | 500 | 0.0000 | 0.0008 | 0.0006 | 0.0040 | 1 |
| 30 | 500 | 0.0000 | 0.0007 | 0.0005 | 0.0039 | 1 |
Pada data testing, MSE keenam model berkisar antara 7,3164
dan 29,3579, dengan RMSE antara 2,7049 dan 5,4183, MAE antara 2,2087 dan
4,4779, MAPE antara 20,19% dan 50,23%, serta \(R^2\) antara -0,0578 dan 0,7364. Model
terbaik berdasarkan MSE terkecil pada data testing adalah model
dengan 30 hidden neuron dan maxit = 250, dengan
MSE 7,3164, RMSE 2,7049, MAE 2,2087, MAPE 20,19%, dan \(R^2\) 0,7364. Nilai \(R^2\) tersebut berarti model menjelaskan
sekitar 73,64% variasi y pada data testing.
ap_df <- do.call(rbind, lapply(seq_along(pred_test), function(k) {
data.frame(Model = grid_ann$Model[k], Aktual = test$y, Prediksi = pred_test[[k]])
}))
ap_df$Model <- factor(ap_df$Model, levels = grid_ann$Model)
ggplot(ap_df, aes(x = Aktual, y = Prediksi)) +
geom_point(color = "#008080", alpha = 0.8) +
geom_abline(intercept = 0, slope = 1, linetype = "dashed") +
facet_wrap(~ Model, ncol = 3) +
labs(title = "Nilai Aktual vs Prediksi pada Data Testing",
x = "Nilai Aktual", y = "Nilai Prediksi") +
theme_minimal()pred_best <- pred_test[[nama_best]]
resid_best <- test$y - pred_best
ggplot(data.frame(Prediksi = pred_best, Residual = resid_best),
aes(x = Prediksi, y = Residual)) +
geom_point(color = "#008080", alpha = 0.8) +
geom_hline(yintercept = 0, linetype = "dashed") +
labs(title = paste0("Residual Plot Model Terbaik (", nama_best, ")"),
x = "Nilai Prediksi", y = "Residual") +
theme_minimal()Pada plot aktual dan prediksi, titik yang berada dekat garis putus-putus (garis 45 derajat, tempat prediksi sama dengan aktual) menunjukkan prediksi yang akurat. Korelasi antara nilai aktual dan prediksi pada data testing berkisar antara -0,4288 dan 0,8663, sehingga sebagian model menghasilkan prediksi yang kurang selaras dengan nilai aktual. Model dengan MSE yang lebih besar terlihat memiliki titik yang lebih menyebar dari garis diagonal, yang menunjukkan galat prediksi yang lebih besar. Pada residual plot model terbaik, residual menyebar di sekitar garis nol dengan rata-rata -0,5608 dan simpangan baku 2,6798. Sebaran residual yang acak tanpa pola melengkung atau melebar menandakan model telah menangkap struktur nonlinear pada data, sedangkan pola yang sistematis menandakan masih ada struktur yang belum dipelajari model.
plot_mse <- bind_rows(
mutate(tabel_train, Data = "Training"),
mutate(tabel_test, Data = "Testing")
) %>%
mutate(maxit = factor(maxit), Data = factor(Data, levels = c("Training", "Testing")))
ggplot(plot_mse, aes(x = factor(size), y = MSE, color = maxit, group = maxit)) +
geom_line(linewidth = 1) +
geom_point(size = 2.5) +
facet_wrap(~ Data, scales = "free_y") +
scale_color_manual(values = c("#E69F00", "#008080")) +
labs(title = "MSE Model ANN pada Data Training dan Testing",
x = "Jumlah hidden neuron", y = "MSE", color = "maxit") +
theme_minimal()Pengaruh jumlah hidden neuron. Rata-rata MSE data testing untuk 10, 20, dan 30 hidden neuron berturut-turut sebesar 29,3579, 15,5081, dan 7,3164, sehingga jumlah hidden neuron dengan kesalahan terkecil secara rata-rata adalah 30 neuron. Pada data training, rata-rata MSE untuk ketiganya adalah 24,8175, 0, dan 0. Penambahan neuron memperbesar kapasitas jaringan sehingga kesalahan pada data training cenderung menurun, tetapi penurunan tersebut belum tentu diikuti oleh data testing. Rasio MSE testing terhadap MSE training berkisar antara 1,18 dan 26949860, dengan rasio terbesar pada model size=20 | maxit=500. Rasio yang jauh di atas 1 menunjukkan indikasi overfitting, yaitu model lebih baik pada data training daripada data testing.
Pengaruh maxit. Rata-rata MSE data
testing untuk maxit = 250 dan 500
berturut-turut sebesar 17,3529 dan 17,4353. Menaikkan maxit
dari 250 menjadi 500 menurunkan MSE data testing pada 0 dari 3
ukuran jaringan. Hal ini menunjukkan bahwa iterasi tambahan tidak
memperbaiki kinerja pada data testing, karena jaringan sudah konvergen
atau mulai menyesuaikan diri terhadap data training. Perlu diperhatikan
pula bahwa bobot awal ANN diambil secara acak, sehingga sebagian
perbedaan kecil antarmodel dapat berasal dari inisialisasi bobot dan
bukan semata-mata dari pengaturan model.
imp_df <- do.call(rbind, lapply(seq_along(model_ann), function(k) {
imp <- olden(model_ann[[k]], bar_plot = FALSE)
data.frame(Model = grid_ann$Model[k], Variabel = rownames(imp), Importance = imp[[1]])
}))
imp_df$Model <- factor(imp_df$Model, levels = grid_ann$Model)
imp_df$Variabel <- factor(imp_df$Variabel, levels = rev(paste0("x.", 1:10)))
imp_df$Jenis <- ifelse(imp_df$Variabel %in% paste0("x.", 1:5), "Berpengaruh (x.1-x.5)", "Pengganggu (x.6-x.10)")
ggplot(imp_df, aes(x = Variabel, y = Importance, fill = Jenis)) +
geom_col() +
coord_flip() +
facet_wrap(~ Model, ncol = 3) +
scale_fill_manual(values = c("Berpengaruh (x.1-x.5)" = "#008080", "Pengganggu (x.6-x.10)" = "#BBBBBB")) +
labs(title = "Variable Importance (Metode Olden) pada Seluruh Model",
x = "", y = "Importance", fill = "") +
theme_minimal() +
theme(legend.position = "bottom")Variabel yang sebenarnya berpengaruh (x.1 sampai
x.5, warna hijau kebiruan) menyumbang 48,69% sampai 81,63%
dari total nilai mutlak kepentingan pada keenam model, sedangkan
variabel pengganggu (abu-abu) menyumbang sisanya. Variabel dengan
kepentingan terbesar pada tiap model adalah x.3, x.4. Hasil ini
menunjukkan bahwa kemampuan ANN memisahkan variabel yang berpengaruh
dari variabel pengganggu berbeda antarmodel, sehingga peringkat
kepentingan variabel perlu ditafsirkan dengan hati-hati. Nilai
kepentingan pada metode Olden dihitung dari bobot jaringan sehingga ikut
dipengaruhi oleh bobot awal yang acak dan jumlah neuron, sehingga
hasilnya lebih tepat dipakai sebagai gambaran umum daripada ukuran yang
pasti.
tabel_ringkas <- data.frame(
Model = grid_ann$Model,
MSE_Train = tabel_train$MSE,
MSE_Test = tabel_test$MSE,
RMSE_Test = tabel_test$RMSE,
MAE_Test = tabel_test$MAE,
MAPE_Test = tabel_test$MAPE,
R2_Test = tabel_test$R2,
Konvergensi = tabel_arsitektur$Konvergensi
)
tabel_ringkas <- tabel_ringkas[order(tabel_ringkas$MSE_Test), ]
rownames(tabel_ringkas) <- NULL
knitr::kable(tabel_ringkas, digits = 4, align = "c",
caption = "Peringkat model ANN berdasarkan MSE pada data testing")| Model | MSE_Train | MSE_Test | RMSE_Test | MAE_Test | MAPE_Test | R2_Test | Konvergensi |
|---|---|---|---|---|---|---|---|
| size=30 | maxit=250 | 0.0000 | 7.3164 | 2.7049 | 2.2087 | 20.1884 | 0.7364 | 0 |
| size=30 | maxit=500 | 0.0000 | 7.3164 | 2.7049 | 2.2087 | 20.1884 | 0.7364 | 0 |
| size=20 | maxit=250 | 0.0001 | 15.3844 | 3.9223 | 2.9968 | 32.7047 | 0.4457 | 1 |
| size=20 | maxit=500 | 0.0000 | 15.6318 | 3.9537 | 3.0162 | 32.9675 | 0.4368 | 0 |
| size=10 | maxit=250 | 24.8175 | 29.3579 | 5.4183 | 4.4779 | 50.2311 | -0.0578 | 0 |
| size=10 | maxit=500 | 24.8175 | 29.3579 | 5.4183 | 4.4779 | 50.2311 | -0.0578 | 0 |
Berdasarkan MSE pada data testing, model terbaik adalah
size=30 | maxit=250 dengan MSE 7,3164 dan \(R^2\) 0,7364, sedangkan model dengan
kinerja terendah adalah size=10 | maxit=500 dengan MSE 29,3579. Selisih
MSE antara model terbaik dan terendah adalah 22,0415. Dibandingkan
dengan model acuan (10 hidden neuron, maxit = 500)
yang memiliki MSE 29,3579, model terbaik menghasilkan MSE yang lebih
kecil sehingga pengaturan alternatif memberi perbaikan. Karena jumlah
data testing hanya 40 observasi dan bobot awal ANN bersifat
acak, perbedaan kecil antarmodel perlu ditafsirkan dengan hati-hati, dan
pemilihan model sebaiknya mempertimbangkan pula kesederhanaan jaringan
dan waktu komputasi.
Artificial Neural Network (ANN) merupakan model komputasi yang terdiri dari lapisan masukan, lapisan tersembunyi, dan lapisan keluaran, di mana neuron-neuron terhubung melalui bobot dan fungsi aktivasi, serta dilatih dengan backpropagation untuk meminimalkan kesalahan prediksi. Pada regresi, lapisan keluaran menggunakan fungsi aktivasi linear. Berdasarkan hasil penerapan ANN regresi pada data Friedman, dapat disimpulkan sebagai berikut:
y dan sepuluh variabel prediktor, di mana hanya
x.1 sampai x.5 yang berpengaruh terhadap
y. Hubungan yang bersifat nonlinear dan interaksi membuat
korelasi linear sederhana tidak cukup menggambarkan pengaruh prediktor,
sehingga model nonlinear seperti ANN diperlukan. Data dibagi menjadi 160
observasi training dan 40 observasi testing
(80:20).maxit = 500 terdiri dari 121 bobot dan menghasilkan MAE
4,4779 serta RMSE 5,4183 pada data testing.maxit = 250, 500. MSE pada data
testing berkisar antara 7,3164 dan 29,3579, dengan \(R^2\) antara -0,0578 dan 0,7364.maxit = 250 (MSE 7,3164, RMSE 2,7049, MAE 2,2087, MAPE
20,19%, dan \(R^2\) 0,7364).maxit dari 250 ke
500 menurunkan MSE testing pada 0 dari 3 ukuran jaringan.
Penambahan neuron menambah jumlah bobot hingga 361 pada jaringan
terbesar, sehingga terdapat indikasi overfitting pada jaringan yang
lebih kompleks.x.1 sampai x.5)
menyumbang 48,69% sampai 81,63% dari total kepentingan pada seluruh
model, sehingga ANN belum sepenuhnya konsisten dalam memisahkan variabel
yang berpengaruh dari variabel pengganggu.seed
dan melaporkan rata-rata serta variasi kinerjanya agar perbandingan
antarmodel lebih andal.maxit dapat
dilengkapi dengan validasi silang (cross-validation) dan
regularisasi (argumen decay pada nnet) untuk
mengendalikan overfitting pada jaringan yang besar.Bishop, C. M. (2006). Pattern recognition and machine learning. New York: Springer.
Beck, M. W. (2018). NeuralNetTools: Visualization and analysis tools for neural networks. Journal of Statistical Software, 85(11), 1–20. https://doi.org/10.18637/jss.v085.i11
Fawcett, T. (2006). An introduction to ROC analysis. Pattern Recognition Letters, 27(8), 861–874. https://doi.org/10.1016/j.patrec.2005.10.010
Fransiska, H. (2026). Modul Praktikum Machine Learning and Modern Prediction. Bengkulu: Universitas Bengkulu.
Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep learning. Cambridge, MA: MIT Press.
Goel, A., Goel, A. K., & Kumar, A. (2023). The role of artificial neural network and machine learning in utilizing spatial information. In Spatial Information Research (Vol. 31, Number 3). https://doi.org/10.1007/s41324-022-00494-x
Haykin, S. (2009). Neural networks and learning machines (3rd ed.). Upper Saddle River, NJ: Pearson Education.
Mienye, I. D., & Sun, Y. (2022). A survey of ensemble learning: Concepts, algorithms, applications, and prospects. IEEE Access, 10. https://doi.org/10.1109/ACCESS.2022.3207287
Rumelhart, D. E., Hinton, G. E., & Williams, R. J. (1986). Learning representations by back-propagating errors. Nature, 323(6088), 533–536. https://doi.org/10.1038/323533a0
Venables, W. N., & Ripley, B. D. (2002). Modern applied statistics with S (4th ed.). New York: Springer.
Zhang, Y., Liu, J., & Shen, W. (2022). A review of ensemble learning algorithms used in remote sensing applications. Applied Sciences, 12(17). https://doi.org/10.3390/app12178654
Zhao, H., Liu, W., Wang, Y., & Wu, L. (2025). Comparative analysis of algorithmic approaches in ensemble learning: Bagging vs. boosting. Scientific Reports, 15(1). https://doi.org/10.1038/s41598-025-15971-0