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.
Berdasarkan latar belakang di atas, adapun rumusan masalah sebagai berikut:
Berdasarkan rumusan masalah, tujuan yang dapat disimpulkan adalah sebagai berikut:
Manfaat yang diperoleh melalui penelitian ini, yaitu:
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.
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
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 |
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:
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.
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):
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.
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\) |
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).
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.
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.
Adapun langka-langkah penelitian sebagai berikut:
Mulai.
Input data.
Pembagian data training dan testing .
Pemodelan Gradient Boosting dengan variasi learning rate.
Menentukan iterasi optimal.
Evaluasi model.
Analisis variable importance.
kesimpulan.
Selesai.
Diagram alir penelitian adalah sebagai berikut.
Gambar 3.1 Diagram Alir Penelitian
## Loaded gbm 2.3.1
## This version of gbm is no longer under development. Consider transitioning to gbm3, https://github.com/gbm-developers/gbm3
## Loading required package: ggplot2
## Loading required package: lattice
# 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 ...
## [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.
## 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.
## 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.
# 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
## [1] 60 11
Interpretasi: Data training terdiri atas 140 observasi dan data testing 60 observasi.
# 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.
# 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.
# 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).
# 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.
# 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)## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -5.1205 -1.6919 -0.1933 -0.3976 0.9060 3.9229
## [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.
# 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.
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.
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.
Fransiska, H. (2026). Machine learning and modern prediction. Laboratorium Matematika dan Ilmu Pengetahuan Alam, Universitas Bengkulu.
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.
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
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
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