Kemampuan sebuah model machine learning tidak hanya ditentukan oleh seberapa baik model mengenali pola pada data pelatihan, tetapi juga oleh seberapa konsisten model tersebut memprediksi pengamatan baru. Alpaydın (2020) menjelaskan bahwa machine learning berfokus pada pengembangan algoritma yang memanfaatkan data atau pengalaman sebelumnya untuk menyelesaikan suatu permasalahan. Salah satu metode yang telah dipelajari sebelumnya adalah Decision Tree, yang membentuk aturan prediksi melalui pemisahan data secara bertahap dan menghasilkan struktur yang mudah diinterpretasikan. Satu pohon yang tumbuh cukup dalam cenderung sensitif terhadap perubahan data pelatihan. Perbedaan kecil pada data dapat menghasilkan struktur pohon yang berbeda sehingga kestabilan prediksinya menjadi terbatas (Fransiska, 2026).
Persoalan tersebut diatasi melalui pendekatan ensemble, yaitu penggabungan prediksi dari beberapa model dasar menjadi satu prediksi akhir (Mienye & Sun, 2022). Salah satu pendekatan yang paling awal adalah Bootstrap Aggregating atau Bagging, yang pertama kali diusulkan oleh Leo Breiman (Fransiska, 2026). Metode ini membangun beberapa model dari sampel bootstrap pada data pelatihan, kemudian menggabungkan hasilnya dengan rata-rata pada respons numerik atau pemungutan suara terbanyak pada respons kategorik (James dkk., 2021). Setiap model dilatih secara terpisah pada sampel yang berbeda sehingga penggabungan hasilnya membantu menurunkan variance, meskipun tidak secara langsung mengurangi bias (Fransiska, 2026). Pohon keputusan yang tumbuh dalam cenderung memiliki variance tinggi sehingga menjadi model dasar yang umum digunakan dalam Bagging (James dkk., 2021).
Bagging untuk respons numerik diterapkan sebagai Bagging Regression Tree, yaitu rata-rata prediksi dari sejumlah pohon regresi yang dibangun dari sampel bootstrap berbeda (James dkk., 2021). Kualitas prediksinya dapat dievaluasi menggunakan ukuran kesalahan seperti Mean Squared Error (MSE), Root Mean Squared Error (RMSE), dan koefisien determinasi (R²) (Chicco dkk., 2021; Fransiska, 2026). Praktikum ini dilakukan untuk mempelajari konsep dasar dan prinsip kerja Bagging, menerapkannya pada data dengan respons numerik menggunakan perangkat lunak R, serta menilai performa model yang dihasilkan. Pemahaman tersebut diharapkan menjadi dasar untuk mempelajari metode ensemble berbasis pohon yang lebih lanjut, seperti Random Forest (Mienye & Sun, 2022).
Machine learning merupakan pendekatan yang memungkinkan komputer mempelajari pola dari data atau pengalaman sebelumnya untuk menyelesaikan suatu permasalahan (Alpaydın, 2020). Supervised learning menggunakan data yang memiliki variabel prediktor dan variabel respons dalam proses pembelajarannya. Jenis variabel respons menentukan jenis permasalahannya, yaitu klasifikasi untuk respons kategorik dan regresi untuk respons numerik (Fransiska, 2026).
Model tunggal seperti satu pohon keputusan mudah diinterpretasikan, tetapi hasilnya dapat berubah cukup besar ketika data pelatihan berubah sedikit (James dkk., 2021). Ensemble learning mengatasi hal tersebut dengan menggabungkan prediksi dari dua model dasar atau lebih sehingga hasil akhir tidak bergantung pada satu model saja (Mienye & Sun, 2022). Tiga kelompok utama metode ensemble adalah bagging, boosting, dan stacking (Mienye & Sun, 2022).
Bootstrap Aggregating atau Bagging merupakan metode ensemble yang menggabungkan prediksi dari beberapa model yang dilatih pada sampel bootstrap berbeda (Mienye & Sun, 2022). Sampel bootstrap diperoleh dengan pengambilan acak berpengembalian dari data pelatihan sehingga setiap sampel memiliki ukuran yang sama dengan data asli (James dkk., 2021). Hasil prediksi dari seluruh model dirata-ratakan pada respons numerik atau digabungkan melalui pemungutan suara terbanyak pada respons kategorik (James dkk., 2021). Metode ini pertama kali diusulkan oleh Leo Breiman untuk memperbaiki hasil permasalahan klasifikasi (Fransiska, 2026).
Pohon keputusan yang tumbuh dalam umumnya memiliki bias rendah tetapi variance tinggi sehingga hasilnya sangat dipengaruhi oleh data pelatihan (James dkk., 2021). Perata-rataan dari banyak pohon yang dibangun pada sampel berbeda menurunkan variance tersebut tanpa menaikkan bias secara berarti (James dkk., 2021). Karakteristik ini menjadikan pohon keputusan sebagai model dasar yang umum digunakan dalam Bagging (Fransiska, 2026). Beberapa karakteristik penting Bagging adalah sebagai berikut.
Random Forest merupakan pengembangan dari Bagging yang membangun banyak pohon pada sampel bootstrap dan menggabungkan hasilnya (Mienye & Sun, 2022). Perbedaannya, pada setiap pemisahan simpul hanya sebagian variabel prediktor yang dipilih secara acak sebagai kandidat (James dkk., 2021). Pemilihan acak tersebut membuat pohon-pohon dalam hutan menjadi lebih beragam sehingga korelasi antarpohon berkurang (James dkk., 2021). Bagging dapat dipandang sebagai kasus khusus Random Forest ketika seluruh variabel prediktor dipertimbangkan pada setiap pemisahan (James dkk., 2021).
Prinsip kerja Bagging terdiri atas pembentukan banyak sampel, pelatihan model pada tiap sampel, dan penggabungan hasil prediksi (Fransiska, 2026). Ketiga proses tersebut dilakukan secara berurutan sehingga menghasilkan satu prediksi akhir untuk setiap pengamatan. Tahapan tersebut dibagi menjadi empat bagian berikut.
Pengambilan sampel bootstrap Sebanyak \(B\) sampel bootstrap diambil dengan pengembalian dari data pelatihan berukuran \(n\). Setiap sampel berukuran sama dengan data asli sehingga sebagian pengamatan dapat muncul berulang dan sebagian lainnya tidak terpilih. Nilai \(B\) perlu ditentukan secara wajar agar hasil agregasi stabil tanpa memberatkan komputasi (Fransiska, 2026).
Pelatihan model dasar Satu model dasar, misalnya pohon keputusan, dilatih pada masing-masing sampel bootstrap. Proses ini menghasilkan \(B\) model yang berbeda karena data pelatihan tiap model berbeda. Model-model tersebut dibangun secara paralel dan tidak saling memengaruhi (Fransiska, 2026).
Penyimpanan hasil prediksi Setiap model menghasilkan prediksi untuk pengamatan yang akan diprediksi. Hasil prediksi dari seluruh model disimpan untuk digabungkan pada tahap berikutnya. Penyimpanan dilakukan untuk setiap pengamatan pada data yang dievaluasi (Fransiska, 2026).
Agregasi prediksi Prediksi dari seluruh model digabungkan menjadi satu prediksi akhir. Cara penggabungan bergantung pada jenis variabel respons. Penggabungan dapat berupa rata-rata, voting mayoritas, voting tertimbang, atau cara khusus lainnya (Fransiska, 2026).
Prediksi akhir untuk respons numerik diperoleh dari rata-rata prediksi seluruh model (James dkk., 2021). Penggabungan ini menurunkan keragaman prediksi karena kesalahan acak masing-masing pohon cenderung saling mengimbangi. Rumus prediksi akhir Bagging untuk respons numerik adalah sebagai berikut.
\[ \hat{f}_{bag}(x)=\frac{1}{B}\sum_{b=1}^{B}\hat{f}^{*b}(x) \]
Respons kategorik ditangani melalui pemungutan suara, yaitu setiap model memberikan satu suara untuk kelas prediksinya (James dkk., 2021). Kelas yang memperoleh suara terbanyak ditetapkan sebagai prediksi akhir. Rumus prediksi akhir Bagging untuk respons kategorik adalah sebagai berikut.
\[ \hat{y}_{bag}(x)=\arg\max_{k}\sum_{b=1}^{B}I\left(\hat{f}^{*b}(x)=k\right) \]
Keterangan:
Setiap sampel bootstrap tidak memuat seluruh pengamatan
asli. Peluang suatu pengamatan tidak terpilih pada satu sampel adalah
\((1-1/n)^n\), yang mendekati 0,368
untuk \(n\) yang besar. Rata-rata
sekitar dua pertiga pengamatan digunakan pada setiap pohon sehingga
sekitar sepertiga lainnya tidak terpakai (James dkk., 2021). Pengamatan
yang tidak terpakai tersebut disebut out-of-bag (OOB) dan dapat
dimanfaatkan untuk menaksir galat prediksi tanpa data uji yang terpisah
(James dkk., 2021). Sintaks praktikum mengaktifkan penaksiran OOB
melalui argumen coob = TRUE pada fungsi
bagging() dari paket ipred (Fransiska,
2026).
Bagging dapat diterapkan pada kedua jenis pohon keputusan. Perbedaannya terletak pada jenis variabel respons, cara agregasi, dan ukuran evaluasi yang digunakan (Fransiska, 2026). Perbedaan tersebut dirangkum pada tabel berikut.
| Aspek | Bagging Classification Tree | Bagging Regression Tree |
|---|---|---|
| Variabel respons | Kategorik | Numerik atau kontinu |
| Agregasi | Voting mayoritas atau rata-rata probabilitas | Rata-rata nilai prediksi |
| Metrik evaluasi | Accuracy, precision, recall, F1, ROC-AUC | MSE, RMSE, MAE, R² |
Kinerja model Bagging Regression Tree dapat dievaluasi menggunakan Mean Squared Error (MSE), Root Mean Squared Error (RMSE), dan koefisien determinasi (R²) (Fransiska, 2026). MSE mengukur rata-rata kuadrat selisih nilai aktual dan nilai prediksi, RMSE merupakan akar kuadrat dari MSE, sedangkan R² mengukur proporsi keragaman respons yang dijelaskan model. Rumus ketiga ukuran tersebut adalah sebagai berikut.
\[ MSE=\frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y}_i)^2 \]
\[ RMSE=\sqrt{MSE} \]
\[ R^2=1-\frac{\sum_{i=1}^{n}(y_i-\hat{y}_i)^2}{\sum_{i=1}^{n}(y_i-\bar{y})^2} \]
Keterangan:
Nilai MSE dan RMSE yang lebih kecil menunjukkan kesalahan prediksi yang lebih rendah. RMSE memiliki satuan yang sama dengan variabel respons sehingga lebih mudah ditafsirkan. Nilai R² yang mendekati 1 menunjukkan bahwa model menjelaskan sebagian besar keragaman nilai aktual. Chicco dkk. (2021) menyarankan R² sebagai ukuran standar evaluasi regresi karena lebih informatif dan tidak memiliki keterbatasan interpretasi seperti MSE dan RMSE.
Evaluasi Bagging Classification Tree didasarkan pada tabel konfusi yang memuat true positive (TP), true negative (TN), false positive (FP), dan false negative (FN) (Fransiska, 2026). Tabel ini membandingkan kelas aktual dengan kelas prediksi untuk setiap pengamatan. Empat ukuran yang umum dihitung dari tabel tersebut dirumuskan sebagai berikut.
\[ Akurasi=\frac{TP+TN}{TP+TN+FP+FN} \]
\[ Presisi=\frac{TP}{TP+FP} \]
\[ Recall=\frac{TP}{TP+FN} \]
\[ Spesifisitas=\frac{TN}{TN+FP} \]
Akurasi menunjukkan proporsi prediksi yang benar secara keseluruhan. Presisi menunjukkan ketepatan prediksi pada kelas positif. Recall menunjukkan kemampuan model menemukan pengamatan kelas positif yang sebenarnya. Spesifisitas menunjukkan kemampuan model mengenali pengamatan kelas negatif.
Kinerja Bagging Regression Tree telah diuji secara empiris oleh Breiman (1996) menggunakan lima data dengan respons numerik, yaitu Boston Housing, Ozone, serta tiga data simulasi Friedman #1, #2, dan #3. Pengujian membandingkan galat kuadrat uji pada satu pohon dengan galat pada prediktor Bagging yang merata-ratakan 25 pohon dari sampel bootstrap (Breiman, 1996). Data simulasi menggunakan 200 kasus sebagai data pelatihan dan 1.000 kasus sebagai data uji, sedangkan pembagian acak diulang 100 kali dan galatnya dirata-ratakan (Breiman, 1996).
Hasil pengujian dirangkum pada Tabel 8 dalam artikel tersebut, yaitu rata-rata galat kuadrat uji pohon tunggal dan Bagging. Penurunan galat berkisar antara 21% sampai 46% pada kelima data (Breiman, 1996). Hasil tersebut disajikan pada tabel berikut.
| Data | Pohon tunggal | Bagging | Penurunan |
|---|---|---|---|
| Boston Housing | 20,0 | 11,6 | 42% |
| Ozone | 23,9 | 18,8 | 21% |
| Friedman #1 | 11,4 | 6,1 | 46% |
| Friedman #2 | 31.100 | 22.100 | 29% |
| Friedman #3 | 0,0403 | 0,0242 | 40% |
Data Friedman #1 memiliki sepuluh prediktor berdistribusi seragam pada selang \([0,1]\), dan hanya lima di antaranya yang membentuk respons (Breiman, 1996). Rata-rata galat kuadrat uji pada data ini turun dari 11,4 pada pohon tunggal menjadi 6,1 pada Bagging, atau sekitar 46% (Breiman, 1996). Penurunan tersebut merupakan yang terbesar di antara kelima data, tetapi angkanya berasal dari rata-rata 100 pengulangan dengan data uji terpisah dan pemangkasan pohon sehingga tidak dapat dibandingkan langsung dengan hasil praktikum ini.
Breiman (1996) menggunakan 25 replikasi bootstrap pada pohon
regresi dan menyatakan bahwa jumlah tersebut dipilih karena tampak
wajar, bukan karena pasti diperlukan atau mencukupi. Breiman (1996) juga
memperkirakan bahwa respons numerik membutuhkan replikasi yang lebih
sedikit daripada klasifikasi dengan banyak kelas. Percobaan pada data
klasifikasi waveform menunjukkan bahwa sebagian besar perbaikan
sudah tercapai pada 10 replikasi dan hampir tidak berubah setelah 25
replikasi (Breiman, 1996). Temuan ini relevan sebagai latar belakang
perbandingan nbagg sebesar 25, 50, dan 100 dalam praktikum
ini.
Data yang digunakan dalam praktikum ini merupakan data kuantitatif
hasil simulasi yang dibangkitkan menggunakan fungsi
mlbench.friedman1() dari paket mlbench pada
perangkat lunak R. Dataset tersebut berisi 200 pengamatan dengan sepuluh
variabel prediktor dan satu variabel respons. Dataset ini digunakan
untuk membangun model Bagging Regression Tree guna memprediksi
variabel respons dan membandingkan hasilnya pada jumlah sampel
bootstrap yang berbeda. Data diperiksa terlebih dahulu untuk
memastikan tidak terdapat nilai hilang (missing value) sebelum
pemodelan dilakukan.
Variabel penelitian terdiri atas variabel respons dan variabel
prediktor. Variabel respons yang digunakan adalah y, yaitu
nilai kontinu hasil simulasi Friedman 1. Variabel y
merupakan variabel kuantitatif sehingga sesuai untuk pemodelan
regresi.
Variabel prediktor merupakan x.1 sampai
x.10, yang seluruhnya bersifat kontinu dengan nilai antara
0 dan 1. Hanya lima variabel pertama yang membentuk y,
sedangkan lima variabel terakhir tidak berpengaruh terhadap respons.
Seluruh variabel tersebut digunakan sebagai dasar pembentukan pohon
regresi untuk mengidentifikasi pola hubungan antara variabel prediktor
dan respons.
Model Bagging Regression dibangun menggunakan fungsi
bagging() dari paket ipred dengan tiga nilai
nbagg, yaitu 25, 50, dan 100. Kinerja setiap model
dievaluasi menggunakan metrik evaluasi regresi, yaitu Mean Squared
Error (MSE), Root Mean Squared Error (RMSE), dan koefisien
determinasi (R²). Langkah-langkah analisis yang dilakukan dalam
praktikum Bagging Regression menggunakan data Friedman adalah
sebagai berikut.
ipred dan mlbench ke dalam
R.mlbench.friedman1() dan mengubahnya menjadi data
frame.y sebagai variabel respons dan
x.1 sampai x.10 sebagai variabel
prediktor.nbagg = 25 dan coob = TRUE.nbagg = 50 dan coob = TRUE.nbagg = 100 dan coob = TRUE.y menggunakan masing-masing
model.nbagg.Praktikum ini bertujuan memprediksi variabel y pada data
Friedman 1 menggunakan metode Bagging Regression Tree. Tahapan
yang dilakukan meliputi pembangkitan dan pemeriksaan data, pembentukan
model, pengamatan struktur pohon, prediksi dan evaluasi menggunakan MSE,
RMSE, dan \(R^2\), visualisasi hasil
prediksi, serta perbandingan model dengan nbagg sebesar 25,
50, dan 100. Seluruh hasil diperoleh menggunakan
set.seed(123) sehingga dapat direproduksi.
Tahap awal dilakukan dengan memanggil library
mlbench untuk membangkitkan data dan library
ipred yang menyediakan fungsi bagging(). Data
Friedman 1 dibangkitkan sebanyak 200 pengamatan menggunakan fungsi
mlbench.friedman1() dan disimpan sebagai data
frame bernama learn. Fungsi set.seed()
digunakan agar data dan sampel bootstrap yang terbentuk dapat
direproduksi ketika sintaks dijalankan kembali. Sintaks yang digunakan
adalah sebagai berikut.
# Library
library("mlbench")
library("ipred")
# Pembangkitan data
set.seed(123)
learn <- as.data.frame(mlbench.friedman1(200))
# Pemeriksaan data
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 ...
## [1] 200 11
## x.1 x.2 x.3 x.4 x.5 x.6 x.7 x.8 x.9 x.10 y
## 0 0 0 0 0 0 0 0 0 0 0
Fungsi str() digunakan untuk melihat struktur data,
dim() untuk melihat dimensi data, dan
colSums(is.na()) untuk menghitung jumlah missing
value pada setiap variabel. Hasilnya menunjukkan bahwa data terdiri
atas 200 observasi dan 11 variabel, yaitu x.1 sampai
x.10 sebagai variabel prediktor dan y sebagai
variabel respons. Seluruh variabel bertipe numerik sehingga sesuai untuk
pemodelan regresi. Jumlah missing value pada setiap variabel
bernilai 0 sehingga data dapat langsung digunakan tanpa penanganan
tambahan.
Model dibentuk menggunakan fungsi bagging() dengan
formula y ~ ., yang berarti y diprediksi
menggunakan seluruh variabel lainnya. Argumen coob = TRUE
digunakan agar galat out-of-bag (OOB) ikut ditaksir. Argumen
nbagg tidak diisi sehingga model menggunakan nilai bawaan,
yaitu 25 sampel bootstrap. Sintaks yang digunakan adalah
sebagai berikut.
##
## Bagging regression trees with 25 bootstrap replications
##
## Call: bagging.data.frame(formula = y ~ ., data = learn, coob = TRUE)
##
## Out-of-bag estimate of root mean squared error: 2.7964
## Length Class Mode
## y 200 -none- numeric
## X 10 data.frame list
## mtrees 25 -none- list
## OOB 1 -none- logical
## comb 1 -none- logical
## err 1 -none- numeric
## call 4 -none- call
Hasil print(mod2) menunjukkan bahwa model terbentuk dari
25 replikasi bootstrap dengan estimasi RMSE out-of-bag
sebesar 2,7964. Hasil summary(mod2) memperlihatkan komponen
model, yaitu y berisi 200 nilai respons, X
berisi 10 variabel prediktor, dan mtrees berisi 25 pohon
regresi. Estimasi galat OOB dihitung dari pengamatan yang tidak terambil
pada sampel bootstrap suatu pohon sehingga berfungsi sebagai
ukuran galat di luar sampel pelatihan (James dkk., 2021).
Model Bagging terdiri atas 25 pohon regresi, dan setiap
pohon dapat diperiksa melalui komponen mtrees. Pohon
pertama dipilih untuk melihat bentuk aturan pemisahan yang dipelajari
oleh salah satu model dasar. Sintaks yang digunakan adalah sebagai
berikut.
## n= 200
##
## node), split, n, deviance, yval
## * denotes terminal node
##
## 1) root 200 4678.655000 13.851910
## 2) x.4< 0.7560337 162 2582.816000 12.498900
## 4) x.2< 0.339064 66 452.753900 9.687649
## 8) x.4< 0.5218248 43 257.578900 8.688367
## 16) x.5< 0.4991911 21 29.866870 7.565357 *
## 17) x.5>=0.4991911 22 175.947400 9.760331
## 34) x.2< 0.09833049 7 5.237418 7.155586 *
## 35) x.2>=0.09833049 15 101.053800 10.975880 *
## 9) x.4>=0.5218248 23 71.960900 11.555870 *
## 5) x.2>=0.339064 96 1249.850000 14.431640
## 10) x.4< 0.256311 43 366.651000 12.278790
## 20) x.5< 0.5721112 20 185.267900 10.570020
## 40) x.2< 0.5298973 10 55.427400 8.467155 *
## 41) x.2>=0.5298973 10 41.399530 12.672890 *
## 21) x.5>=0.5721112 23 72.204120 13.764680 *
## 11) x.4>=0.256311 53 522.214500 16.178280
## 22) x.1< 0.2376226 16 99.791120 12.842810 *
## 23) x.1>=0.2376226 37 167.441500 17.620650 *
## 3) x.4>=0.7560337 38 534.988000 19.619990
## 6) x.1< 0.5942426 20 124.574800 16.951610
## 12) x.1< 0.1951799 7 21.312490 14.568610 *
## 13) x.1>=0.1951799 13 42.107600 18.234760 *
## 7) x.1>=0.5942426 18 109.779600 22.584860 *
Simpul akar pohon pertama memuat 200 observasi dengan nilai prediksi
sebesar 13,852. Pemisahan pertama dilakukan berdasarkan variabel
x.4 pada nilai 0,756, sehingga terbentuk simpul dengan
x.4 < 0,756 berisi 162 observasi (81%) dengan prediksi
12,499 dan simpul dengan x.4 >= 0,756 berisi 38
observasi (19%) dengan prediksi 19,620. Cabang kiri dilanjutkan
menggunakan x.2, x.4, x.5, dan
x.1, sedangkan cabang kanan dilanjutkan menggunakan
x.1 pada nilai 0,594.
Pohon pertama memiliki 12 simpul terminal. Nilai prediksi simpul
terminal terendah adalah 7,156 (7 observasi), sedangkan yang tertinggi
adalah 22,585 (18 observasi). Pemisah yang muncul pada pohon ini hanya
x.1, x.2, x.4, dan
x.5, sedangkan variabel pengganggu x.6 sampai
x.10 tidak digunakan. Pohon ini hanya satu dari 25 pohon
sehingga belum menggambarkan seluruh model, tetapi cukup memperlihatkan
bahwa model dasar membentuk kelompok pengamatan dengan nilai respons
yang relatif serupa.
Prediksi dilakukan menggunakan fungsi predict() dan
hasilnya dibandingkan dengan nilai aktual y. Metrik
evaluasi yang dihitung adalah Mean Squared Error (MSE),
Root Mean Squared Error (RMSE), dan koefisien determinasi (R²).
Sintaks yang digunakan adalah sebagai berikut.
# Prediksi
pred <- predict(mod2, newdata = learn)
hasil <- data.frame(Aktual = learn$y, Prediksi = pred)
head(hasil, 10)## Aktual Prediksi
## 1 10.594975 9.729808
## 2 17.165302 17.595838
## 3 13.112492 13.804823
## 4 13.303440 14.820600
## 5 10.004662 11.235601
## 6 15.204950 17.254229
## 7 10.687788 10.523892
## 8 23.748416 19.443064
## 9 11.168910 11.057385
## 10 9.731385 9.699965
## [1] 3.500615
## [1] 1.870993
## [1] 0.8434942
Tabel berikut menyajikan sepuluh observasi pertama untuk membandingkan nilai aktual dan nilai prediksi. Sebagian besar prediksi berada dekat dengan nilai aktualnya, misalnya pada observasi ke-7 dan ke-10. Selisih yang lebih besar terlihat pada observasi ke-8, yaitu nilai aktual 23,748 yang diprediksi sebesar 19,443.
| Observasi | Aktual | Prediksi |
|---|---|---|
| 1 | 10,595 | 9,730 |
| 2 | 17,165 | 17,596 |
| 3 | 13,112 | 13,805 |
| 4 | 13,303 | 14,821 |
| 5 | 10,005 | 11,236 |
| 6 | 15,205 | 17,254 |
| 7 | 10,688 | 10,524 |
| 8 | 23,748 | 19,443 |
| 9 | 11,169 | 11,057 |
| 10 | 9,731 | 9,700 |
Hasil evaluasi model dengan nbagg = 25 adalah MSE
sebesar 3,5006, RMSE sebesar 1,8710, dan R² sebesar 0,8435. Nilai RMSE
menunjukkan bahwa simpangan prediksi terhadap nilai aktual rata-rata
sekitar 1,87 satuan. Nilai R² menunjukkan bahwa sekitar 84,35% keragaman
y dapat dijelaskan oleh model. Ketiga ukuran tersebut
dihitung pada data yang sama dengan data pelatihan sehingga cenderung
lebih optimistis, dan hal ini terlihat dari estimasi RMSE OOB sebesar
2,7964 yang lebih besar daripada RMSE sebesar 1,8710.
Perbandingan nilai aktual dan nilai prediksi divisualisasikan dalam grafik garis agar kesesuaian pola keduanya dapat diamati. Garis merah menunjukkan nilai aktual dan garis biru putus-putus menunjukkan nilai prediksi untuk setiap observasi. Sintaks yang digunakan adalah sebagai berikut.
# Plot aktual dan prediksi
plot(actual, type = "l", lwd = 2,
xlab = "Observasi", ylab = "Nilai Y",
main = "Perbandingan Nilai Aktual dan Prediksi", col = "red")
# Garis prediksi
lines(pred, lwd = 2, lty = 2, col = "blue")
# Legenda
legend("topright", legend = c("Aktual", "Prediksi"), lty = c(1, 2),
lwd = c(2, 2))Gambar 1. Perbandingan nilai aktual dan prediksi (nbagg = 25)
Grafik menunjukkan bahwa garis prediksi mengikuti pola naik turun nilai aktual dengan cukup baik. Korelasi antara nilai aktual dan nilai prediksi bernilai sekitar 0,93 sehingga kesesuaian pola tersebut didukung secara numerik. Garis prediksi tampak lebih halus daripada garis aktual, dan rentang prediksi (7,51 sampai 22,65) lebih sempit daripada rentang nilai aktual (4,39 sampai 27,72). Kondisi ini wajar karena prediksi Bagging merupakan rata-rata banyak pohon sehingga nilai-nilai ekstrem cenderung kurang tertangkap.
nbagg 25, 50, dan
100Perbandingan dilakukan dengan membangun dua model tambahan
menggunakan nbagg = 50 dan nbagg = 100,
sedangkan model dengan nbagg = 25 telah dibentuk pada tahap
sebelumnya. Ketiga model dilatih pada data yang sama sehingga perbedaan
hasil terutama mencerminkan pengaruh jumlah sampel bootstrap.
Metrik evaluasi dihitung menggunakan fungsi yang sama, kemudian
dirangkum bersama estimasi RMSE OOB. Sintaks yang digunakan adalah
sebagai berikut.
# Model dengan nbagg = 50 dan nbagg = 100
mod50 <- bagging(y ~ ., data = learn, nbagg = 50, coob = TRUE)
mod100 <- bagging(y ~ ., data = learn, nbagg = 100, coob = TRUE)
# Prediksi
pred50 <- predict(mod50, newdata = learn)
pred100 <- predict(mod100, newdata = learn)
# Fungsi evaluasi
evaluasi <- function(actual, pred) {
MSE <- mean((actual - pred)^2)
RMSE <- sqrt(MSE)
R2 <- 1 - sum((actual - pred)^2) / sum((actual - mean(actual))^2)
c(MSE = MSE, RMSE = RMSE, R2 = R2)
}
# Perbandingan
hasil_nbagg <- data.frame(
nbagg = c(25, 50, 100),
OOB_RMSE = c(mod2$err, mod50$err, mod100$err),
rbind(
evaluasi(actual, pred),
evaluasi(actual, pred50),
evaluasi(actual, pred100)
)
)
hasil_nbagg## nbagg OOB_RMSE MSE RMSE R2
## 1 25 2.796421 3.500615 1.870993 0.8434942
## 2 50 2.726002 3.671542 1.916127 0.8358524
## 3 100 2.631919 3.443739 1.855731 0.8460371
Hasil perbandingan ketiga model disajikan pada tabel berikut. Tabel
memuat estimasi RMSE OOB serta MSE, RMSE, dan \(R^2\) yang dihitung pada data pelatihan.
Model dengan nbagg = 100 menghasilkan nilai terbaik pada
seluruh ukuran.
nbagg |
RMSE OOB | MSE | RMSE | \(R^2\) |
|---|---|---|---|---|
| 25 | 2,7964 | 3,5006 | 1,8710 | 0,8435 |
| 50 | 2,7260 | 3,6715 | 1,9161 | 0,8359 |
| 100 | 2,6319 | 3,4437 | 1,8557 | 0,8460 |
Estimasi RMSE OOB menurun secara konsisten seiring bertambahnya
nbagg, yaitu dari 2,7964 menjadi 2,7260 dan kemudian
2,6319. Penurunan total sebesar 0,1645 atau sekitar 5,88% menunjukkan
bahwa penambahan jumlah pohon memperbaiki kemampuan prediksi pada
pengamatan di luar sampel. Hasil ini sejalan dengan prinsip
Bagging, yaitu semakin banyak model yang dirata-ratakan,
semakin stabil prediksi akhirnya.
Ukuran yang dihitung pada data pelatihan tidak menurun secara
konsisten. Model dengan nbagg = 50 memiliki MSE tertinggi
(3,6715) dan \(R^2\) terendah (0,8359),
sedangkan model dengan nbagg = 100 memiliki MSE terendah
(3,4437) dan R² tertinggi (0,8460). Selisih MSE antara
nbagg = 100 dan nbagg = 25 hanya sekitar
0,0569 atau 1,62% sehingga perbedaannya relatif kecil. Fluktuasi
tersebut dapat terjadi karena sampel bootstrap bersifat acak
dan ukuran ini dihitung pada data yang sama dengan data pelatihan,
sehingga estimasi RMSE OOB lebih layak dijadikan dasar perbandingan.
Hasil keseluruhan menunjukkan bahwa model Bagging Regression
dengan nbagg = 100 memberikan kinerja terbaik pada data
Friedman 1, baik berdasarkan RMSE OOB maupun ukuran pada data pelatihan.
Peningkatan kinerja akibat penambahan nbagg bersifat
bertahap dan relatif kecil, sedangkan waktu komputasi bertambah karena
jumlah pohon yang dibangun lebih banyak. Perbandingan ini hanya
didasarkan pada satu kali pembangkitan data, sehingga selisih antarmodel
dapat berubah apabila data atau seed yang digunakan
berbeda.
Bagging Regression Tree merupakan metode machine learning dalam kelompok ensemble learning yang menggabungkan prediksi dari sejumlah pohon regresi yang dibentuk menggunakan sampel bootstrap. Setiap pohon dilatih menggunakan sampel yang berbeda melalui pengambilan acak dengan pengembalian. Prediksi akhir diperoleh dari rata-rata prediksi seluruh pohon untuk menghasilkan model yang lebih stabil. Metode ini bertujuan mengurangi variance pada model pohon regresi yang cenderung sensitif terhadap perubahan data pelatihan. Kinerja model dapat dievaluasi menggunakan Mean Squared Error (MSE), Root Mean Squared Error (RMSE), koefisien determinasi (\(R^2\)), dan galat out-of-bag (OOB).
Penerapan Bagging Regression Tree dilakukan melalui beberapa tahapan, yaitu pembangkitan dan pemeriksaan data, pembentukan model menggunakan sampel bootstrap, pengamatan struktur pohon regresi, prediksi, dan evaluasi kinerja model. Struktur pohon dapat diamati melalui aturan pemisahan pada simpul akar hingga simpul terminal untuk memahami pembentukan prediksi. Evaluasi model dilakukan dengan membandingkan nilai aktual dan prediksi menggunakan MSE, RMSE, dan \(R^2\). Estimasi RMSE OOB juga digunakan untuk menilai galat prediksi berdasarkan pengamatan yang tidak terpilih dalam sampel bootstrap, sehingga memberikan informasi tambahan mengenai kinerja model di luar pengamatan yang digunakan untuk membentuk setiap pohon.
Perbandingan jumlah pohon dilakukan untuk mengetahui pengaruh banyaknya sampel bootstrap terhadap kinerja Bagging Regression Tree. Jumlah pohon yang lebih banyak memungkinkan prediksi akhir diperoleh dari agregasi model yang lebih banyak sehingga hasilnya cenderung lebih stabil. Penentuan model terbaik dapat dilakukan dengan membandingkan nilai galat OOB serta ukuran evaluasi lainnya. Nilai MSE dan RMSE yang lebih rendah menunjukkan kesalahan prediksi yang lebih kecil, sedangkan nilai \(R^2\) yang lebih tinggi menunjukkan proporsi keragaman variabel respons yang dapat dijelaskan oleh model semakin besar. Evaluasi pada data pelatihan perlu dibedakan dari evaluasi pada data pengujian karena keduanya memberikan informasi yang berbeda mengenai kinerja model.
Hasil penerapan Bagging Regression Tree pada data simulasi Friedman 1 dengan 200 observasi menunjukkan bahwa model dengan 25 pohon menghasilkan MSE sebesar 3,5006, RMSE sebesar 1,8710, \(R^2\) sebesar 0,8435, dan RMSE OOB sebesar 2,7964. Perbandingan model dengan 25, 50, dan 100 pohon menunjukkan bahwa model dengan 100 pohon memberikan hasil terbaik, dengan MSE sebesar 3,4437, RMSE sebesar 1,8557, \(R^2\) sebesar 0,8460, dan RMSE OOB sebesar 2,6319. Nilai RMSE OOB menurun seiring bertambahnya jumlah pohon, sedangkan peningkatan kinerja berdasarkan ukuran evaluasi pada data pelatihan relatif kecil. Hasil tersebut menunjukkan bahwa model dengan 100 pohon memiliki kinerja terbaik di antara ketiga model yang dibandingkan pada praktikum ini.
Alpaydın, E. (2020). Introduction to machine learning (4th ed.). The MIT Press. https://mitpress.mit.edu/9780262043793/introduction-to-machine-learning/
Breiman, L. (1996). Bagging predictors. Machine Learning, 24(2), 123–140. https://doi.org/10.1007/BF00058655
Chicco, D., Warrens, M. J., & Jurman, G. (2021). The coefficient of determination R-squared is more informative than SMAPE, MAE, MAPE, MSE and RMSE in regression analysis evaluation. PeerJ Computer Science, 7, e623. https://doi.org/10.7717/peerj-cs.623
Fransiska, H. (2026). Modul Praktikum Machine Learning and Modern Prediction. Laboratorium Matematika Universitas Bengkulu.
James, G., Witten, D., Hastie, T., & Tibshirani, R. (2021). An introduction to statistical learning: With applications in R (2nd ed.). Springer. https://doi.org/10.1007/978-1-0716-1418-1
Mienye, I. D., & Sun, Y. (2022). A survey of ensemble learning: Concepts, algorithms, applications, and prospects. IEEE Access, 10, 99129–99149. https://doi.org/10.1109/ACCESS.2022.3207287