BAB I PENDAHULUAN

1.1 Latar Belakang Masalah

Perkembangan teknologi informasi mendorong meningkatnya jumlah data yang dapat dimanfaatkan untuk memperoleh informasi dan mendukung pengambilan keputusan. Pengolahan data yang tepat diperlukan agar pola dan hubungan antarvariabel dapat diketahui. Salah satu metode yang dapat digunakan adalah machine learning, yaitu pendekatan yang memungkinkan komputer mempelajari pola dari data untuk melakukan prediksi atau klasifikasi. Dalam penerapannya, pemilihan metode yang sesuai dan evaluasi performa model menjadi hal penting untuk memperoleh hasil analisis yang baik.

Salah satu pendekatan dalam machine learning adalah ensemble learning, yaitu metode yang menggabungkan beberapa model untuk menghasilkan prediksi yang lebih baik dibandingkan penggunaan satu model saja. Boosting merupakan salah satu metode ensemble learning yang membangun model secara bertahap. Setiap model baru dibentuk dengan memperhatikan kesalahan prediksi dari model sebelumnya sehingga proses pembelajaran diharapkan dapat meningkatkan ketepatan hasil prediksi. Pendekatan ini dapat diterapkan pada permasalahan klasifikasi maupun regresi sesuai dengan karakteristik variabel respons dan tujuan analisis.

Penerapan Boosting perlu disertai pemahaman mengenai konsep dasar, proses pembentukan model, serta penggunaan parameter yang memengaruhi kinerja model. Berdasarkan uraian tersebut, penelitian ini dilakukan untuk memahami Boosting sebagai metode ensemble learning, mengimplementasikannya pada kasus klasifikasi dan regresi menggunakan R, serta mengevaluasi performa model dengan ukuran evaluasi yang sesuai. Hasil analisis diharapkan dapat memberikan pemahaman mengenai tahapan penerapan Boosting dan cara menilai kinerja model berdasarkan hasil prediksi yang diperoleh .

1.2 Rumusan Masalah

Berdasarkan latar belakang, rumusan masalah pada penelitian ini adalah:

  1. Bagaimana memahami Boosting sebagai metode ensemble learning?

  2. Bagaimana mengimplementasikan Boosting untuk kasus klasifikasi dan regresi menggunakan R?

  3. Bagaimana mengevaluasi performa model menggunakan ukuran evaluasi yang sesuai?

1.3 Tujuan

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

  1. Mahasiswa dapat memahami Boosting sebagai metode ensemble learning.

  2. Mahasiswa dapat mengimplementasikan Boosting untuk kasus klasifikasi dan regresi menggunakan R.

  3. Mahasiswa dapat mengevaluasi performa model menggunakan ukuran evaluasi yang sesuai.

BAB II TINJAUAN PUSTAKA

2.1 Ensemble Learning

Ensemble learning adalah teknik dalam algoritma pembelajaran mesin (ML) dengan kombinasi dua algoritma atau lebih untuk mendapatkan solusi yang lebih baik dari model sebelumnya. Ensemble learning adalah metode yang melibatkan beberapa algoritma ML dengan hasil rendah kemudian ditingkatkan untuk mendapatkan hasil yang lebih tinggi. Teknik ensemble learning terdiri dari bagging. boosting dan stacking (Churniansyah dan Utomo, 2024). Secara formal, ensemble learning dapat didefinisikan sebagai paradigma pembelajaran di mana beberapa pengklasifikasi dasar dilatih dan digabungkan untuk menghasilkan keputusan klasifikasi akhir. Prediksi ensemble diperoleh melalui suatu fungsi agregasi yang mengombinasikan keluaran model-model tersebut. Efektivitas ensemble learning erat kaitannya dengan dekomposisi bias varians dari galat klasifikasi (Rachmatullah, 2021).

2.2 Boosting

Boosting adalah pendekatan pembelajaran ensemble iteratif yang pada prinsipnya menggabungkan serangkaian pengklasifikasi lemah untuk menciptakan pengklasifikasi yang kuat, sehingga meningkatkan kinerja prediktif secara keseluruhan. Proses ini dapat dicapai dengan melakukan klasifikasi berdasarkan fitur data dan menerapkan penyesuaian bobot pada dataset pelatihan, memastikan bahwa setiap sampel menerima perhatian yang sesuai selama pelatihan. Dalam menggunakan algoritma boosting, serangkaian pengklasifikasi dasar dihasilkan pada sampel yang telah diberi bobot. Pada setiap iterasi, algoritma boosting menitikberatkan pada sampel yang salah diklasifikasikan oleh pengklasifikasi sebelumnya. Dengan meningkatkan bobot sampel yang sulit diklasifikasikan, pengklasifikasi lemah selanjutnya berfokus pada sampel tersebut, sehingga meningkatkan akurasi dan generalisasi secara keseluruhan. Mekanisme pembobotan ulang ini mampu mencegah overfitting dan membantu model beradaptasi dengan data baru (Aprihartha, Umam, & Ardhana 2026).

Berbeda dengan Bagging, model-model pada Boosting tidak dibangun secara independen. Pada Bagging, banyak model dapat dibentuk secara paralel dan kemudian hasil prediksinya diagregasi. Pada Boosting, learner ke-2 dibangun berdasarkan informasi dari hasil learner ke-1, learner ke-3 memperbaiki hasil yang masih belum baik dari tahap sebelumnya, dan proses tersebut dilanjutkan secara berurutan. Prinsip sequential learning inilah yang menjadi salah satu ciri utama Boosting. Model-model sederhana yang dibangun pada setiap tahap tersebut disebut weak learner. Weak learner memiliki kemampuan prediksi yang terbatas apabila digunakan sendiri, tetapi setiap learner diarahkan untuk membantu memperbaiki kesalahan model yang telah terbentuk sebelumnya. Setelah sejumlah weak learner digabungkan, diperoleh model akhir yang lebih kuat, yang disebut strong learner. Pada Boosting berbasis pohon, decision tree sering digunakan sebagai base learner. Kedalaman pohon dapat dibatasi sehingga setiap pohon tetap sederhana dan berperan sebagai weak learner. Selanjutnya, kontribusi dari pohon-pohon tersebut digabungkan secara bertahap sehingga membentuk model Boosting akhir Boosting membangun learner secara berurutan agar setiap learner baru membantu memperbaiki kesalahan yang masih tersisa. Konsep Boosting untuk kasus klasifikasi diperkenalkan melalui Adaptive Boosting (AdaBoost), sedangkan untuk kasus regresi diperkenalkan melalui Gradient Boosting (Fransiska, 2026).

BAB III METODE PENELITIAN

3.1 Sumber Data

Jenis data yang digunakan dalam penelitian ini berupa data kuantitatif dan data kualitatif. Data kuantitatif adalah jenis data yang dapat diukur (measurable) atau dihitung secara langsung sebagai variabel angka. Sumber data yang digunakan dalam penelitian ini yaitu data sekunder. Data sekunder adalah data yang diperoleh secara tidak langsung oleh peneliti melainkan melalui prantara. Data sekunder dalam penelitian ini diperoleh dari dari dataset Friedmad pada package mlbench Program R.

3.2 Variabel Penelitian

Variabel adalah objek penelitian atau apa yang menjadi titik perhatian. Dalam penelitian ini terdapat beberapa variabel. Variabel penelitian terdiri atas variabel respons dan variabel prediktor. Variabel respons yang digunakan terdiri dari y sebagai variabel respons dan 10 variabel lainnya sebagai prediktor.

3.3 Langkah-langkah Analisis

Langkah-langkah analisis yang dilakukan adalah:

  1. Memuat package mlbench, gbm, dan caret pada program R.

  2. Membentuk data simulasi Friedman sebanyak 200 observasi dan memeriksa struktur data.

  3. Membagi data menjadi 70% data latih dan 30% data uji.

  4. Membangun model regresi Gradient Boosting dengan nilai shrinkage 0,01, 0,05, dan 0,10.

  5. Menentukan jumlah iterasi optimal setiap model menggunakan validasi silang (cross-validation) 10 lipatan.

  6. Melakukan prediksi menggunakan data uji berdasarkan iterasi optimal masing-masing model.

  7. Mengevaluasi performa model menggunakan MSE, RMSE, MAE, dan (R^2).

  8. Menganalisis tingkat kepentingan variabel (variable importance) pada setiap model.

  9. Membandingkan performa ketiga model dan menentukan model terbaik berdasarkan hasil evaluasi.

  10. Menginterpretasikan hasil analisis dan menarik kesimpulan.

BAB IV HASIL DAN PEMBAHASAN

4.1 Library dan Dataset

#Library
library(gbm);library(mlbench) 
## 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(caret); library(rpart)
## Loading required package: ggplot2
## Loading required package: lattice
#Data
set.seed(234)
reg.data <- as.data.frame(mlbench.friedman1(200))
# Melihat struktur 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
# Jumlah observasi dan variabel
dim(reg.data)
## [1] 200  11

Berdasarkan hasil pemeriksaan, dataset terdiri atas 200 observasi dan 11 variabel, yaitu 10 variabel prediktor dan satu variabel respons. Seluruh variabel bertipe numerik. Variabel prediktor memiliki nilai sekitar 0–1, sedangkan variabel respons memiliki rata-rata 14,270 dan rentang nilai 3,082–26,146. Data ini selanjutnya digunakan untuk membangun model regresi Gradient Boosting.

4.3 Pembagian Data

# Membagi data training dan testing (70% training dan 30% testing)
set.seed(234)
idx.reg <- createDataPartition(reg.data$y, p = 0.70, list = FALSE)
reg.train <- reg.data[idx.reg, ]
reg.test <- reg.data[-idx.reg, ]
# Melihat ukuran data
dim(reg.train)
## [1] 140  11
dim(reg.test)
## [1] 60 11

Pembagian data dilakukan dengan proporsi 70% sebagai data latih (training) dan 30% sebagai data uji (testing). Hasilnya, sebanyak 140 observasi digunakan untuk membangun model, sedangkan 60 observasi digunakan untuk mengevaluasi kinerja model Gradient Boosting pada data yang belum dilatih.

4.3 Perbandingan Model Gradient Boosting Berdasarkan Nilai Shrinkage

# shrinkage = 0.01
set.seed(234)
boost.reg_1 <- gbm(formula = y ~ ., data = reg.train,
                 distribution = "gaussian", n.trees = 1000,
                 interaction.depth = 2, shrinkage = 0.01,
                 bag.fraction = 1, cv.folds = 10,
                 n.minobsinnode = 5, verbose = FALSE); boost.reg_1
## gbm(formula = y ~ ., distribution = "gaussian", data = reg.train, 
##     n.trees = 1000, interaction.depth = 2, n.minobsinnode = 5, 
##     shrinkage = 0.01, bag.fraction = 1, cv.folds = 10, verbose = FALSE)
## A gradient boosted model with gaussian loss function.
## 1000 iterations were performed.
## The best cross-validation iteration was 999.
## There were 10 predictors of which 9 had non-zero influence.
#iterasi optimal
best.iter_1 <- gbm.perf(boost.reg_1, method = "cv", plot.it = TRUE)

best.iter_1
## [1] 999
#Prediksi data testing
pred.reg_1 <- predict(boost.reg_1, newdata = reg.test,
                    n.trees = best.iter_1, type = "response")
pred.reg_1 <- as.numeric(pred.reg_1)
actual_1 <- reg.test$y
hasil.reg_1 <- data.frame(Aktual = actual_1, Prediksi = pred.reg_1,
                        Residual = actual_1 - pred.reg_1); head(hasil.reg_1, 10)
##       Aktual Prediksi   Residual
## 1  10.232309 11.01784 -0.7855275
## 2  11.845301 11.26091  0.5843931
## 3  10.335689 11.65817 -1.3224845
## 4  16.727262 15.09431  1.6329554
## 5  25.077119 22.67848  2.3986392
## 6  15.446886 15.72686 -0.2799743
## 7  15.642915 14.72493  0.9179817
## 8   7.110835 11.78965 -4.6788169
## 9  13.351277 16.13247 -2.7811926
## 10 12.871960 14.76864 -1.8966850
#Evaluasi model regresi
# Mean Squared Error
MSE <- mean((actual_1 - pred.reg_1)^2)
# Root Mean Squared Error
RMSE <- sqrt(MSE)
# Mean Absolute Error
MAE <- mean(abs(actual_1 - pred.reg_1))
# R-square
R2 <- 1-sum((actual_1 - pred.reg_1)^2) / sum((actual_1 - mean(actual_1))^2)

evaluasi.reg_1 <- data.frame(
  MSE = MSE,
  RMSE = RMSE,
  MAE = MAE,
  R_Square = R2
)
round(evaluasi.reg_1, 4)
##      MSE   RMSE    MAE R_Square
## 1 4.4962 2.1204 1.6464   0.8124
# Plot nilai aktual dan prediksi
plot(actual_1, pred.reg_1, 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_1 <- actual_1 - pred.reg_1
plot(pred.reg_1, residual.reg_1, pch = 19,
     xlab = "Nilai Prediksi", ylab = "Residual",
     main = "Residual Plot: Gradient Boosting")
abline(h = 0, lty = 2, lwd = 2)

# Variable Importance
importance.reg_1 <- summary(boost.reg_1, n.trees = best.iter_1,
                            plotit = FALSE); importance.reg_1
##       var    rel.inf
## x.4   x.4 38.9570683
## x.1   x.1 28.7856603
## x.2   x.2 14.1369878
## x.3   x.3 12.1156964
## x.5   x.5  5.0089073
## x.6   x.6  0.4640513
## x.7   x.7  0.2469939
## x.10 x.10  0.1591046
## x.9   x.9  0.1255302
## x.8   x.8  0.0000000
# Plot variable importance
barplot(importance.reg_1$rel.inf, names.arg = importance.reg_1$var,
        las = 2, main = "Variable Importance - Gradient Boosting",
        ylab = "Relative Influence")

Berdasarkan hasil analisis, model Gradient Boosting dengan nilai shrinkage 0,01 menghasilkan iterasi optimal sebanyak 999. Model memperoleh nilai MSE sebesar 4,4962, RMSE sebesar 2,1204, MAE sebesar 1,6464, dan R^2 sebesar 0,8124. Nilai R^2 menunjukkan bahwa model dapat menjelaskan sekitar 81,24% variasi pada data uji. Berdasarkan hasil variable importance, variabel x4 memiliki pengaruh relatif terbesar sebesar 38,96%, diikuti x1 sebesar 28,79%, x2 sebesar 14,14%, dan x3 sebesar 12,12%. Sementara itu, variabel x8 memiliki pengaruh relatif sebesar 0%, sehingga tidak memberikan kontribusi terhadap model pada iterasi optimal tersebut.

# shrinkage = 0.05
set.seed(234)
boost.reg_2 <- gbm(formula = y ~ ., data = reg.train,
                 distribution = "gaussian", n.trees = 1000,
                 interaction.depth = 2, shrinkage = 0.05,
                 bag.fraction = 1, cv.folds = 10,
                 n.minobsinnode = 5, verbose = FALSE); boost.reg_2
## gbm(formula = y ~ ., distribution = "gaussian", data = reg.train, 
##     n.trees = 1000, interaction.depth = 2, n.minobsinnode = 5, 
##     shrinkage = 0.05, bag.fraction = 1, cv.folds = 10, verbose = FALSE)
## A gradient boosted model with gaussian loss function.
## 1000 iterations were performed.
## The best cross-validation iteration was 458.
## There were 10 predictors of which 10 had non-zero influence.
#iterasi optimal
best.iter_2<- gbm.perf(boost.reg_2, method = "cv", plot.it = TRUE)

best.iter_2
## [1] 458
#Prediksi data testing
pred.reg_2 <- predict(
  boost.reg_2,
  newdata = reg.test,
  n.trees = best.iter_2,
  type = "response"
)
pred.reg_2 <- as.numeric(pred.reg_2)
actual_2 <- reg.test$y

#Evaluasi model regresi
# Mean Squared Error
MSE <- mean((actual_2 - pred.reg_2)^2)
# Root Mean Squared Error
RMSE <- sqrt(MSE)
# Mean Absolute Error
MAE <- mean(abs(actual_2 - pred.reg_2))
# R-square
R2 <- 1-sum((actual_2 - pred.reg_2)^2) / sum((actual_2 - mean(actual_2))^2)

evaluasi.reg_2 <- data.frame(
  MSE = MSE,
  RMSE = RMSE,
  MAE = MAE,
  R_Square = R2
); round(evaluasi.reg_2, 4)
##      MSE   RMSE    MAE R_Square
## 1 4.2639 2.0649 1.6008   0.8221
# Plot nilai aktual dan prediksi
plot(actual_2, pred.reg_2, 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_2 <- actual_2 - pred.reg_2
plot(pred.reg_2, residual.reg_2, pch = 19,
     xlab = "Nilai Prediksi", ylab = "Residual",
     main = "Residual Plot: Gradient Boosting")
abline(h = 0, lty = 2, lwd = 2)

# Variable Importance
importance.reg_2 <- summary(
  boost.reg_2,
  n.trees = best.iter_2,
  plotit = FALSE
)
importance.reg_2
##       var    rel.inf
## x.4   x.4 38.2389956
## x.1   x.1 28.4701680
## x.2   x.2 14.1117457
## x.3   x.3 12.1398304
## x.5   x.5  4.8310982
## x.6   x.6  0.9720539
## x.7   x.7  0.4831724
## x.10 x.10  0.3520490
## x.9   x.9  0.2179733
## x.8   x.8  0.1829133
# Plot variable importance
barplot(importance.reg_2$rel.inf, names.arg = importance.reg_2$var,
        las = 2, main = "Variable Importance - Gradient Boosting",
        ylab = "Relative Influence")

Berdasarkan hasil analisis, model Gradient Boosting dengan nilai shrinkage 0,05 menghasilkan iterasi optimal sebanyak 458. Model memperoleh nilai MSE sebesar 4,2639, RMSE sebesar 2,0649, MAE sebesar 1,6008, dan R^2 sebesar 0,8221. Nilai tersebut menunjukkan bahwa model mampu menjelaskan sekitar 82,21% variasi pada data uji. Berdasarkan hasil variable importance, variabel x4 memiliki pengaruh relatif terbesar sebesar 38,24%, diikuti x1 sebesar 28,47%, x2 sebesar 14,11%, dan x3 sebesar 12,14%. Sementara itu, variabel x8 memiliki pengaruh relatif terkecil, yaitu sebesar 0,18%.

# shrinkage = 0.10
#=======================
set.seed(234)
boost.reg_3 <- gbm(formula = y ~ ., data = reg.train,
                   distribution = "gaussian", n.trees = 1000,
                   interaction.depth = 2, shrinkage = 0.10,
                   bag.fraction = 1, cv.folds = 10,
                   n.minobsinnode = 5, verbose = FALSE); boost.reg_3
## gbm(formula = y ~ ., distribution = "gaussian", data = reg.train, 
##     n.trees = 1000, interaction.depth = 2, n.minobsinnode = 5, 
##     shrinkage = 0.1, bag.fraction = 1, cv.folds = 10, verbose = FALSE)
## A gradient boosted model with gaussian loss function.
## 1000 iterations were performed.
## The best cross-validation iteration was 212.
## There were 10 predictors of which 10 had non-zero influence.
#iterasi optimal
best.iter_3 <- gbm.perf(boost.reg_3, method = "cv", plot.it = TRUE)

best.iter_3
## [1] 212
#Prediksi data testing
pred.reg_3 <- predict(boost.reg_3, newdata = reg.test,
                      n.trees = best.iter_3, type = "response")
pred.reg_3 <- as.numeric(pred.reg_3)
actual_3 <- reg.test$y
hasil.reg_3 <- data.frame(Aktual = actual_3, Prediksi = pred.reg_3,
                          Residual = actual_3 - pred.reg_3); head(hasil.reg_3, 10)
##       Aktual Prediksi   Residual
## 1  10.232309 10.40406 -0.1717534
## 2  11.845301 10.82324  1.0220573
## 3  10.335689 11.92377 -1.5880809
## 4  16.727262 15.54978  1.1774792
## 5  25.077119 23.89650  1.1806164
## 6  15.446886 16.00467 -0.5577837
## 7  15.642915 14.82544  0.8174752
## 8   7.110835 12.16898 -5.0581452
## 9  13.351277 15.89434 -2.5430625
## 10 12.871960 14.49979 -1.6278326
#Evaluasi model regresi
# Mean Squared Error
MSE <- mean((actual_3 - pred.reg_3)^2)
# Root Mean Squared Error
RMSE <- sqrt(MSE)
# Mean Absolute Error
MAE <- mean(abs(actual_3 - pred.reg_3))
# R-square
R2 <- 1-sum((actual_3 - pred.reg_3)^2) / sum((actual_3 - mean(actual_3))^2)
evaluasi.reg_3 <- data.frame(
  MSE = MSE,
  RMSE = RMSE,
  MAE = MAE,
  R_Square = R2
)

round(evaluasi.reg_3, 4)
##      MSE   RMSE    MAE R_Square
## 1 4.0312 2.0078 1.5579   0.8318
# Plot nilai aktual dan prediksi
plot(actual_3, pred.reg_3, 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_3 <- actual_3 - pred.reg_3
plot(pred.reg_3, residual.reg_3, pch = 19,
     xlab = "Nilai Prediksi", ylab = "Residual",
     main = "Residual Plot: Gradient Boosting")
abline(h = 0, lty = 2, lwd = 2)

# Variable Importance
importance.reg_3 <- summary(boost.reg_3, n.trees = best.iter_3,
                            plotit = FALSE); importance.reg_3
##       var    rel.inf
## x.4   x.4 38.4745682
## x.1   x.1 28.2478450
## x.2   x.2 13.8418016
## x.3   x.3 11.7264046
## x.5   x.5  5.4518307
## x.6   x.6  1.0220897
## x.7   x.7  0.4196719
## x.10 x.10  0.4045494
## x.9   x.9  0.2586627
## x.8   x.8  0.1525762
# Plot variable importance
barplot(importance.reg_3$rel.inf, names.arg = importance.reg_3$var,
        las = 2, main = "Variable Importance - Gradient Boosting",
        ylab = "Relative Influence")

Berdasarkan hasil analisis, model Gradient Boosting dengan nilai shrinkage 0,10 menghasilkan iterasi optimal sebanyak 212. Model memperoleh nilai MSE sebesar 4,0312, RMSE sebesar 2,0078, MAE sebesar 1,5579, dan R^2 sebesar 0,8318. Nilai tersebut menunjukkan bahwa model mampu menjelaskan sekitar 83,18% variasi pada data uji. Berdasarkan hasil variable importance, variabel x4 memiliki pengaruh relatif terbesar sebesar 38,47%, diikuti x1 sebesar 28,25%, x2 sebesar 13,84%, dan x3 sebesar 11,73%. Sementara itu, variabel x8 memiliki pengaruh relatif terkecil, yaitu sebesar 0,15%.

# 4. Perbandingan
# Perbandingan performa ketiga model
perbandingan.gbm <- data.frame(
  Shrinkage = c(0.01, 0.05, 0.10),
  Optimal_Trees = c(best.iter_1, best.iter_2, best.iter_3),
  MSE = c(evaluasi.reg_1$MSE,
          evaluasi.reg_2$MSE,
          evaluasi.reg_3$MSE),
  RMSE = c(evaluasi.reg_1$RMSE,
           evaluasi.reg_2$RMSE,
           evaluasi.reg_3$RMSE),
  MAE = c(evaluasi.reg_1$MAE,
          evaluasi.reg_2$MAE,
          evaluasi.reg_3$MAE),
  R2 = c(evaluasi.reg_1$R_Square,
         evaluasi.reg_2$R_Square,
         evaluasi.reg_3$R_Square)
)

round(perbandingan.gbm, 4)
##   Shrinkage Optimal_Trees    MSE   RMSE    MAE     R2
## 1      0.01           999 4.4962 2.1204 1.6464 0.8124
## 2      0.05           458 4.2639 2.0649 1.6008 0.8221
## 3      0.10           212 4.0312 2.0078 1.5579 0.8318

Berdasarkan tabel perbandingan, model Gradient Boosting dengan nilai shrinkage 0,10 memiliki performa terbaik dibandingkan kedua model lainnya. Model ini menghasilkan MSE sebesar 4,0312, RMSE sebesar 2,0078, dan MAE sebesar 1,5579, serta R^2 tertinggi sebesar 0,8318. Iterasi optimal model ini adalah 212. Dengan demikian, pada ketiga nilai shrinkage yang diuji, nilai 0,10 memberikan hasil prediksi terbaik pada data uji. Model tersebut mampu menjelaskan sekitar 83,18% variasi nilai respons, sehingga dipilih sebagai model terbaik berdasarkan metrik evaluasi yang digunakan..

BAB V KESIMPULAN

5.1 Kesimpulan

Boosting merupakan metode ensemble learning yang menggabungkan beberapa model lemah secara bertahap untuk membentuk model yang lebih kuat. Pada setiap iterasi, model dibangun dengan memperhatikan kesalahan prediksi sebelumnya sehingga kemampuan prediksi model dapat meningkat.

Implementasi Boosting untuk kasus klasifikasi dan regresi dapat dilakukan menggunakan R dengan menyesuaikan algoritma dan jenis data yang dianalisis. Pada klasifikasi, model digunakan untuk memprediksi kelas suatu pengamatan, sedangkan pada regresi model digunakan untuk memprediksi nilai numerik.

Evaluasi performa model dilakukan menggunakan ukuran evaluasi yang sesuai dengan jenis permasalahan. Pada klasifikasi, evaluasi dapat menggunakan accuracy, precision, recall, dan F1-score, sedangkan pada regresi dapat menggunakan MSE, RMSE, MAE, dan \(R^2\). Ukuran evaluasi tersebut digunakan untuk menilai kemampuan model dalam menghasilkan prediksi.

Berdasarkan pembahasan pada batasan masalah, diperoleh bahwa, model Gradient Boosting dengan nilai shrinkage 0,10 merupakan model terbaik karena menghasilkan nilai MSE, RMSE, dan MAE terendah serta R^2 tertinggi, yaitu 0,8318. Dengan iterasi optimal sebanyak 212, model ini mampu menjelaskan sekitar 83,18% variasi pada data uji sehingga memberikan performa prediksi terbaik dibandingkan nilai shrinkage 0,01 dan 0,05.

DAFTAR PUSTAKA

Aprihartha, M. A., Umam, L. K., & Ardhana, R. (2026). Perbandingan metode bagging dan boosting untuk regresi logistik pada proses perekrutan pegawai. JSI: Jurnal Sistem Informasi (E-Journal), 18(1).

Churniansyah, F. dan Utomo, D. W. (2024). Teknik Bagging pada Ensemble Learning untuk Kategorisasi Produk E-Commerce. Jurnal Nasional Teknologi dan Sistem Informasi, 10(1), 092-099.

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

Rachmatullah, M. I. C. (2025). Ensemble learning untuk klasifikasi: Tinjauan komprehensif metode, aplikasi, dan perkembangan terkini. Improve, 17(1), 29–31.