BAB I PENDAHULUAN

1.1 Latar Belakang

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.

1.2 Rumusan Masalah

Berdasarkan latar belakang di atas, rumusan masalah yang dapat disimpulkan yaitu:

  1. Bagaimana konsep dasar dan prinsip kerja metode Bagging?
  2. Bagaimana mengimplementasikan metode Bagging (Bagging Regression) menggunakan R?
  3. Bagaimana cara mengevaluasi performa Bagging?

1.3 Tujuan Penelitian

Berdasarkan rumusan masalah di atas, tujuan yang dapat disimpulkan yaitu:

  1. Praktikan dapat memahami konsep dasar dan prinsip kerja metode Bagging.
  2. Praktikan dapat mengimplementasikan metode Bagging (Bagging Regression) menggunakan R.
  3. Praktikan dapat mengevaluasi performa Bagging.

1.4 Manfaat Penelitian

Adapun manfaat dari praktikum ini yaitu:

  1. Bagi penulis, yaitu dapat memberikan informasi dan pengetahuan serta menerapkan ilmu pengetahuan mengenai metode Bagging (Bagging Regression) dengan R.
  2. Bagi Pembaca, yaitu dapat menambah ilmu pengetahuan dan pemahaman mengenai metode Bagging (Bagging Regression) dengan R.

1.5 Batasan Masalah

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!

BAB II TINJAUAN PUSTAKA

2.1 Bootstrap Aggregation (Bagging)

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):

  1. Membuat sampel dari data pelatihan (training data) melalui bootstrap sampling.
  2. Melatih model pada masing-masing sampel.
  3. Membuat prediktor dari setiap model dan menyimpan hasilnya.
  4. Menggabungkan hasil seluruh model, melalui weighted vote, majority vote, atau rata-rata pada regresi, untuk memprediksi data uji (test data).

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

2.2 Bagging Classification dan Bagging Regression

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.

2.3 Dataset Friedman

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.

2.4 Evaluasi Performa Bagging Regression

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:

  1. Mean Squared Error (MSE) merupakan rata-rata kuadrat selisih antara nilai aktual dan nilai prediksi. Semakin kecil nilai MSE, semakin rendah kesalahan prediksi.

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

  1. Root Mean Squared Error (RMSE) merupakan akar kuadrat dari MSE sehingga memiliki satuan yang sama dengan variabel respons.

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

  1. R-Square (\(R^2\)) menunjukkan proporsi variasi variabel respons yang dapat dijelaskan oleh model. Semakin besar nilai \(R^2\), semakin baik kemampuan model.

\[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.

BAB III METODE PENELITIAN

3.1 Sumber Data

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.

3.2 Variabel Penelitian

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.

3.3 Langkah-langkah Analisis

Berikut adalah langkah-langkah yang dilakukan dalam analisis:

  1. Memanggil package mlbench dan ipred, lalu membangkitkan data Friedman sebanyak 200 observasi.
  2. Memeriksa struktur data dan missing value.
  3. Membangun model Bagging Regression menggunakan fungsi bagging() dengan nbagg = 25, 50, dan 100.
  4. Menampilkan hasil model menggunakan fungsi print() dan summary(), serta melihat struktur pohon regresi pertama.
  5. Melakukan prediksi menggunakan masing-masing model dengan fungsi predict().
  6. Menghitung nilai MSE, RMSE, dan R-Square untuk setiap model.
  7. Menampilkan grafik perbandingan nilai aktual dan prediksi.
  8. Membandingkan nilai MSE, RMSE, dan R-Square antar model untuk menentukan model terbaik.
  9. Menampilkan dan menginterpretasikan output dari setiap tahapan analisis.

3.4 Diagram Alir Penelitian

BAB IV HASIL DAN PEMBAHASAN

4.1 Eksplorasi Awal Data

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.

4.2 Model Bagging Regression

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.

4.3 Struktur Pohon Regresi Pertama

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.

4.4 Prediksi Model

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.

4.5 Evaluasi Model

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.

4.6 Visualisasi Nilai Aktual dan Prediksi

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.

4.7 Evaluasi dan Perbandingan Model

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.

BAB V KESIMPULAN DAN SARAN

5.1 Kesimpulan

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.

5.2 Saran

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.

DAFTAR PUSTAKA

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