BAB I PENDAHULUAN

1.1 Latar Belakang

Perkembangan machine learning dalam beberapa tahun terakhir menunjukkan peningkatan penggunaan metode ensemble learning untuk membangun model prediksi yang lebih akurat dan stabil. Ensemble learning menggabungkan beberapa model dasar (base learners) untuk menghasilkan satu prediksi akhir. Salah satu metode yang banyak digunakan adalah bagging (bootstrap aggregating), yaitu teknik yang membentuk beberapa sampel pelatihan melalui proses bootstrap, melatih model pada masing-masing sampel, kemudian menggabungkan hasil prediksi melalui voting atau rata-rata. Perkembangan ini terlihat dalam penelitian prediksi kesehatan. Saha et al. (2026) melakukan tinjauan sistematis terhadap 287 studi yang diterbitkan pada periode 2020-2024 dan menyeleksi 91 artikel untuk dianalisis. Hasilnya menunjukkan bahwa sekitar \(40\%\) penelitian menggunakan metode stacking atau ensemble hibrida, sedangkan sekitar \(20\%\) menggunakan metode sederhana berbasis bagging atau voting. Model stacking dan ensemble hibrida dilaporkan mampu menghasilkan akurasi sekitar \(94\% - 97\%\), sementara metode bagging sederhana cenderung menunjukkan performa yang lebih rendah pada berbagai kasus prediksi kesehatan.

Penggunaan bagging menjadi relevan karena model machine learning tunggal, khususnya pohon keputusan, memiliki sensitivitas yang tinggi terhadap perubahan data pelatihan. Perubahan kecil pada data dapat menghasilkan struktur pohon dan prediksi yang berbeda. Bagging berupaya mengatasi masalah tersebut dengan melatih beberapa model pada sampel data yang berbeda sehingga varians model dapat dikurangi dan prediksi menjadi lebih stabil (Zhang et al., 2022). Salah satu pengembangan bagging yang paling populer adalah Random Forest, yang menggabungkan proses bootstrap sampling dengan pemilihan acak sebagian variabel pada setiap pemisahan node. Meskipun demikian, penerapan bagging tidak selalu menghasilkan performa terbaik. Dalam tinjauan terhadap 45 penelitian prediksi penyakit, Mahajan et al. (2023) menemukan bahwa bagging digunakan dalam 41 penelitian, tetapi hanya menghasilkan performa terbaik pada 11 penelitian atau sekitar \(26,8\%\). Sebagai perbandingan, stacking hanya digunakan dalam 23 penelitian, tetapi menghasilkan performa terbaik pada 19 penelitian atau sekitar \(82,6\%\). Temuan tersebut menunjukkan bahwa tingginya frekuensi penggunaan bagging tidak secara otomatis menjamin keunggulan performa model.

Permasalahan lain muncul ketika bagging diterapkan pada data yang kompleks, tidak seimbang, memiliki banyak variabel, atau memiliki ukuran sampel yang terbatas. Pada data tidak seimbang, model dapat lebih sering memprediksi kelas mayoritas sehingga menghasilkan akurasi yang terlihat tinggi, tetapi memiliki kemampuan deteksi yang rendah terhadap kelas minoritas. Selain itu, peningkatan jumlah model dalam ensemble dapat menambah waktu komputasi dan ukuran model. Zhao et al. (2025) menunjukkan bahwa peningkatan kompleksitas ensemble dari 20 menjadi 200 base learners meningkatkan performa bagging pada dataset MNIST dari \(0,932\) menjadi \(0,933\), tetapi setelah itu performanya cenderung mengalami plateau. Pada tingkat kompleksitas yang sama, yaitu 200 base learners, metode boosting membutuhkan waktu komputasi sekitar 14 kali lebih besar dibandingkan bagging. Temuan ini memperlihatkan bahwa pemilihan metode ensemble tidak hanya perlu mempertimbangkan akurasi, tetapi juga stabilitas, biaya komputasi, ukuran model, dan karakteristik data.

Sejumlah penelitian terdahulu telah berusaha meningkatkan kemampuan bagging melalui pemilihan fitur, penanganan ketidakseimbangan kelas, dan penggunaan base learner yang berbeda. Sebagai contoh, Tusher et al. (2025) mengombinasikan bagging dengan beberapa algoritma machine learning serta teknik oversampling dan undersampling untuk mendeteksi infeksi Hepatitis C. Model Bagging k-NN pada kondisi oversampling menghasilkan akurasi sebesar 98,37%, F1-score sebesar 98,18%, balanced accuracy sebesar 98,06%, dan AUC sebesar 0,98. Namun, penelitian tersebut masih berfokus pada satu permasalahan kesehatan dan satu dataset dengan karakteristik tertentu. Selain itu, Qiu et al. (2025) menjelaskan bahwa strategi penggabungan berbobot tetap pada bagging tradisional masih memiliki keterbatasan ketika diterapkan pada dataset yang kompleks atau tidak seimbang. Penelitian tersebut mengusulkan metode func-bagging dan memperoleh peningkatan performa ekstrem rata-rata sebesar 1,810% dibandingkan model dasar, tetapi pengujiannya masih dilakukan pada dua dataset. Hal ini menunjukkan bahwa hasil penelitian bagging masih sangat bergantung pada domain, ukuran sampel, distribusi kelas, algoritma dasar, teknik prapemrosesan, dan konfigurasi hiperparameter.

Berdasarkan uraian tersebut, masih terdapat research gap berupa belum adanya kesimpulan yang konsisten mengenai kondisi ketika bagging memberikan keunggulan dibandingkan model tunggal maupun metode ensemble lainnya. Sebagian penelitian menunjukkan bahwa bagging mampu meningkatkan kestabilan dan akurasi, sedangkan tinjauan literatur lainnya memperlihatkan bahwa bagging lebih jarang menjadi metode dengan performa terbaik dibandingkan stacking atau boosting (Mahajan et al., 2023; Saha et al., 2026). Selain itu, beberapa studi lebih menitikberatkan pada nilai akurasi tanpa mengevaluasi metrik lain seperti presisi, recall, F1-score, balanced accuracy, AUC, variasi hasil prediksi, dan waktu komputasi. Research gap lainnya adalah keterbatasan generalisasi karena banyak penelitian bagging dilakukan pada dataset atau bidang tertentu. Oleh karena itu, penelitian yang membandingkan performa bagging secara sistematis dengan mempertimbangkan karakteristik data, pemilihan base learner, teknik validasi, metrik evaluasi yang beragam, dan biaya komputasi masih penting untuk dilakukan.

Penelitian mengenai bagging menjadi penting secara akademik karena dapat memperjelas mekanisme pengaruh bootstrap sampling, jumlah base learners, jenis algoritma dasar, dan karakteristik data terhadap performa model ensemble. Penelitian ini juga dapat memberikan kontribusi praktis dengan menghasilkan rekomendasi pemilihan metode bagging yang lebih tepat untuk permasalahan klasifikasi atau regresi yang dikaji. Evaluasi yang tidak hanya berfokus pada akurasi, tetapi juga mencakup stabilitas model, kemampuan menangani kelas minoritas, kompleksitas komputasi, dan interpretabilitas, diharapkan dapat menghasilkan kesimpulan yang lebih komprehensif. Dengan demikian, penelitian ini dapat memperkaya kajian machine learning, khususnya ensemble learning, sekaligus membantu pengguna model dalam memilih pendekatan prediksi yang akurat, stabil, efisien, dan sesuai dengan karakteristik data.

1.2 Rumusan Masalah

Berdasarkan latar belakang di atas dapat disimpulkan bahwa rumusan masalah sebagai berikut:

  1. Bagaimana mahasiswa mampu memahami konsep dasar dan prinsip kerja metode Bagging?

  2. Bagaimana mahasiswa mampu mengimplementasikan metode Bagging dengan menggunakan R?

  3. Bagaimana mahasiswa mampu mengevaluasi performa Bagging?

1.3 Tujuan Penelitian

Berdasarkan rumusan masalah di atas, tujuan penelitian yang dapat disimpulkan sebagai berikut:

  1. Mahasiswa dapat memahami konsep dasar dan prinsip kerja metode Bagging.

  2. Mahasiswa dapat mengimplementasikan metode Bagging dengan menggunakan R.

  3. Mahasiswa dapat mengevaluasi performa Bagging.

1.4 Manfaat Penelitian

Adapun manfaat yang didapatkan dari penelitian ini adalah sebagai berikut:

  1. Bagi penulis

    1. Memberikan informasi dan pengetahuan mengenai konsep dasar dan prinsip kerja metode Bagging, dapat mengimplementasikan metode Bagging dengan menggunakan R, dan dapat mengevaluasi performa Bagging.

    2. Menerapkan ilmu atau wawasan baru mengenai konsep dasar dan prinsip kerja metode Bagging, dapat mengimplementasikan metode Bagging dengan menggunakan R, dan dapat mengevaluasi performa Bagging.

  2. Bagi pembaca

    1. Menambah ilmu pengetahuan mengenai konsep dasar dan prinsip kerja metode Bagging, dapat mengimplementasikan metode Bagging dengan menggunakan R, dan dapat mengevaluasi performa Bagging.

    2. Dapat menjadi rujukan bagi penelitian selanjutnya.

1.5 Batasan Masalah

Adapun batasan masalah pada penelitian ini yaitu, gunakan data friedman kemudian lakukan bagging regression dengan membandingkan hasil dengan menggunakan nbagg=\(c(25,\ 50,\ 100)\) kemudian hitung metrik evaluasinya.

1.6 Sistematika Penulisan

Adapun sistematika penulisan dari pratikum ini adalah sebagai berikut:

BAB I PENDAHULUAN

Bab ini merupakan bab yang memuat latar belakang penelitian, rumusan masalah, tujuan dan manfaat penelitian, batasan masalah penelitian, dan sistematika penelitian.

BAB II TINJAUAN PUSTAKA

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

BAB III METODE PENELITIAN

Bab ini merupakan bab yang memuat uraian mengenai jenis dan sumber penelitian, variabel penelitian, dan analisis data.

BAB IV HASIL DAN PEMBAHASAN

Bab ini merupakan bab yang memuat hasil analisis, pembahasan dari hasil yang telah diperoleh, dan interprretasi.

BAB V KESIMPULAN DAN SARAN

Bab ini merupakan bab yang memuat rangkuman dari hasil keseluruhan dan saran yang diberikan oleh penulis terhadap hasil maupun analisis yang telah dilakukan.

DAFTAR PUSTAKA

BAB II TINJAUAN PUSTAKA

2.1 Machine Learning

Machine learning merupakan pendekatan komputasi yang memungkinkan sistem mempelajari pola dari data untuk menghasilkan prediksi atau keputusan tanpa harus diprogram secara eksplisit untuk setiap aturan. Dalam penelitian statistik dan ilmu data, machine learning digunakan untuk memodelkan hubungan antara variabel prediktor dan variabel respons, terutama ketika hubungan tersebut bersifat nonlinear atau melibatkan interaksi antarkomponen data. Penggunaan machine learning berkembang dalam berbagai bidang karena algoritmanya dapat digunakan untuk klasifikasi, regresi, predeteksian pola, dan pengambilan keputusan berbasis data (Mienye & Sun, 2022; Zhang et al., 2022).

Secara umum, machine learning dapat dibedakan menjadi pembelajaran terawasi (supervised learning), pembelajaran tidak terawasi (unsupervised learning), dan pembelajaran semi-terawasi. Penelitian yang menggunakan bagging umumnya termasuk dalam pembelajaran terawasi karena model dibangun berdasarkan data pelatihan yang memiliki variabel respons atau label. Pada pembelajaran terawasi, model mempelajari fungsi pemetaan antara himpunan prediktor dan respons. Untuk permasalahan klasifikasi, respons berbentuk kategori, sedangkan pada regresi respons berbentuk numerik kontinu.

Tujuan utama pemodelan machine learning bukan hanya memperoleh kecocokan yang baik terhadap data pelatihan, tetapi juga menghasilkan kemampuan generalisasi yang baik pada data baru. Model yang terlalu kompleks dapat mengalami overfitting, yaitu ketika model sangat sesuai dengan data pelatihan tetapi kurang mampu memprediksi data pengujian. Sebaliknya, model yang terlalu sederhana dapat mengalami underfitting. Oleh karena itu, pemilihan algoritma, pengaturan hiperparameter, pembagian data, dan validasi model merupakan bagian penting dalam penelitian machine learning (Zhao et al., 2025).

2.2 Ensemble Learning

Ensemble learning adalah teknik yang menggabungkan beberapa model dasar (base learners) untuk menghasilkan prediksi akhir. Gagasan utama metode ini adalah bahwa kombinasi beberapa model dapat menghasilkan prediksi yang lebih stabil atau lebih akurat dibandingkan satu model saja. Perbaikan tersebut dapat diperoleh melalui pengurangan varians, pengurangan bias, atau pemanfaatan keragaman kesalahan antar-base learners (Mienye & Sun, 2022; Zhang et al., 2022).

Kinerja ensemble dipengaruhi oleh dua unsur penting, yaitu akurasi setiap model dasar dan keragaman antar-model. Model-model yang memiliki akurasi tinggi tetapi menghasilkan prediksi yang hampir sama tidak selalu memberikan peningkatan yang berarti ketika digabungkan. Sebaliknya, model yang memiliki keragaman prediksi dapat saling melengkapi, selama tingkat kesalahan masing-masing model tidak terlalu besar. Dengan demikian, pembentukan ensemble perlu memperhatikan algoritma dasar, mekanisme pembentukan sampel, pemilihan fitur, serta metode penggabungan prediksi.

Tiga pendekatan ensemble yang banyak dibahas adalah bagging, boosting, dan stacking. Bagging membangun model secara paralel pada beberapa sampel hasil bootstrap dan menggabungkan prediksinya. Boosting membangun model secara bertahap dengan memberikan perhatian lebih besar pada observasi yang sebelumnya diprediksi dengan salah. Stacking menggabungkan beberapa model heterogen melalui model tingkat kedua atau meta-learner. Ketiga pendekatan tersebut memiliki mekanisme, kebutuhan komputasi, dan karakteristik performa yang berbeda (Qiu et al., 2025; Zhang et al., 2022).

2.3 Bagging

Bagging merupakan singkatan dari bootstrap aggregating. Metode ini membentuk beberapa himpunan data pelatihan melalui pengambilan sampel secara acak dengan pengembalian dari data awal. Setiap sampel digunakan untuk melatih satu model dasar. Prediksi dari seluruh model kemudian digabungkan untuk memperoleh prediksi akhir. Pada klasifikasi, penggabungan umumnya dilakukan melalui suara mayoritas, sedangkan pada regresi penggabungan dilakukan melalui rata-rata prediksi (Zhang et al., 2022).

Misalkan data pelatihan dinyatakan sebagai:

\[D = \left\{ \left( x_{i},y_{i} \right) \right\}_{i = 1}^{n},\]

dengan \(x_{i}\) sebagai vektor prediktor dan \(y_{i}\) sebagai respons. Bagging menghasilkan \(B\) sampel bootstrap, yaitu \(D^{(1)},D^{(2)},\ldots,D^{(B)}\). Setiap sampel digunakan untuk membangun model dasar \(f_{b}(x)\). Untuk masalah regresi, prediksi ensemble dapat dituliskan sebagai:

\[{\widehat{f}}_{bag}(x) = \frac{1}{B}\sum_{b = 1}^{B}{f_{b}(x)}.\]

Untuk klasifikasi, prediksi akhir dapat ditentukan melalui suara mayoritas:

\[{\widehat{y}}_{bag}(x) = mode\left\{ f_{1}(x),f_{2}(x),\ldots,f_{B}(x) \right\}.\]

Formulasi tersebut menunjukkan bahwa bagging menggabungkan sejumlah prediksi individual menjadi satu keputusan akhir. Penggabungan ini diharapkan dapat mengurangi pengaruh fluktuasi sampel dan membuat prediksi lebih stabil dibandingkan prediksi dari satu model dasar (Zhang et al., 2022).

2.4 Algoritma Berbasis Bagging

2.4.1 Bagging Classifier dan Bagging Regressor

Bagging classifier digunakan untuk menyelesaikan masalah klasifikasi dengan membangun beberapa classifier pada sampel bootstrap yang berbeda, kemudian menggabungkan hasil prediksi melalui voting mayoritas. Pada masalah regresi, bagging regressor membangun beberapa regressor pada sampel bootstrap yang berbeda dan menghasilkan prediksi akhir melalui rata-rata prediksi seluruh regressor (Zhang et al., 2022) . Dengan demikian, perbedaan utama antara bagging classifier dan bagging regressor terletak pada bentuk variabel respons serta mekanisme agregasi prediksi yang digunakan.

Pemilihan algoritma dasar memengaruhi bias, varians, waktu pelatihan, dan interpretabilitas model. Bagging umumnya lebih bermanfaat bagi algoritma yang sensitif terhadap perubahan data pelatihan karena proses agregasi dapat mengurangi varians dan meningkatkan stabilitas prediksi (Zhang et al., 2022). Sebaliknya, apabila algoritma dasar sudah relatif stabil, penambahan bagging dapat memberikan peningkatan performa yang lebih kecil. Oleh karena itu, analisis perbandingan beberapa base learners penting dilakukan agar kontribusi bagging dapat dibedakan dari kontribusi algoritma dasar.

Penerapan bagging tidak terbatas pada satu jenis algoritma dasar. Bagging dapat dikombinasikan dengan k-nearest neighbors, regresi logistik, pohon keputusan, naive Bayes, support vector machine, dan Random Forest. Tusher et al. (2025) menunjukkan bahwa penerapan bagging pada algoritma-algoritma tersebut menghasilkan perbedaan nilai akurasi, precision, recall, F1-score, dan metrik lainnya. Temuan tersebut menunjukkan bahwa kinerja bagging perlu dievaluasi berdasarkan kombinasi antara metode agregasi dan algoritma dasar yang digunakan, bukan hanya berdasarkan label bagging secara umum.

2.4.2 Random Forest

Random Forest merupakan pengembangan metode bagging yang umumnya menggunakan pohon keputusan sebagai model dasar. Selain mengambil sampel bootstrap untuk membentuk setiap pohon, Random Forest memilih subset variabel secara acak pada setiap proses pemisahan node. Pemilihan acak tersebut bertujuan mengurangi korelasi antar-pohon sehingga prediksi ensemble menjadi lebih beragam dan stabil (Aria et al., 2021; Zhang et al., 2022).

Random Forest dapat digunakan untuk klasifikasi dan regresi. Pada klasifikasi, prediksi akhir biasanya diperoleh melalui voting mayoritas, sedangkan pada regresi prediksi diperoleh melalui rata-rata. Random Forest juga dapat menyediakan ukuran pentingnya variabel dan estimasi kesalahan OOB. Namun, meskipun memiliki performa prediksi yang baik, model ini dapat sulit diinterpretasikan karena merupakan gabungan dari banyak pohon. Aria et al. (2021) menjelaskan bahwa Random Forest dapat dipandang sebagai evolusi bagging yang berupaya mengurangi varians melalui bootstrap sekaligus mendekorelasi pohon melalui pemilihan subset prediktor secara acak.

2.4.3 Bagging dengan Algoritma Dasar Heterogen

Bagging tradisional sering menggunakan model dasar yang homogen, yaitu seluruh model dibangun menggunakan algoritma yang sama. Perkembangan terbaru juga mengkaji ensemble heterogen yang menggabungkan model dengan karakteristik berbeda. Qiu et al. (2025) mengusulkan strategi func-bagging yang menggabungkan integrasi classifier heterogen dengan pemberian bobot adaptif. Hasil penelitian tersebut menunjukkan peningkatan performa ekstrem rata-rata sebesar 1,810% dibandingkan model dasar pada eksperimen yang dilakukan.

Penggunaan model heterogen dapat meningkatkan keragaman prediksi, tetapi juga menambah kompleksitas proses pemodelan. Oleh sebab itu, penelitian yang menggunakan bagging heterogen perlu menjelaskan dasar pemilihan model, prosedur penggabungan prediksi, mekanisme pemberian bobot, serta metode validasinya. Tanpa prosedur validasi yang tepat, peningkatan performa dapat disebabkan oleh kebocoran data atau konfigurasi model yang terlalu menyesuaikan data penelitian.

2.5 Bagging pada Data Tidak Seimbang

Data tidak seimbang terjadi ketika jumlah observasi pada satu kelas jauh lebih besar dibandingkan kelas lainnya. Kondisi ini dapat menyebabkan model lebih memihak kelas mayoritas. Akurasi saja tidak cukup untuk menilai model pada kondisi tersebut karena model dapat memperoleh akurasi tinggi dengan mengabaikan kelas minoritas.

Beberapa pendekatan yang dapat digunakan untuk mengatasi data tidak seimbang adalah oversampling, undersampling, pembobotan kelas, dan metode ensemble yang dirancang khusus untuk ketidakseimbangan kelas. Dalam penelitian Tusher et al. (2025), kombinasi bagging dengan teknik oversampling dan undersampling digunakan untuk memprediksi infeksi Hepatitis C. Bagging k-NN pada data oversampling memperoleh akurasi 98,37%, presisi 97,67%, recall 97,93%, F1-score 97,79%, balanced accuracy 98,06%, dan AUC 0,98.

Meskipun hasil tersebut menunjukkan potensi bagging, performa tersebut tidak dapat digeneralisasi secara langsung ke semua dataset. Tusher et al. (2025) menekankan bahwa dataset yang digunakan berasal dari 615 individu yang dicurigai terinfeksi HCV sehingga validasi pada populasi yang lebih luas tetap diperlukan. Selain itu, teknik penanganan ketidakseimbangan kelas harus diterapkan hanya pada data pelatihan atau di dalam setiap lipatan validasi agar tidak menimbulkan data leakage.

BAB III METODE PENELITIAN

3.1 Jenis dan Sumber Data

Jenis data pada penelitian ini adalah data numerik. Data numerik adalah jenis data yang terdiri dari angka dan dapat diukur atau dihitung secara kuantitatif. Data ini digunakan untuk merepresentasikan nilai atau ukuran tertentu dalam berbagai konteks, seperti sains, ekonomi, statistik, dan matematika. Data numerik sering digunakan untuk melakukan perhitungan, analisis, dan visualisasi data.

Dalam laporan ini sumber data yang digunakan adalah sumber data dalam wujud data sekunder. yaitu data yang telah dikumpulkan dan disusun oleh pihak lain di luar praktikan itu sendiri. Data pada praktikum ini yaitu dataset Friedman yang tersedia di R, Dimana penelitian ini menggunakan data kuantitatif simulasi yang dibangkitkan secara komputasional menggunakan fungsi mlbench.friedman1() dari paket mlbench pada perangkat lunak R.

3.2 Variabel Penelitian

Variabel adalah simbol, karakteristik, atau atribut yang dapat diukur atau diamati dalam sebuah penelitian atau eksperimen. Pada laporan ini terdapat 1 batasan masalah. Variabel penelitian yang digunakan terdiri atas satu variabel respons kontinu, yaitu \(Y\), dan sepuluh variabel prediktor numerik, yaitu \(X_{1}\) sampai\(\ X_{10}\). Variabel \(X_{1}\) sampai \(X_{5}\) memiliki hubungan dengan variabel respons, sedangkan \(X_{6}\) sampai \(X_{10}\) berperan sebagai variabel tambahan yang tidak memiliki pengaruh langsung terhadap respons.

3.3 Analisis Data

Langkah-langkah yang digunakan pada penelitian untuk batasan masalah adalah sebagai berikut:

  1. Membangkitkan data Friedman sebanyak \(200\) observasi menggunakan fungsi mlbench.friedman1().

  2. Memeriksa struktur dan kualitas data, meliputi tipe variabel, statistik deskriptif, nilai hilang, dan duplikasi.

  3. Membagi data menjadi data training sebesar 80% dan data testing sebesar 20%.

  4. Membangun model bagging regression dengan jumlah model dasar sebanyak 25, 50, dan 100.

  5. Menghasilkan prediksi terhadap data testing untuk setiap model.

  6. Menghitung MSE, RMSE, MAE, dan \(R^{2}\) pada masing-masing model.

  7. Membandingkan kinerja model berdasarkan nilai metrik evaluasi.

  8. Menentukan model terbaik berdasarkan RMSE, MSE, dan \(R^{2}\) tertinggi.

  9. Menganalisis pengaruh jumlah model dasar terhadap performa bagging regression.

BAB IV HASIL DAN PEMBAHASAN

4.1 Hasil dan Pembahasan Batasan Masalah

4.1.1 Library dan Pembangkitan Data

library(ipred)
library(mlbench)
library(rpart)
library(rpart.plot)

set.seed(123)

# Data training (n = 200) dan data testing (n = 1000)
learn <- as.data.frame(mlbench.friedman1(200))
test  <- as.data.frame(mlbench.friedman1(1000))

str(learn)
## 'data.frame':    200 obs. of  11 variables:
##  $ x.1 : num  0.288 0.788 0.409 0.883 0.94 ...
##  $ x.2 : num  0.239 0.962 0.601 0.515 0.403 ...
##  $ x.3 : num  0.986 0.137 0.905 0.576 0.395 ...
##  $ x.4 : num  0.237 0.686 0.226 0.318 0.174 ...
##  $ x.5 : num  0.471 0.366 0.121 0.047 0.263 ...
##  $ x.6 : num  0.274 0.594 0.16 0.853 0.848 ...
##  $ x.7 : num  0.859 0.887 0.489 0.718 0.487 ...
##  $ x.8 : num  0.2332 0.2307 0.0617 0.4971 0.2441 ...
##  $ x.9 : num  0.639 0.125 0.255 0.821 0.804 ...
##  $ x.10: num  0.155 0.846 0.214 0.67 0.618 ...
##  $ y   : num  10.6 17.2 13.1 13.3 10 ...
dim(learn)
## [1] 200  11
dim(test)
## [1] 1000   11

Data training berupa data.frame dengan 200 observasi dan 11 kolom, yaitu 10 variabel prediktor (x.1 sampai x.10) dan 1 variabel respons (y). Seluruh variabel bertipe numerik. Data testing terdiri atas 1000 observasi dengan struktur yang sama. Penggunaan set.seed(123) menjamin data yang dibangkitkan dapat direproduksi. Ringkasan respons pada data training menunjukkan nilai minimum 4.39, rata-rata 14.6, dan maksimum 27.72.

4.1.2 Fungsi Metrik Evaluasi

metrik <- function(aktual, prediksi) {
  MSE  <- mean((aktual - prediksi)^2)
  RMSE <- sqrt(MSE)
  MAE  <- mean(abs(aktual - prediksi))
  R2   <- 1 - sum((aktual - prediksi)^2) / sum((aktual - mean(aktual))^2)
  c(MSE = MSE, RMSE = RMSE, MAE = MAE, R2 = R2)
}

Fungsi metrik() menghitung MSE, RMSE, MAE, dan R² dari nilai aktual dan nilai prediksi sesuai rumus pada Bab II. Fungsi ini digunakan berulang untuk setiap nilai nbagg pada data training maupun data testing.

4.1.3 Membangun Model Bagging Regression

nb_set <- c(25, 50, 100)
model  <- list()

for (nb in nb_set) {
  set.seed(123)   # seed sama agar perbandingan antar nbagg adil
  model[[as.character(nb)]] <- bagging(y ~ ., data = learn,
                                       nbagg = nb, coob = TRUE)
}

model[["25"]]
## 
## Bagging regression trees with 25 bootstrap replications 
## 
## Call: bagging.data.frame(formula = y ~ ., data = learn, nbagg = nb, 
##     coob = TRUE)
## 
## Out-of-bag estimate of root mean squared error:  2.7366
model[["50"]]
## 
## Bagging regression trees with 50 bootstrap replications 
## 
## Call: bagging.data.frame(formula = y ~ ., data = learn, nbagg = nb, 
##     coob = TRUE)
## 
## Out-of-bag estimate of root mean squared error:  2.6582
model[["100"]]
## 
## Bagging regression trees with 100 bootstrap replications 
## 
## Call: bagging.data.frame(formula = y ~ ., data = learn, nbagg = nb, 
##     coob = TRUE)
## 
## Out-of-bag estimate of root mean squared error:  2.6574

Ketiga model dibangun dengan pohon regresi sebagai base learner dan galat out-of-bag diaktifkan (coob = TRUE). Output menunjukkan jumlah replikasi bootstrap masing-masing model serta estimasi RMSE OOB, yaitu 2.7366 untuk nbagg = 25, 2.6582 untuk nbagg = 50, dan 2.6574 untuk nbagg = 100. Karena galat OOB dihitung dari observasi yang tidak ikut membangun pohon terkait, nilai ini merupakan estimasi galat generalisasi yang tidak memerlukan data testing. Model dengan RMSE OOB terkecil adalah model dengan nbagg = 100. Sebagai pembanding, RMSE sebesar 1 merupakan batas terbaik karena simpangan baku galat acak pada data Friedman #1 adalah 1.

4.1.4 Struktur Pohon Regresi Pertama

pohon1 <- model[["25"]]$mtrees[[1]]$btree
pohon1
## n= 200 
## 
## node), split, n, deviance, yval
##       * denotes terminal node
## 
##  1) root 200 4025.49800 14.029480  
##    2) x.4< 0.6502426 138 2160.39900 12.313130  
##      4) x.2< 0.3684006 66  456.23160  9.859159  
##        8) x.5< 0.7123567 49  196.75530  8.894625  
##         16) x.8>=0.3836868 34  130.62010  8.338864  
##           32) x.8< 0.4076226 9    1.81360  5.965380 *
##           33) x.8>=0.4076226 25   59.85333  9.193318 *
##         17) x.8< 0.3836868 15   31.83001 10.154350 *
##        9) x.5>=0.7123567 17   82.49546 12.639290 *
##      5) x.2>=0.3684006 72  942.38620 14.562610  
##       10) x.1< 0.1965217 14  119.80740 10.439980 *
##       11) x.1>=0.1965217 58  527.19940 15.557730  
##         22) x.4< 0.2353809 25   90.50841 13.424500 *
##         23) x.4>=0.2353809 33  236.73760 17.173810  
##           46) x.3>=0.3257424 14   68.04943 15.266000 *
##           47) x.3< 0.3257424 19   80.18524 18.579560 *
##    3) x.4>=0.6502426 62  553.71570 17.849750  
##      6) x.2< 0.4236687 27  175.72330 15.827980  
##       12) x.5< 0.4993253 11   72.59888 13.988350 *
##       13) x.5>=0.4993253 16   40.30417 17.092730 *
##      7) x.2>=0.4236687 35  182.49160 19.409390  
##       14) x.1< 0.3971814 13   18.24531 17.376150 *
##       15) x.1>=0.3971814 22   78.74578 20.610860 *
rpart.plot(pohon1, main = "Pohon Regresi ke-1 (nbagg = 25)")

Pohon pertama dibangun dari satu sampel bootstrap data training dan memiliki 12 simpul daun. Pemisahan pertama pada simpul akar menggunakan variabel x.4, yang berarti variabel tersebut paling banyak menurunkan jumlah kuadrat galat pada sampel bootstrap ini. Setiap simpul daun menampilkan rata-rata nilai \(y\) dan persentase observasi pada simpul tersebut. Pohon-pohon lain pada model memiliki struktur yang berbeda karena dibangun dari sampel bootstrap yang berbeda; perbedaan inilah yang kemudian dirata-ratakan sehingga prediksi akhir menjadi lebih stabil dibandingkan satu pohon tunggal.

4.1.5 Prediksi dan Evaluasi Model

hasil <- data.frame()

for (nb in nb_set) {
  m <- model[[as.character(nb)]]

  pred_train <- predict(m, newdata = learn)
  pred_test  <- predict(m, newdata = test)

  mt_train <- metrik(learn$y, pred_train)
  mt_test  <- metrik(test$y,  pred_test)

  hasil <- rbind(hasil, data.frame(
    nbagg      = nb,
    RMSE_OOB   = m$err,
    MSE_train  = mt_train[["MSE"]],
    RMSE_train = mt_train[["RMSE"]],
    MAE_train  = mt_train[["MAE"]],
    R2_train   = mt_train[["R2"]],
    MSE_test   = mt_test[["MSE"]],
    RMSE_test  = mt_test[["RMSE"]],
    MAE_test   = mt_test[["MAE"]],
    R2_test    = mt_test[["R2"]]
  ))
}

knitr::kable(hasil, digits = 4, align = "c",
             caption = "Perbandingan Metrik Evaluasi Bagging Regression")
Perbandingan Metrik Evaluasi Bagging Regression
nbagg RMSE_OOB MSE_train RMSE_train MAE_train R2_train MSE_test RMSE_test MAE_test R2_test
25 2.7366 3.5190 1.8759 1.4446 0.8427 8.9589 2.9931 2.4085 0.6530
50 2.6582 3.4140 1.8477 1.4247 0.8474 8.6348 2.9385 2.3637 0.6656
100 2.6574 3.4755 1.8643 1.4381 0.8446 8.7314 2.9549 2.3710 0.6618

Data training. Pada data training, RMSE masing-masing model adalah 1.8759, 1.8477, dan 1.8643 untuk nbagg 25, 50, dan 100, dengan R² masing-masing 0.8427, 0.8474, dan 0.8446. Nilai ini dihitung pada data yang sama dengan data pembentuk model sehingga cenderung lebih optimistis daripada kinerja sebenarnya pada data baru. Karena itu, perbandingan antarmodel yang lebih bermakna dilakukan pada data testing.

Data testing. Pada data testing, MSE model adalah 8.9589 (nbagg = 25), 8.6348 (nbagg = 50), dan 8.7314 (nbagg = 100). Dalam satuan \(y\), RMSE-nya adalah 2.9931, 2.9385, dan 2.9549, artinya rata-rata prediksi menyimpang sekitar nilai tersebut dari nilai aktualnya. MAE sebesar 2.4085, 2.3637, dan 2.371 menunjukkan rata-rata selisih absolut prediksi terhadap nilai aktual. Nilai R² sebesar 0.653, 0.6656, dan 0.6618 berarti model mampu menjelaskan sekitar 65.3%, 66.56%, dan 66.18% variasi \(y\) pada data testing. Berdasarkan RMSE data testing terkecil, model terbaik adalah model dengan nbagg = 50.

Kesenjangan data training dan testing. Selisih RMSE testing dan training pada nbagg = 100 adalah 1.0906. RMSE data testing lebih besar daripada data training, sebagaimana yang diharapkan, karena model dievaluasi pada data yang belum pernah dilihat. Semakin besar selisihnya, semakin besar indikasi overfitting. Galat OOB pada nbagg = 100 sebesar 2.6574 dibandingkan RMSE testing sebesar 2.9549 dengan selisih 0.2975. Kedua nilai berbeda cukup jelas, sehingga galat OOB perlu dibaca dengan hati-hati sebagai pendekatan galat generalisasi pada ukuran data training yang kecil ini.

4.1.6 Pengaruh Jumlah Replikasi (nbagg)

plot(hasil$nbagg, hasil$RMSE_test, type = "b", pch = 19, lwd = 2,
     col = "darkgreen",
     ylim = range(c(hasil$RMSE_test, hasil$RMSE_OOB)),
     xlab = "Jumlah replikasi bootstrap (nbagg)", ylab = "RMSE",
     main = "RMSE terhadap nbagg", xaxt = "n")
axis(1, at = nb_set)
lines(hasil$nbagg, hasil$RMSE_OOB, type = "b", pch = 17, lwd = 2,
      lty = 2, col = "orange")
legend("topright", legend = c("RMSE data testing", "RMSE OOB"),
       col = c("darkgreen", "orange"), lty = c(1, 2), pch = c(19, 17), lwd = 2)

Perubahan RMSE testing dari nbagg = 25 ke 50 adalah 0.0547 (menurun), dan dari 50 ke 100 adalah -0.0164 (meningkat). Galat tidak turun secara konsisten seiring bertambahnya jumlah replikasi. Perbedaan yang sangat kecil seperti ini dapat bersumber dari keacakan bootstrap, bukan dari perbedaan kualitas model yang sebenarnya. Secara teori, varians rata-rata pohon menurun mengikuti suku \((1-\rho)\sigma^2/B\) sehingga kurva galat akan melandai pada \(B\) yang besar, sementara beban komputasi terus bertambah secara linear. Karena hanya tiga nilai nbagg yang dibandingkan dengan satu kali pembangkitan data, kesimpulan mengenai selisih yang kecil perlu dibaca sebagai indikasi, bukan sebagai bukti.

4.1.7 Nilai Aktual dan Prediksi

pred25  <- predict(model[["25"]],  newdata = test)
pred50  <- predict(model[["50"]],  newdata = test)
pred100 <- predict(model[["100"]], newdata = test)

head(data.frame(Aktual = test$y,
                Pred_25 = pred25, Pred_50 = pred50, Pred_100 = pred100), 10)
##       Aktual   Pred_25   Pred_50  Pred_100
## 1  15.301632 11.215966 11.104439 11.072163
## 2  15.366685 11.291139 11.674721 11.529228
## 3   8.965048 10.123671 10.719742 10.565309
## 4  21.651430 18.367812 17.890819 17.921659
## 5   0.441718  8.737124  8.309701  8.439032
## 6   9.571086 12.231353 12.283472 12.240899
## 7  18.351988 16.536562 16.310636 16.435249
## 8   8.249305 11.714574 11.637842 11.907748
## 9  12.142076 13.752170 13.671593 13.895867
## 10 11.245242 12.456898 12.564700 12.153641
par(mfrow = c(1, 3))
for (nb in nb_set) {
  p <- predict(model[[as.character(nb)]], newdata = test)
  plot(test$y, p, pch = 19, cex = 0.5, col = "blue",
       xlab = "Aktual", ylab = "Prediksi", main = paste("nbagg =", nb))
  abline(0, 1, col = "red", lwd = 2)
}

par(mfrow = c(1, 1))

Tabel di atas menampilkan sepuluh observasi pertama data testing beserta prediksi ketiga model. Pada diagram pencar aktual terhadap prediksi, titik yang rapat di sekitar garis diagonal merah menunjukkan prediksi yang akurat. Karena prediksi bagging merupakan rata-rata banyak pohon, nilai prediksi cenderung ditarik ke arah nilai tengah. Pola ini membuat nilai \(y\) yang ekstrem (sangat rendah atau sangat tinggi) cenderung diprediksi kurang ekstrem, sehingga titik pada ujung diagram dapat menjauhi garis diagonal.

n_plot <- 100
plot(test$y[1:n_plot], type = "l", lwd = 2, col = "red",
     xlab = "Observasi", ylab = "Nilai Y",
     main = "Perbandingan Nilai Aktual dan Prediksi (100 Observasi Pertama Data Testing)")
lines(pred25[1:n_plot],  lwd = 2, lty = 2, col = "blue")
lines(pred50[1:n_plot],  lwd = 2, lty = 3, col = "darkgreen")
lines(pred100[1:n_plot], lwd = 2, lty = 4, col = "purple")
legend("topright", legend = c("Aktual", "nbagg = 25", "nbagg = 50", "nbagg = 100"),
       col = c("red", "blue", "darkgreen", "purple"),
       lty = c(1, 2, 3, 4), lwd = 2, cex = 0.8)

Pada grafik garis, kurva prediksi ketiga model mengikuti pola naik turun kurva aktual dan saling berdekatan, sebagaimana yang diharapkan karena ketiganya dibangun dengan prosedur yang sama dan hanya berbeda pada jumlah pohon. Selisih antara kurva aktual dan kurva prediksi pada setiap observasi mencerminkan galat prediksi, yang sebagian bersumber dari galat acak \(\varepsilon\) pada data yang tidak dapat diprediksi oleh model mana pun.

4.1.8 Variable Importance

vi_bagging <- function(m, vars) {
  tiap_pohon <- sapply(m$mtrees, function(t) {
    v   <- t$btree$variable.importance
    out <- setNames(rep(0, length(vars)), vars)
    if (!is.null(v)) out[names(v)] <- v
    out
  })
  rowMeans(tiap_pohon)
}

vars <- setdiff(names(learn), "y")
vi   <- sort(vi_bagging(model[["100"]], vars), decreasing = TRUE)
round(vi, 2)
##     x.4     x.2     x.1     x.5     x.8     x.9    x.10     x.3     x.6     x.7 
## 1953.39 1342.01  643.68  482.01  435.46  377.37  372.54  364.08  360.61  307.03
dotchart(rev(vi), pch = 19, col = "cadetblue",
         main = "Variable Importance - Bagging (nbagg = 100)",
         xlab = "Rata-rata importance per pohon")

Nilai importance dihitung dengan merata-ratakan nilai importance rpart dari seluruh 100 pohon pada model nbagg = 100. Lima variabel dengan importance tertinggi adalah x.4, x.2, x.1, x.5, x.8. Dari lima variabel tersebut, 4 merupakan variabel yang memang memengaruhi \(y\) (x.1 sampai x.5) sesuai fungsi Friedman #1. Sebagian variabel noise masuk lima besar, yang dapat terjadi karena ukuran data training yang kecil dan sifat pemisahan pohon yang greedy. Nilai importance variabel noise sebesar 370.6 secara rata-rata, dibandingkan 957.03 untuk variabel yang benar-benar berpengaruh.

BAB V KESIMPULAN DAN SARAN

5.1 Kesimpulan

Machine learning merupakan pendekatan komputasi yang memungkinkan sistem mempelajari pola dari data untuk menghasilkan prediksi atau keputusan. Salah satu pendekatan yang dapat digunakan untuk meningkatkan kinerja pemodelan adalah ensemble learning, yaitu teknik yang menggabungkan beberapa model dasar untuk menghasilkan prediksi akhir yang lebih stabil atau akurat. Metode ensemble learning terdiri atas bagging, boosting, dan stacking, yang memiliki mekanisme pembentukan model dan penggabungan prediksi yang berbeda.

Metode bagging (bootstrap aggregating) bekerja dengan membentuk beberapa sampel bootstrap melalui pengambilan sampel secara acak dengan pengembalian dari data pelatihan. Setiap sampel digunakan untuk membangun model dasar, kemudian seluruh hasil prediksi digabungkan untuk memperoleh prediksi akhir. Pada regresi, penggabungan dilakukan dengan menghitung rata-rata prediksi, sedangkan pada klasifikasi umumnya menggunakan suara mayoritas. Penerapan bagging diharapkan dapat mengurangi varians dan meningkatkan stabilitas prediksi, terutama pada algoritma yang sensitif terhadap perubahan data pelatihan. Salah satu pengembangan metode ini adalah Random Forest, yang mengombinasikan pengambilan sampel bootstrap dengan pemilihan variabel secara acak untuk mengurangi korelasi antar-pohon.

Penerapan bagging perlu dievaluasi berdasarkan karakteristik data, algoritma dasar, serta konfigurasi model yang digunakan. Evaluasi kinerja diperlukan untuk mengetahui kemampuan model dalam menghasilkan prediksi yang baik pada data baru. Selain itu, pemilihan jumlah model dalam ensemble, pembagian data pelatihan dan pengujian, serta prosedur validasi merupakan aspek penting dalam proses pemodelan. Khusus pada data yang tidak seimbang, penggunaan metrik evaluasi yang sesuai dan penanganan ketidakseimbangan hanya pada data pelatihan diperlukan untuk menghindari data leakage. Oleh karena itu, pemahaman terhadap konsep dan mekanisme bagging menjadi landasan penting dalam penerapannya untuk memperoleh model prediksi yang stabil dan memiliki kemampuan generalisasi yang baik.

Berdasarkan hasil analisis dan pembahasan, penerapan metode Bagging Regression pada dataset Friedman dilakukan dengan membandingkan jumlah model dasar (nbagg) sebanyak 25, 50, dan 100. Evaluasi kinerja model dilakukan menggunakan metrik Mean Squared Error (MSE), Root Mean Squared Error (RMSE), Mean Absolute Error (MAE), dan koefisien determinasi (R²) pada data training dan testing, serta RMSE out-of-bag (OOB) sebagai estimasi galat generalisasi. Perbandingan metrik pada data testing digunakan untuk menentukan model terbaik berdasarkan nilai RMSE terkecil. Grafik nilai aktual dan prediksi digunakan untuk menilai kesesuaian hasil prediksi dengan nilai sebenarnya, sedangkan analisis variable importance membantu mengidentifikasi variabel yang berperan dalam pembentukan model. Dengan demikian, pemilihan jumlah model dasar dalam Bagging Regression perlu didasarkan pada hasil evaluasi prediksi, terutama pada data testing, agar diperoleh model yang memiliki kemampuan generalisasi yang baik.

5.2 Saran

Praktikan dapat melakukan pembelajaran lebih lanjut mengenai Machine Learning and modern prediction serta cara interpretasinya agar semakin paham. Dapat dilakukan melalui sumber-sumber belajar lainnya. Dalam penulisan laporan paraktikan juga diharapakan untuk selalu teliti dan memperhatikan tata cara penulisan yang baik. Penulis juga berharap kritik dan saran kepada pembaca dan asisten praktikum guna membuat laporan ini menjadi lebih baik.

DAFTAR PUSTAKA

Fransiska, H. (2026). Modul Praktikum Machine Learning. Universitas Bengkulu

Aria, M., Cuccurullo, C., & Gnasso, A. (2021). A comparison among interpretative proposals for Random Forests. Machine Learning with Applications, 6. https://doi.org/10.1016/j.mlwa.2021.100094

Mahajan, P., Uddin, S., Hajati, F., & Moni, M. A. (2023). Ensemble Learning for Disease Prediction: A Review. In Healthcare (Switzerland) (Vol. 11, Number 12). https://doi.org/10.3390/healthcare11121808

Mienye, I. D., & Sun, Y. (2022). A Survey of Ensemble Learning: Concepts, Algorithms, Applications, and Prospects. In IEEE Access (Vol. 10). https://doi.org/10.1109/ACCESS.2022.3207287

Qiu, R., Yin, Y., Su, Q., & Guan, T. (2025). Func-Bagging: An Ensemble Learning Strategy for Improving the Performance of Heterogeneous Anomaly Detection Models. Applied Sciences (Switzerland), 15(2). https://doi.org/10.3390/app15020905

Saha, R., Saif, S., Khan, T., & Alabdultif, A. (2026). A critical systematic review of ensemble learning methods for predictive healthcare. In Discover Computing (Vol. 29, Number 1). https://doi.org/10.1007/s10791-026-10005-3

Tusher, E. H., Ismail, M. A., Akib, A., Gabralla, L. A., Ibrahim, A. O., Som, H. M., & Remli, M. A. (2025). Comparative investigation of bagging enhanced machine learning for early detection of HCV infections using class imbalance technique with feature selection. PLOS ONE, 20(6 June). https://doi.org/10.1371/journal.pone.0326488

Zhang, Y., Liu, J., & Shen, W. (2022). A Review of Ensemble Learning Algorithms Used in Remote Sensing Applications. In Applied Sciences (Switzerland) (Vol. 12, Number 17). https://doi.org/10.3390/app12178654

Zhao, H., Liu, W., Wang, Y., & Wu, L. (2025). Comparative analysis of algorithmic approaches in ensemble learning: bagging vs. boosting. Scientific Reports, 15(1). https://doi.org/10.1038/s41598-025-15971-0