Machine learning merupakan salah satu pendekatan dalam analisis data yang digunakan untuk mempelajari pola dari data dan menghasilkan prediksi berdasarkan proses pembelajaran. Salah satu metode yang dapat digunakan untuk meningkatkan kemampuan prediksi adalah ensemble learning, yaitu pendekatan yang menggabungkan beberapa model dasar untuk menghasilkan model gabungan dengan kinerja yang lebih baik. Salah satu metode dalam ensemble learning adalah Boosting, yang membentuk model secara berurutan dengan memperhatikan kesalahan prediksi dari model sebelumnya. Setiap model baru berperan dalam memperbaiki kesalahan yang masih tersisa sehingga gabungan beberapa model sederhana dapat menghasilkan prediksi yang lebih baik (Fransiska, 2026).
Metode Boosting dapat diterapkan pada permasalahan klasifikasi maupun regresi melalui algoritma yang berbeda. Adaptive Boosting (AdaBoost) digunakan untuk kasus klasifikasi dengan memberikan bobot lebih besar pada observasi yang salah diklasifikasikan agar model berikutnya lebih memperhatikan observasi tersebut. Sementara itu, Gradient Boosting dapat digunakan untuk kasus regresi dengan membentuk model baru yang mempelajari residual dari model sebelumnya. Penelitian Prianti dkk. (2020) membahas penerapan AdaBoost dalam klasifikasi multikelas dan membandingkan kinerjanya dengan metode K-Nearest Neighbor. Penelitian tersebut menunjukkan bahwa AdaBoost dapat digunakan sebagai salah satu pendekatan dalam membangun model klasifikasi dan mengevaluasi kemampuan prediksinya.
Penerapan Boosting memerlukan evaluasi untuk mengetahui kemampuan model dalam menghasilkan prediksi pada data yang digunakan. Pada kasus klasifikasi, evaluasi dapat dilakukan menggunakan confusion matrix, accuracy, precision, recall, specificity, dan F1-score. Pada kasus regresi, evaluasi dapat dilakukan menggunakan Mean Squared Error (MSE), Root Mean Squared Error (RMSE), Mean Absolute Error (MAE), dan koefisien determinasi \(R^2\). Efendi dkk. (2020) membahas penggunaan AdaBoost yang dikombinasikan dengan pohon klasifikasi dan regresi untuk mengatasi ketidakseimbangan kelas pada klasifikasi status kredit nasabah. Penelitian tersebut menunjukkan relevansi penggunaan metode Boosting dalam pengembangan model klasifikasi. Oleh karena itu, praktikum ini dilakukan untuk memberikan pemahaman mengenai konsep Boosting, melatih keterampilan dalam mengimplementasikan algoritma AdaBoost dan Gradient Boosting menggunakan program R, serta mengevaluasi performa model berdasarkan ukuran evaluasi yang sesuai dengan permasalahan klasifikasi dan regresi.
Machine learning merupakan pendekatan dalam analisis data yang memungkinkan komputer mempelajari pola dan hubungan berdasarkan data untuk menghasilkan prediksi atau keputusan. Proses pembelajaran dilakukan dengan membangun model menggunakan data yang tersedia, kemudian model tersebut digunakan untuk memprediksi hasil pada data baru. Secara umum, permasalahan machine learning dapat dibedakan menjadi klasifikasi dan regresi. Klasifikasi digunakan untuk memprediksi kelas atau kategori suatu observasi, sedangkan regresi digunakan untuk memprediksi nilai numerik. Pemilihan metode pemodelan perlu disesuaikan dengan karakteristik data dan tujuan analisis agar model dapat menghasilkan prediksi yang sesuai.
Anwar dan Permana (2021) membandingkan berbagai metode machine learning untuk memprediksi mahasiswa yang berpotensi mengalami putus studi. Metode yang dibandingkan mencakup AdaBoost, Gradient Boosting, Extreme Gradient Boosting, dan beberapa metode lainnya. Penelitian tersebut menunjukkan pentingnya membandingkan kinerja berbagai model untuk menentukan metode yang sesuai dengan permasalahan yang dianalisis. Salah satu pendekatan yang dapat digunakan untuk meningkatkan kemampuan prediksi adalah ensemble learning, yaitu menggabungkan beberapa model dasar menjadi satu model gabungan.
Ensemble learning merupakan pendekatan pemodelan yang menggabungkan beberapa model dasar (base learner) untuk menghasilkan prediksi gabungan. Pendekatan ini didasarkan pada gagasan bahwa penggabungan beberapa model dapat meningkatkan kemampuan prediksi dibandingkan penggunaan satu model saja. Model dasar yang digunakan dapat berupa pohon keputusan sederhana maupun algoritma pembelajaran lainnya. Hasil prediksi dari model-model tersebut kemudian digabungkan berdasarkan mekanisme tertentu sesuai dengan algoritma yang digunakan (Fransiska, 2026).
Secara umum, metode ensemble learning meliputi Bagging dan Boosting. Bagging membangun beberapa model menggunakan sampel hasil pengambilan ulang dari data pelatihan, kemudian menggabungkan prediksi model-model tersebut. Sementara itu, Boosting membangun model secara berurutan dengan memperhatikan kesalahan prediksi pada tahap sebelumnya. Perbedaan tersebut menyebabkan kedua metode memiliki mekanisme pembelajaran yang berbeda meskipun sama-sama bertujuan meningkatkan kemampuan prediksi.
Pada Bagging, model dasar umumnya dibangun secara relatif independen sehingga proses pembentukannya dapat dilakukan secara paralel. Sebaliknya, Boosting membentuk model secara berurutan karena model berikutnya bergantung pada hasil model sebelumnya. Kontribusi setiap model dalam Boosting juga dapat berbeda berdasarkan mekanisme pembobotan atau pembaruan model yang digunakan. Oleh karena itu, Boosting berfokus pada perbaikan kesalahan prediksi secara bertahap melalui penggabungan beberapa model dasar (Fransiska, 2026).
Boosting merupakan metode ensemble learning yang membangun serangkaian model sederhana secara berurutan. Model pada tahap berikutnya dibentuk dengan memperhatikan kesalahan yang masih dilakukan oleh model sebelumnya. Model sederhana yang digunakan disebut weak learner, yaitu model yang memiliki kemampuan prediksi terbatas ketika digunakan secara individual. Setelah beberapa weak learner digabungkan, diperoleh model akhir yang diharapkan memiliki kemampuan prediksi lebih baik (Fransiska, 2026).
Mekanisme utama Boosting adalah memperbaiki hasil prediksi secara bertahap. Proses pembelajaran dimulai dengan membentuk model awal, kemudian mengevaluasi kesalahan prediksi yang dihasilkan. Informasi mengenai kesalahan tersebut digunakan untuk mengarahkan pembentukan model berikutnya. Proses ini diulangi hingga mencapai jumlah iterasi yang ditentukan atau kondisi penghentian tertentu. Pada Boosting berbasis pohon, pohon keputusan dengan kedalaman terbatas dapat digunakan sebagai weak learner agar setiap model dasar tetap sederhana.
Prianti dkk. (2020) menerapkan Adaptive Boosting (AdaBoost) untuk klasifikasi multikelas dan membandingkannya dengan metode K-Nearest Neighbor. Penelitian tersebut memperoleh akurasi klasifikasi sebesar 84,522% untuk AdaBoost dan 82,087% untuk K-Nearest Neighbor. Hasil tersebut memperlihatkan bahwa AdaBoost dapat digunakan sebagai pendekatan klasifikasi yang kompetitif pada data yang diteliti. Meskipun demikian, kinerja suatu metode tetap bergantung pada karakteristik data, pemilihan parameter, dan prosedur evaluasi yang digunakan.
Beberapa parameter penting dalam Boosting meliputi jumlah model atau iterasi, learning rate, dan kompleksitas model dasar. Jumlah iterasi menentukan banyaknya model yang dibangun, sedangkan learning rate mengatur besarnya kontribusi model baru terhadap model sebelumnya. Kompleksitas model dasar, misalnya melalui kedalaman pohon, memengaruhi kemampuan model dalam mempelajari pola pada data. Jumlah iterasi yang terlalu sedikit dapat menyebabkan underfitting, sedangkan model yang terlalu kompleks berpotensi mengalami overfitting. Oleh karena itu, pemilihan parameter perlu dilakukan dengan mempertimbangkan kinerja model pada data pengujian (Fransiska, 2026).
Adaptive Boosting atau AdaBoost merupakan algoritma Boosting yang umum digunakan untuk permasalahan klasifikasi. Algoritma ini membangun beberapa weak learner secara berurutan dengan memberikan perhatian lebih besar pada observasi yang salah diklasifikasikan oleh model sebelumnya. Pada klasifikasi berbasis pohon, decision stump, yaitu pohon keputusan dengan satu tingkat pemisahan, dapat digunakan sebagai model dasar. Melalui proses pembaruan bobot observasi, model berikutnya diarahkan untuk memperbaiki kesalahan klasifikasi yang masih terjadi (Fransiska, 2026).
Tahap awal AdaBoost adalah memberikan bobot yang sama pada seluruh observasi dalam data pelatihan. Apabila terdapat \(n\) observasi, bobot awal setiap observasi dirumuskan sebagai berikut.
\[ w_i^{(1)}=\frac{1}{n} \]
dengan \(w_i^{(1)}\) merupakan bobot observasi ke-\(i\) pada iterasi pertama dan \(n\) merupakan jumlah observasi dalam data pelatihan.
Selanjutnya, dibentuk weak learner untuk menghasilkan prediksi kelas. Kesalahan klasifikasi terbobot dihitung berdasarkan jumlah bobot observasi yang salah diklasifikasikan dibandingkan dengan jumlah seluruh bobot observasi. Kesalahan tersebut digunakan untuk menentukan kontribusi setiap weak learner terhadap prediksi akhir. Bobot model pada iterasi ke-\(m\) dapat dirumuskan sebagai berikut.
\[ \alpha_m=\log\left(\frac{1-err_m}{err_m}\right) \]
dengan \(\alpha_m\) merupakan bobot kontribusi model ke-\(m\) dan \(err_m\) merupakan tingkat kesalahan klasifikasi terbobot model tersebut. Model dengan tingkat kesalahan lebih rendah memperoleh kontribusi lebih besar terhadap prediksi akhir. Bobot observasi kemudian diperbarui agar observasi yang salah diklasifikasikan memperoleh perhatian lebih besar pada iterasi berikutnya.
Prediksi akhir AdaBoost diperoleh dengan menggabungkan hasil prediksi seluruh weak learner menggunakan pembobotan. Pada klasifikasi biner, prediksi akhir dapat dinyatakan sebagai berikut.
\[ G(x)=\operatorname{sign} \left(\sum_{m=1}^{M}\alpha_mG_m(x)\right) \]
dengan \(G(x)\) merupakan prediksi kelas akhir, \(M\) merupakan jumlah weak learner, \(\alpha_m\) merupakan bobot model ke-\(m\), dan \(G_m(x)\) merupakan prediksi kelas dari model ke-\(m\). Dengan demikian, AdaBoost menggabungkan prediksi beberapa model berdasarkan kontribusi masing-masing model untuk memperoleh keputusan klasifikasi akhir (Fransiska, 2026).
Penerapan AdaBoost juga dapat dikombinasikan dengan pohon klasifikasi dan regresi (Classification and Regression Trees atau CART). Efendi dkk. (2020) membahas kombinasi AdaBoost dan CART untuk mengatasi ketidakseimbangan kelas pada klasifikasi status kredit nasabah bank. Penelitian tersebut menunjukkan penerapan pendekatan ensemble untuk menghadapi permasalahan klasifikasi yang tidak dapat ditangani secara optimal hanya dengan mengandalkan satu model dasar.
Gradient Boosting merupakan metode Boosting yang dapat digunakan untuk permasalahan regresi dengan membentuk model secara bertahap untuk memperbaiki kesalahan prediksi sebelumnya. Pada regresi, kesalahan prediksi dapat diamati melalui residual, yaitu selisih antara nilai aktual dan nilai prediksi. Residual dirumuskan sebagai berikut.
\[ e_i=y_i-\hat{y}_i \]
dengan \(e_i\) merupakan residual observasi ke-\(i\), \(y_i\) merupakan nilai aktual, dan \(\hat{y}_i\) merupakan nilai prediksi model. Residual menunjukkan bagian dari nilai aktual yang belum dapat dijelaskan oleh hasil prediksi model.
Proses Gradient Boosting dimulai dengan membentuk model awal, menghitung residual, kemudian membangun weak learner baru untuk mempelajari kesalahan yang tersisa. Hasil pembelajaran tersebut ditambahkan ke model sebelumnya sehingga prediksi diperbarui secara bertahap. Secara umum, pembaruan model dapat dituliskan sebagai berikut.
\[ f_m(x)=f_{m-1}(x)+\nu h_m(x) \]
dengan \(f_m(x)\) merupakan model pada iterasi ke-\(m\), \(f_{m-1}(x)\) merupakan model pada iterasi sebelumnya, \(h_m(x)\) merupakan weak learner yang dibentuk pada iterasi ke-\(m\), dan \(\nu\) merupakan learning rate. Nilai learning rate menentukan besarnya kontribusi model baru terhadap model sebelumnya. Nilai yang lebih kecil membuat pembaruan model berlangsung lebih bertahap dan umumnya memerlukan jumlah iterasi yang lebih banyak (Fransiska, 2026).
Salah satu pengembangan metode berbasis Gradient Boosting
adalah Extreme Gradient Boosting (XGBoost). Siringoringo dkk.
(2021) menerapkan XGBoost untuk analisis pasar ritel dengan
mengombinasikan pengelompokan dan pengurangan dimensi menggunakan
K-Means Clustering dan Principal Component Analysis.
Penelitian tersebut menunjukkan penggunaan XGBoost dalam analisis data
ritel. XGBoost merupakan pengembangan algoritma gradient
boosting dengan mekanisme dan pengaturan tambahan sehingga tidak
identik dengan implementasi Gradient Boosting dasar menggunakan
fungsi gbm() dalam R.
Pada praktikum ini, Gradient Boosting diterapkan pada data
regresi dengan fungsi gbm() dan respons numerik. Beberapa
parameter yang digunakan meliputi jumlah pohon, kedalaman interaksi,
learning rate, dan jumlah minimum observasi pada setiap simpul
terminal. Penentuan jumlah pohon optimal dapat dilakukan menggunakan
cross-validation untuk membantu memilih model yang memberikan
kinerja prediksi lebih baik pada data yang tidak digunakan untuk
membentuk model (Fransiska, 2026).
Evaluasi kinerja model dilakukan untuk mengetahui kemampuan model dalam menghasilkan prediksi yang sesuai dengan nilai aktual. Ukuran evaluasi yang digunakan perlu disesuaikan dengan jenis permasalahan yang dianalisis. Pada klasifikasi, evaluasi dilakukan dengan membandingkan kelas hasil prediksi dengan kelas aktual. Pada regresi, evaluasi dilakukan dengan mengukur selisih antara nilai prediksi dan nilai aktual (Fransiska, 2026).
Evaluasi klasifikasi dapat dilakukan menggunakan confusion matrix, yaitu tabel yang membandingkan kelas aktual dengan kelas hasil prediksi. Pada klasifikasi biner, confusion matrix terdiri atas empat komponen, yaitu True Positive (TP), True Negative (TN), False Positive (FP), dan False Negative (FN). Keempat komponen tersebut digunakan untuk menghitung beberapa ukuran evaluasi sebagai berikut.
\[ Accuracy=\frac{TP+TN}{TP+TN+FP+FN} \]
\[ Precision=\frac{TP}{TP+FP} \]
\[ Recall=\frac{TP}{TP+FN} \]
\[ Specificity=\frac{TN}{TN+FP} \]
\[ F1=2\frac{Precision\times Recall}{Precision+Recall} \]
Ukuran evaluasi tersebut memberikan informasi yang berbeda mengenai kemampuan klasifikasi. Accuracy menggambarkan ketepatan prediksi secara keseluruhan, sedangkan precision, recall, dan specificity memberikan informasi mengenai ketepatan prediksi pada kelas tertentu. F1-score digunakan untuk menilai keseimbangan antara precision dan recall. Anwar dan Permana (2021) menggunakan sejumlah ukuran evaluasi, termasuk accuracy, precision, recall, dan F1-score, untuk membandingkan kinerja berbagai metode dalam prediksi mahasiswa yang berpotensi mengalami putus studi.
Evaluasi regresi digunakan untuk mengukur besarnya kesalahan prediksi nilai numerik. Beberapa ukuran yang dapat digunakan meliputi Mean Squared Error (MSE), Root Mean Squared Error (RMSE), Mean Absolute Error (MAE), dan koefisien determinasi (\(R^2\)).
\[ MSE=\frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y}_i)^2 \]
\[ RMSE=\sqrt{MSE} \]
\[ MAE=\frac{1}{n}\sum_{i=1}^{n}|y_i-\hat{y}_i| \]
\[ R^2=1-\frac{\sum_{i=1}^{n}(y_i-\hat{y}_i)^2} {\sum_{i=1}^{n}(y_i-\bar{y})^2} \]
dengan \(y_i\) merupakan nilai aktual, \(\hat{y}_i\) merupakan nilai prediksi, \(\bar{y}\) merupakan rata-rata nilai aktual, dan \(n\) merupakan jumlah observasi. Nilai MSE, RMSE, dan MAE yang lebih kecil menunjukkan kesalahan prediksi yang lebih rendah. Sementara itu, nilai \(R^2\) yang lebih tinggi umumnya menunjukkan kemampuan model yang lebih baik dalam menjelaskan variasi respons, dengan tetap memperhatikan karakteristik data yang dianalisis.
Evaluasi regresi juga digunakan dalam pengembangan model berbasis gradient boosting untuk mengetahui ketepatan prediksi pada data pengujian. Dalam praktikum ini, nilai MSE, RMSE, MAE, dan \(R^2\) digunakan untuk membandingkan kinerja model berdasarkan variasi parameter learning rate. Jumlah iterasi optimal ditentukan menggunakan cross-validation agar pemilihan model tidak hanya didasarkan pada hasil prediksi data pelatihan (Fransiska, 2026).
Jenis data yang digunakan dalam praktikum ini adalah data kuantitatif. Data kuantitatif merupakan data yang dinyatakan dalam bentuk angka sehingga dapat digunakan untuk melakukan perhitungan dan analisis statistik. Data yang digunakan mencakup variabel prediktor numerik dan variabel respons numerik yang sesuai untuk analisis regresi.
Data yang digunakan dalam praktikum ini adalah data Friedman yang
dibentuk menggunakan fungsi mlbench.friedman1() dari paket
mlbench dalam program R. Data dibangkitkan sebanyak 200
observasi dengan menggunakan set.seed(234) agar proses
pembentukan data dapat direproduksi. Data tersebut terdiri dari sepuluh
variabel prediktor dan satu variabel respons. Selanjutnya, data dibagi
menjadi data training sebesar 70% dan data testing
sebesar 30%. Data training digunakan untuk membentuk model
Gradient Boosting, sedangkan data testing digunakan
untuk mengevaluasi kinerja model berdasarkan hasil prediksi (Fransiska,
2026).
Variabel penelitian yang digunakan dalam praktikum ini terdiri dari sebelas variabel, yaitu sepuluh variabel prediktor (\(x_1\) hingga \(x_{10}\)) dan satu variabel respons (\(y\)). Seluruh variabel tersebut berbentuk numerik sehingga dapat digunakan dalam pemodelan regresi menggunakan metode Gradient Boosting. Variabel \(x_1\), \(x_2\), \(x_3\), \(x_4\), \(x_5\), \(x_6\), \(x_7\), \(x_8\), \(x_9\), dan \(x_{10}\) merupakan variabel prediktor yang digunakan untuk menjelaskan pola perubahan variabel respons. Sementara itu, variabel \(y\) merupakan variabel respons numerik yang menjadi sasaran prediksi dalam pemodelan regresi. Hubungan antara variabel prediktor dan variabel respons dipelajari melalui pembentukan model Gradient Boosting.
Langkah-langkah analisis yang dilakukan dalam praktikum Boosting untuk kasus regresi adalah sebagai berikut:
gbm, mlbench, dan
caret yang digunakan dalam proses pembentukan data,
pemodelan, dan pembagian data.mlbench.friedman1() dengan
set.seed(234).createDataPartition() dengan
set.seed(234).gbm() dengan distribusi respons Gaussian, jumlah pohon
maksimum sebanyak 1.000, kedalaman interaksi sebesar 2, bag
fraction sebesar 1, validasi silang sebanyak 10 lipatan, dan jumlah
minimum observasi pada simpul terminal sebanyak 5.gbm.perf() dengan
metode "cv".Pembentukan data dilakukan menggunakan fungsi
mlbench.friedman1() dari paket mlbench. Data
dibangkitkan sebanyak 200 observasi dengan 10 variabel prediktor, yaitu
x.1 sampai x.10, dan satu variabel respons,
yaitu y. Pembangkitan data dilakukan menggunakan
set.seed(234) agar hasil yang diperoleh dapat direproduksi.
Pemeriksaan data dilakukan menggunakan fungsi str(),
summary(), dan dim() untuk mengetahui
struktur, ringkasan statistik, serta ukuran data.
## 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
# B1. Membentuk dataset Friedman
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 ...
## 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
## [1] 200 11
Berdasarkan hasil pemeriksaan struktur data, diperoleh 200 observasi
dan 11 variabel yang terdiri atas 10 variabel prediktor serta satu
variabel respons. Seluruh variabel memiliki tipe numerik sehingga dapat
digunakan dalam pemodelan regresi Gradient Boosting. Variabel
y digunakan sebagai variabel respons, sedangkan variabel
x.1 hingga x.10 digunakan sebagai variabel
prediktor.
Hasil ringkasan statistik menunjukkan bahwa variabel respons
y memiliki nilai minimum sebesar 3,082 dan maksimum sebesar
26,146. Nilai kuartil pertama sebesar 10,593, median sebesar 13,810,
kuartil ketiga sebesar 18,063, dan rata-rata sebesar 14,270. Hasil
tersebut menunjukkan bahwa nilai respons memiliki rentang yang cukup
lebar. Informasi ini menjadi gambaran awal mengenai karakteristik data
sebelum dilakukan pemodelan.
Pembagian data dilakukan untuk memisahkan data yang digunakan dalam
pembentukan model dan data yang digunakan untuk mengevaluasi kemampuan
prediksi model. Proporsi pembagian yang digunakan adalah 70% untuk data
pelatihan (training) dan 30% untuk data pengujian
(testing). Pembagian dilakukan menggunakan fungsi
createDataPartition() dari paket caret dengan
variabel respons y sebagai dasar pembagian. Penggunaan
set.seed(234) bertujuan agar pembagian data dapat
direproduksi.
# B2. Membagi data training dan 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
## [1] 60 11
Hasil pembagian menunjukkan bahwa data pelatihan terdiri atas 140 observasi dan 11 variabel, sedangkan data pengujian terdiri atas 60 observasi dan 11 variabel. Data pelatihan digunakan untuk membentuk model Gradient Boosting Regression dan menentukan jumlah iterasi optimal melalui cross-validation. Data pengujian digunakan untuk mengukur kemampuan prediksi model terhadap observasi yang tidak digunakan dalam proses pelatihan.
Pemodelan dilakukan menggunakan fungsi gbm() dari paket
gbm dengan pendekatan regresi melalui
distribution = "gaussian". Tiga nilai shrinkage
yang dibandingkan adalah 0,01; 0,05; dan 0,10. Nilai shrinkage
merupakan faktor pengali yang mengatur kontribusi setiap pohon dalam
proses pembentukan model. Nilai yang lebih kecil menghasilkan pembaruan
model yang lebih bertahap, sedangkan nilai yang lebih besar memungkinkan
model mencapai hasil tertentu dengan jumlah iterasi yang lebih
sedikit.
Parameter n.trees ditetapkan sebesar 3.000 untuk
memberikan kesempatan kepada model dengan nilai shrinkage kecil
mencapai iterasi optimal. Parameter interaction.depth = 2
membatasi kedalaman interaksi pohon, sedangkan
bag.fraction = 1 menggunakan seluruh data pelatihan pada
setiap tahap pembentukan pohon. Parameter cv.folds = 10
digunakan untuk melakukan validasi silang sebanyak 10 lipatan dan
n.minobsinnode = 5 menetapkan jumlah minimum observasi pada
simpul terminal.
# B3. Membentuk model Gradient Boosting
shrink.vals <- c(0.01, 0.05, 0.10)
n.max <- 3000
boost.list <- list()
best.iter <- numeric(length(shrink.vals))
names(best.iter) <- paste0("nu = ", shrink.vals)
for (i in seq_along(shrink.vals)) {
set.seed(234)
boost.list[[i]] <- gbm(
formula = y ~ .,
data = reg.train,
distribution = "gaussian",
n.trees = n.max,
interaction.depth = 2,
shrinkage = shrink.vals[i],
bag.fraction = 1,
cv.folds = 10,
n.minobsinnode = 5,
verbose = FALSE
)
}
names(boost.list) <- names(best.iter)
boost.list## $`nu = 0.01`
## gbm(formula = y ~ ., distribution = "gaussian", data = reg.train,
## n.trees = n.max, interaction.depth = 2, n.minobsinnode = 5,
## shrinkage = shrink.vals[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 2038.
## There were 10 predictors of which 10 had non-zero influence.
##
## $`nu = 0.05`
## gbm(formula = y ~ ., distribution = "gaussian", data = reg.train,
## n.trees = n.max, interaction.depth = 2, n.minobsinnode = 5,
## shrinkage = shrink.vals[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 458.
## There were 10 predictors of which 10 had non-zero influence.
##
## $`nu = 0.1`
## gbm(formula = y ~ ., distribution = "gaussian", data = reg.train,
## n.trees = n.max, interaction.depth = 2, n.minobsinnode = 5,
## shrinkage = shrink.vals[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.
Hasil pemodelan menunjukkan bahwa ketiga model berhasil dibentuk dengan jumlah maksimum 3.000 iterasi. Seluruh model menggunakan 10 variabel prediktor dan masing-masing menunjukkan bahwa seluruh prediktor memiliki pengaruh bukan nol terhadap model. Meskipun demikian, besarnya kontribusi setiap prediktor tidak harus sama.
Perbedaan nilai shrinkage menghasilkan perbedaan jumlah iterasi optimal. Oleh karena itu, pemilihan model tidak cukup dilakukan berdasarkan nilai shrinkage saja. Evaluasi perlu mempertimbangkan jumlah iterasi optimal, galat validasi silang, serta ukuran kesalahan prediksi pada data pengujian.
Jumlah iterasi optimal ditentukan menggunakan fungsi
gbm.perf() dengan metode "cv". Penentuan ini
didasarkan pada galat cross-validation (CV error),
yaitu galat yang diperoleh selama proses validasi silang. Iterasi
optimal merupakan jumlah pohon yang menghasilkan galat validasi silang
minimum sehingga dapat digunakan sebagai acuan untuk melakukan
prediksi.
# B4. Menentukan iterasi optimal
par(mfrow = c(1, 3))
for (i in seq_along(shrink.vals)) {
best.iter[i] <- gbm.perf(
boost.list[[i]],
method = "cv",
plot.it = TRUE
)
title(main = paste(
"CV Error, nu =",
shrink.vals[i]
))
}## nu = 0.01 nu = 0.05 nu = 0.1
## 2038 458 212
# Memeriksa apakah iterasi optimal mencapai batas maksimum
if (any(best.iter >= n.max)) {
warning(
"Ada model yang iterasi optimalnya = n.trees maksimum; naikkan n.max."
)
}Hasil penentuan iterasi optimal menunjukkan bahwa model dengan shrinkage 0,01 mencapai iterasi optimal pada pohon ke-2.038, model dengan shrinkage 0,05 pada pohon ke-458, dan model dengan shrinkage 0,10 pada pohon ke-212. Hasil tersebut menunjukkan bahwa model dengan nilai shrinkage lebih besar membutuhkan jumlah iterasi yang lebih sedikit untuk mencapai galat validasi silang minimum.
Tabel 4.1 Jumlah Iterasi Optimal Setiap Model
| Shrinkage | Iterasi optimal |
|---|---|
| 0,01 | 2.038 |
| 0,05 | 458 |
| 0,10 | 212 |
Perbedaan jumlah iterasi tersebut menunjukkan bahwa nilai shrinkage memengaruhi kecepatan proses pembelajaran model. Nilai shrinkage sebesar 0,01 menghasilkan pembaruan model yang lebih kecil sehingga membutuhkan lebih banyak iterasi. Sebaliknya, nilai shrinkage sebesar 0,10 memungkinkan model mencapai kondisi optimal dalam jumlah iterasi yang lebih sedikit.
Berdasarkan grafik CV error, galat validasi silang menurun pada tahap awal pembentukan model, kemudian mencapai titik minimum dan cenderung mendatar atau mengalami perubahan kecil. Titik minimum tersebut menjadi dasar pemilihan jumlah iterasi optimal. Ketiga model memiliki iterasi optimal di bawah batas maksimum 3.000 pohon sehingga tidak ditemukan kondisi ketika jumlah iterasi optimal mencapai batas yang ditetapkan.
Prediksi dilakukan terhadap 60 observasi pada data pengujian menggunakan jumlah iterasi optimal dari setiap model. Pada tahap ini, hasil prediksi model terbaik ditentukan berdasarkan hasil evaluasi ketiga model pada bagian berikutnya. Dengan demikian, tabel prediksi dan residual yang disajikan pada subbab ini difokuskan pada model dengan shrinkage 0,10 dan 212 iterasi optimal.
Residual merupakan selisih antara nilai aktual dan nilai prediksi. Residual dihitung menggunakan persamaan:
\[e_i = y_i - \hat{y}_i\]
dengan \(e_i\) menyatakan residual observasi ke-\(i\), \(y_i\) menyatakan nilai aktual, dan \(\hat{y}_i\) menyatakan nilai prediksi. Residual positif menunjukkan bahwa nilai aktual lebih besar daripada nilai prediksi, sedangkan residual negatif menunjukkan bahwa nilai prediksi lebih besar daripada nilai aktual.
# B5. Prediksi data testing untuk setiap model
actual <- reg.test$y
pred.list <- list()
for (i in seq_along(shrink.vals)) {
pred.list[[i]] <- as.numeric(
predict(
boost.list[[i]],
newdata = reg.test,
n.trees = best.iter[i],
type = "response"
)
)
}
names(pred.list) <- names(best.iter)
# Menentukan model terbaik berdasarkan MSE
eval.reg <- function(actual, pred) {
MSE <- mean((actual - pred)^2)
RMSE <- sqrt(MSE)
MAE <- mean(abs(actual - pred))
R2 <- 1 - sum((actual - pred)^2) /
sum((actual - mean(actual))^2)
c(
MSE = MSE,
RMSE = RMSE,
MAE = MAE,
R_Square = R2
)
}
evaluasi.reg <- data.frame(
Shrinkage = shrink.vals,
Iterasi_Optimal = as.numeric(best.iter),
t(sapply(pred.list, function(p) eval.reg(actual, p)))
)
rownames(evaluasi.reg) <- NULL
idx.best <- which.min(evaluasi.reg$MSE)
# Mengambil hasil model terbaik
model.best <- boost.list[[idx.best]]
pred.best <- pred.list[[idx.best]]
# Membentuk tabel aktual, prediksi, dan residual
hasil.reg <- data.frame(
Aktual = actual,
Prediksi = pred.best,
Residual = actual - pred.best
)
head(hasil.reg, 10)Berdasarkan hasil prediksi, tabel yang dihasilkan memuat nilai aktual, nilai prediksi, dan residual untuk setiap observasi pada data pengujian. Sepuluh baris pertama ditampilkan sebagai contoh untuk memperlihatkan perbedaan antara nilai aktual dan nilai prediksi yang dihasilkan model terbaik.
Residual digunakan untuk mengetahui besarnya kesalahan prediksi pada setiap observasi. Semakin kecil nilai absolut residual, semakin dekat nilai prediksi dengan nilai aktual. Sebaliknya, residual dengan nilai absolut yang besar menunjukkan bahwa model menghasilkan kesalahan prediksi yang lebih besar pada observasi tersebut.
Evaluasi dilakukan menggunakan Mean Squared Error (MSE), Root Mean Squared Error (RMSE), Mean Absolute Error (MAE), dan koefisien determinasi \((R^2)\). MSE mengukur rata-rata kuadrat kesalahan prediksi, RMSE merupakan akar kuadrat MSE, sedangkan MAE mengukur rata-rata nilai absolut kesalahan prediksi. Nilai MSE, RMSE, dan MAE yang lebih kecil menunjukkan kesalahan prediksi yang lebih rendah. Sementara itu, nilai \(R^2\) yang lebih besar menunjukkan bahwa model menjelaskan proporsi variasi nilai respons yang lebih tinggi pada data pengujian.
Ukuran evaluasi dihitung menggunakan persamaan berikut.
\[\mathrm{MSE}=\frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y}_i)^2\]
\[\mathrm{RMSE}=\sqrt{\mathrm{MSE}}\]
\[\mathrm{MAE}=\frac{1}{n}\sum_{i=1}^{n}|y_i-\hat{y}_i|\]
\[R^2=1-\frac{\sum_{i=1}^{n}(y_i-\hat{y}_i)^2}{\sum_{i=1}^{n}(y_i-\bar{y})^2}\]
# B6. Evaluasi model regresi
evaluasi.reg <- data.frame(
Shrinkage = shrink.vals,
Iterasi_Optimal = as.numeric(best.iter),
t(sapply(pred.list, function(p) eval.reg(actual, p)))
)
rownames(evaluasi.reg) <- NULL
round(evaluasi.reg, 4)# Menentukan model terbaik berdasarkan MSE terkecil
idx.best <- which.min(evaluasi.reg$MSE)
cat(
"Model terbaik: shrinkage =",
evaluasi.reg$Shrinkage[idx.best],
"dengan iterasi optimal =",
evaluasi.reg$Iterasi_Optimal[idx.best],
"\n"
)## Model terbaik: shrinkage = 0.1 dengan iterasi optimal = 212
Tabel 4.2 Hasil Evaluasi Model Gradient Boosting Regression
| Shrinkage | Iterasi optimal | MSE | RMSE | MAE | \(R^2\) |
|---|---|---|---|---|---|
| 0,01 | 2.038 | 4,2550 | 2,0628 | 1,5951 | 0,8225 |
| 0,05 | 458 | 4,2639 | 2,0649 | 1,6008 | 0,8221 |
| 0,10 | 212 | 4,0312 | 2,0078 | 1,5579 | 0,8318 |
Berdasarkan Tabel 4.2, model dengan shrinkage 0,10 menghasilkan MSE sebesar 4,0312, RMSE sebesar 2,0078, dan MAE sebesar 1,5579. Ketiga nilai tersebut merupakan yang terkecil dibandingkan dengan dua model lainnya. Model ini juga menghasilkan nilai \(R^2\) terbesar, yaitu 0,8318. Hasil tersebut menunjukkan bahwa model dengan shrinkage 0,10 memiliki kinerja prediksi terbaik di antara ketiga model yang dibandingkan.
Nilai \(R^2\) sebesar 0,8318 menunjukkan bahwa sekitar 83,18% variasi nilai aktual pada data pengujian dapat dijelaskan oleh prediksi model berdasarkan ukuran koefisien determinasi yang digunakan. Sisanya, sekitar 16,82%, merupakan variasi yang tidak dijelaskan oleh model. Nilai tersebut tidak berarti bahwa setiap prediksi memiliki ketepatan sebesar 83,18%, tetapi menggambarkan kemampuan model dalam menjelaskan variasi respons pada data pengujian.
Dengan mempertimbangkan nilai MSE, RMSE, MAE, dan \(R^2\), model dengan shrinkage 0,10 dan 212 iterasi optimal dipilih sebagai model terbaik. Model tersebut selanjutnya digunakan untuk analisis nilai aktual dan prediksi, pemeriksaan residual, serta penentuan tingkat kepentingan variabel.
Visualisasi nilai aktual dan prediksi digunakan untuk menilai kedekatan hasil prediksi terhadap nilai aktual. Grafik dibuat dengan menempatkan nilai aktual pada sumbu horizontal dan nilai prediksi pada sumbu vertikal. Garis diagonal menunjukkan kondisi ketika nilai prediksi sama dengan nilai aktual. Titik yang semakin dekat dengan garis tersebut menunjukkan bahwa hasil prediksi semakin mendekati nilai aktual.
# B7. Plot nilai aktual dan prediksi model terbaik
plot(
actual,
pred.best,
pch = 19,
xlab = "Nilai Aktual",
ylab = "Nilai Prediksi",
main = paste(
"Aktual vs Prediksi, nu =",
shrink.vals[idx.best]
)
)
abline(
a = 0,
b = 1,
lty = 2,
lwd = 2
)Berdasarkan grafik aktual dan prediksi model Gradient Boosting Regression dengan shrinkage sebesar 0,10, titik-titik pengamatan menunjukkan kecenderungan mengikuti garis diagonal, meskipun masih terdapat beberapa titik yang menyimpang cukup jauh. Pada nilai aktual yang relatif rendah, beberapa nilai prediksi terlihat lebih tinggi daripada nilai aktual. Sebaliknya, pada beberapa nilai aktual yang tinggi, nilai prediksi berada di bawah nilai aktual. Pola tersebut menunjukkan bahwa model masih mengalami kesalahan prediksi pada sejumlah pengamatan dan cenderung menghasilkan prediksi yang mendekati nilai tengah respons. Hasil evaluasi menunjukkan nilai MSE sebesar 4,0312 dan \(R^2\) sebesar 0,8318, yang menunjukkan bahwa model mampu menjelaskan sebagian besar variasi nilai respons pada data pengujian, meskipun belum menghasilkan prediksi yang sepenuhnya sesuai dengan nilai aktual.
Plot residual digunakan untuk memeriksa pola kesalahan prediksi model. Pada grafik ini, nilai prediksi ditempatkan pada sumbu horizontal, sedangkan residual ditempatkan pada sumbu vertikal. Garis horizontal pada residual nol digunakan sebagai acuan untuk melihat apakah residual tersebar di sekitar nol atau menunjukkan pola tertentu.
# B8. Plot residual model terbaik
residual.best <- actual - pred.best
plot(
pred.best,
residual.best,
pch = 19,
xlab = "Nilai Prediksi",
ylab = "Residual",
main = paste(
"Residual Plot, nu =",
shrink.vals[idx.best]
)
)
abline(
h = 0,
lty = 2,
lwd = 2
)Berdasarkan grafik residual model Gradient Boosting Regression dengan shrinkage sebesar 0,10, residual tersebar di atas dan di bawah garis nol dengan rentang sekitar −5 hingga 4. Sebagian besar titik berada pada rentang nilai prediksi sekitar 10–18, dengan beberapa residual negatif yang cukup besar. Terdapat pula beberapa residual positif pada nilai prediksi yang lebih tinggi. Pola tersebut menunjukkan bahwa model menghasilkan kesalahan prediksi dengan arah dan besaran yang berbeda pada setiap pengamatan. Meskipun sebaran titik tidak memperlihatkan pola lengkung atau bentuk corong yang jelas, beberapa residual yang cukup besar menunjukkan bahwa model masih belum mampu memprediksi seluruh pengamatan dengan baik. Oleh karena itu, grafik residual melengkapi hasil evaluasi numerik dengan memperlihatkan penyimpangan prediksi yang masih terjadi pada model terbaik.
Analisis tingkat kepentingan variabel (variable importance)
dilakukan untuk mengetahui kontribusi relatif setiap prediktor dalam
pembentukan model terbaik. Fungsi summary() pada model
Gradient Boosting menghasilkan nilai relative
influence untuk setiap prediktor. Nilai tersebut menunjukkan
besarnya kontribusi relatif variabel dalam proses pembentukan pohon pada
model, dengan total pengaruh relatif dinormalisasi menjadi 100%.
# B9. Variable importance model terbaik
model.best <- boost.list[[idx.best]]
importance.reg <- summary(
model.best,
n.trees = best.iter[idx.best],
plotit = FALSE
)
importance.reg# Plot variable importance
barplot(
importance.reg$rel.inf,
names.arg = importance.reg$var,
las = 2,
main = paste(
"Variable Importance - Gradient Boosting, nu =",
shrink.vals[idx.best]
),
ylab = "Relative Influence"
)Tabel 4.3 Tingkat Kepentingan Variabel pada Model Terbaik
| Variabel | Relative influence (%) |
|---|---|
| x.4 | 38,4746 |
| x.1 | 28,2478 |
| x.2 | 13,8418 |
| x.3 | 11,7264 |
| x.5 | 5,4518 |
| x.6 | 1,0221 |
| x.7 | 0,4197 |
| x.10 | 0,4045 |
| x.9 | 0,2587 |
| x.8 | 0,1526 |
Berdasarkan Tabel 4.3, variabel x.4 memiliki nilai
relative influence terbesar, yaitu sekitar 38,47%. Variabel
berikutnya adalah x.1 sebesar 28,25%, x.2
sebesar 13,84%, dan x.3 sebesar 11,73%. Hasil tersebut
menunjukkan bahwa keempat variabel tersebut memberikan kontribusi
relatif terbesar dalam pembentukan model terbaik.
Variabel x.5 memiliki kontribusi sebesar 5,45%,
sedangkan variabel x.6 hingga x.10 memiliki
kontribusi relatif yang jauh lebih kecil. Variabel x.8
menjadi variabel dengan nilai relative influence terendah,
yaitu sekitar 0,15%. Perbedaan nilai tersebut menunjukkan bahwa
kontribusi prediktor terhadap pembentukan model tidak merata.
Hasil ini menggambarkan tingkat kepentingan relatif variabel dalam model yang terbentuk. Nilai relative influence yang tinggi tidak secara langsung menunjukkan hubungan sebab-akibat antara prediktor dan respons. Interpretasinya terbatas pada kontribusi variabel dalam proses pembentukan model Gradient Boosting Regression.
Perbandingan galat validasi silang dilakukan untuk mengetahui nilai galat minimum yang diperoleh masing-masing model selama proses pelatihan. Nilai ini digunakan bersama jumlah iterasi optimal dan ukuran evaluasi data pengujian untuk memberikan gambaran mengenai kinerja model.
# B10. Perbandingan minimum CV error
cv.error <- sapply(
seq_along(shrink.vals),
function(i) {
min(boost.list[[i]]$cv.error)
}
)
hasil.cv <- data.frame(
Shrinkage = shrink.vals,
Iterasi_Optimal = as.numeric(best.iter),
Min_CV_Error = round(cv.error, 4)
)
hasil.cvTabel 4.4 Perbandingan Galat Minimum Cross-Validation
| Shrinkage | Iterasi optimal | Galat CV minimum |
|---|---|---|
| 0,01 | 2.038 | 4,0047 |
| 0,05 | 458 | 4,0046 |
| 0,10 | 212 | 3,9630 |
Berdasarkan Tabel 4.4, model dengan shrinkage 0,10 menghasilkan galat cross-validation minimum sebesar 3,9630. Nilai tersebut lebih rendah daripada model dengan shrinkage 0,01 sebesar 4,0047 dan model dengan shrinkage 0,05 sebesar 4,0046. Hasil ini menunjukkan bahwa model dengan shrinkage 0,10 memberikan galat validasi silang terkecil di antara ketiga model yang dibandingkan.
Hasil perbandingan galat validasi silang sejalan dengan hasil evaluasi pada data pengujian. Model dengan shrinkage 0,10 memiliki nilai MSE, RMSE, dan MAE terendah serta nilai \(R^2\) tertinggi. Model tersebut juga mencapai iterasi optimal paling sedikit, yaitu 212 pohon. Dengan demikian, pemilihan model terbaik didukung oleh hasil validasi silang dan ukuran kesalahan prediksi pada data pengujian.
Secara keseluruhan, penerapan Gradient Boosting Regression
pada data Friedman menunjukkan bahwa nilai shrinkage
memengaruhi jumlah iterasi optimal dan hasil prediksi. Dari ketiga model
yang dibandingkan, model dengan shrinkage 0,10 dan 212 iterasi
optimal merupakan model terbaik berdasarkan hasil evaluasi yang
diperoleh. Variabel x.4 menjadi prediktor dengan kontribusi
relatif terbesar dalam model tersebut, diikuti oleh x.1,
x.2, dan x.3. Hasil ini menunjukkan bahwa
pemilihan model perlu mempertimbangkan galat validasi silang, ukuran
kesalahan prediksi, kemampuan menjelaskan variasi respons, serta
kontribusi relatif variabel prediktor.
Boosting merupakan salah satu metode ensemble learning yang menggabungkan sejumlah model pembelajaran lemah secara bertahap untuk menghasilkan model dengan kemampuan prediksi yang lebih baik. Setiap model baru dibentuk untuk memperbaiki kesalahan model sebelumnya sehingga hasil prediksi akhir diperoleh melalui penggabungan kontribusi model-model tersebut. Pemahaman mengenai konsep Boosting memberikan dasar untuk mengetahui bagaimana penggabungan beberapa model dapat digunakan dalam menyelesaikan permasalahan prediksi.
Metode Boosting dapat diimplementasikan menggunakan bahasa pemrograman R untuk menyelesaikan permasalahan klasifikasi maupun regresi. Pada kasus klasifikasi, model digunakan untuk memprediksi kelas suatu observasi, sedangkan pada kasus regresi, model digunakan untuk memprediksi nilai numerik. Implementasi dilakukan dengan menentukan variabel respons dan prediktor, memilih parameter model yang sesuai, serta membentuk model berdasarkan data yang tersedia.
Evaluasi performa model merupakan tahapan penting untuk mengetahui kemampuan model dalam menghasilkan prediksi. Pemilihan ukuran evaluasi perlu disesuaikan dengan jenis permasalahan yang dianalisis. Pada kasus regresi, ukuran evaluasi yang dapat digunakan meliputi Mean Squared Error (MSE), Root Mean Squared Error (RMSE), Mean Absolute Error (MAE), dan koefisien determinasi (\(R^2\)). Pada kasus klasifikasi, evaluasi dapat dilakukan menggunakan ukuran seperti akurasi, presisi, sensitivitas, dan F1-score. Hasil evaluasi tersebut dapat digunakan sebagai dasar untuk membandingkan dan memilih model yang memiliki performa terbaik.
Berdasarkan hasil analisis pada Bab IV, model Gradient Boosting
Regression terbaik diperoleh pada nilai shrinkage sebesar
0,10 dengan 212 iterasi optimal. Model tersebut menghasilkan MSE sebesar
4,0312, RMSE sebesar 2,0078, MAE sebesar 1,5579, dan \(R^2\) sebesar 0,8318. Model dengan nilai
shrinkage tersebut memberikan hasil terbaik dibandingkan model
dengan nilai shrinkage 0,01 dan 0,05 berdasarkan ukuran
evaluasi yang digunakan. Hasil analisis variable importance
juga menunjukkan bahwa variabel x.4 memiliki kontribusi
relatif terbesar, yaitu 38,4746%, diikuti oleh x.1 sebesar
28,2478%. Dengan demikian, pemodelan Gradient Boosting
Regression pada data Friedman menunjukkan bahwa pemilihan
parameter dan evaluasi model berperan penting dalam memperoleh model
dengan kemampuan prediksi yang baik.
Anwar, M. T., & Permana, D. R. A. (2021). Perbandingan performa model data mining untuk prediksi dropout mahasiswa. Jurnal Teknologi dan Manajemen, 19(2), 87–94. https://doi.org/10.52330/jtm.v19i2.34
Efendi, A., Fitriani, R., Naufal, H. I., & Rahayudi, B. (2020). Ensemble AdaBoost in classification and regression trees to overcome class imbalance in credit status of bank customers. Journal of Theoretical and Applied Information Technology, 98(17), 3428–3437.
Fransiska, H. (2026). Modul Praktikum Machine Learning and Modern Prediction. Laboratorium Matematika Universitas Bengkulu.
Prianti, A. I., Santoso, R., & Hakim, A. R. (2020). Perbandingan metode K-Nearest Neighbor dan Adaptive Boosting pada kasus klasifikasi multi kelas. Jurnal Gaussian, 9(3), 346–354. https://doi.org/10.14710/j.gauss.9.3.346-354
Siringoringo, R., Perangin-angin, R., & Purba, M. J. (2021). Segmentasi dan peramalan pasar retail menggunakan XGBoost dan Principal Component Analysis. METHOMIKA: Jurnal Manajemen Informatika & Komputerisasi Akuntansi, 5(1), 42–47. https://doi.org/10.46880/jmika.Vol5No1.pp42-47