BAB I PENDAHULUAN

1.1 Latar Belakang

   Perkembangan teknologi informasi menyebabkan jumlah data yang tersedia semakin meningkat, sehingga diperlukan metode analisis yang mampu mengidentifikasi pola dan menghasilkan prediksi secara akurat. Salah satu pendekatan yang digunakan untuk memenuhi kebutuhan tersebut adalah machine learning, yaitu metode yang memungkinkan komputer mempelajari pola dari data. Dalam perkembangannya, ensemble learning menjadi salah satu pendekatan yang banyak digunakan karena menggabungkan beberapa model untuk memperoleh hasil prediksi yang lebih baik dibandingkan penggunaan model secara tunggal. Metode ensemble learning mencakup bagging, Boosting, dan stacking, yang memiliki mekanisme penggabungan model berbeda (Mienye & Sun, 2022).
   Boosting merupakan salah satu teknik ensemble learning yang membangun model secara berurutan (sequential), dengan setiap model baru berupaya memperbaiki kesalahan prediksi model sebelumnya. Proses ini dilakukan dengan menggabungkan sejumlah model pembelajaran sederhana (weak learners) untuk membentuk model yang lebih kuat. Berbeda dengan bagging yang membangun model secara paralel menggunakan sampel data yang bervariasi, Boosting memberikan perhatian lebih besar pada kesalahan yang dihasilkan selama proses pembelajaran. Pendekatan ini bertujuan meningkatkan kemampuan prediksi melalui perbaikan model secara bertahap (Mohammed & Kora, 2023).
   Meskipun Boosting dapat meningkatkan kemampuan prediksi, kinerja model tetap dipengaruhi oleh pemilihan parameter dan karakteristik data. Pengaturan jumlah iterasi, kompleksitas model, dan parameter pembelajaran yang kurang tepat dapat memengaruhi kemampuan model dalam melakukan generalisasi terhadap data baru. Evaluasi model dan pemilihan parameter yang sesuai diperlukan agar model yang dihasilkan memiliki kinerja prediksi yang baik. Berdasarkan hal tersebut, pembelajaran mengenai metode Boosting penting dilakukan untuk memahami mekanisme pembentukan model, penerapannya pada data, serta evaluasi hasil prediksinya.

1.2 Rumusan Masalah

 1. Bagaimana konsep Boosting sebagai metode ensemble learning?
 2. Bagaimana cara mengimplementasikan Boosting untuk kasus klasifikasi dan regresi menggunakan R?
 3. Bagaimana cara mengevaluasi performa model menggunakan ukuran evaluasi yang sesuai?

1.3 Tujuan Penelitian

 1. Mahasiswa mampu menjelaskan konsep Boosting sebagai metode ensemble learning.
2.  Mahasiswa mampu mengimplementasikan Boosting untuk kasus klasifikasi dan regresi menggunakan R.
3.  Mahasiswa mampu mengevaluasi performa model menggunakan ukuran evaluasi yang sesuai.

1.4 Batasan Masalah

   Adapun batasan masalah pada penelitian ini yaitu lakukan regresi menggunakan Gradient Boosting pada data Friedman. Clue: Gunakan gbm() dan bandingkan nilai learning rate (shrinkage) 𝜈 = 0.01, 0.05, dan 0.10. Gunakan cross-validation untuk menentukan jumlah iterasi optimal pada masing-masing model. Bandingkan performa berdasarkan MSE, RMSE, MAE, dan 𝑅2, kemudian interpretasikan hasilnya!
   

BAB II TINJAUAN PUSTAKA

2.1 Boosting

  Boosting merupakan salah satu metode ensemble learning yang menggabungkan beberapa model pembelajaran untuk menghasilkan prediksi yang lebih baik. Metode ini membangun model secara berurutan, dengan model berikutnya berupaya memperbaiki kesalahan prediksi model sebelumnya. Berbeda dengan bagging yang membangun model secara paralel, Boosting berfokus pada perbaikan model secara bertahap. Pendekatan ini telah digunakan dalam berbagai permasalahan klasifikasi dan regresi karena mampu menggabungkan kontribusi beberapa model dasar menjadi satu model prediksi (Robinson Sihombing, 2025).
 Prinsip kerja Boosting dilakukan melalui proses pembelajaran berulang. Pada setiap iterasi, model baru dibentuk berdasarkan informasi kesalahan atau kekurangan model sebelumnya. Selanjutnya, hasil dari model-model tersebut digabungkan untuk menghasilkan prediksi akhir. Keberhasilan metode ini dipengaruhi oleh cara model dasar dilatih dan cara hasil prediksinya dikombinasikan (Mohammed & Kora, 2023).
 

2.2 Adaptive Boosting

   Adaptive Boosting (AdaBoost) merupakan algoritma ensemble learning yang menggabungkan beberapa model pembelajaran dasar (weak learners) secara berurutan untuk membentuk model prediksi yang lebih kuat (Adnan et al., 2022). Untuk klasifikasi biner, misalkan tersedia data latih (xi,yi)=1,2,…,n. Secara sederhana, proses AdaBoost dilakukan sebagai berikut (Fransiska, 2026):
 1. Memberikan bobot awal yang sama
    Pada awal proses, semua observasi dianggap sama penting sehingga diberi bobot yang sama, sebesar:

\[ w_i^((1))=1/n,i=1,2,…,n \]

   dengan wi merupakan bobot observasi ke-i pada iterasi pertama dan n merupakan jumlah observasi data latih.

 2. Membentuk weak learner
    setiap iterasi dibentuk weak learner Gm(x) Setelah prediksi dilakukan, dihitung kesalahan klasifikasi terbobot:

\[ \operatorname{err}_m = \frac{\sum_{i=1}^{n} w_i^{(m)} I\{y_i \neq G_m(x_i)\}} {\sum_{i=1}^{n} w_i^{(m)}} \]

 3. Observasi yang salah diklasifikasikan memperoleh bobot yang lebih besar sehingga learner berikutnya memberikan perhatian lebih besar pada observasi tersebut. Dengan demikian, setiap learner baru berusaha memperbaiki kesalahan yang masih dilakukan oleh learner sebelumnya.
 4. Menggabungkan Leaner
    Setiap learner diberi bobot berdasarkan performanya,

\[ α_m=1/2 ln((1-err_m)/err_m ). \]

  dengan αm merupakan bobot atau tingkat kontribusi learner ke-𝑚 terhadap prediksi akhir. Kemudian prediksi akhir diperoleh melalui weighted voting:

\[ G(x)=sign[∑_(m=1)^Mα_m G_m (x)]. \]

    dengan $M$ merupakan jumlah seluruh weak learner, sedangkan fungsi 𝑠𝑖𝑔𝑛(.) menentukan kelas akhir berdasarkan tanda dari jumlah voting terbobot tersebut. Pada AdaBoost terdapat dua jenis bobot, yaitu bobot observasi yang mengatur perhatian terhadap data latih dan bobot learner yang mengatur kontribusi setiap learner terhadap prediksi akhir.
     

2.3 Gradient Boosting

   Gradient Boosting merupakan metode ensemble learning yang membangun model prediksi secara bertahap dengan menggabungkan sejumlah model dasar. Pada setiap tahap, model baru dibentuk untuk memperbaiki kesalahan prediksi model yang telah dibangun sebelumnya. Proses pembelajaran dilakukan dengan mengoptimalkan fungsi kerugian (loss function) menggunakan informasi gradien, sehingga model dapat diarahkan untuk mengurangi kesalahan prediksi (Gunasekara et al., 2024).
    Proses Gradient Boosting secara sederhana dilakukan sebagai berikut (Fransiska, 2026):
 1. Membentuk model awal; 
 2. Menghitung residual dari model tersebut;
 3. Membentuk weak learner baru untuk mempelajari residual;
 4. Menambahkan kontribusi learner baru ke model sebelumnya;
 5. Menghitung residual baru dan mengulangi proses. 
    Model kemudian diperbarui secara bertahap menurut:

\[ f_m (x)=f_(m-1) (x)+νh_m (x) \]

BAB III METODE PENELITIAN

3.1 Jenis dan Sumber Data

   Jenis data yang digunakan dalam penelitian ini adalah data kuantitatif, yaitu data berbentuk angka yang dapat diolah dan dianalisis secara statistik. Data yang digunakan merupakan data simulasi yang dibangkitkan menggunakan fungsi mlbench.friedman1() dari package mlbench dalam perangkat lunak R. Dataset ini terdiri atas variabel respons (Y) dan sejumlah variabel prediktor (X) yang digunakan untuk membangun model prediksi regresi menggunakan metode Gradient Boosting.

3.2 Variabel Penelitian

   Variabel yang digunakan dalam penelitian ini terdiri atas satu variabel respons dan beberapa variabel prediktor. Variabel respons yang digunakan adalah (Y), sedangkan variabel prediktor terdiri atas (X1, X2, ..., X10). Variabel-variabel tersebut digunakan untuk membentuk model regresi Gradient Boosting dalam memprediksi nilai variabel respons berdasarkan informasi dari variabel prediktor.

3.3 Analisis Data

   Berikut adalah algoritma untuk menyelesaiankan batasan masalah:
   1. Mulai.
   2. Memanggil package yang diperlukan, yaitu gbm, mlbench, dan caret.
   3. Membangkitkan dataset menggunakan fungsi mlbench.friedman1() dengan jumlah pengamatan sebanyak 200.
   4. Memeriksa struktur dan ukuran dataset serta memastikan tidak terdapat nilai hilang (missing value).
   5. Membagi data menjadi data training sebesar 70% dan data testing sebesar 30% menggunakan fungsi createDataPartition(). Penetapan seed dilakukan agar pembagian data dapat direproduksi.
   6. Menentukan nilai shrinkage atau learning rate yang akan dibandingkan, yaitu 0,01, 0,05, dan 0,10.
   7. Membangun model regresi Gradient Boosting menggunakan fungsi gbm() dengan distribusi Gaussian, jumlah maksimum pohon sebanyak 5.000, kedalaman interaksi 2, bag fraction sebesar 0,5, dan cross-validation sebanyak 10 lipatan.
   8. Melakukan cross-validation untuk setiap nilai shrinkage guna menentukan jumlah iterasi atau pohon optimal berdasarkan nilai galat validasi.
   9. Menggunakan jumlah iterasi optimal untuk melakukan prediksi pada data testing untuk setiap model.
   10. Menghitung nilai Mean Squared Error (MSE), Root Mean Squared Error (RMSE), Mean Absolute Error (MAE), dan koefisien determinasi ((R^2)) untuk mengevaluasi kinerja masing-masing model.
   11. Membandingkan hasil evaluasi ketiga model berdasarkan nilai MSE, RMSE, MAE, dan (R^2). Model dengan nilai galat yang lebih kecil dan nilai (R^2) yang lebih tinggi menunjukkan kinerja prediksi yang lebih baik.
   12. Menentukan model terbaik berdasarkan hasil evaluasi pada data testing.
   13. Memvisualisasikan perbandingan nilai aktual dan prediksi serta residual model terbaik.
   14. Mengidentifikasi tingkat kepentingan variabel prediktor (variable importance) untuk mengetahui kontribusi masing-masing variabel dalam model.
   15. Menarik kesimpulan berdasarkan hasil pemodelan dan evaluasi kinerja Gradient Boosting.
   16. Selesai.'
   

BAB IV HASIL DAN PEMBAHASAN

4.1 Library dan Data

library(gbm)
## Loaded gbm 2.3.1
## This version of gbm is no longer under development. Consider transitioning to gbm3, https://github.com/gbm-developers/gbm3
library(mlbench)
library(caret)
## Loading required package: ggplot2
## Loading required package: lattice
set.seed(234)
# Membentuk data Friedman dengan 200 observasi
reg.data <- as.data.frame(mlbench.friedman1(200))

# Melihat struktur, ringkasan, dan ukuran data
str(reg.data)
## 'data.frame':    200 obs. of  11 variables:
##  $ x.1 : num  0.7456 0.7817 0.02 0.7761 0.0669 ...
##  $ x.2 : num  0.575 0.316 0.765 0.229 0.172 ...
##  $ x.3 : num  0.0289 0.9375 0.7978 0.668 0.5974 ...
##  $ x.4 : num  0.72 0.185 0.534 0.553 0.755 ...
##  $ x.5 : num  0.875 0.704 0.952 0.478 0.533 ...
##  $ x.6 : num  0.276 0.643 0.987 0.843 0.733 ...
##  $ x.7 : num  0.9332 0.4018 0.0874 0.893 0.1024 ...
##  $ x.8 : num  0.60746 0.00369 0.0106 0.44639 0.83494 ...
##  $ x.9 : num  0.756 0.405 0.247 0.144 0.187 ...
##  $ x.10: num  0.718 0.534 0.667 0.68 0.595 ...
##  $ y   : num  24.35 18.05 12.02 12.1 9.91 ...
summary(reg.data)
##       x.1                x.2                x.3               x.4         
##  Min.   :0.001198   Min.   :0.004583   Min.   :0.01021   Min.   :0.00707  
##  1st Qu.:0.274097   1st Qu.:0.255644   1st Qu.:0.24506   1st Qu.:0.20772  
##  Median :0.541847   Median :0.436813   Median :0.48965   Median :0.50295  
##  Mean   :0.509759   Mean   :0.465323   Mean   :0.48570   Mean   :0.48821  
##  3rd Qu.:0.741416   3rd Qu.:0.651439   3rd Qu.:0.73476   3rd Qu.:0.76599  
##  Max.   :0.993590   Max.   :0.999850   Max.   :0.99985   Max.   :0.99761  
##       x.5                x.6                x.7                x.8          
##  Min.   :0.008246   Min.   :0.005504   Min.   :0.001884   Min.   :0.002496  
##  1st Qu.:0.267523   1st Qu.:0.194431   1st Qu.:0.226788   1st Qu.:0.249826  
##  Median :0.522081   Median :0.446060   Median :0.491332   Median :0.480306  
##  Mean   :0.503282   Mean   :0.468544   Mean   :0.503754   Mean   :0.482050  
##  3rd Qu.:0.751688   3rd Qu.:0.746035   3rd Qu.:0.780325   3rd Qu.:0.696675  
##  Max.   :0.994604   Max.   :0.999021   Max.   :0.993044   Max.   :0.995613  
##       x.9                x.10                y         
##  Min.   :0.004483   Min.   :0.005544   Min.   : 3.082  
##  1st Qu.:0.203254   1st Qu.:0.329160   1st Qu.:10.593  
##  Median :0.453476   Median :0.592614   Median :13.810  
##  Mean   :0.471873   Mean   :0.540708   Mean   :14.270  
##  3rd Qu.:0.742412   3rd Qu.:0.765353   3rd Qu.:18.063  
##  Max.   :0.997436   Max.   :0.998141   Max.   :26.146
dim(reg.data)
## [1] 200  11
summary(cars)
##      speed           dist       
##  Min.   : 4.0   Min.   :  2.00  
##  1st Qu.:12.0   1st Qu.: 26.00  
##  Median :15.0   Median : 36.00  
##  Mean   :15.4   Mean   : 42.98  
##  3rd Qu.:19.0   3rd Qu.: 56.00  
##  Max.   :25.0   Max.   :120.00

Intepretasi hasil 4.1

Berdasarkan hasil eksplorasi data, dataset Friedman terdiri atas 200 observasi dan 11 variabel, yaitu 10 variabel prediktor X1 hingga X10 dan satu variabel respons Y. Variabel respons Y memiliki nilai minimum sebesar 3,082, maksimum 26,146, rata-rata 14,270, dan median 13,810. Sementara itu, nilai rata-rata variabel prediktor berkisar antara 0,4653 hingga 0,5407. Dataset ini selanjutnya digunakan untuk membangun model regresi Gradient Boosting guna memprediksi nilai Y berdasarkan sepuluh variabel prediktor yang tersedia.

4.2 Membagi data training dan testing

set.seed(234)

# 70% data training dan 30% data testing
idx.reg <- createDataPartition(
  reg.data$y,
  p = 0.70,
  list = FALSE
)

reg.train <- reg.data[idx.reg, ]
reg.test  <- reg.data[-idx.reg, ]

# Memeriksa ukuran data
dim(reg.train)
## [1] 140  11
dim(reg.test)
## [1] 60 11

Intepretasi hasil 4.2

Berdasarkan hasil pembagian data, diperoleh data training sebanyak 140 observasi dengan 11 variabel dan data testing sebanyak 60 observasi dengan 11 variabel. Pembagian tersebut menunjukkan bahwa 70% dari total data digunakan untuk membangun model Gradient Boosting, sedangkan 30% sisanya digunakan untuk menguji kinerja model dalam memprediksi data yang belum digunakan pada proses pelatihan. Dengan demikian, pembagian data ini memungkinkan model dibangun menggunakan data training dan dievaluasi menggunakan data testing secara terpisah.

4.3 MENENTUKAN LEARNING RATE DAN MEMBENTUK MODEL GRADIENT BOOSTING

# Learning rate yang akan dibandingkan
nilai.shrinkage <- c(0.01, 0.05, 0.10)

# Menyiapkan tempat penyimpanan model dan hasil
model.reg <- vector("list", length(nilai.shrinkage))
hasil.evaluasi <- vector("list", length(nilai.shrinkage))
# MEMBENTUK MODEL GRADIENT BOOSTING
# DAN MENENTUKAN ITERASI OPTIMAL DENGAN CROSS-VALIDATION
for (i in seq_along(nilai.shrinkage)) {
  
  # Mengatur seed agar proses dapat direproduksi
  set.seed(234)
  
  # Membentuk model Gradient Boosting
  model.reg[[i]] <- gbm(
    formula = y ~ .,
    data = reg.train,
    distribution = "gaussian",
    n.trees = 5000,
    interaction.depth = 2,
    shrinkage = nilai.shrinkage[i],
    bag.fraction = 0.5,
    cv.folds = 10,
    n.minobsinnode = 5,
    verbose = FALSE
  )
  
  # Menentukan jumlah pohon optimal berdasarkan 10-fold CV
  iterasi.optimal <- gbm.perf(
    model.reg[[i]],
    method = "cv",
    plot.it = FALSE
  )
  
  # Menyimpan jumlah iterasi optimal
  cat("\nLearning rate:", nilai.shrinkage[i], "\n")
  cat("Jumlah iterasi optimal:", iterasi.optimal, "\n")
}
## 
## Learning rate: 0.01 
## Jumlah iterasi optimal: 4548 
## 
## Learning rate: 0.05 
## Jumlah iterasi optimal: 1340 
## 
## Learning rate: 0.1 
## Jumlah iterasi optimal: 279

Intepretasi Hasil 4.3

Berdasarkan hasil pemodelan Gradient Boosting menggunakan tiga nilai learning rate, yaitu 0,01, 0,05, dan 0,10, diperoleh jumlah iterasi optimal berturut-turut sebanyak 4.548, 1.340, dan 279 iterasi berdasarkan metode 10-fold cross-validation. Hasil tersebut menunjukkan bahwa semakin kecil nilai learning rate, semakin banyak iterasi yang diperlukan untuk mencapai kinerja optimal. Sebaliknya, semakin besar nilai learning rate, semakin sedikit iterasi yang dibutuhkan. Dengan demikian, nilai learning rate memengaruhi proses pembelajaran model dan jumlah pohon yang diperlukan untuk memperoleh hasil optimal.

4.4 PREDIKSI DAN EVALUASI SETIAP MODEL

actual <- reg.test$y
for (i in seq_along(nilai.shrinkage)) {
  
  # Menentukan jumlah iterasi optimal model
  iterasi.optimal <- gbm.perf(
    model.reg[[i]],
    method = "cv",
    plot.it = FALSE
  )
  
  # Memprediksi data testing
  pred.reg <- predict(
    model.reg[[i]],
    newdata = reg.test,
    n.trees = iterasi.optimal,
    type = "response"
  )
  
  pred.reg <- as.numeric(pred.reg)
  
  # Menghitung ukuran evaluasi
  MSE <- mean((actual - pred.reg)^2)
  RMSE <- sqrt(MSE)
  MAE <- mean(abs(actual - pred.reg))
  
  # Menghitung R-squared pada data testing
  R2 <- 1 - sum((actual - pred.reg)^2) /
    sum((actual - mean(actual))^2)
  
  # Menyimpan hasil evaluasi
  hasil.evaluasi[[i]] <- data.frame(
    Learning_Rate = nilai.shrinkage[i],
    Iterasi_Optimal = iterasi.optimal,
    MSE = MSE,
    RMSE = RMSE,
    MAE = MAE,
    R2 = R2
  )
}

# Menggabungkan hasil ketiga model
tabel.evaluasi <- do.call(rbind, hasil.evaluasi)

# Menampilkan perbandingan hasil
print(round(tabel.evaluasi, 4))
##   Learning_Rate Iterasi_Optimal    MSE   RMSE    MAE     R2
## 1          0.01            4548 3.8064 1.9510 1.5352 0.8412
## 2          0.05            1340 4.3347 2.0820 1.6477 0.8192
## 3          0.10             279 4.1633 2.0404 1.5908 0.8263
# RMSE terkecil menjadi kriteria pemilihan model
indeks.terbaik <- which.min(tabel.evaluasi$RMSE)

cat("\nModel terbaik berdasarkan RMSE terkecil:\n")
## 
## Model terbaik berdasarkan RMSE terkecil:
print(tabel.evaluasi[indeks.terbaik, ])
##   Learning_Rate Iterasi_Optimal      MSE     RMSE      MAE        R2
## 1          0.01            4548 3.806384 1.950996 1.535176 0.8412069
# Mengambil model terbaik
model.terbaik <- model.reg[[indeks.terbaik]]

# Menentukan iterasi optimal model terbaik
best.iter <- gbm.perf(
  model.terbaik,
  method = "cv",
  plot.it = FALSE
)

# Prediksi model terbaik
pred.terbaik <- as.numeric(
  predict(
    model.terbaik,
    newdata = reg.test,
    n.trees = best.iter,
    type = "response"
  )
)

# Membentuk tabel aktual, prediksi, dan residual
hasil.reg <- data.frame(
  Aktual = actual,
  Prediksi = pred.terbaik,
  Residual = actual - pred.terbaik
)

head(hasil.reg, 10)
##       Aktual Prediksi   Residual
## 1  10.232309 11.56027 -1.3279632
## 2  11.845301 10.84641  0.9988940
## 3  10.335689 11.72614 -1.3904485
## 4  16.727262 14.22249  2.5047752
## 5  25.077119 22.35445  2.7226666
## 6  15.446886 14.67262  0.7742636
## 7  15.642915 14.22519  1.4177293
## 8   7.110835 11.64483 -4.5339963
## 9  13.351277 15.57232 -2.2210457
## 10 12.871960 14.41281 -1.5408538

Intepretasi Hasil 4.4

Berdasarkan hasil evaluasi model Gradient Boosting Regression, model dengan nilai learning rate 0,01 menghasilkan kinerja terbaik dibandingkan model dengan learning rate 0,05 dan 0,10. Model tersebut memiliki 4.548 iterasi optimal, nilai MSE sebesar 3,8064, RMSE sebesar 1,9510, dan MAE sebesar 1,5352, yang merupakan nilai kesalahan prediksi terendah di antara ketiga model. Selain itu, nilai \(R^2\) sebesar 0,8412 menunjukkan bahwa model mampu menjelaskan sekitar 84,12% variasi nilai aktual pada data pengujian. Sementara itu, model dengan learning rate 0,05 menghasilkan RMSE sebesar 2,0820 dan \(R^2\) sebesar 0,8192, sedangkan model dengan learning rate 0,10 menghasilkan RMSE sebesar 2,0404 dan \(R^2\) sebesar 0,8263. Dengan demikian, model dengan learning rate 0,01 dipilih sebagai model terbaik karena memiliki RMSE terkecil dan kemampuan prediksi yang relatif lebih baik pada data pengujian.

4.5 PLOT AKTUAL VS PREDIKSI

plot(
  actual, pred.terbaik,
  pch = 19,
  xlab = "Nilai Aktual",
  ylab = "Nilai Prediksi",
  main = "Aktual vs Prediksi: Gradient Boosting"
)

abline(a = 0, b = 1, lty = 2, lwd = 2)

# PLOT RESIDUAL
residual.reg <- actual - pred.terbaik
plot(
  pred.terbaik, residual.reg,
  pch = 19,
  xlab = "Nilai Prediksi",
  ylab = "Residual",
  main = "Residual Plot: Gradient Boosting"
)

abline(h = 0, lty = 2, lwd = 2)

# VARIABLE IMPORTANCE MODEL TERBAIK
importance.reg <- summary(
  model.terbaik,
  n.trees = best.iter,
  plotit = FALSE
)

print(importance.reg)
##       var    rel.inf
## x.4   x.4 31.8034913
## x.1   x.1 24.8424185
## x.2   x.2 15.9239271
## x.3   x.3 12.0404452
## x.5   x.5  7.2941084
## x.6   x.6  2.2957904
## x.7   x.7  1.7651566
## x.10 x.10  1.5857900
## x.9   x.9  1.5292022
## x.8   x.8  0.9196703
# Plot variable importance
barplot(
  importance.reg$rel.inf,
  names.arg = importance.reg$var,
  las = 2,
  main = "Variable Importance - Gradient Boosting",
  ylab = "Relative Influence"
)

Intepretasi Hasil 4.5

Berdasarkan grafik Actual vs Prediction, sebagian besar titik berada di sekitar garis diagonal, yang menunjukkan bahwa nilai prediksi model Gradient Boosting cukup mendekati nilai aktual, meskipun masih terdapat beberapa selisih prediksi. Pada Residual Plot, residual tersebar di atas dan di bawah garis nol, tetapi penyebarannya belum sepenuhnya merata karena terdapat beberapa residual yang cukup besar, sehingga masih terdapat kesalahan prediksi pada sejumlah pengamatan. Sementara itu, grafik Variable Importance menunjukkan bahwa variabel X4 memiliki pengaruh relatif terbesar terhadap hasil prediksi, yaitu sekitar 31,80%, diikuti X1 sebesar 24,84%, X2 sebesar 15,92%, X3 sebesar 12,04%, dan X5 sebesar 7,29%. Adapun X6, X7, X10, X9, dan X8 memiliki tingkat kepentingan yang relatif rendah. Dengan demikian, model mampu menghasilkan prediksi yang cukup baik, dengan X4 sebagai variabel yang paling berkontribusi terhadap prediksi, sedangkan variabel lainnya memberikan kontribusi yang lebih kecil.

BAB V KESIMPULAN

5.1 Kesimpulan

   Boosting merupakan metode ensemble learning yang menggabungkan beberapa model pembelajaran lemah (weak learners) secara bertahap untuk membentuk model yang lebih kuat. Setiap model baru dibangun dengan memperhatikan kesalahan prediksi model sebelumnya sehingga diharapkan dapat meningkatkan akurasi prediksi. Salah satu algoritma boosting adalah Gradient Boosting, yang memperbaiki prediksi secara bertahap berdasarkan gradien fungsi kerugian (loss function). Metode ini dapat digunakan untuk menyelesaikan permasalahan klasifikasi maupun regresi.
   Implementasi boosting dalam R dapat dilakukan menggunakan paket gbm. Untuk kasus klasifikasi, digunakan distribusi bernoulli pada target biner, sedangkan untuk kasus regresi digunakan distribusi gaussian pada target numerik. Model dibangun dengan menentukan parameter seperti jumlah pohon (n.trees), kedalaman interaksi (interaction.depth), dan learning rate (shrinkage). Jumlah iterasi optimal dapat ditentukan melalui cross-validation menggunakan gbm.perf(). Selanjutnya, model digunakan untuk memprediksi data pengujian. 
   Evaluasi performa dilakukan pada data pengujian yang tidak digunakan dalam proses pelatihan model. Pada kasus regresi, ukuran evaluasi yang dapat digunakan adalah Mean Squared Error (MSE), Root Mean Squared Error (RMSE), Mean Absolute Error (MAE), dan R2. Nilai MSE, RMSE, dan MAE yang lebih kecil menunjukkan kesalahan prediksi yang lebih rendah, sedangkan nilai R2 yang lebih besar menunjukkan kemampuan model yang lebih baik dalam menjelaskan variasi data.
   Berdasarkan hasil analisis, metode Gradient Boosting Regression dengan nilai learning rate 0,01 merupakan model terbaik dibandingkan nilai learning rate 0,05 dan 0,10, dengan 4.548 iterasi optimal, MSE sebesar 3,8064, RMSE sebesar 1,9510, MAE sebesar 1,5352, dan R2 sebesar 0,8412. Nilai R2 menunjukkan bahwa model mampu menjelaskan 84,12% variasi nilai variabel respons pada data pengujian. Grafik aktual dan prediksi memperlihatkan bahwa sebagian besar hasil prediksi mendekati nilai aktual, meskipun masih terdapat beberapa kesalahan prediksi yang terlihat pada grafik residual. Berdasarkan analisis variable importance, X4 merupakan variabel yang paling berpengaruh terhadap prediksi dengan tingkat kepentingan sebesar 31,80%, diikuti X1 sebesar 24,84% dan X2 sebesar 15,92%, sedangkan X8 memiliki tingkat kepentingan terendah sebesar 0,92%. Dengan demikian, model Gradient Boosting dengan learning rate 0,01 memberikan kinerja prediksi terbaik di antara model yang diuji, dengan X4 sebagai variabel yang memiliki kontribusi relatif terbesar dalam proses prediksi.
   

5.2 Saran

   Dalam membuat laporan praktikum ini penulis menyarankan untuk selalu memperhatikan sintaks pada program R yang digunakan. Selain itu, perlu untuk memperhatikan tata cara penulisan yang sesuai dengan KBBI dan penulisan yang bercetak tebal. Sehingga dapat menghasilkan laporan yang baik

DAFTAR PUSTAKA

Adnan, M., Alarood, A. A. S., Uddin, M. I., & Rehman, I. ur. (2022). Utilizing grid search cross-validation with adaptive boosting for augmenting performance of machine learning models. PeerJ Computer Science, 8. https://doi.org/10.7717/PEERJ-CS.803
Fransiska, H. (2026). Modul Praktikum Machine Learning. Universitas Bengkulu.
Gunasekara, N., Pfahringer, B., Gomes, H., & Bifet, A. (2024). Gradient boosted trees for evolving data streams. Machine Learning, 113(5), 3325–3352. https://doi.org/10.1007/s10994-024-06517-y
Mienye, I. D., & Sun, Y. (2022). A Survey of Ensemble Learning: Concepts, Algorithms, Applications, and Prospects. In IEEE Access (Vol. 10, pp. 99129–99149). Institute of Electrical and Electronics Engineers Inc. https://doi.org/10.1109/ACCESS.2022.3207287
Mohammed, A., & Kora, R. (2023). A comprehensive review on ensemble deep learning: Opportunities and challenges. In Journal of King Saud University - Computer and Information Sciences (Vol. 35, Number 2, pp. 757–774). King Saud bin Abdulaziz University. https://doi.org/10.1016/j.jksuci.2023.01.014
Robinson Sihombing, P. (2025). Jurnal Bayesian: Jurnal Ilmiah Statistika dan Ekonometrika COMPARATIVE ANALYSIS OF ENSEMBLE BAGGING AND BOOSTING METHODS: A SYSTEMATIC LITERATURE REVIEW. 5(2). https://doi.org/10.46306/bay.v5i2