BAB I PENDAHULUAN

1.1 Latar Belakang Masalah

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.

1.2 Rumusan Masalah

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

1.3 Tujuan

  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 Machine Learning

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.

2.2 Ensemble Learning

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).

2.3 Boosting

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).

2.4 Adaptive Boosting (AdaBoost)

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.

2.5 Gradient Boosting

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).

2.6 Evaluasi Kinerja Model Boosting

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).

2.6.1 Evaluasi Klasifikasi

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.

  1. Accuracy merupakan proporsi seluruh observasi yang diklasifikasikan dengan benar.

\[ Accuracy=\frac{TP+TN}{TP+TN+FP+FN} \]

  1. Precision merupakan proporsi prediksi positif yang benar-benar termasuk kelas positif.

\[ Precision=\frac{TP}{TP+FP} \]

  1. Recall atau sensitivitas merupakan proporsi observasi positif aktual yang berhasil diprediksi sebagai positif.

\[ Recall=\frac{TP}{TP+FN} \]

  1. Specificity merupakan proporsi observasi negatif aktual yang berhasil diprediksi sebagai negatif.

\[ Specificity=\frac{TN}{TN+FP} \]

  1. F1-score merupakan rata-rata harmonik antara precision dan recall.

\[ 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.

2.6.2 Evaluasi Regresi

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\)).

  1. Mean Squared Error (MSE) merupakan rata-rata kuadrat selisih antara nilai aktual dan nilai prediksi.

\[ MSE=\frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y}_i)^2 \]

  1. Root Mean Squared Error (RMSE) merupakan akar kuadrat dari MSE sehingga ukuran ini dinyatakan dalam satuan yang sama dengan variabel respons.

\[ RMSE=\sqrt{MSE} \]

  1. Mean Absolute Error (MAE) merupakan rata-rata nilai absolut selisih antara nilai aktual dan nilai prediksi.

\[ MAE=\frac{1}{n}\sum_{i=1}^{n}|y_i-\hat{y}_i| \]

  1. Koefisien determinasi (\(R^2\)) menggambarkan kemampuan model dalam menjelaskan variasi nilai aktual berdasarkan hasil prediksi. Salah satu bentuk perhitungannya adalah sebagai berikut.

\[ 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).

BAB III METODE PENELITIAN

3.1 Sumber Data

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).

3.2 Variabel Penelitian

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.

3.3 Langkah-langkah Analisis

Langkah-langkah analisis yang dilakukan dalam praktikum Boosting untuk kasus regresi adalah sebagai berikut:

  1. Membuka aplikasi RStudio.
  2. Memanggil paket gbm, mlbench, dan caret yang digunakan dalam proses pembentukan data, pemodelan, dan pembagian data.
  3. Membangkitkan data Friedman sebanyak 200 observasi menggunakan fungsi mlbench.friedman1() dengan set.seed(234).
  4. Memeriksa struktur, ringkasan, jumlah observasi, dan jumlah variabel pada data yang digunakan.
  5. Membagi data menjadi data training sebesar 70% dan data testing sebesar 30% menggunakan createDataPartition() dengan set.seed(234).
  6. Membentuk model Gradient Boosting menggunakan fungsi 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.
  7. Membentuk tiga model Gradient Boosting menggunakan nilai learning rate (shrinkage) yang berbeda, yaitu 0,01, 0,05, dan 0,10, dengan parameter lainnya dibuat tetap.
  8. Menentukan jumlah iterasi optimal pada setiap model menggunakan cross-validation melalui fungsi gbm.perf() dengan metode "cv".
  9. Melakukan prediksi terhadap data testing menggunakan masing-masing model berdasarkan jumlah iterasi optimal yang telah diperoleh.
  10. Membandingkan nilai aktual dan nilai prediksi serta menghitung residual dari setiap model.
  11. Mengevaluasi kinerja setiap model menggunakan Mean Squared Error (MSE), Root Mean Squared Error (RMSE), Mean Absolute Error (MAE), dan koefisien determinasi \(R^2\).
  12. Membuat visualisasi perbandingan nilai aktual dan prediksi untuk mengetahui kedekatan hasil prediksi terhadap nilai aktual.
  13. Membuat residual plot untuk mengamati pola kesalahan prediksi pada setiap model.
  14. Mengidentifikasi tingkat kepentingan variabel (variable importance) berdasarkan hasil pemodelan Gradient Boosting.
  15. Membandingkan hasil evaluasi dari ketiga nilai learning rate untuk menentukan model dengan kinerja prediksi terbaik.
  16. Menginterpretasikan hasil analisis berdasarkan jumlah iterasi optimal, ukuran evaluasi regresi, visualisasi, dan tingkat kepentingan variabel.

BAB IV HASIL DAN PEMBAHASAN

4.1 Pembentukan dan Pemeriksaan Data

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.

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
# 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 ...
# Melihat ringkasan statistik
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
# Melihat jumlah observasi dan variabel
dim(reg.data)
## [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.

4.2 Pembagian Data Pelatihan dan Pengujian

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
dim(reg.test)
## [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.

4.3 Pembentukan Model Gradient Boosting Regression

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.

4.4 Penentuan Jumlah Iterasi Optimal

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]
  ))
}

par(mfrow = c(1, 1))

best.iter
## 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.

4.5 Prediksi Data Pengujian dan Perhitungan Residual

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.

4.6 Evaluasi dan Pemilihan Model Terbaik

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.

4.7 Visualisasi Nilai Aktual dan Prediksi

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.

4.8 Analisis Plot Residual

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.

4.9 Analisis Tingkat Kepentingan Variabel

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.

4.10 Perbandingan Galat Cross-Validation dan Hasil Akhir Model

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.cv
# Tabel evaluasi akhir
round(evaluasi.reg, 4)

Tabel 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.

BAB V KESIMPULAN

5.1 Kesimpulan

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.

DAFTAR PUSTAKA

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