BAB I PENDAHULUAN

1.1 Latar Belakang Masalah

Perkembangan teknologi informasi menyebabkan meningkatnya jumlah data yang dihasilkan dalam berbagai bidang, sehingga diperlukan metode analisis data yang efektif dan efisien. Salah satu pendekatan dalam machine learning adalah ensemble learning, yaitu metode yang menggabungkan beberapa model untuk menghasilkan prediksi akhir. Salah satu metode ensemble learning adalah Bootstrap Aggregating atau Bagging. Bagging merupakan metode yang membentuk beberapa model prediksi melalui pengambilan sampel ulang (resampling) dari data pelatihan menggunakan teknik bootstrap. Setiap sampel digunakan untuk membangun model secara terpisah, kemudian hasil prediksi dari seluruh model digabungkan untuk memperoleh prediksi akhir. Pendekatan ini bertujuan untuk meningkatkan kestabilan model dan mengurangi pengaruh perubahan data pelatihan terhadap hasil prediksi (Breiman, 1996).

Salah satu algoritma yang dapat dikombinasikan dengan Bagging adalah Classification and Regression Tree (CART), yaitu algoritma berbasis pohon keputusan yang digunakan untuk menyelesaikan permasalahan klasifikasi dan regresi. Dalam penerapannya, Bagging membentuk sejumlah model CART menggunakan sampel bootstrap yang berbeda. Setiap model menghasilkan prediksi berdasarkan pola yang diperoleh dari sampel masing-masing, kemudian seluruh prediksi digabungkan untuk menentukan hasil akhir. Pada permasalahan klasifikasi, penggabungan prediksi dilakukan melalui pemungutan suara terbanyak (majority voting), sedangkan pada permasalahan regresi dilakukan dengan menghitung rata-rata hasil prediksi. Mekanisme tersebut memungkinkan Bagging mengurangi variabilitas prediksi yang dihasilkan oleh satu pohon keputusan, sehingga model yang terbentuk diharapkan lebih stabil (Wulandari, Kusnandar, dan Yudhi, 2019).

Meskipun demikian, penggunaan Bagging tidak selalu menjamin peningkatan ketepatan prediksi pada setiap kondisi data. Kinerja metode ini dipengaruhi oleh karakteristik data, jumlah sampel bootstrap, jumlah model yang dibentuk, serta algoritma pembelajaran dasar yang digunakan. Selain itu, pembentukan banyak model memerlukan waktu komputasi yang lebih besar dibandingkan penggunaan satu model CART. Oleh karena itu, penerapan Bagging perlu disertai evaluasi kinerja untuk mengetahui kemampuan model dalam menghasilkan prediksi yang tepat. Dengan demikian, Bagging menjadi salah satu alternatif metode ensemble learning yang dapat digunakan untuk meningkatkan kestabilan model CART dalam analisis data, baik pada permasalahan klasifikasi maupun regresi.

1.2 Rumusan Masalah

  1. Bagaimana konsep dasardan prinsip kerja metode Bagging?
  2. Bagaimana cara megimplementasikan metode Bagging dengan menggunakan R?
  3. Bagaimana cara mengevaluasi performa Bagging?

1.3 Tujuan

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

BAB II TINJAUAN PUSTAKA

2.1 Bootstrap Aggregating (Bagging)

Bootstrap Aggregating atau Bagging merupakan salah satu metode ensemble learning yang menggabungkan hasil prediksi dari beberapa model untuk memperoleh prediksi akhir yang lebih stabil. Metode ini bekerja dengan membentuk sejumlah sampel bootstrap dari data training, kemudian menggunakan setiap sampel untuk membangun model secara terpisah. Hasil prediksi dari seluruh model selanjutnya digabungkan untuk memperoleh prediksi akhir. Bagging dapat diterapkan pada permasalahan klasifikasi maupun regresi sesuai dengan algoritma pembelajaran yang digunakan. Pada kasus klasifikasi, prediksi akhir ditentukan menggunakan pemungutan suara terbanyak (majority voting). Sedangkan, pada kasus regresi, prediksi akhir diperoleh melalui rata-rata hasil prediksi seluruh model (Breiman, 1996).

Tabel 1. Perbedaan Bagging Clasification dan Bagging Regression

Aspek Bagging Clasification Tree Bagging Regression Tree
Variabel respon Variabel respon berupa rategorik Variabel respon berupa rumerik atau kontinu
Agregasi Voting mayoritas atau rata-rata probabilitas Rata-rata nilai prediksi
Metrik Evluasi Accuracy, Precission, Recall, F1, ROC-AUC MSE, RMSE, MAE, R-Square

Metode Bagging terdapat dua tahapan utama, yaitu bootstrap yang merupakan pengambilan sampel dari data learning yang dimiliki dan aggregating yaitu menggabungkan nilai-nilai dugaan menjadi satu nilai dugaan. Proses pembuatan dugaan secara bagging menggunakan pohon adalah, sebagai berikut (Wulandari, Kusnandar, dan Yudhi, 2019):

  1. Tahapan bootstrap

    1. Tarik sampel acak dengan pemulihan berukuran n dari data learning.
    2. Susun pohon terbaik berdasarkan data tersebut.
    3. Ulangi langkah a-b sebanyak B sehingga diperoleh B pohon klasifikasi
  2. Tahapan aggregatting

    Lakukan pendugaan gabungan berdasarkan B buah pohon klasifikasi tersebut menggunakan aturan majority vote (suara terbanyak), yaitu kategori atau kelas yang paling sering muncul sebagai hasil prediksi dari k pohon klasifikasi.

Gambar 1. Alur Kerja *Ensemble* Bagging

Gambar 1. Alur Kerja Ensemble Bagging

Perhatikan beberapa fitur penting dari bagging berikut ini (Fransiska, 2026):

  • Setiap model dikembangkan secara paralel dan independen satu sama lain.
  • Membantu mengurangi variance, tetapi tidak efektif dalam mengurangi bias.
  • Paling cocok digunakan untuk model dengan variance tinggi dan bias rendah (model yang kompleks).
  • Random Forest merupakan contoh yang baik (algoritma random forest melakukan pemangkasan/pruning pada pohon untuk mengurangi korelasi)

BAB III METODE PENELITIAN

3.1 Sumber Data

Data yang digunakan dalam praktikum ini adalah data simulasi Friedman yang dibuat menggunakan fungsi mlbench.friedman1() dari paket mlbench pada RStudio. Data yang digunakan sebanyak 500 observasi dengan simpangan baku error sebesar 1. Data ini digunakan untuk membangun model Bagging Regression dengan jumlah bootstrap yang berbeda, yaitu 25, 50, dan 100.

3.2 Variabel Penelitian

Variabel penelitian terdiri atas variabel respon dan variabel prediktor. Variabel respons yang digunakan adalah \(Y\), yaitu nilai yang akan diprediksi oleh model. Sedangkan, variabel prediktor terdiri atas \(X_1\) sampai \(X_{10}\). Pada data Friedman, variabel \(X_1\) sampai \(X_5\) digunakan dalam pembentukan nilai respons, sedangkan \(X_6\) sampai \(X_{10}\) merupakan variabel tambahan.

3.3 Langkah-langkah Analisis

Langkah-langkah analisis Bagging Regression pada data Friedman adalah sebagai berikut:

  1. Memanggil paket mlbench, ipred, dan rpart pada RStudio.
  2. Membuat data Friedman sebanyak 500 observasi dengan simpangan baku error sebesar 1.
  3. Memeriksa struktur dan statistik deskriptif.
  4. Membagi data menjadi data training sebesar 80% dan data testing sebesar 20%.
  5. Menentukan variabel prediktor dan variabel respons yang digunakan dalam pemodelan.
  6. Membentuk model Bagging Regression dengan jumlah bootstrap sebanyak 25, 50, dan 100.
  7. Melakukan prediksi pada data testing menggunakan ketiga model.
  8. Menghitung nilai RMSE untuk mengetahui besarnya kesalahan prediksi setiap model.
  9. Menghitung nilai MAE untuk melihat rata-rata kesalahan prediksi.
  10. Menghitung nilai \(R^2\) untuk mengetahui kemampuan model dalam menjelaskan variasi nilai aktual.
  11. Membandingkan hasil RMSE, MAE, dan \(R^2\) dari ketiga model.
  12. Membuat tabel dan grafik perbandingan hasil evaluasi.
  13. Menentukan model dengan kinerja terbaik berdasarkan nilai RMSE terkecil, dengan tetap mempertimbangkan nilai MAE dan \(R^2\).
  14. Kesimpulan dan interpretasi.

BAB IV HASIL DAN PEMBAHASAN

Pada batasan masalah diminta untuk melakukan Bagging Regression pada data Friedman dengan membandingkan hasilnya menggunakan jumlah bootstrap sebanyak 25, 50, dan 100 dan kemudian menghitung matrik evaluasinya.

4.1 Library dan Statistik Deskriptif

Tahap awal dilakukan dengan memuat library mlbench, ipred, dan rpart yang diperlukan dalam analisis dan membangkitkan data Friedman menggunakan fungsi mlbench.friedman1() dengan jumlah observasi sebanyak 500 dan simpangan baku error sebesar 1.

Sintaks yang digunakan adalah sebagai berikut:

# Library
library(mlbench)
library(ipred)
library(rpart)

# Membuat data Friedman #1
set.seed(43)

data_friedman <- mlbench.friedman1(n = 500, sd = 1)
data <- data.frame(data_friedman$x,y = data_friedman$y)

# Memeriksa data
head(data)
##           X1        X2         X3         X4        X5        X6        X7
## 1 0.48503768 0.7843542 0.55210401 0.74182849 0.5291208 0.3349633 0.3184348
## 2 0.91076604 0.7826194 0.48223042 0.25599970 0.4177946 0.9844605 0.9791091
## 3 0.05767389 0.6221422 0.62819779 0.02046484 0.1639038 0.9666580 0.1210342
## 4 0.70539841 0.9914532 0.37225848 0.19763034 0.3812875 0.4336756 0.4911194
## 5 0.31349510 0.8210087 0.69171620 0.48690436 0.2755178 0.6003613 0.1438703
## 6 0.54303264 0.3900782 0.01639266 0.11404397 0.9354717 0.3373063 0.4343538
##           X8        X9       X10         y
## 1 0.08111583 0.4841657 0.3709264 19.556235
## 2 0.98098380 0.8701462 0.9317184 10.506158
## 3 0.37793808 0.7549262 0.9499757  2.134789
## 4 0.78147925 0.6592182 0.8613697 13.494760
## 5 0.55553879 0.1381987 0.9249460 12.946349
## 6 0.87313455 0.3850465 0.8800210 16.621116
str(data)
## 'data.frame':    500 obs. of  11 variables:
##  $ X1 : num  0.485 0.9108 0.0577 0.7054 0.3135 ...
##  $ X2 : num  0.784 0.783 0.622 0.991 0.821 ...
##  $ X3 : num  0.552 0.482 0.628 0.372 0.692 ...
##  $ X4 : num  0.7418 0.256 0.0205 0.1976 0.4869 ...
##  $ X5 : num  0.529 0.418 0.164 0.381 0.276 ...
##  $ X6 : num  0.335 0.984 0.967 0.434 0.6 ...
##  $ X7 : num  0.318 0.979 0.121 0.491 0.144 ...
##  $ X8 : num  0.0811 0.981 0.3779 0.7815 0.5555 ...
##  $ X9 : num  0.484 0.87 0.755 0.659 0.138 ...
##  $ X10: num  0.371 0.932 0.95 0.861 0.925 ...
##  $ y  : num  19.56 10.51 2.13 13.49 12.95 ...
summary(data)
##        X1                X2                  X3                 X4           
##  Min.   :0.00159   Min.   :0.0009057   Min.   :0.004887   Min.   :5.975e-05  
##  1st Qu.:0.23906   1st Qu.:0.2415145   1st Qu.:0.262739   1st Qu.:2.341e-01  
##  Median :0.50556   Median :0.4720259   Median :0.539835   Median :4.710e-01  
##  Mean   :0.50020   Mean   :0.4892460   Mean   :0.518677   Mean   :4.870e-01  
##  3rd Qu.:0.75056   3rd Qu.:0.7420183   3rd Qu.:0.775278   3rd Qu.:7.304e-01  
##  Max.   :0.99682   Max.   :0.9981246   Max.   :0.996720   Max.   :9.988e-01  
##        X5                 X6                  X7                  X8          
##  Min.   :0.005383   Min.   :7.002e-05   Min.   :0.0006859   Min.   :0.005763  
##  1st Qu.:0.250913   1st Qu.:2.424e-01   1st Qu.:0.2566174   1st Qu.:0.215280  
##  Median :0.481947   Median :5.140e-01   Median :0.5224313   Median :0.507561  
##  Mean   :0.496211   Mean   :5.008e-01   Mean   :0.5104499   Mean   :0.501394  
##  3rd Qu.:0.747287   3rd Qu.:7.583e-01   3rd Qu.:0.7565035   3rd Qu.:0.773431  
##  Max.   :0.998196   Max.   :9.980e-01   Max.   :0.9983174   Max.   :0.999434  
##        X9                X10                 y          
##  Min.   :0.003499   Min.   :0.001607   Min.   : 0.3648  
##  1st Qu.:0.251473   1st Qu.:0.263305   1st Qu.:10.6206  
##  Median :0.518338   Median :0.503962   Median :13.9701  
##  Mean   :0.510534   Mean   :0.500716   Mean   :14.1566  
##  3rd Qu.:0.767103   3rd Qu.:0.747404   3rd Qu.:17.6052  
##  Max.   :0.996703   Max.   :0.999982   Max.   :27.1551

Hasil pemeriksaan awal menunjukkan bahwa variabel prediktor \(X1\) sampai \(X10\), nilai minimum berada mendekati 0 dan nilai maksimum mendekati 1. Rata-rata setiap variabel juga berada di sekitar 0,5. Sedangkan, variabel respons \(y\) memiliki nilai minimum sebesar 0,3648, kuartil pertama sebesar 10,6206, median sebesar 13,9701, rata-rata sebesar 14,1566, kuartil ketiga sebesar 17,6052, dan nilai maksimum sebesar 27,1551. Nilai rata-rata yang sedikit lebih besar daripada median menunjukkan bahwa distribusi \(y\) mungkin sedikit menceng ke kanan.

4.2 Handling Missing Value

Missing value merupakan kondisi ketika suatu observasi tidak memiliki nilai pada variabel tertentu. Pemeriksaan dilakukan untuk mengetahui jumlah data yang hilang pada setiap variabel.

Sintaks yang digunakan adalah sebagai berikut:

# Mengecek missing value pada setiap variabel
colSums(is.na(data))
##  X1  X2  X3  X4  X5  X6  X7  X8  X9 X10   y 
##   0   0   0   0   0   0   0   0   0   0   0

Hasil pemeriksaan menunjukkan bahwa variabel prediktor dan variabel respon tidak memiliki missing value (nilai hilang), sehingga langsung dapat digunakan dalam proses pemodelan regresi.

4.3 Splitting Data

Splitting data merupakan proses membagi dataset menjadi data training dan data testing. Data training digunakan untuk membentuk model, sedangkan data testing digunakan untuk mengevaluasi kemampuan model pada data yang tidak digunakan selama proses pelatihan. Pembagian dataset dilakukan dengan proporsi 80% data training dan 20% data testing menggunakan fungsi sample().

Sintaks yang digunakan adalah sebagai berikut:

# Membagi data menjadi data latih dan data uji
set.seed(43)
n <- nrow(data)
indeks_train <- sample(seq_len(n),size = floor(0.80 * n))

train <- data[indeks_train, ]
test  <- data[-indeks_train, ]

cat("Jumlah data latih:", nrow(train), "\n")
## Jumlah data latih: 400
cat("Jumlah data uji:", nrow(test), "\n")
## Jumlah data uji: 100

Hasil pembagian menunjukkan bahwa data training terdiri atas 400 observasi, sedangkan data testing terdiri atas 100 observasi. Data training digunakan untuk membangun Regression Tree, sementara data testing digunakan untuk menghitung RMSE, MSE, dan \(R^2\).

4.4 Menentukan Formula Model

Bagging Regression merupakan metode ensemble learning yang menggabungkan prediksi dari beberapa Regression Tree yang dibangun menggunakan sampel bootstrap dari data training.

Sintaks yang digunakan untuk menentukan formula regresi adalah sebagai berikut:

# Menentukan Formula Regresi
formula_model <- as.formula(
  paste("y ~",paste(names(train)[names(train) != "y"],
      collapse = " + ")))
formula_model
## y ~ X1 + X2 + X3 + X4 + X5 + X6 + X7 + X8 + X9 + X10

Model yang diperoleh \(y\) ~ \(X1\) + \(X2\) + \(X3\) + \(X4\) + \(X5\) + \(X6\) + \(X7\)+ \(X8\) + \(X9\) + \(X10\) menunjukkan bahwa variabel respons \(y\) diprediksi menggunakan 10 variabel prediktor, yaitu \(X1\) hingga \(X10\). Seluruh variabel prediktor digunakan sebagai input dalam pembentukan model Bagging Regression untuk memprediksi nilai \(y\).

4.5 Membentuk model Bagging Regression

Pada tahap ini pembentukan model Bagging Regression, dilakukan pemodelan menggunakan 3 variasi jumlah pohon regresi, yaitu 25, 50, dan 100 pohon. Setiap model dilatih menggunakan data training, kemudian digunakan untuk memprediksi nilai respons pada data testing.

Sintaks yang digunakan adalah sebagai berikut:

# Model dengan 25 pohon
 set.seed(43)
model_25 <- ipred::bagging(
  formula = formula_model,
  data = train,
  nbagg = 25,
  coob = FALSE,
  control = rpart::rpart.control(
    minsplit = 2,
    cp = 0
  )
)
pred_25 <- predict(model_25, newdata = test)

# Model dengan 50 pohon
set.seed(43)
model_50 <- ipred::bagging(
  formula = formula_model,
  data = train,
  nbagg = 50,
  coob = FALSE,
  control = rpart::rpart.control(
    minsplit = 2,
    cp = 0
  )
)
pred_50 <- predict(model_50, newdata = test)

# Model dengan 100 pohon
set.seed(43)
model_100 <- ipred::bagging(
  formula = formula_model,
  data = train,
  nbagg = 100,
  coob = FALSE,
  control = rpart::rpart.control(
    minsplit = 2,
    cp = 0
  )
)
pred_100 <- predict(model_100, newdata = test)

4.6 Menghitung Nilai Evaluasi Model

Selanjutnya, evaluasi model dilakukan dengan menghitung nilai RMSE, MAE, dan \(R^2\). RMSE dan MAE digunakan untuk mengukur kesalahan prediksi, sedangkan \(R^2\) digunakan untuk mengukur kemampuan model dalam menjelaskan variasi nilai respons.

Sintaks yang digunakan adalah sebagai berikut:

# Menghitung nilai evaluasi model
aktual <- test$y

# Model 25 pohon
RMSE_25 <- sqrt(mean((aktual - pred_25)^2))
MAE_25 <- mean(abs(aktual - pred_25))
R2_25 <- 1 - sum((aktual - pred_25)^2) /
  sum((aktual - mean(aktual))^2)

# Model 50 pohon
RMSE_50 <- sqrt(mean((aktual - pred_50)^2))
MAE_50 <- mean(abs(aktual - pred_50))
R2_50 <- 1 - sum((aktual - pred_50)^2) /
  sum((aktual - mean(aktual))^2)

# Model 100 pohon
RMSE_100 <- sqrt(mean((aktual - pred_100)^2))
MAE_100 <- mean(abs(aktual - pred_100))
R2_100 <- 1 - sum((aktual - pred_100)^2) /
  sum((aktual - mean(aktual))^2)

hasil <- data.frame(
  Jumlah_Pohon = c(25, 50, 100),
  RMSE = c(RMSE_25, RMSE_50, RMSE_100),
  MAE = c(MAE_25, MAE_50, MAE_100),
  R2 = c(R2_25, R2_50, R2_100)
)

hasil[, -1] <- round(hasil[, -1], 4)
print(hasil)
##   Jumlah_Pohon   RMSE    MAE     R2
## 1           25 2.3278 1.9184 0.7788
## 2           50 2.3115 1.9137 0.7818
## 3          100 2.2878 1.8961 0.7863

Berdasarkan hasil evaluasi, model Bagging Regression dengan jumlah pohon 25, 50, dan 100 menunjukkan peningkatan kinerja seiring bertambahnya jumlah pohon. Model dengan 25 pohon menghasilkan nilai RMSE sebesar 2,3278, MAE sebesar 1,9184, dan \(R^2\) sebesar 0,7788. Pada 50 pohon, nilai RMSE menurun menjadi 2,3115, MAE menjadi 1,9137, dan \(R^2\) meningkat menjadi 0,7818. Sedangkan, model dengan 100 pohon menghasilkan kinerja terbaik, dengan nilai RMSE sebesar 2,2878, MAE sebesar 1,8961, dan \(R^2\) sebesar 0,7863. Nilai RMSE dan MAE yang paling rendah menunjukkan bahwa model ini memiliki kesalahan prediksi terkecil dibandingkan kedua model lainnya. Nilai \(R^2\) sebesar 0,7863 menunjukkan bahwa model mampu menjelaskan sekitar 78,63% variasi nilai respons pada data testing.

4.7 Menentukan Model Terbaik

Model terbaik dipilih dengan mempertimbangkan nilai RMSE dan MAE yang lebih kecil serta nilai \(R^2\) yang lebih besar.

Sintaks yang digunakan adalah sebagai berikut:

# 11. Grafik perbandingan RMSE
hasil_urut <- hasil[order(hasil$RMSE), ]
print(hasil_urut)
##   Jumlah_Pohon   RMSE    MAE     R2
## 3          100 2.2878 1.8961 0.7863
## 2           50 2.3115 1.9137 0.7818
## 1           25 2.3278 1.9184 0.7788
cat(
  "Model terbaik berdasarkan RMSE adalah",
  hasil_urut$Jumlah_Pohon[1],
  "pohon\n"
)
## Model terbaik berdasarkan RMSE adalah 100 pohon

Berdasarkan hasil yang diperoleh, model dengan 100 pohon dipilih sebagai model terbaik karena memiliki nilai RMSE paling rendah yaitu sebesar 2.2878 dibandingkan model lainnya. Selain itu, model ini juga menghasilkan nilai MAE terendah yaitu sebesar 1.8961 dan \(R^2\) tertinggi yaitu sebesar 0.7863.

4.8 Perbandingan Model

Nilai aktual dari data testing dibandingkan dengan hasil prediksi model menggunakan 25, 50, dan 100 pohon. Perbandingan ini dilakukan untuk melihat kedekatan hasil prediksi terhadap nilai aktual.

# Membandingkan nilai aktual dan prediksi
perbandingan <- data.frame(
  Aktual = aktual,
  Prediksi_25 = pred_25,
  Prediksi_50 = pred_50,
  Prediksi_100 = pred_100
)
head(perbandingan, 10)
##       Aktual Prediksi_25 Prediksi_50 Prediksi_100
## 1  10.506158   14.838045   14.816942    14.732623
## 2  13.494760   14.650913   14.133775    14.237865
## 3  16.621116   13.262706   13.917907    14.252240
## 4   9.207644   10.491735   10.905155    10.822197
## 5   9.395308   11.974984   12.474283    12.248656
## 6  23.323631   21.412470   20.906976    20.431525
## 7  11.873848   11.287679   11.397905    11.577715
## 8   7.303525    9.769759   10.064523    10.337215
## 9   4.610724    7.901079    7.517680     7.337577
## 10 11.287532   10.353234    9.774817     9.810519

Berdasarkan tabel perbandingan nilai aktual dan hasil prediksi, ditampilkan 10 observasi pertama pada data testing. Pada observasi pertama, nilai aktual sebesar 10,5062, sedangkan prediksi model 25 pohon sebesar 14,8380, model 50 pohon sebesar 14,8169, dan model 100 pohon sebesar 14,7326. Hasil menunjukkan bahwa ketiga model menghasilkan prediksi yang cenderung berdekatan, tetapi masih berbeda dari nilai aktual. Pada beberapa observasi, seperti observasi keenam, nilai aktual sebesar 23,3236 dan prediksi model 100 pohon sebesar 20,4315. Sedangkan, pada observasi kesepuluh, nilai aktual sebesar 11,2875 dan prediksi model 100 pohon sebesar 9,8105. Hal ini menunjukkan bahwa hasil prediksi model dapat lebih rendah atau lebih tinggi daripada nilai aktual.

4.9 Membuat Grafik Evaluasi

Grafik RMSE, MAE, dan \(R^2\) dibuat untuk menggambarkan perubahan kinerja model pada setiap variasi jumlah pohon. Grafik membantu mendeskripsikan model dengan kesalahan prediksi lebih rendah dan kemampuan prediksi lebih baik.

par(mfrow = c(1, 3))

plot(
  hasil$Jumlah_Pohon, hasil$RMSE,
  type = "b",
  xlab = "Jumlah Pohon",
  ylab = "RMSE",
  main = "Perbandingan RMSE"
)

plot(
  hasil$Jumlah_Pohon, hasil$MAE,
  type = "b",
  xlab = "Jumlah Pohon",
  ylab = "MAE",
  main = "Perbandingan MAE"
)

plot(
  hasil$Jumlah_Pohon, hasil$R2,
  type = "b",
  xlab = "Jumlah Pohon",
  ylab = "R-squared",
  main = "Perbandingan R2"
)

par(mfrow = c(1, 1))

Berdasarkan 3 grafik perbandingan, terlihat bahwa penambahan jumlah pohon dari 25 menjadi 50 dan 100 menghasilkan peningkatan kinerja model Bagging Regression. Grafik RMSE menunjukkan tren menurun, dari 2,3278 pada 25 pohon menjadi 2,3115 pada 50 pohon dan 2,2878 pada 100 pohon. Hal ini menunjukkan bahwa kesalahan prediksi model semakin kecil. Pada grafik MAE, nilai juga mengalami penurunan dari 1,9184 menjadi 1,9137 dan 1,8961 seiring bertambahnya jumlah pohon. Penurunan ini menunjukkan bahwa rata-rata kesalahan absolut prediksi semakin rendah. Sedangkan grafik \(R^2\) menunjukkan tren meningkat, yaitu dari 0,7788 pada 25 pohon menjadi 0,7818 pada 50 pohon dan 0,7863 pada 100 pohon. Artinya, kemampuan model dalam menjelaskan variasi nilai respons pada data testing semakin baik.

BAB V KESIMPULAN

5.1 Kesimpulan

Metode Bagging (Bootstrap Aggregating) merupakan metode ensemble learning yang menggabungkan beberapa model untuk menghasilkan prediksi yang lebih stabil. Prinsip kerja Bagging meliputi pengambilan sampel bootstrap dari data training, pembentukan model pada setiap sampel, dan penggabungan hasil prediksi. Pada regresi, hasil prediksi akhir diperoleh dengan menghitung rata-rata prediksi dari seluruh model yang dibentuk.

Implementasi metode Bagging menggunakan R dilakukan melalui beberapa tahapan, yaitu persiapan data, pembagian data menjadi data latih dan data uji, pembentukan model, serta prediksi menggunakan data uji. Proses implementasi dapat dilakukan dengan bantuan package seperti ipred dan rpart untuk membangun model Bagging Regression berbasis pohon regresi. Jumlah model yang digunakan dapat disesuaikan dengan kebutuhan analisis.

Evaluasi performa Bagging dilakukan dengan menggunakan metrik yang sesuai dengan tujuan pemodelan. Pada kasus regresi, evaluasi dapat menggunakan RMSE (Root Mean Squared Error), MAE (Mean Absolute Error), dan koefisien determinasi (\(R^2\)). RMSE dan MAE digunakan untuk mengukur besarnya kesalahan prediksi, sedangkan \(R^2\) digunakan untuk mengukur proporsi variasi variabel respons yang dapat dijelaskan oleh model. Penggunaan metrik tersebut membantu menilai dan membandingkan kinerja model secara sistematis sehingga dapat ditentukan model yang paling sesuai berdasarkan hasil evaluasi.

Berdasarkan hasil evaluasi Bagging Regression pada data Friedman, diketahui bahwa peningkatan jumlah pohon dari 25 menjadi 50 dan 100 menghasilkan perbaikan kinerja model. Hal ini terlihat oleh penurunan nilai RMSE dari 2,3278 menjadi 2,3115 dan 2,2878, serta penurunan nilai MAE dari 1,9184 menjadi 1,9137 dan 1,8961. Sebaliknya, nilai \(R^2\) meningkat dari 0,7788 menjadi 0,7818 dan 0,7863. Dari ketiga model yang diuji, model dengan 100 pohon memberikan hasil terbaik karena memiliki kesalahan prediksi terendah dan nilai \(R^2\) tertinggi. Dengan demikian, model Bagging Regression dengan 100 pohon merupakan pilihan terbaik di antara variasi yang diuji pada data Friedman.

DAFTAR PUSTAKA

Breiman, L. (1996). Bagging predictors. Machine Learning, 24, 123–140. https://doi.org/10.1007/BF00058655.

Fransiska, H. (2026). Modul Praktikum Machine Learning and Modern Prediction. Laboratorium Matematika Universitas Bengkulu.

Wulandari, D. A., Kusnandar, D., & Yudhi, Y. (2019). Bagging classification trees untuk klasifikasi tingkat kesejahteraan rumah tangga di Kalimantan Barat. BIMASTER: Buletin Ilmiah Matematika, Statistika dan Terapannya. https://doi.org/10.26418/bbimst.v8i4.36035.