Dalam analisis data, metode machine learning digunakan untuk membangun model yang mampu menghasilkan prediksi berdasarkan pola pada data. Namun, model dengan struktur yang kompleks, seperti pohon keputusan tunggal, dapat memiliki variance yang tinggi sehingga hasil prediksi menjadi kurang stabil dan berisiko mengalami overfitting. Perubahan kecil pada data pelatihan dapat menghasilkan struktur pohon yang berbeda, sehingga diperlukan pendekatan yang mampu meningkatkan kestabilan prediksi.
Salah satu metode yang dapat digunakan untuk mengatasi masalah tersebut adalah Bootstrap Aggregation atau Bagging. Bagging merupakan metode ensemble yang membentuk beberapa model dari sampel data hasil bootstrap, kemudian menggabungkan hasil prediksi dari seluruh model untuk memperoleh prediksi akhir. Metode ini bekerja secara paralel dan independen serta terutama bertujuan untuk mengurangi variance model. Bagging dapat diterapkan pada klasifikasi (Bagging Classification Tree) maupun regresi (Bagging Regression Tree). Pada regresi, variabel respons berupa numerik kontinu dan prediksi akhir diperoleh dari rata-rata prediksi beberapa model, yang kinerjanya dapat dievaluasi menggunakan Mean Squared Error (MSE), Root Mean Squared Error (RMSE), dan R-Square (Fransiska, 2026).
Oleh karena itu, praktikum Bagging dilakukan untuk memahami
konsep dasar dan prinsip kerja Bagging serta menerapkan
Bagging Regression pada data Friedman menggunakan
RStudio. Melalui praktikum ini, praktikan diharapkan mampu membangun
model Bagging Regression dengan jumlah agregasi (number of
bootstrap aggregations atau nbagg) sebesar 25, 50, dan
100, melakukan prediksi, serta mengevaluasi dan membandingkan kinerja
model menggunakan MSE, RMSE, dan R-Square.
Berdasarkan latar belakang di atas, rumusan masalah yang dapat disimpulkan yaitu:
Berdasarkan rumusan masalah di atas, tujuan yang dapat disimpulkan yaitu:
Adapun manfaat dari praktikum ini yaitu:
Adapun batasan masalah dari praktikum ini, yaitu menggunakan
dataset Friedman (mlbench.friedman1)
sebanyak 200 observasi, kemudian melakukan Bagging Regression
dengan membandingkan hasil menggunakan
nbagg = c(25, 50, 100). Selanjutnya, hitung metrik
evaluasinya!
Bootstrap Aggregation atau Bagging merupakan meta-algoritma ensemble yang meningkatkan stabilitas dan akurasi model serta mengurangi masalah overfitting. Metode ini dapat digunakan dengan metode dasar apa pun. Pada kasus fungsi kontinu, hasil beberapa model digabungkan melalui rata-rata, sedangkan pada klasifikasi hasil digabungkan melalui voting (Fransiska, 2026). Bagging pertama kali diusulkan oleh Leo Breiman untuk meningkatkan hasil suatu masalah klasifikasi (Breiman, 1996).
Bagging bekerja dengan bootstrap sampling, yaitu pengambilan sampel acak dari data pelatihan secara dengan pengembalian (with replacement). Setiap sampel bootstrap berukuran sama dengan data awal, tetapi dapat memuat observasi yang terambil lebih dari satu kali dan terdapat observasi yang tidak terambil, yang disebut observasi out-of-bag (OOB). Langkah-langkah Bagging secara garis besar adalah sebagai berikut (Fransiska, 2026):
Menurut Fransiska (2026), Bagging memiliki beberapa karakteristik penting, yaitu:
| Karakteristik | Keterangan |
|---|---|
| Paralel dan independen | Setiap model dikembangkan secara paralel dan independen satu sama lain dari sampel bootstrap yang berbeda |
| Mengurangi variance | Bagging membantu mengurangi variance, tetapi tidak efektif dalam mengurangi bias |
| Model yang sesuai | Paling cocok digunakan untuk model dengan variance tinggi dan bias rendah (model yang kompleks), seperti pohon keputusan |
| Contoh pengembangan | Random Forest merupakan contoh yang baik, yaitu Bagging yang menambahkan pemilihan prediktor acak untuk mengurangi korelasi antar pohon |
Bagging dapat diterapkan pada pohon klasifikasi maupun pohon regresi. Perbedaan keduanya terletak pada jenis variabel respons, cara agregasi, dan metrik evaluasi yang digunakan, sebagaimana dirangkum pada tabel berikut (Fransiska, 2026):
| Aspek | Bagging Classification Tree | Bagging Regression Tree |
|---|---|---|
| Variabel respons | Kategorik | Numerik atau kontinu |
| Agregasi | Majority voting atau rata-rata probabilitas | Rata-rata nilai prediksi |
| Metrik evaluasi | Accuracy, precision, recall, F1-score, ROC-AUC | MSE, RMSE, MAE, R-Square |
Pada Bagging Regression, apabila terdapat \(B\) model dengan prediksi \(\hat{y}_1,\hat{y}_2,\ldots,\hat{y}_B\), maka prediksi akhir dirumuskan sebagai berikut (Pérez-Rodríguez dkk., 2023):
\[\hat{y}_{Bagging} = \frac{1}{B}\sum_{b=1}^{B}\hat{y}_b\]
dengan \(\hat{y}_{Bagging}\)
merupakan prediksi akhir, \(B\)
merupakan jumlah model yang dibentuk (nbagg), dan \(\hat{y}_b\) merupakan prediksi dari model
ke-\(b\). Penggabungan beberapa model
bertujuan meningkatkan kestabilan prediksi dengan mengurangi
variance model individual (Pérez-Rodríguez dkk., 2023).
Peningkatan nbagg tidak selalu menghasilkan peningkatan
performa dengan besaran yang sama pada setiap data (Chang & Chang,
2026), sehingga pada praktikum ini dibandingkan nbagg = 25,
nbagg = 50, dan nbagg = 100.
Dataset Friedman merupakan data simulasi yang digunakan
untuk menguji metode regresi karena memiliki hubungan nonlinear antara
variabel prediktor dan variabel respons. Salah satu bentuknya adalah
friedman1 yang dibangkitkan melalui persamaan berikut
(Friedman, 1991; Chang & Chang, 2026):
\[y = 10\sin(\pi x_1 x_2) + 20(x_3-0.5)^2 + 10x_4 + 5x_5 + \varepsilon\]
dengan \(x_1,\ldots,x_{10}\) berdistribusi seragam \(U(0,1)\) dan \(\varepsilon \sim N(0,1)\). Hanya \(x_1\) sampai \(x_5\) yang memengaruhi \(y\), sedangkan \(x_6\) sampai \(x_{10}\) merupakan variabel noise. Karena \(\varepsilon\) memiliki variansi 1, RMSE pada data baru secara teoritis tidak dapat turun jauh di bawah 1.
Evaluasi model regresi dilakukan dengan membandingkan nilai aktual dan nilai prediksi. Penggunaan lebih dari satu metrik memberikan gambaran yang lebih lengkap mengenai kesalahan prediksi dan kemampuan model menjelaskan variasi data (Chicco dkk., 2021; Esaki, 2021). Metrik yang digunakan adalah sebagai berikut:
\[MSE = \frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y}_i)^2\]
\[RMSE = \sqrt{\frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y}_i)^2}\]
\[R^2 = 1-\frac{\sum_{i=1}^{n}(y_i-\hat{y}_i)^2}{\sum_{i=1}^{n}(y_i-\bar{y})^2}\]
dengan \(n\) jumlah observasi, \(y_i\) nilai aktual, \(\hat{y}_i\) nilai prediksi, dan \(\bar{y}\) rata-rata nilai aktual. Selain
itu, pada fungsi bagging() paket ipred
tersedia estimasi galat out-of-bag (opsi
coob = TRUE), yaitu galat yang dihitung dari observasi yang
tidak terambil pada sampel bootstrap masing-masing pohon. Untuk
regresi, galat ini dinyatakan dalam bentuk RMSE dan dapat menjadi
pembanding yang lebih mendekati kinerja pada data baru.
Jenis data yang digunakan dalam penelitian ini adalah data numerik.
Data yang digunakan merupakan dataset Friedman yang
dibangkitkan menggunakan fungsi mlbench.friedman1() dari
package mlbench di R sebanyak 200 observasi. Data
ini merupakan data simulasi sehingga tidak berasal dari pengamatan
langsung terhadap objek penelitian nyata. Agar hasil dapat direproduksi,
pembangkitan data dan pembentukan model menggunakan
set.seed(123). Data diperiksa kelengkapannya sebelum
dilakukan pemodelan.
Penelitian ini menggunakan variabel y sebagai variabel
respons dan variabel x1 sampai x10 sebagai
variabel prediktor (pada objek R, kolom prediktor bernama
x.1 sampai x.10). Variabel y
merupakan variabel numerik kontinu yang menjadi sasaran prediksi,
sedangkan seluruh variabel prediktor berupa numerik. Variabel
y diprediksi menggunakan metode Bagging Regression
untuk mengetahui pengaruh jumlah agregasi (nbagg) sebesar
25, 50, dan 100 terhadap kemampuan prediksi model.
Berikut adalah langkah-langkah yang dilakukan dalam analisis:
mlbench dan
ipred, lalu membangkitkan data Friedman sebanyak
200 observasi.bagging() dengan nbagg = 25, 50,
dan 100.print() dan
summary(), serta melihat struktur pohon regresi
pertama.predict().Bagging Regression merupakan metode ensemble yang
digunakan untuk memprediksi variabel respons numerik melalui
penggabungan beberapa pohon regresi yang dibentuk dari sampel
bootstrap. Penelitian ini menggunakan dataset
Friedman yang dibangkitkan menggunakan fungsi
mlbench.friedman1() untuk memprediksi variabel
y berdasarkan sepuluh variabel prediktor. Tahapan analisis
meliputi pemeriksaan data, pembentukan model Bagging Regression
dengan nbagg sebesar 25, 50, dan 100, prediksi, evaluasi
menggunakan MSE, RMSE, dan R-Square, serta perbandingan antar
model.
Berikut adalah hasil analisis yang diperoleh dalam pemeriksaan awal data.
## '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
## x.1 x.2 x.3 x.4
## Min. :0.0006248 Min. :0.006301 Min. :0.0004654 Min. :0.001192
## 1st Qu.:0.2721181 1st Qu.:0.235623 1st Qu.:0.2736035 1st Qu.:0.246362
## Median :0.4820961 Median :0.469024 Median :0.5061597 Median :0.492065
## Mean :0.5063919 Mean :0.489122 Mean :0.5022216 Mean :0.493561
## 3rd Qu.:0.7333708 3rd Qu.:0.741910 3rd Qu.:0.7570153 3rd Qu.:0.755200
## Max. :0.9942698 Max. :0.999405 Max. :0.9966172 Max. :0.994936
## x.5 x.6 x.7 x.8
## Min. :0.003896 Min. :0.002479 Min. :0.001156 Min. :0.01152
## 1st Qu.:0.261924 1st Qu.:0.263275 1st Qu.:0.234549 1st Qu.:0.27500
## Median :0.518644 Median :0.478715 Median :0.487690 Median :0.49757
## Mean :0.495092 Mean :0.486666 Mean :0.473317 Mean :0.51007
## 3rd Qu.:0.734548 3rd Qu.:0.719703 3rd Qu.:0.715833 3rd Qu.:0.75497
## Max. :0.991745 Max. :0.992616 Max. :0.998883 Max. :0.99952
## x.9 x.10 y
## Min. :0.005364 Min. :0.004609 Min. : 4.39
## 1st Qu.:0.272996 1st Qu.:0.249906 1st Qu.:10.73
## Median :0.556871 Median :0.497349 Median :14.56
## Mean :0.528512 Mean :0.492717 Mean :14.60
## 3rd Qu.:0.798814 3rd Qu.:0.729677 3rd Qu.:18.09
## Max. :0.996372 Max. :0.994995 Max. :27.72
## [1] 200 11
## 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
Berdasarkan hasil pemeriksaan awal, dataset
Friedman terdiri atas 200 observasi dan 11 variabel, yaitu satu
variabel respons y dan sepuluh variabel prediktor
(x.1 sampai x.10) yang seluruhnya bertipe
numerik. Hasil pengecekan menunjukkan bahwa terdapat 0 missing
value, sehingga data lengkap dan tidak diperlukan penanganan
menggunakan na.omit(). Variabel respons y memiliki
rata-rata 14,60 dengan nilai minimum 4,39 dan maksimum 27,72. Dengan
demikian, data yang digunakan dalam analisis selanjutnya merupakan data
lengkap.
Pembentukan model Bagging Regression dilakukan menggunakan
fungsi bagging() dengan variabel y sebagai
variabel respons dan seluruh variabel lainnya sebagai prediktor. Opsi
coob = TRUE digunakan agar estimasi galat
out-of-bag ikut dihitung. Model dibangun sebanyak tiga kali
dengan nilai nbagg berbeda, yaitu 25, 50, dan 100. Berikut
merupakan hasil pembentukan model dengan nbagg = 25.
##
## Bagging regression trees with 25 bootstrap replications
##
## Call: bagging.data.frame(formula = y ~ ., data = learn, nbagg = 25,
## coob = TRUE)
##
## Out-of-bag estimate of root mean squared error: 2.7366
## Length Class Mode
## y 200 -none- numeric
## X 10 data.frame list
## mtrees 25 -none- list
## OOB 1 -none- logical
## comb 1 -none- logical
## err 1 -none- numeric
## call 5 -none- call
Model dengan nbagg = 25 terdiri atas 25 pohon regresi
yang masing-masing dilatih pada sampel bootstrap berbeda, dan
prediksi akhirnya merupakan rata-rata prediksi seluruh pohon. Estimasi
RMSE out-of-bag model ini sebesar 2,7366, yaitu galat yang
dihitung dari observasi yang tidak terambil pada pembentukan tiap pohon
sehingga lebih mendekati kinerja pada data baru.
Selanjutnya, dibentuk model dengan nbagg = 50.
##
## Bagging regression trees with 50 bootstrap replications
##
## Call: bagging.data.frame(formula = y ~ ., data = learn, nbagg = 50,
## coob = TRUE)
##
## Out-of-bag estimate of root mean squared error: 2.6582
## Length Class Mode
## y 200 -none- numeric
## X 10 data.frame list
## mtrees 50 -none- list
## OOB 1 -none- logical
## comb 1 -none- logical
## err 1 -none- numeric
## call 5 -none- call
Model dengan nbagg = 50 terdiri atas 50 pohon regresi
dengan estimasi RMSE out-of-bag sebesar 2,6582. Dibandingkan
model nbagg = 25, galat out-of-bag menurun sebesar
0,0784.
Terakhir, dibentuk model dengan nbagg = 100.
##
## Bagging regression trees with 100 bootstrap replications
##
## Call: bagging.data.frame(formula = y ~ ., data = learn, nbagg = 100,
## coob = TRUE)
##
## Out-of-bag estimate of root mean squared error: 2.6574
## Length Class Mode
## y 200 -none- numeric
## X 10 data.frame list
## mtrees 100 -none- list
## OOB 1 -none- logical
## comb 1 -none- logical
## err 1 -none- numeric
## call 5 -none- call
Model dengan nbagg = 100 terdiri atas 100 pohon regresi
dengan estimasi RMSE out-of-bag sebesar 2,6574. Dibandingkan
model nbagg = 50, galat out-of-bag menurun sebesar
0,0008.
Setiap model Bagging menyimpan seluruh pohon regresi yang
terbentuk pada objek mtrees. Berikut ditampilkan pohon
regresi pertama dari model dengan nbagg = 25 untuk melihat
struktur pohon penyusun ensemble.
## $bindx
## [1] 159 179 14 195 170 50 118 43 14 118 153 90 91 197 91 185 92 137
## [19] 99 72 26 7 170 137 164 78 81 43 103 117 76 143 32 109 7 137
## [37] 169 74 23 155 188 53 135 53 155 166 34 69 72 76 63 141 97 91
## [55] 153 38 21 41 175 90 60 16 116 94 6 200 86 86 39 159 118 50
## [73] 34 4 13 69 127 153 52 22 89 160 25 35 168 112 30 140 159 121
## [91] 110 158 64 142 199 67 151 122 79 85 165 136 51 74 178 106 98 74
## [109] 127 174 17 190 46 54 163 110 94 79 24 113 107 135 151 154 102 160
## [127] 135 155 170 5 70 16 24 32 21 55 75 164 83 39 54 137 199 48
## [145] 77 83 184 111 39 196 1 168 30 94 16 88 54 176 20 104 195 93
## [163] 164 52 108 22 177 42 59 84 11 121 183 136 46 85 109 194 107 77
## [181] 174 198 200 172 160 36 173 142 16 125 33 40 168 10 200 125 9 7
## [199] 135 186
##
## $btree
## n= 200
##
## node), split, n, deviance, yval
## * denotes terminal node
##
## 1) root 200 4025.49800 14.029480
## 2) x.4< 0.6502426 138 2160.39900 12.313130
## 4) x.2< 0.3684006 66 456.23160 9.859159
## 8) x.5< 0.7123567 49 196.75530 8.894625
## 16) x.8>=0.3836868 34 130.62010 8.338864
## 32) x.8< 0.4076226 9 1.81360 5.965380 *
## 33) x.8>=0.4076226 25 59.85333 9.193318 *
## 17) x.8< 0.3836868 15 31.83001 10.154350 *
## 9) x.5>=0.7123567 17 82.49546 12.639290 *
## 5) x.2>=0.3684006 72 942.38620 14.562610
## 10) x.1< 0.1965217 14 119.80740 10.439980 *
## 11) x.1>=0.1965217 58 527.19940 15.557730
## 22) x.4< 0.2353809 25 90.50841 13.424500 *
## 23) x.4>=0.2353809 33 236.73760 17.173810
## 46) x.3>=0.3257424 14 68.04943 15.266000 *
## 47) x.3< 0.3257424 19 80.18524 18.579560 *
## 3) x.4>=0.6502426 62 553.71570 17.849750
## 6) x.2< 0.4236687 27 175.72330 15.827980
## 12) x.5< 0.4993253 11 72.59888 13.988350 *
## 13) x.5>=0.4993253 16 40.30417 17.092730 *
## 7) x.2>=0.4236687 35 182.49160 19.409390
## 14) x.1< 0.3971814 13 18.24531 17.376150 *
## 15) x.1>=0.3971814 22 78.74578 20.610860 *
##
## attr(,"class")
## anova
## "sreg"
## n= 200
##
## node), split, n, deviance, yval
## * denotes terminal node
##
## 1) root 200 4025.49800 14.029480
## 2) x.4< 0.6502426 138 2160.39900 12.313130
## 4) x.2< 0.3684006 66 456.23160 9.859159
## 8) x.5< 0.7123567 49 196.75530 8.894625
## 16) x.8>=0.3836868 34 130.62010 8.338864
## 32) x.8< 0.4076226 9 1.81360 5.965380 *
## 33) x.8>=0.4076226 25 59.85333 9.193318 *
## 17) x.8< 0.3836868 15 31.83001 10.154350 *
## 9) x.5>=0.7123567 17 82.49546 12.639290 *
## 5) x.2>=0.3684006 72 942.38620 14.562610
## 10) x.1< 0.1965217 14 119.80740 10.439980 *
## 11) x.1>=0.1965217 58 527.19940 15.557730
## 22) x.4< 0.2353809 25 90.50841 13.424500 *
## 23) x.4>=0.2353809 33 236.73760 17.173810
## 46) x.3>=0.3257424 14 68.04943 15.266000 *
## 47) x.3< 0.3257424 19 80.18524 18.579560 *
## 3) x.4>=0.6502426 62 553.71570 17.849750
## 6) x.2< 0.4236687 27 175.72330 15.827980
## 12) x.5< 0.4993253 11 72.59888 13.988350 *
## 13) x.5>=0.4993253 16 40.30417 17.092730 *
## 7) x.2>=0.4236687 35 182.49160 19.409390
## 14) x.1< 0.3971814 13 18.24531 17.376150 *
## 15) x.1>=0.3971814 22 78.74578 20.610860 *
Pohon pertama memiliki 23 simpul (termasuk simpul akhir). Pemisahan
pertama (root split) menggunakan variabel x.4 dengan titik
pemisah 0,650. Setiap percabangan menggambarkan aturan pemisahan
berdasarkan nilai variabel tertentu, sedangkan simpul terminal
menunjukkan nilai prediksi y. Karena setiap pohon dilatih
pada sampel bootstrap yang berbeda, struktur pohon dalam
ensemble tidak sama; perbedaan inilah yang membuat rata-rata
prediksi seluruh pohon lebih stabil dibandingkan pohon tunggal.
Setelah model terbentuk, dilakukan prediksi menggunakan fungsi
predict(). Nilai prediksi dari masing-masing model kemudian
dibandingkan dengan nilai y aktual.
## Aktual Prediksi_25 Prediksi_50 Prediksi_100
## 1 10.594975 9.667302 9.789806 9.765383
## 2 17.165302 17.703382 17.761975 17.792408
## 3 13.112492 13.359338 13.632967 13.669305
## 4 13.303440 14.777714 14.553878 14.380736
## 5 10.004662 11.232180 11.220419 11.045641
## 6 15.204950 18.347786 17.675590 17.183246
## 7 10.687788 9.797199 10.579998 10.607459
## 8 23.748416 19.067135 19.097176 18.806131
## 9 11.168910 11.062871 11.093494 11.093265
## 10 9.731385 9.342596 9.608181 9.947430
Tabel di atas menampilkan sepuluh observasi pertama beserta nilai
aktual dan prediksi dari ketiga model. Prediksi yang semakin dekat
dengan nilai aktual menunjukkan model yang semakin baik. Pada observasi
pertama, nilai aktual sebesar 10,595 diprediksi sebesar 9,667 oleh model
nbagg = 25, 9,790 oleh model nbagg = 50, dan
9,765 oleh model nbagg = 100.
Evaluasi kinerja model dilakukan menggunakan Mean Squared Error (MSE), Root Mean Squared Error (RMSE), dan R-Square. Nilai MSE dan RMSE yang lebih kecil serta R-Square yang lebih besar menunjukkan kinerja model yang lebih baik. Sebagai pembanding, ditampilkan pula RMSE out-of-bag dari masing-masing model.
| nbagg | MSE | RMSE | R-Square | 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 |
Berdasarkan hasil evaluasi, nilai MSE model dengan nbagg
25, 50, dan 100 berturut-turut adalah 3,5190, 3,4140, dan 3,4755,
sedangkan nilai RMSE berturut-turut 1,8759, 1,8477, dan 1,8643. Nilai
R-Square berturut-turut sebesar 0,8427, 0,8474, dan 0,8446,
artinya model mampu menjelaskan sekitar 84,27% hingga 84,74% variasi
y. Nilai MSE dan RMSE terkecil serta R-Square
terbesar dimiliki model dengan nbagg = 50. Selisih R-Square
antar model hanya 0,0047, yang tergolong kecil.
RMSE out-of-bag berturut-turut sebesar 2,7366, 2,6582, dan 2,6574, dengan nilai terkecil pada nbagg = 100. Nilai ini lebih besar daripada RMSE pada data yang sama dengan data pelatihan, yang wajar karena evaluasi pada data pelatihan cenderung lebih optimistis. Sebagai acuan, RMSE terendah yang secara teoritis dapat dicapai pada data Friedman adalah sekitar 1 (simpangan baku noise), sehingga RMSE out-of-bag terbaik sebesar 2,6574 masih berada cukup jauh di atas batas tersebut.
Untuk melihat kesesuaian hasil prediksi dengan nilai respons aktual, dibuat grafik perbandingan nilai aktual (garis merah) dan nilai prediksi (garis biru putus-putus) untuk setiap model.
Berdasarkan grafik, garis prediksi pada ketiga model mengikuti pola naik-turun nilai aktual dengan cukup dekat, sejalan dengan nilai R-Square sebesar 0,843 hingga 0,847. Garis prediksi umumnya lebih halus dibandingkan nilai aktual karena prediksi merupakan rata-rata dari banyak pohon, sedangkan nilai aktual mengandung noise acak. Perbedaan tampilan antar ketiga model tampak sangat kecil.
Berdasarkan hasil perbandingan, model dengan nbagg = 50 memiliki
kinerja terbaik pada data pelatihan (MSE dan RMSE terkecil serta
R-Square terbesar), sedangkan RMSE out-of-bag terkecil
dimiliki model dengan nbagg = 100. Kedua kriteria menunjuk model yang
berbeda; karena RMSE out-of-bag lebih mencerminkan kemampuan prediksi
pada data baru, kriteria ini lebih layak dijadikan dasar pemilihan
model. Perubahan RMSE out-of-bag dari nbagg = 25
ke nbagg = 100 sebesar 0,0792, yang relatif kecil. Hal ini
sejalan dengan teori bahwa penambahan jumlah model tidak selalu
menghasilkan peningkatan kinerja yang besar (Chang & Chang, 2026),
sehingga pemilihan nbagg juga perlu mempertimbangkan biaya
komputasi.
Bootstrap Aggregation (Bagging) merupakan metode ensemble yang membentuk beberapa model dari sampel bootstrap secara paralel dan independen, kemudian menggabungkan hasil prediksinya melalui rata-rata pada regresi atau voting pada klasifikasi. Metode ini terutama berfungsi mengurangi variance sehingga paling sesuai untuk model yang kompleks dengan variance tinggi dan bias rendah seperti pohon keputusan.
Pembuatan Bagging Regression di RStudio dilakukan dengan
membangkitkan data menggunakan mlbench.friedman1(),
membangun model menggunakan fungsi bagging() dari
package ipred dengan nbagg sebesar
25, 50, dan 100, kemudian melakukan prediksi menggunakan fungsi
predict(). Kinerja model dapat dinilai melalui MSE, RMSE,
dan R-Square, serta dilengkapi estimasi galat
out-of-bag.
Berdasarkan analisis dataset Friedman dengan 200 observasi, model Bagging Regression menghasilkan MSE antara 3,4140 dan 3,5190, RMSE antara 1,8477 dan 1,8759, serta R-Square antara 0,8427 dan 0,8474. Model dengan kinerja terbaik pada data pelatihan adalah nbagg = 50 dan model dengan RMSE out-of-bag terkecil (2,6574) adalah nbagg = 100. Selisih kinerja antar model relatif kecil, sehingga penambahan jumlah agregasi tidak selalu memberikan peningkatan kinerja yang besar.
Praktikan dapat melakukan pembelajaran lebih lanjut mengenai Bagging dengan R agar semakin paham, misalnya dengan membagi data menjadi data training dan testing atau menggunakan validasi silang agar kemampuan generalisasi model dinilai lebih objektif, serta membandingkan dengan metode ensemble lain seperti Random Forest. Dalam penulisan laporan praktikan juga diharapkan untuk selalu teliti dan memperhatikan tata cara penulisan yang baik.
Breiman, L. (1996). Bagging predictors. Machine Learning, 24(2), 123–140. https://doi.org/10.1007/BF00058655
Chang, C.-Y., & Chang, M.-C. (2026). Bootstrap aggregation for regression problems via generalized least squares. Statistics and Computing, 36, 135. https://doi.org/10.1007/s11222-026-10893-x
Chicco, D., Warrens, M. J., & Jurman, G. (2021). The coefficient of determination R-squared is more informative than SMAPE, MAE, MAPE, MSE and RMSE in regression analysis evaluation. PeerJ Computer Science, 7, e623. https://doi.org/10.7717/peerj-cs.623
Esaki, T. (2021). Appropriate evaluation measurements for regression models. CBI Journal, 21, 59–69. https://doi.org/10.1273/cbij.21.59
Fransiska, H. (2026). Modul Praktikum Machine Learning dan Model Prediction. Universitas Bengkulu: Bengkulu.
Friedman, J. H. (1991). Multivariate adaptive regression splines. The Annals of Statistics, 19(1), 1–67. https://doi.org/10.1214/aos/1176347963
Pérez-Rodríguez, J., Fernández-Navarro, F., & Ashley, T. (2023). Estimating ensemble weights for bagging regressors based on the mean–variance portfolio framework. Expert Systems with Applications, 229, 120462. https://doi.org/10.1016/j.eswa.2023.120462