BAB I PENDAHULUAN

1.1 Latar Belakang Masalah

Perkembangan teknologi digital menyebabkan data yang dihasilkan semakin besar dan kompleks, sehingga dibutuhkan model prediksi yang tidak hanya akurat, tetapi juga stabil. Model tunggal, seperti pohon keputusan, umumnya mudah dibangun dan diinterpretasikan, tetapi memiliki variance yang tinggi. Akibatnya, hasil prediksinya dapat berubah cukup besar ketika data pelatihan sedikit berbeda dan model rentan mengalami overfitting. Salah satu pendekatan untuk mengatasi masalah tersebut adalah ensemble learning, yaitu menggabungkan beberapa model agar kinerja prediksi lebih baik dan lebih konsisten dibandingkan model tunggal (Mienye & Sun, 2022).

Bootstrap aggregating atau bagging merupakan salah satu metode ensemble yang diperkenalkan oleh Leo Breiman. Metode ini bekerja dengan membentuk beberapa sampel bootstrap dari data pelatihan melalui pengambilan sampel dengan pengembalian, kemudian melatih satu model pada setiap sampel secara independen. Hasil dari seluruh model digabungkan dengan voting mayoritas pada kasus klasifikasi atau dengan rata-rata nilai prediksi pada kasus regresi. Dengan cara ini, bagging efektif menurunkan variance, meningkatkan stabilitas model, dan mengurangi risiko overfitting, terutama pada model yang kompleks dengan bias rendah (Mohammed & Kora, 2023). Namun, bagging kurang efektif dalam menurunkan bias, sehingga metode ini paling sesuai digunakan pada model dengan variance tinggi.

Berdasarkan hal tersebut, praktikum ini dilakukan untuk memahami konsep dasar dan prinsip kerja bagging, mengimplementasikannya menggunakan perangkat lunak R, serta mengevaluasi kinerjanya. Pada kasus regresi, kinerja model diukur menggunakan Mean Squared Error (MSE), Root Mean Squared Error (RMSE), dan koefisien determinasi (R²) untuk melihat seberapa dekat nilai prediksi dengan nilai aktual.

1.2 Rumusan Masalah

  1. Apa yang kamu ketahui mengenai konsep dasar dan prinsip kerja metode Bagging?
  2. Bagaimana cara mengimplementasikan metode Bagging dengan menggunakan R?
  3. Bagaimana cara mengevaluasi performa Bagging?

1.3 Tujuan Praktikum

  1. Mahasiswa dapat memahami konsep dasar dan prinsip kerja metode Bagging.
  2. Mahasiswa dapat mengimplementasikan metode Bagging dengan menggunakan R.
  3. Mahasiswa dapat mengevaluasi performa Bagging.

1.4 Batasan Masalah

Adapun batasan masalah yang ditentukan pada penelitian ini, yaitu menggunakan data Friedman yang dibangkitkan melalui fungsi mlbench.friedman() pada package mlbench dengan jumlah pengamatan sebanyak 200, yang terdiri dari satu variabel respon dan sepuluh variabel prediktor. Selanjutnya dilakukan analisis Bagging Regression menggunakan fungsi bagging() pada package ipred dengan membandingkan hasil dari tiga jumlah replikasi bootstrap, yaitu nbagg = c(25, 50, 100). Kinerja setiap model kemudian dievaluasi dengan menghitung metrik evaluasi berupa Mean Squared Error (MSE), Root Mean Squared Error (RMSE), dan R-Square, lalu hasilnya dibandingkan untuk mengetahui kinerja model pada masing-masing nilai nbagg!

BAB II TINJAUAN PUSTAKA

2.1 Bootstrap Aggregating (Bagging)

Bootstrap aggregating atau bagging adalah meta-algoritma ensemble yang diusulkan oleh Leo Breiman untuk meningkatkan stabilitas dan akurasi model serta mengurangi overfitting (Mohammed & Kora, 2023). Langkah-langkah bagging adalah sebagai berikut:

  1. Membentuk \(B\) sampel bootstrap dari data pelatihan, yaitu sampel berukuran \(n\) yang diambil dengan pengembalian.
  2. Melatih satu model pada setiap sampel bootstrap secara paralel dan independen.
  3. Menggabungkan hasil seluruh model untuk memprediksi data uji.

Sampel bootstrap ke-\(b\) dinyatakan sebagai berikut.

\[ D_b^{*} = \{(x_1^{*}, y_1^{*}), (x_2^{*}, y_2^{*}), \dots, (x_n^{*}, y_n^{*})\}, \quad b = 1, 2, \dots, B \]

Karena pengambilan dilakukan dengan pengembalian, peluang suatu pengamatan tidak terpilih dalam satu sampel bootstrap adalah sebagai berikut.

\[ \left(1 - \frac{1}{n}\right)^{n} \approx 0{,}368 \]

Artinya sekitar 36,8% data tidak ikut melatih model tertentu. Data tersebut disebut data out-of-bag (OOB) dan dapat dipakai untuk menaksir galat prediksi tanpa memerlukan data uji terpisah (James dkk., 2021).

Pada kasus regresi, prediksi bagging adalah rata-rata prediksi dari \(B\) model.

\[ \hat{f}_{bag}(x) = \frac{1}{B} \sum_{b=1}^{B} \hat{f}^{*b}(x) \]

Pada kasus klasifikasi, prediksi bagging ditentukan melalui voting mayoritas.

\[ \hat{y}_{bag}(x) = \underset{k}{\arg\max} \sum_{b=1}^{B} I\left(\hat{f}^{*b}(x) = k\right) \]

dengan \(I(\cdot)\) adalah fungsi indikator yang bernilai 1 jika kondisi terpenuhi dan 0 jika tidak (James dkk., 2021). Bagging efektif menurunkan variance, tetapi tidak efektif menurunkan bias, sehingga paling sesuai untuk model yang kompleks dengan variance tinggi dan bias rendah (Mohammed & Kora, 2023).

2.2 Bagging Classification dan Bagging Regression

Bagging dapat diterapkan pada pohon keputusan untuk dua jenis permasalahan, yaitu klasifikasi dan regresi. Pada bagging classification tree, variabel respon berupa data kategorik, sehingga hasil prediksi dari setiap pohon digabungkan melalui voting mayoritas atau rata-rata probabilitas, dan kinerjanya diukur menggunakan accuracy, precision, recall, F1, dan ROC-AUC. Sementara itu, pada bagging regression tree, variabel respon berupa data numerik atau kontinu, sehingga hasil prediksi dari setiap pohon digabungkan dengan menghitung rata-rata nilai prediksi, dan kinerjanya diukur menggunakan MSE, RMSE, MAE, dan R-Square. Perbedaan bagging pada kasus klasifikasi dan regresi dirangkum pada Tabel 1 (Fransiska, 2026).

Tabel 1. Perbedaan Bagging Classification dan Bagging Regression

Aspek Bagging Classification Tree Bagging Regression Tree
Variabel Respon Variabel respon berupa kategorik Variabel respon berupa numerik atau kontinu
Agregasi Voting mayoritas atau rata-rata probabilitas Rata-rata nilai prediksi
Metrik Evaluasi Accuracy, Precision, Recall, F1, ROC-AUC MSE, RMSE, MAE, R-Square

2.3 Evaluasi Kinerja Model Regresi

Evaluasi kinerja model dilakukan untuk mengetahui seberapa dekat nilai prediksi dengan nilai aktual. Pada bagging regression, ukuran evaluasi yang umum digunakan adalah Mean Squared Error (MSE), Root Mean Squared Error (RMSE), Mean Absolute Error (MAE), dan koefisien determinasi (\(R^2\)) (James dkk., 2021).

MSE adalah rata-rata dari kuadrat selisih antara nilai aktual dan nilai prediksi. Karena selisih dikuadratkan, kesalahan yang besar memberikan pengaruh yang lebih besar terhadap nilai MSE (James dkk., 2021). Semakin kecil nilai MSE, semakin baik model.

\[ MSE = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 \] RMSE adalah akar kuadrat dari MSE. Ukuran ini memiliki satuan yang sama dengan variabel respon sehingga lebih mudah diinterpretasikan, tetapi tetap sensitif terhadap pencilan.

\[ RMSE = \sqrt{MSE} \] MAE adalah rata-rata dari nilai absolut selisih antara nilai aktual dan nilai prediksi. Ukuran ini memberikan bobot yang sama pada setiap kesalahan sehingga tidak terlalu dipengaruhi oleh pencilan dibandingkan RMSE.

\[ MAE = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i| \] Koefisien determinasi menunjukkan proporsi keragaman nilai aktual yang dapat dijelaskan oleh model. Nilai \(R^2\) yang mendekati 1 menunjukkan bahwa model mampu menjelaskan sebagian besar keragaman data.

\[ R^2 = 1 - \frac{\sum_{i=1}^{n} (y_i - \hat{y}_i)^2}{\sum_{i=1}^{n} (y_i - \bar{y})^2} \]

dengan \(y_i\) adalah nilai aktual, \(\hat{y}_i\) nilai prediksi, dan \(\bar{y}\) rata-rata nilai aktual. Nilai MSE dan RMSE yang semakin kecil serta \(R^2\) yang mendekati 1 menunjukkan model yang semakin baik.

BAB III METODE PENELITIAN

3.1 Jenis dan Sumber Data

Jenis data yang digunakan dalam penelitian ini adalah data kuantitatif, yaitu data berbentuk angka yang dapat diolah dan dianalisis secara statistik. Sumber data yang digunakan merupakan data simulasi yang dibangkitkan melalui fungsi mlbench.friedman1() pada package mlbench dalam perangkat lunak R. Dataset ini terdiri dari 200 pengamatan dengan satu variabel respon (y) dan sepuluh variabel prediktor yang digunakan untuk membangun model prediksi menggunakan metode Bagging Regression dengan jumlah replikasi bootstrap (nbagg) sebesar 25, 50, dan 100.

3.2 Variabel Penelitian

No Variabel Keterangan Tipe Data Peran
1 y Variabel respon hasil simulasi Friedman, dibangkitkan dari fungsi \(10\sin(\pi x_1 x_2) + 20(x_3 - 0{,}5)^2 + 10x_4 + 5x_5 + \varepsilon\) Numerik Respon
2 x.1 Variabel prediktor ke-1, berdistribusi seragam pada interval [0, 1] Numerik Prediktor
3 x.2 Variabel prediktor ke-2, berdistribusi seragam pada interval [0, 1] Numerik Prediktor
4 x.3 Variabel prediktor ke-3, berdistribusi seragam pada interval [0, 1] Numerik Prediktor
5 x.4 Variabel prediktor ke-4, berdistribusi seragam pada interval [0, 1] Numerik Prediktor
6 x.5 Variabel prediktor ke-5, berdistribusi seragam pada interval [0, 1] Numerik Prediktor
7 x.6 Variabel prediktor ke-6, berdistribusi seragam pada interval [0, 1] dan tidak memengaruhi respon (noise) Numerik Prediktor
8 x.7 Variabel prediktor ke-7, berdistribusi seragam pada interval [0, 1] dan tidak memengaruhi respon (noise) Numerik Prediktor
9 x.8 Variabel prediktor ke-8, berdistribusi seragam pada interval [0, 1] dan tidak memengaruhi respon (noise) Numerik Prediktor
10 x.9 Variabel prediktor ke-9, berdistribusi seragam pada interval [0, 1] dan tidak memengaruhi respon (noise) Numerik Prediktor
11 x.10 Variabel prediktor ke-10, berdistribusi seragam pada interval [0, 1] dan tidak memengaruhi respon (noise) Numerik Prediktor

3.3 Langkah-langkah Analisis

  1. Memanggil package yang dibutuhkan, yaitu ipred untuk membangun model bagging dan mlbench untuk membangkitkan data Friedman.
  2. Membangkitkan data Friedman #1 sebanyak 200 pengamatan menggunakan fungsi mlbench.friedman1(), kemudian mengubahnya menjadi data frame. Pembangkitan data diawali dengan set.seed() agar hasil dapat direproduksi.
  3. Membangun model Bagging Regression menggunakan fungsi bagging() dengan variabel respon y dan seluruh variabel prediktor (x.1 sampai x.10), dengan jumlah replikasi bootstrap (nbagg) sebesar 25, 50, dan 100, serta argumen coob = TRUE untuk memperoleh galat out-of-bag.
  4. Memprediksi nilai respon dari masing-masing model menggunakan fungsi predict(), lalu menyusun perbandingan nilai aktual dan nilai prediksi.
  5. Menghitung metrik evaluasi pada setiap model, yaitu MSE, RMSE, dan R-Square.
  6. Membandingkan hasil metrik evaluasi dari ketiga nilai nbagg untuk menentukan jumlah replikasi bootstrap yang memberikan kinerja terbaik, yaitu model dengan nilai MSE dan RMSE terkecil serta R-Square terbesar.
  7. Membuat plot perbandingan nilai aktual dan nilai prediksi untuk melihat kesesuaian hasil prediksi model.
  8. Menginterpretasikan hasil dan menarik kesimpulan.

3.4 Diagram Alir Penelitian

BAB IV Hasil dan Pembahasan

4.1 Persiapan Data

Tahap awal adalah memanggil package yang dibutuhkan, yaitu ipred untuk membangun model bagging, mlbench untuk membangkitkan data Friedman, dan knitr untuk menampilkan tabel. Kemudian data Friedman #1 dibangkitkan sebanyak 200 pengamatan dengan set.seed(123) agar hasil dapat direproduksi.

library(ipred)
library(mlbench)
library(knitr)

set.seed(123)
learn <- as.data.frame(mlbench.friedman1(200))

dim(learn)
## [1] 200  11
str(learn)
## 'data.frame':    200 obs. of  11 variables:
##  $ x.1 : num  0.288 0.788 0.409 0.883 0.94 ...
##  $ x.2 : num  0.239 0.962 0.601 0.515 0.403 ...
##  $ x.3 : num  0.986 0.137 0.905 0.576 0.395 ...
##  $ x.4 : num  0.237 0.686 0.226 0.318 0.174 ...
##  $ x.5 : num  0.471 0.366 0.121 0.047 0.263 ...
##  $ x.6 : num  0.274 0.594 0.16 0.853 0.848 ...
##  $ x.7 : num  0.859 0.887 0.489 0.718 0.487 ...
##  $ x.8 : num  0.2332 0.2307 0.0617 0.4971 0.2441 ...
##  $ x.9 : num  0.639 0.125 0.255 0.821 0.804 ...
##  $ x.10: num  0.155 0.846 0.214 0.67 0.618 ...
##  $ y   : num  10.6 17.2 13.1 13.3 10 ...
head(learn)
##         x.1       x.2       x.3       x.4        x.5       x.6       x.7
## 1 0.2875775 0.2387260 0.9860543 0.2372297 0.47068183 0.2736227 0.8585914
## 2 0.7883051 0.9623589 0.1370675 0.6864904 0.36584547 0.5938669 0.8873848
## 3 0.4089769 0.6013657 0.9053096 0.2258184 0.12127205 0.1601848 0.4890915
## 4 0.8830174 0.5150297 0.5763018 0.3184946 0.04699368 0.8534302 0.7180918
## 5 0.9404673 0.4025733 0.3954489 0.1739838 0.26279630 0.8477392 0.4867056
## 6 0.0455565 0.8802465 0.4498025 0.8014296 0.96864117 0.4778868 0.9887089
##          x.8        x.9       x.10        y
## 1 0.23323974 0.63918581 0.15526414 10.59497
## 2 0.23065360 0.12482240 0.84585101 17.16530
## 3 0.06172627 0.25526578 0.21438043 13.11249
## 4 0.49711861 0.82057469 0.66987324 13.30344
## 5 0.24412509 0.80378039 0.61775645 10.00466
## 6 0.75818554 0.04583463 0.04999978 15.20495
summary(learn$y)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    4.39   10.73   14.56   14.60   18.09   27.72

Interpretasi: Data berhasil dibangkitkan dengan 200 pengamatan dan 11 variabel, yaitu satu variabel respon (y) dan sepuluh variabel prediktor (x.1 sampai x.10), seluruhnya bertipe numerik. Nilai variabel respon berkisar dari 4.39 sampai 27.72 dengan rata-rata 14.6.

4.2 Pembentukan Model Bagging Regression

Model bagging regression dibangun dengan fungsi bagging() menggunakan variabel respon y dan seluruh variabel prediktor. Model dibuat tiga kali dengan jumlah replikasi bootstrap (nbagg) sebesar 25, 50, dan 100. Argumen coob = TRUE digunakan untuk memperoleh galat out-of-bag (OOB), dan set.seed() diulang pada setiap model agar perbandingannya adil.

nbagg_set  <- c(25, 50, 100)
model_list <- list()

for (b in nbagg_set) {
  set.seed(123)
  model_list[[as.character(b)]] <- bagging(y ~ ., data = learn,
                                           nbagg = b, coob = TRUE)
}

for (b in names(model_list)) {
  cat("nbagg =", b, "\n")
  print(model_list[[b]])
}
## nbagg = 25 
## 
## Bagging regression trees with 25 bootstrap replications 
## 
## Call: bagging.data.frame(formula = y ~ ., data = learn, nbagg = b, 
##     coob = TRUE)
## 
## Out-of-bag estimate of root mean squared error:  2.7366 
## 
## nbagg = 50 
## 
## Bagging regression trees with 50 bootstrap replications 
## 
## Call: bagging.data.frame(formula = y ~ ., data = learn, nbagg = b, 
##     coob = TRUE)
## 
## Out-of-bag estimate of root mean squared error:  2.6582 
## 
## nbagg = 100 
## 
## Bagging regression trees with 100 bootstrap replications 
## 
## Call: bagging.data.frame(formula = y ~ ., data = learn, nbagg = b, 
##     coob = TRUE)
## 
## Out-of-bag estimate of root mean squared error:  2.6574

Interpretasi: Ketiga model berhasil dibentuk. Setiap model terdiri dari sejumlah pohon regresi sesuai nilai nbagg yang dilatih pada sampel bootstrap berbeda. Galat OOB (RMSE) masing-masing model adalah 2.7366 untuk nbagg = 25, 2.6582 untuk nbagg = 50, dan 2.6574 untuk nbagg = 100. Galat OOB dihitung dari data yang tidak ikut melatih pohon tertentu, sehingga lebih mencerminkan kemampuan model pada data baru.

4.3 Hasil Prediksi

Setiap model digunakan untuk memprediksi nilai respon dengan fungsi predict(), lalu hasilnya dibandingkan dengan nilai aktual.

actual    <- learn$y
pred_list <- lapply(model_list, predict, newdata = learn)

hasil_pred <- data.frame(
  Aktual   = actual,
  Pred_25  = pred_list[["25"]],
  Pred_50  = pred_list[["50"]],
  Pred_100 = pred_list[["100"]]
)

kable(head(hasil_pred, 10), digits = 3, align = "c",
      caption = "Tabel 3. Perbandingan Nilai Aktual dan Prediksi (10 Pengamatan Pertama)")
Tabel 3. Perbandingan Nilai Aktual dan Prediksi (10 Pengamatan Pertama)
Aktual Pred_25 Pred_50 Pred_100
10.595 9.667 9.790 9.765
17.165 17.703 17.762 17.792
13.112 13.359 13.633 13.669
13.303 14.778 14.554 14.381
10.005 11.232 11.220 11.046
15.205 18.348 17.676 17.183
10.688 9.797 10.580 10.607
23.748 19.067 19.097 18.806
11.169 11.063 11.093 11.093
9.731 9.343 9.608 9.947

Interpretasi: Berdasarkan Tabel 3, nilai prediksi dari ketiga model (nbagg = 25, 50, dan 100) pada umumnya mengikuti nilai aktual, tetapi ketepatannya berbeda-beda pada tiap pengamatan. Beberapa pengamatan diprediksi sangat dekat dengan nilai aktual, misalnya pengamatan ke-9 dengan nilai aktual 11,169 yang diprediksi 11,063 sampai 11,093, serta pengamatan ke-7 dengan nilai aktual 10,688 yang diprediksi 10,580 pada nbagg = 50 dan 10,607 pada nbagg = 100. Sebaliknya, terdapat pengamatan dengan selisih yang cukup besar. Pengamatan ke-8 memiliki nilai aktual tertinggi, yaitu 23,748, tetapi hanya diprediksi sekitar 18,806 sampai 19,097 (terlalu rendah sekitar 4,7 sampai 4,9). Pengamatan ke-6 dengan nilai aktual 15,205 diprediksi terlalu tinggi, yaitu 18,348 pada nbagg = 25, 17,676 pada nbagg = 50, dan 17,183 pada nbagg = 100. Pola ini menunjukkan bahwa prediksi bagging cenderung tertarik ke nilai tengah (shrinkage), sehingga nilai aktual yang ekstrem sulit ditangkap sepenuhnya, karena prediksi merupakan rata-rata dari banyak pohon. Dari sisi jumlah replikasi bootstrap, peningkatan nbagg dari 25 ke 100 membuat prediksi lebih mendekati nilai aktual pada beberapa pengamatan, seperti pengamatan ke-4, ke-5, ke-6, ke-7, dan ke-10, tetapi pada pengamatan lain, seperti ke-2 dan ke-3, prediksinya justru sedikit menjauh. Dengan demikian, perbedaan prediksi antar nilai nbagg relatif kecil dan tidak konsisten pada seluruh pengamatan, sehingga perbandingan kinerja yang lebih tepat perlu dilihat dari metrik evaluasi.

4.4 Metrik Evaluasi

Kinerja model dievaluasi dengan MSE, RMSE, dan R-Square. Ketiga metrik dihitung dari nilai aktual dan prediksi, lalu ditambah galat OOB sebagai pembanding.

hitung_metrik <- function(actual, pred) {
  MSE  <- mean((actual - pred)^2)
  RMSE <- sqrt(MSE)
  R2   <- 1 - sum((actual - pred)^2) / sum((actual - mean(actual))^2)
  c(MSE = MSE, RMSE = RMSE, R2 = R2)
}

metrik    <- t(sapply(pred_list, function(p) hitung_metrik(actual, p)))
metrik_df <- data.frame(nbagg = nbagg_set, metrik,
                        RMSE_OOB = sapply(model_list, function(m) m$err),
                        row.names = NULL)

kable(metrik_df, digits = 4, align = "c",
      caption = "Tabel 4. Perbandingan Metrik Evaluasi Bagging Regression")
Tabel 4. Perbandingan Metrik Evaluasi Bagging Regression
nbagg MSE RMSE R2 RMSE_OOB
25 3.5190 1.8759 0.8427 2.7366
50 3.4140 1.8477 0.8474 2.6582
100 3.4755 1.8643 0.8446 2.6574

Interpretasi: Berdasarkan Tabel 4, nilai MSE terkecil diperoleh pada nbagg = 50, yaitu 3.414 dengan RMSE 1.8477. Nilai R-Square terbesar diperoleh pada nbagg = 50, yaitu 0.8474, artinya model mampu menjelaskan sekitar 84.74% keragaman nilai respon. Selisih MSE antara model terbaik dan terburuk adalah 0.105, sehingga perubahan jumlah replikasi bootstrap hanya memberikan perbedaan kinerja yang kecil. Perlu diperhatikan bahwa MSE, RMSE, dan R-Square di atas dihitung pada data yang sama dengan data pelatihan sehingga cenderung optimistis. Berdasarkan galat OOB yang lebih mencerminkan data baru, model terbaik adalah nbagg = 100 dengan RMSE OOB 2.6574.

4.5 Plot Nilai Aktual dan Prediksi

Plot dibuat untuk melihat kesesuaian nilai prediksi terhadap nilai aktual pada setiap nilai nbagg. Garis merah menunjukkan nilai aktual dan garis biru putus-putus menunjukkan nilai prediksi.

par(mfrow = c(3, 1))
for (b in nbagg_set) {
  plot(actual, type = "l", lwd = 2, col = "pink",
       xlab = "Observasi", ylab = "Nilai Y",
       main = paste("Aktual vs Prediksi, nbagg =", b))
  lines(pred_list[[as.character(b)]], lwd = 2, lty = 2, col = "lightblue")
  legend("topright", legend = c("Aktual", "Prediksi"),
         col = c("pink", "lightblue"), lty = c(1, 2), lwd = 2, cex = 0.8)
}

par(mfrow = c(1, 1))

Interpretasi: Pada ketiga plot, garis prediksi mengikuti pola naik turun garis aktual dengan cukup dekat, yang menunjukkan bahwa model bagging mampu menangkap pola data Friedman. Prediksi cenderung lebih halus dibandingkan nilai aktual karena prediksi bagging merupakan rata-rata dari banyak pohon, sehingga variance-nya berkurang. Perbedaan bentuk garis antara nbagg 25, 50, dan 100 relatif kecil.

BAB V Kesimpulan dan Saran

5.1 Kesimpulan

Bagging (bootstrap aggregating) adalah meta-algoritma ensemble yang bertujuan meningkatkan stabilitas dan akurasi model serta mengurangi overfitting. Prinsip kerjanya diawali dengan membentuk beberapa sampel bootstrap dari data pelatihan melalui pengambilan sampel dengan pengembalian. Selanjutnya, satu model dilatih pada setiap sampel secara paralel dan independen, kemudian hasil seluruh model digabungkan untuk memprediksi data uji. Pada kasus regresi, penggabungan dilakukan dengan menghitung rata-rata nilai prediksi, sedangkan pada kasus klasifikasi dilakukan dengan voting mayoritas atau rata-rata probabilitas. Bagging efektif menurunkan variance, tetapi tidak efektif menurunkan bias, sehingga paling sesuai digunakan pada model yang kompleks dengan variance tinggi dan bias rendah, seperti pohon keputusan.

Metode bagging dapat diimplementasikan di R menggunakan fungsi bagging() dari package ipred. Untuk bagging regression pada data Friedman, langkahnya diawali dengan memanggil package ipred dan mlbench, lalu membangkitkan data Friedman #1 sebanyak 200 pengamatan menggunakan fungsi mlbench.friedman1() yang diawali set.seed() agar hasil dapat direproduksi. Setelah itu, model dibangun dengan bagging(y ~ ., data, nbagg, coob = TRUE) pada jumlah replikasi bootstrap (nbagg) sebesar 25, 50, dan 100. Nilai respon kemudian diprediksi menggunakan fungsi predict(), dan hasilnya dibandingkan dengan nilai aktual dalam bentuk tabel dan plot.

Performa bagging regression dievaluasi dengan membandingkan nilai aktual dan nilai prediksi menggunakan tiga metrik, yaitu Mean Squared Error (MSE), Root Mean Squared Error (RMSE), dan R-Square (\(R^2\)). Model dikatakan baik apabila nilai MSE dan RMSE kecil serta nilai \(R^2\) mendekati 1. Selain itu, argumen coob = TRUE menghasilkan galat out-of-bag (OOB), yaitu galat yang dihitung dari data yang tidak ikut melatih pohon tertentu. Galat OOB lebih mencerminkan kemampuan model pada data baru dibandingkan metrik yang dihitung pada data pelatihan yang sama, sehingga keduanya digunakan secara bersama dalam menilai model.

Berdasarkan hasil analisis pada data Friedman, model bagging regression memberikan kinerja yang baik pada ketiga nilai nbagg. Nilai prediksi pada umumnya mengikuti pola nilai aktual, tetapi nilai aktual yang ekstrem cenderung sulit ditangkap sepenuhnya karena prediksi bagging merupakan rata-rata dari banyak pohon sehingga cenderung tertarik ke nilai tengah. Berdasarkan MSE, model terbaik diperoleh pada nbagg = 50 dengan MSE sebesar 3.414, RMSE sebesar 1.8477, dan R-Square sebesar 0.8474. Berdasarkan galat OOB, model terbaik adalah nbagg = 100 dengan RMSE OOB sebesar 2.6574. Perbedaan kinerja antar nilai nbagg relatif kecil, sehingga penambahan jumlah replikasi bootstrap tidak selalu memberikan peningkatan yang besar terhadap kinerja model.

5.2 Saran

Pada praktikum Machine Learning berikutnya, disarankan agar praktikan lebih teliti dalam memasukkan dan mengolah data menggunakan RStudio, terutama dalam penggunaan sintaks serta interpretasi Bagging Regression. Selain itu, pemilihan jumlah replikasi bootstrap (nbagg) perlu diperhatikan agar model tetap stabil tanpa membuat waktu komputasi terlalu lama. Hasil evaluasi juga sebaiknya tidak hanya dilihat dari MSE, RMSE, dan R-Square pada data pelatihan, tetapi dikaitkan dengan galat out-of-bag (OOB) atau data uji terpisah sehingga kesimpulan mengenai kemampuan model pada data baru menjadi lebih tepat.

DAFTAR PUSTAKA

Fransiska, H. (2026). Modul Praktikum Machine Learning. Universitas Bengkulu.

James, G., Witten, D., Hastie, T., & Tibshirani, R. (2021). An introduction to statistical learning: With applications in R (2nd ed.). Springer.

Mienye, I. D., & Sun, Y. (2022). A survey of ensemble learning: Concepts, algorithms, applications, and prospects. IEEE Access, 10, 99129–99149.

Mohammed, A., & Kora, R. (2023). A comprehensive review on ensemble deep learning: Opportunities and challenges. Journal of King Saud University – Computer and Information Sciences, 35(2), 757–774.