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.
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!
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:
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).
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 |
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.
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.
| 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 |
mlbench untuk
membangkitkan data Friedman.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.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
## '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 ...
## 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
## 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.
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.
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)")| 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.
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")| 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.
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)
}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.
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.
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.
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.