BAB I PENDAHULUAN

1.1 Latar Belakang Masalah

Ensemble learning merupakan metode yang menggabungkan beberapa model untuk menghasilkan prediksi yang lebih baik. Salah satu metode yang digunakan adalah Boosting, yaitu membentuk model secara bertahap dengan memperhatikan kesalahan prediksi dari model sebelumnya. Dengan cara ini, model berikutnya diharapkan dapat memperbaiki kesalahan yang masih terjadi (Firmansyah & Abidin, 2022).

Boosting dapat digunakan untuk klasifikasi dan regresi. Pada klasifikasi, model digunakan untuk menentukan kategori data, sedangkan pada regresi model digunakan untuk memperkirakan nilai numerik. Beberapa algoritma yang termasuk dalam metode ini adalah AdaBoost dan Gradient Boosting (Jasman dkk., 2022).

Melalui praktikum ini, metode Boosting dipelajari dan diterapkan menggunakan R untuk kasus klasifikasi dan regresi. Hasil pemodelan kemudian dievaluasi menggunakan ukuran yang sesuai dengan jenis analisis. Evaluasi tersebut digunakan untuk melihat dan membandingkan kinerja model yang diperoleh.

1.2 Rumusan Masalah

Berdasarkan latar belakang di atas, adapun rumusan masalah sebagai berikut:

  1. Bagaimana memahami Boosting sebagai metode ensemble learning.
  2. Bagaimana mengimplementasikan Boosting untuk klasifikasi dan regresi menggunakan R.
  3. Bagaimana mengevaluasi performa model menggunakan ukuran evaluasi yang sesuai. jawab ini maksimal 3 kalimat

1.3 Tujuan Penelitian

Berdasarkan rumusan masalah, tujuan yang dapat disimpulkan adalah sebagai berikut:

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

1.4 Manfaat Penelitian

Manfaat yang diperoleh melalui penelitian ini, yaitu:

  1. Bagi penulis:
    1. Menambah pengetahuan dan pemahaman mengenai Boosting sebagai metode ensemble.
    2. Mampu mengaplikasikan R untuk membentuk dan mengevaluasi Boosting.
  2. Bagi pembaca:
    1. Menambah pengetahuan dan pemahaman mengenai Boosting sebagai metode ensemble.
    2. Rujukan penelitian selanjutnya.

1.5 Batasan Masalah

Adapaun batasan masalah ini adalah meakukan 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 \(R^2\), kemudian interpretasikan hasilnya.

1.6 Sistematika Penulisan

Adapun sistematika penulisan dari praktikum ini adalah:

BAB I PENDAHULUAN

Bab ini memuat latar belakang, rumusan masalah, tujuan dan manfaat, batasan masalah dan sistematika penulisan.

BAB II TINJAUAN PUSTAKA

Bab ini memuat pengertian dan teori yang diperlukan untuk rancangan penelitian pada bab-bab berikutnya.

BAB III METODE PENELITIAN

Bab ini memuat jenis dan sumber data, variabel penelitian, langkah analisis, dan diagram alir penelitian.

BAB IV HASIL DAN PEMBAHASAN

Bab ini memuat hasil analisis pada program R beserta interpretasinya.

BAB V KESIMPULAN DAN SARAN

Bab ini memuat kesimpulan dan saran.

DAFTAR PUSTAKA

BAB II TINJAUAN PUSTAKA

2.1 Boosting

Ensemble learning adalah paradigma pembelajaran yang melatih dan menggabungkan beberapa model dasar untuk menghasilkan keputusan akhir. Gagasan utamanya adalah bahwa sekumpulan model yang cukup akurat dan beragam dapat menghasilkan kinerja yang lebih baik dibandingkan model individu mana pun (Rachmatullah, 2025).

Boosting adalah metode ensemble yang membangun model secara berurutan (sequential), dengan setiap model baru berusaha memperbaiki kesalahan prediksi dari model sebelumnya. Model-model sederhana yang dibangun pada setiap tahap disebut weak learner. Gabungan banyak weak learner tersebut membentuk satu model yang lebih kuat, yang disebut strong learner (Erkamim dkk., 2024). Pada Boosting berbasis pohon, decision tree digunakan sebagai base learner. Kedalaman pohon perlu dibatasi agar tetap sederhana, karena overfitting dapat terjadi apabila kedalaman pohon terlalu besar (Rachmatullah, 2025).

Karena Bagging dan Boosting sama-sama termasuk metode ensemble learning, perbedaan keduanya dirangkum pada Tabel 1 berikut (Fransiska, 2026).

Tabel 1. Perbedaan Bagging dan Boosting

Aspek Bagging Boosting
Cara membangun model Paralel atau relatif independen Sequential; learner berikutnya bergantung pada hasil sebelumnya
Data tiap learner Umumnya sampel bootstrap Data, bobot, atau target dapat disesuaikan berdasarkan kesalahan sebelumnya
Fokus utama Mengurangi variance melalui agregasi Memperbaiki kesalahan secara bertahap
Kontribusi learner Umumnya setara pada Bagging dasar Dapat berbeda; misalnya pada AdaBoost melalui \(\alpha_m\)
Base learner Sering menggunakan pohon yang relatif besar Umumnya menggunakan learner sederhana atau pohon dangkal
Komputasi Mudah diparalelkan Lebih sulit diparalelkan karena bersifat sequential
Parameter penting Jumlah model/bootstrap Jumlah iterasi, learning rate, dan kompleksitas learner

2.2 Adaptive Boosting (AdaBoost)

Adaptive Boosting (AdaBoost) merupakan algoritma boosting yang meningkatkan kinerja model dengan memberikan bobot berbeda pada setiap pengamatan. Pengamatan yang salah diklasifikasikan memperoleh bobot lebih besar agar lebih diperhatikan pada pembentukan model berikutnya (Erkamim dkk., 2024).

Untuk klasifikasi biner, misalkan tersedia data latih \((x_i, y_i)\), dengan \(i = 1, 2, \ldots, 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)}=\frac{1}{n}, \quad i=1,2,\ldots,n. \]

dengan \(w_i^{(1)}\) merupakan bobot observasi ke-\(i\) pada iterasi pertama.

2. Membentuk Weak Learner

Pada setiap iterasi dibentuk weak learner \(G_m(x)\). Setelah prediksi dilakukan, dihitung kesalahan klasifikasi terbobot:

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

Keterangan:

  • \(\operatorname{err}_m\) = kesalahan klasifikasi terbobot pada learner ke-\(m\);
  • \(w_i^{(m)}\) = bobot observasi ke-\(i\) pada iterasi ke-\(m\);
  • \(G_m(x_i)\) = kelas hasil prediksi learner ke-\(m\) untuk observasi ke-\(i\);
  • \(I\{y_i \neq G_m(x_i)\}\) = fungsi indikator yang bernilai 1 apabila observasi ke-\(i\) salah diklasifikasikan dan 0 apabila diklasifikasikan dengan benar.

3. Memperbarui Bobot

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 Learner

Setiap learner diberi bobot berdasarkan performanya, yaitu:

\[ \alpha_m = \log\left(\frac{1-\operatorname{err}_m} {\operatorname{err}_m}\right). \]

dengan \(\alpha_m\) merupakan bobot atau tingkat kontribusi learner ke-\(m\) terhadap prediksi akhir. Kemudian, prediksi akhir diperoleh melalui weighted voting:

\[ G(x)=\operatorname{sign}\left[ \sum_{m=1}^{M}\alpha_m G_m(x) \right]. \]

dengan \(M\) merupakan jumlah seluruh weak learner, sedangkan fungsi \(\operatorname{sign}(\cdot)\) 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.4 Gradient Boosting

Gradient Boosting menggabungkan konsep Boosting dengan pendekatan gradient descent untuk mengoptimalkan fungsi loss, dengan model dibangun secara bertahap dan setiap model baru mengoreksi kesalahan model sebelumnya (Erkamim dkk., 2024).

Pada kasus regresi, kesalahan model dilihat melalui residual, yaitu selisih antara nilai observasi yang sebenarnya dan nilai prediksi (Fransiska, 2026)

\[ e_i = y_i - \hat{y}_i\ \] 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) + \nu h_m(x) \] dengan \(f_{m-1}(x)\) adalah model pada iterasi sebelumnya, \(h_m(x)\) adalah weak learner pada iterasi ke-\(m\), dan \(\nu\) adalah learning rate atau shrinkage.

Nilai learning rate mengatur seberapa besar kontribusi learner baru terhadap model. Nilai yang lebih kecil membuat proses pembelajaran berlangsung lebih perlahan dan biasanya membutuhkan lebih banyak iterasi (Fransiska, 2026).

Dengan demikian, jika AdaBoost memperbaiki klasifikasi dengan memberi perhatian lebih besar pada observasi yang sulit, pada Gradient Boosting regresi learner berikutnya diarahkan untuk mempelajari residual yang masih tersisa.

2.5 Boosting untuk Klasifikasi dan Regresi

Perbedaan penerapan Boosting pada kasus klasifikasi dan regresi dirangkum pada Tabel 2 berikut (Fransiska, 2026).

Tabel 2. Perbedaan Klasifikasi dan Regresi

Aspek Klasifikasi Regresi
Metode AdaBoost Gradient Boosting
Respons Kategorik Numerik atau kontinu
Mekanisme yang ditekankan Memperbaiki salah klasifikasi Mempelajari residual
Prediksi Kelas atau probabilitas Nilai numerik
Evaluasi Accuracy, Precision, Recall, Specificity, F1 MSE, RMSE, MAE, \(R^2\)

2.6 Parameter Penting dalam Boosting

Parameter penting yang perlu ditentukan pada Gradient Boosting adalah learning rate, jumlah pohon (n-estimator), dan kedalaman pohon (max-depth). Learning rate berpengaruh terhadap waktu komputasi, sedangkan jumlah pohon dan kedalaman pohon menggambarkan kompleksitas model, dengan model yang terlalu sederhana berpotensi mengalami underfitting (Nadifa dkk., 2025).

Tabel 3. Parameter dalam Boosting

Parameter Peran
Jumlah iterasi / jumlah learner Menentukan berapa banyak learner yang ditambahkan
Learning rate \(\nu\) Mengatur besar kontribusi setiap learner baru
Kedalaman pohon Mengatur kompleksitas setiap weak learner

Sebaliknya, overfitting dapat terjadi apabila kedalaman pohon terlalu besar atau laju pembelajaran tidak dikendalikan dengan baik, sehingga validasi silang (cross-validation) dan penalaan hyperparameter menjadi aspek krusial dalam penerapan Boosting (Rachmatullah, 2025).

BAB III METODE PENELITIAN

3.1 Jenis dan Sumber Data

Penelitian ini merupakan penelitian terapan dengan pendekatan kuantitatif. Data yang digunakan adalah data simulasi yang dibangkitkan menggunakan fungsi mlbench.friedman1() dari package mlbench pada program R dengan jumlah pengamatan sebanyak 200. Data digunakan untuk memprediksi variabel respons y menggunakan metode Gradient Boosting.

3.2 Variabel Penelitian

Variabel respons adalah y, berupa variabel numerik kontinu yang dibangkitkan melalui simulasi. Variabel prediktor terdiri atas x.1 hingga x.10, yang masing-masing dibangkitkan dari distribusi seragam pada interval (0,1). Pada data Friedman1, hanya x.1 sampai x.5 yang memengaruhi y, sedangkan x.6 sampai x.10 merupakan variabel noise.

3.3 Langkah-langkah Analisis

Adapun langka-langkah penelitian sebagai berikut:

  1. Mulai.

  2. Input data.

  3. Pembagian data training dan testing .

  4. Pemodelan Gradient Boosting dengan variasi learning rate.

  5. Menentukan iterasi optimal.

  6. Evaluasi model.

  7. Analisis variable importance.

  8. kesimpulan.

  9. Selesai.

3.4 Diagram Alir Penelitian

Diagram alir penelitian adalah sebagai berikut.

Gambar 3.1 Diagram Alir Penelitian

Gambar 3.1 Diagram Alir Penelitian

BAB IV HASIL DAN PEMBAHASAN

4.1 Persiapan dan Preprocessing Data

# 1. Library
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

4.1.1 Pembangkitan dan Deskripsi Data

# 2. Membangkitkan Data Simulasi Friedman1
set.seed(234)
reg.data <- as.data.frame(mlbench.friedman1(200))

# Melihat Struktur dan Dimensi 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 ...
dim(reg.data)
## [1] 200  11

Interpretasi: Data Friedman1 terdiri atas 200 observasi dan 11 variabel, yaitu 10 variabel prediktor (x.1–x.10) dan 1 variabel respons (y). Seluruh variabel bertipe numerik.

4.1.2 Pemeriksaan Missing Value

# 3. Memeriksa Missing Value
colSums(is.na(reg.data))
##  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

Interpretasi: Tidak terdapat missing value pada seluruh variabel karena data dibangkitkan secara simulasi, sehingga seluruh observasi dapat digunakan tanpa penanganan tambahan.

4.1.3 Statistik Deskriptif

# 4. Ringkasan Statistik Dataset
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

Interpretasi: Setiap variabel prediktor memiliki nilai minimum mendekati 0 dan maksimum mendekati 1 dengan rata-rata sekitar 0,5, sesuai distribusi seragam pada interval (0,1). Variabel respons y memiliki minimum 3,082, kuartil pertama 10,593, median 13,810, rata-rata 14,270, kuartil ketiga 18,063, dan maksimum 26,146. Rata-rata yang sedikit lebih besar daripada median menunjukkan sebaran y condong ringan ke kanan.

4.1.4 Pembagian Data Training dan Testing

# 5. Membagi Data (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, ]

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

Interpretasi: Data training terdiri atas 140 observasi dan data testing 60 observasi.

4.2 Pembentukan Model Gradient Boosting

# 6. Membentuk Gradient Boosting untuk tiga nilai learning rate
nu <- c(0.01, 0.05, 0.10)
boost.reg <- list()

for (i in seq_along(nu)) {
  set.seed(234)
  boost.reg[[i]] <- gbm(formula = y ~ ., data = reg.train,
                        distribution = "gaussian", n.trees = 3000,
                        interaction.depth = 2, shrinkage = nu[i],
                        bag.fraction = 1, cv.folds = 10,
                        n.minobsinnode = 5, verbose = FALSE)
}
names(boost.reg) <- paste0("nu_", nu)

boost.reg[["nu_0.1"]]
## gbm(formula = y ~ ., distribution = "gaussian", data = reg.train, 
##     n.trees = 3000, interaction.depth = 2, n.minobsinnode = 5, 
##     shrinkage = nu[i], bag.fraction = 1, cv.folds = 10, verbose = FALSE)
## A gradient boosted model with gaussian loss function.
## 3000 iterations were performed.
## The best cross-validation iteration was 212.
## There were 10 predictors of which 10 had non-zero influence.

Interpretasi: Model Gradient Boosting menggunakan 3.000 pohon dan cross-validation 10-fold. Pada learning rate 0,10, diperoleh 212 iterasi optimal, dengan seluruh 10 prediktor memiliki pengaruh terhadap model.

4.3 Jumlah Iterasi Optimal

# 7. Menentukan jumlah iterasi optimal dengan cross-validation
par(mfrow = c(1, 3))
best.iter <- numeric(3)
for (i in seq_along(nu)) {
  best.iter[i] <- gbm.perf(boost.reg[[i]], method = "cv", plot.it = TRUE)
  title(main = paste("nu =", nu[i]))
}

par(mfrow = c(1, 1))

cv.error <- mapply(function(m, b) m$cv.error[b], boost.reg, best.iter)
train.error <- mapply(function(m, b) m$train.error[b], boost.reg, best.iter)

hasil.iter <- data.frame(Learning_Rate = nu, Iterasi_Optimal = best.iter,
                         Train_Error = train.error, CV_Error = cv.error)
round(hasil.iter, 4)
##         Learning_Rate Iterasi_Optimal Train_Error CV_Error
## nu_0.01          0.01            2038      0.3859   4.0047
## nu_0.05          0.05             458      0.3279   4.0046
## nu_0.1           0.10             212      0.3640   3.9630

Interpretasi: Semakin kecil learning rate, semakin banyak iterasi yang dibutuhkan untuk mencapai hasil optimal. Model dengan learning rate 0,01 membutuhkan 2.038 iterasi, sedangkan 0,05 membutuhkan 458 iterasi dan 0,10 hanya 212 iterasi. Nilai error cross-validation terendah diperoleh pada learning rate 0,10 sebesar 3,9630, sehingga menjadi yang terbaik di antara ketiga model berdasarkan ukuran tersebut.

Pada grafik, error training terus menurun, sedangkan error cross-validation cenderung mendatar atau meningkat setelah mencapai titik optimal. Hal ini menunjukkan bahwa pemilihan jumlah iterasi sebaiknya didasarkan pada error cross-validation, bukan hanya error training, karena kesalahan pada data pelatihan jauh lebih kecil dibandingkan pada validasi.

4.4 Prediksi Data Testing

# 8. Prediksi data testing pada iterasi optimal
actual <- reg.test$y
pred.reg <- list()
for (i in seq_along(nu)) {
  pred.reg[[i]] <- as.numeric(predict(boost.reg[[i]], newdata = reg.test,
                                      n.trees = best.iter[i], type = "response"))
}

# Hasil prediksi model dengan cross-validation error terkecil
best.model <- which.min(cv.error)
nu[best.model]
## [1] 0.1
hasil.reg <- data.frame(Aktual = actual, Prediksi = pred.reg[[best.model]],
                        Residual = actual - pred.reg[[best.model]])
head(hasil.reg, 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

Interpretasi: Model terbaik diperoleh pada learning rate \(\nu = 0,10\). Prediksi umumnya mendekati nilai aktual, tetapi selisih terbesar terdapat pada pengamatan ke-8, dengan nilai aktual 7,11 dan prediksi 12,17 (residual −5,06).

4.5 Evaluasi dan Perbandingan Model

# 9. Evaluasi model regresi pada data testing
evaluasi <- NULL
for (i in seq_along(nu)) {
  MSE  <- mean((actual - pred.reg[[i]])^2)
  RMSE <- sqrt(MSE)
  MAE  <- mean(abs(actual - pred.reg[[i]]))
  R2   <- 1 - sum((actual - pred.reg[[i]])^2) / sum((actual - mean(actual))^2)
  evaluasi <- rbind(evaluasi,
                    data.frame(Learning_Rate = nu[i], Iterasi = best.iter[i],
                               MSE = MSE, RMSE = RMSE, MAE = MAE, R_Square = R2))
}
round(evaluasi, 4)
##   Learning_Rate Iterasi    MSE   RMSE    MAE R_Square
## 1          0.01    2038 4.2550 2.0628 1.5951   0.8225
## 2          0.05     458 4.2639 2.0649 1.6008   0.8221
## 3          0.10     212 4.0312 2.0078 1.5579   0.8318

Interpretasi: Model dengan learning rate \(\nu = 0,10\) memberikan hasil terbaik dengan MSE 4,0312, RMSE 2,0078, MAE 1,5579, dan \(R^2\) 0,8318. Model menjelaskan 83,18% variasi y pada data testing dengan hanya 212 iterasi.

4.6 Visualisasi Aktual dan Prediksi

# 10. Plot Aktual vs Prediksi dan Residual (model terbaik)
p.best <- pred.reg[[best.model]]
res.best <- actual - p.best

par(mfrow = c(1, 2))
plot(actual, p.best, pch = 19,
     xlab = "Nilai Aktual", ylab = "Nilai Prediksi",
     main = "Aktual vs Prediksi: Gradient Boosting")
abline(a = 0, b = 1, lty = 2, lwd = 2)

plot(p.best, res.best, pch = 19,
     xlab = "Nilai Prediksi", ylab = "Residual",
     main = "Residual Plot: Gradient Boosting")
abline(h = 0, lty = 2, lwd = 2)

par(mfrow = c(1, 1))

summary(res.best)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## -5.1205 -1.6919 -0.1933 -0.3976  0.9060  3.9229
cor(actual, p.best)
## [1] 0.9214536

Interpretasi: Titik pada plot aktual terhadap prediksi mengikuti garis diagonal dengan korelasi 0,9215, yang berarti model mampu menangkap pola y dengan baik. Residual tersebar di sekitar nol tanpa pola yang jelas, dengan rentang −5,12 sampai 3,92. Rata-rata residual sebesar −0,398 (median −0,193) menunjukkan model cenderung sedikit memprediksi lebih tinggi daripada nilai aktual, terutama pada beberapa pengamatan dengan y rendah.

4.7 Variable Importance

# 11. Variable importance (model terbaik)
importance.reg <- summary(boost.reg[[best.model]], n.trees = best.iter[best.model],
                          plotit = FALSE)
importance.reg
##       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
barplot(importance.reg$rel.inf, names.arg = importance.reg$var,
        las = 2, main = "Variable Importance - Gradient Boosting",
        ylab = "Relative Influence")

Interpretasi: Variabel x.4 memiliki pengaruh terbesar (38,47%), sedangkan x.8 paling kecil (0,15%). Lima variabel teratas (x.1–x.5) menyumbang sekitar 97,74% pengaruh relatif, sementara variabel lainnya hanya memberikan pengaruh kecil.

BAB V KESIMPULAN DAN SARAN

5.1 Kesimpulan

Boosting merupakan metode ensemble learning yang menggabungkan beberapa model secara bertahap. Setiap model baru berupaya memperbaiki kesalahan model sebelumnya. Dengan demikian, kombinasi model diharapkan menghasilkan prediksi yang lebih baik.

Implementasi Boosting dilakukan menggunakan R untuk analisis klasifikasi dan regresi. Metode AdaBoost digunakan untuk klasifikasi, sedangkan Gradient Boosting digunakan untuk regresi. Proses ini mencakup pembentukan model, penentuan parameter, dan pengujian menggunakan data.

Evaluasi performa model dilakukan menggunakan ukuran yang sesuai dengan jenis analisis. Klasifikasi dievaluasi menggunakan confusion matrix, akurasi, presisi, dan recall. Sementara itu, regresi dievaluasi menggunakan MSE, RMSE, MAE, dan \(R^2\).

Model Gradient Boosting terbaik diperoleh pada learning rate 0,10 dengan nilai MSE 4,0312, RMSE 2,0078, MAE 1,5579, dan \(R^2\) 0,8318. Model mampu menjelaskan 83,18% variasi y, dengan x.4 sebagai variabel paling berpengaruh sebesar 38,47%. Dengan 212 iterasi optimal, model mampu memprediksi data Friedman1 dengan baik dan efisien.

5.2 Saran

Penelitian selanjutnya disarankan untuk memperbaiki penulisan kode dan sintaks program agar terhindar dari kesalahan (error). Setiap tahapan analisis perlu diperiksa untuk memastikan proses berjalan sesuai prosedur. Selain itu, ketelitian dalam menjalankan dan mengevaluasi program perlu ditingkatkan agar hasil analisis lebih akurat.

DAFTAR PUSTAKA

  1. Fransiska, H. (2026). Machine learning and modern prediction. Laboratorium Matematika dan Ilmu Pengetahuan Alam, Universitas Bengkulu.

  2. Firmansyah, H., & Abidin, Z. (2022). Penerapan algoritma Gradient Boosted Decision Trees pada AdaBoost untuk klasifikasi status desa. Jurnal Ilmiah JIAII: Jurnal Informatika UPS, 1(1), 27–35.

  3. Fitri, E. (2023). Analisis perbandingan metode regresi linier, random forest regression dan gradient boosted trees regression method untuk prediksi harga rumah. Journal of Applied Computer Science and Technology (JACOST), 4(1), 58–64. https://doi.org/10.52158/jacost.v4i1.491

  4. Jasman, T. Z., Fadhlullah, M. A., Pratama, A. L., & Rismayani. (2022). Analisis algoritma Gradient Boosting, Adaboost dan Catboost dalam klasifikasi kualitas air. Jurnal Teknik Informatika dan Sistem Informasi, 8(2). Tautan jurnal

  5. Pristyanto, Y., & Zein, A. A. (2023). Model balanced bagging berbasis decision tree pada dataset imbalanced class. Jurnal Sisfokom (Sistem Informasi dan Komputer), 12(1), 9–15. https://doi.org/10.32736/sisfokom.v12i1.1399