BAB I PENDAHULUAN

1.1 Latar Belakang

Pemodelan prediktif dalam machine learning memanfaatkan data historis untuk membangun model yang mampu memprediksi nilai atau kelas pada data baru. Kualitas prediksi sangat dipengaruhi oleh kemampuan model dalam menangkap pola data tanpa terlalu peka terhadap variasi kecil pada data pelatihan (Mienye & Sun, 2022). Model tunggal, terutama yang tidak stabil seperti pohon keputusan, sering kali menghasilkan prediksi dengan varians yang tinggi. Salah satu pendekatan untuk mengatasi hal tersebut adalah metode ensemble, yaitu penggabungan beberapa model menjadi satu prediksi akhir di mana Bagging sebagai salah satu metode yang paling mendasar (Wijaya dkk., 2026).

Bagging (Bootstrap Aggregating) merupakan metode ensemble yang bertujuan menurunkan varians prediksi dan meningkatkan kestabilan model (Fransiska, 2026). Prinsip dasarnya diawali dengan pembentukan beberapa sampel bootstrap, yaitu sampel acak yang berukuran sama dengan data pelatihan dan diambil dengan pengembalian. Setiap sampel bootstrap digunakan untuk melatih satu model dasar secara terpisah sehingga setiap model mempelajari variasi data yang sedikit berbeda. Hasil prediksi seluruh model kemudian digabungkan melalui rata-rata pada permasalahan regresi atau pemungutan suara mayoritas pada permasalahan klasifikasi (Syabana, Widiharih, & Rochayani, 2025).

Penerapan metode Bagging pada data nyata memerlukan dukungan perangkat lunak statistik yang mampu mengolah data dan membangun banyak model secara efisien. R merupakan perangkat lunak statistik bersumber terbuka yang menyediakan beragam paket untuk pengolahan data, pemodelan, dan visualisasi, termasuk pembentukan model Bagging. Pembentukan model saja belum memadai karena kualitas prediksi harus dinilai secara objektif agar kelayakan model dapat dipertanggungjawabkan. Evaluasi performa dengan ukuran yang sesuai jenis permasalahan, seperti akurasi pada klasifikasi atau galat prediksi pada regresi, menjadi bagian penting dalam menilai manfaat metode Bagging.

1.2 Rumusan Masalah

Berdasarkan latar belakang di atas, adapun rumusan masalah yang dapat disimpulkan sebagai berikut:

  1. Bagaimana konsep dasar dan prinsip kerja metode Bagging?
  2. Bagaimana implementasi metode Bagging menggunakan program R?
  3. Bagaimana performa metode Bagging berdasarkan hasil evaluasi yang diperoleh?

1.3 Tujuan Penelitian

Adapun tujuan penelitian ini yaitu:

  1. Praktikan dapat memahami konsep dasar dan prinsip kerja metode Bagging.
  2. Praktikan dapat mengimplementasikan metode Bagging dengan menggunakan R.
  3. Praktikan dapat mengevaluasi performa Bagging.

1.4 Manfaat Penelitian

Adapun manfaat penelitian ini yaitu sebagai berikut:

  1. Bagi penulis
    1. Penulis dapat memperdalam pemahaman tentang metode Bagging sebagai salah satu metode ensemble.
    2. Penulis dapat melatih keterampilan mengimplementasikan metode Bagging dan mengevaluasi performanya.
  2. Bagi pembaca
    1. Pembaca mendapat pemahaman mengenai konsep dasar dan prinsip kerja metode Bagging.
    2. Pembaca mendapat referensi penerapan metode Bagging menggunakan R.

1.5 Batasan Masalah

Adapun batasan masalah pada penelitian ini yaitu gunakan data Breast Cancer, kemudian lakukan bagging classification dengan bandingkan hasil menggunakan nbagg = c(25, 20, 100). Kemudian hitung metrik evaluasinya.

BAB II TINJAUAN PUSTAKA

2.1 Machine Learning dan Pemodelan Prediktif

Pemodelan prediktif merupakan pendekatan dalam machine learning yang bertujuan memetakan data masukan ke nilai keluaran tertentu berdasarkan pola yang dipelajari dari data historis. Machine learning memungkinkan algoritma mempertimbangkan berbagai faktor dalam pengambilan keputusan dan tidak rentan terhadap kelelahan maupun prasangka sebagaimana manusia. Kemampuan ini menjadikan pemodelan prediktif relevan pada berbagai bidang, termasuk diagnosis medis, deteksi kecurangan, klasifikasi teks, dan pengenalan citra (Mienye & Sun, 2022).

Permasalahan dalam pemodelan prediktif secara umum terbagi menjadi dua jenis, yaitu regresi dan klasifikasi. Mienye dan Sun (2022) menjelaskan bahwa klasifikasi merupakan tugas memetakan instans data ke label dari himpunan kelas yang telah ditentukan, sedangkan regresi hanya berbeda pada domain nilai keluaran yang bersifat kontinu. Rachmatullah (2025) menambahkan bahwa tujuan utama klasifikasi adalah memetakan data masukan ke dalam kelas-kelas tertentu dengan tingkat akurasi dan reliabilitas yang tinggi. Perbedaan domain keluaran ini menentukan pilihan algoritma, metrik evaluasi, serta mekanisme agregasi yang digunakan dalam pemodelan.

Pembagian data menjadi data training dan data testing merupakan tahap penting untuk mengukur kemampuan generalisasi model. Syabana, Widiharih, dan Rochayani (2025) menyatakan bahwa data training digunakan untuk melatih model, sedangkan data uji digunakan untuk menguji performa model dan memastikan bahwa model dapat generalisasi dengan baik pada data yang belum pernah dilihat sebelumnya. Mienye dan Sun (2022) menegaskan bahwa pembelajaran dari dataset berdimensi tinggi dan tidak seimbang merupakan tantangan tersendiri, sehingga strategi pembagian data yang tepat diperlukan untuk mengurangi bias pemodelan. Cintari dkk. (2024) menggunakan pembagian data dengan proporsi tertentu untuk menguji sejauh mana model dapat menggeneralisasi data pada proses pemodelan maupun pengujian.

2.2 Pohon Keputusan (Decision Tree)

Pohon keputusan merupakan model dasar dalam machine learning yang merepresentasikan fungsi pemetaan dari masukan ke keluaran dalam bentuk struktur pohon. Pohon keputusan bekerja melalui proses partisi rekursif yang membagi dataset menjadi subset yang lebih kecil berdasarkan uji atribut yang memberikan information gain tertinggi. Proses tersebut berlanjut hingga terbentuk simpul terminal yang merepresentasikan keputusan atau prediksi akhir (Wijaya dkk., 2026).

Pembentukan pohon keputusan bergantung pada jenis variabel respons yang dimodelkan. Variabel respons berskala kontinu menghasilkan pohon regresi, sedangkan variabel respons berskala kategorik menghasilkan pohon klasifikasi. Pemilahan pada pohon klasifikasi dilakukan dengan memilih pemilah yang memiliki tingkat keheterogenan paling tinggi, yang diukur menggunakan nilai impuritas seperti indeks Gini. Nilai goodness of split dihitung sebagai selisih antara impuritas simpul induk dengan impuritas tertimbang simpul anak, dan pemilah dengan nilai tertinggi dipilih sebagai simpul akar (Syabana, Widiharih, & Rochayani, 2025).

Kelebihan pohon keputusan terletak pada interpretabilitasnya yang tinggi karena prediksi dihasilkan melalui rangkaian aturan yang sederhana dan transparan. Pohon keputusan banyak digunakan pada domain sensitif karena keputusannya dapat dijelaskan. Keterbatasan utama pohon keputusan adalah kecenderungan mengalami overfitting, terutama ketika jumlah fitur besar atau struktur data kompleks, serta sensitivitas tinggi terhadap variasi data latih sehingga perubahan kecil dapat menghasilkan struktur pohon yang sangat berbeda (Wijaya dkk., 2026). Nanfack, Temple, dan Frénay (2022) juga mencatat bahwa pohon keputusan yang dipelajari dapat berukuran besar dan sulit dipahami apabila digunakan pada permasalahan kompleks.

2.3 Metode Ensemble

Metode ensemble merupakan pendekatan machine learning yang menggabungkan beberapa model dasar untuk menghasilkan kinerja prediksi yang melampaui model tunggal. Ensemble learning melatih sejumlah base learner dan menggabungkan prediksinya untuk memperoleh performa serta kemampuan generalisasi yang lebih baik. Konsep dasar ensemble learning adalah pengakuan bahwa setiap model pembelajaran mesin memiliki keterbatasan dan dapat membuat kesalahan, sehingga penggabungan kekuatan beberapa model mampu meningkatkan kinerja klasifikasi.

Rachmatullah (2025) menyatakan bahwa ensemble learning mampu menurunkan varians, mengurangi bias, serta meningkatkan stabilitas prediksi dibandingkan pendekatan model tunggal. Keberhasilan teknik ensemble sangat bergantung pada akurasi dan keberagaman base learner, di mana model dianggap beragam apabila kesalahannya pada instans yang belum pernah dilihat tidak sama (Mienye & Sun, 2022). Cintari dkk. (2024) menambahkan bahwa ensemble learning menggabungkan beberapa model yang kinerja individualnya kurang optimal sehingga diperoleh model yang lebih baik dalam generalisasi dan stabilitas.

Metode ensemble secara umum dikategorikan menjadi tiga jenis, yaitu bagging, boosting, dan stacking. Bagging melatih base learner secara paralel dan independen pada subset data hasil bootstrap, sedangkan boosting melatih model secara sekuensial sehingga setiap model baru berfokus memperbaiki kesalahan model sebelumnya. Stacking merupakan kerangka ensemble yang melatih algoritma machine learning terpisah untuk menggabungkan prediksi dari dua atau lebih anggota ensemble (Mienye & Sun, 2022).

2.4 Bootstrap

Bootstrap merupakan teknik pengambilan sampel ulang yang menjadi fondasi bagi metode ensemble berbasis bagging. Bagging memperoleh keberagaman dengan membuat sampel dari data pelatihan, di mana jumlah sampel harus berada pada jumlah yang sesuai agar tidak terlalu banyak maupun terlalu sedikit. Sampel bootstrap dibentuk melalui pengambilan sampel dengan pengembalian dari data latih asli sehingga setiap sampel dapat muncul lebih dari satu kali atau tidak muncul sama sekali (Fransiska, 2026). Mienye dan Sun (2022) menambahkan bahwa teknik bootstrap menghasilkan beberapa himpunan data training yang dipandang beragam dan digunakan untuk melatih sejumlah base learner dengan algoritma yang sama.

Karakteristik sampel bootstrap menyebabkan sebagian data asli tidak terpilih ke dalam sampel, sehingga data tersebut menjadi data out-of-bag. Fransiska (2026) menjelaskan bahwa bagging melibatkan pembuatan sampel dari data training, pelatihan model pada masing-masing sampel, pembuatan classifier dari setiap model, dan penggabungan hasil prediksi berdasarkan jenis ensemble yang digunakan. Data yang tidak terpilih dalam suatu sampel bootstrap berperan sebagai data uji internal bagi model yang dilatih pada sampel tersebut. Syabana, Widiharih, dan Rochayani (2025) menambahkan bahwa proses resampling bootstrap dilakukan sebanyak \(B\) kali untuk menghasilkan \(B\) buah dataset bootstrap yang digunakan untuk melatih model dasar.

2.5 Bagging (Bootstrap Aggregating)

Bagging atau bootstrap aggregating merupakan teknik ensemble yang menggabungkan beberapa model dasar secara paralel untuk meningkatkan kinerja prediksi. Breiman (1996) dalam Mienye dan Sun (2022) mengembangkan bagging untuk meningkatkan kinerja klasifikasi model machine learning dengan menggabungkan prediksi dari himpunan data latih yang dibangkitkan secara acak. Fransiska (2026) menyatakan bahwa bagging merupakan meta-algoritma ensemble yang meningkatkan stabilitas dan akurasi model serta mengurangi masalah overfitting. Sudrajat dkk. (2022) menambahkan bahwa bagging dirancang untuk meningkatkan stabilitas dan akurasi algoritma pembelajaran mesin yang digunakan dalam klasifikasi statistik dan regresi. Tujuan utama bagging adalah menurunkan varians tanpa meningkatkan bias, sehingga metode ini paling efektif diterapkan pada algoritma yang tidak stabil dan memiliki varians tinggi (Fransiska, 2026).

Prinsip kerja bagging diawali dengan pembentukan sejumlah dataset bootstrap melalui pengambilan sampel dengan pengembalian dari data latih asli. Fransiska (2026) menjelaskan bahwa langkah-langkah algoritma bagging secara garis besar terbagi menjadi empat bagian, yaitu:

  1. Membuat sampel dari data training dengan jumlah sampel yang sesuai.
  2. Melatih model pada masing-masing sampel yang telah dibentuk.
  3. Membuat classifier dari setiap model dan menyimpan hasilnya.
  4. Menggabungkan hasil prediksi berdasarkan jenis ensemble yang digunakan.

Mekanisme agregasi bagging disesuaikan dengan jenis variabel respons yang dimodelkan. Fransiska (2026) menyatakan bahwa bagging pada kasus fungsi kontinu mengambil rata-rata tertimbang dari output beberapa model, sedangkan pada klasifikasi metode ini memberikan bobot pada output untuk digabungkan menjadi satu output tunggal. Syabana, Widiharih, dan Rochayani (2025) menambahkan bahwa bagging classification tree menggunakan variabel respons kategorik dengan agregasi berupa voting mayoritas atau rata-rata probabilitas, sedangkan bagging regression tree menggunakan variabel respons numerik dengan agregasi berupa rata-rata nilai prediksi. Pada kasus regresi, agregasi dilakukan dengan merata-ratakan hasil prediksi seluruh pohon, sebagaimana dijelaskan oleh Wijaya dkk. (2026) bahwa nilai prediksi akhir merupakan rata-rata dari hasil prediksi tiap pohon keputusan.

Kelebihan bagging terletak pada kemampuannya menurunkan varians secara efisien tanpa menambah bias serta memperkenalkan keberagaman pada data masukan melalui pendekatan bootstrap (Fransiska, 2026; Mienye & Sun, 2022). Fransiska (2026) menambahkan bahwa bagging paling cocok digunakan untuk model dengan variance tinggi dan bias rendah, serta setiap model dikembangkan secara paralel dan independen satu sama lain. Sudrajat dkk. (2022) menambahkan bahwa bagging mampu mengurangi varians dan membantu menghindari overfitting, serta dapat diterapkan pada berbagai jenis model meskipun biasanya digunakan pada model pohon keputusan. Keterbatasan bagging adalah peningkatan akurasi yang dicapai tidak disertai pertimbangan interpretabilitas, sehingga ketika base learner berupa pohon keputusan tunggal, diagram pohon yang mudah dipahami justru hilang akibat penggunaan banyak pohon. Mienye dan Sun (2022) juga mencatat bahwa bagging tidak efektif menurunkan bias dan kinerjanya terbatas ketika pengklasifikasi dasar memiliki bias tinggi.

2.6 Evaluasi Performa Model

Evaluasi performa model klasifikasi umumnya dilakukan menggunakan confusion matrix yang merangkum hasil prediksi ke dalam empat komponen, yaitu True Positive, True Negative, False Positive, dan False Negative. Confusion matrix membandingkan hasil prediksi model terhadap nilai aktual sehingga dapat dihitung metrik akurasi, sensitivitas, spesifisitas, dan F1-score. Akurasi dihitung sebagai perbandingan prediksi benar terhadap keseluruhan data, sedangkan sensitivitas mengukur kemampuan model mengidentifikasi seluruh sampel dari kelas positif (Cintari dkk., 2024). Spesifisitas mengukur kemampuan model mengidentifikasi kelas negatif, dan presisi menunjukkan ketepatan model dalam memprediksi kelas positif (Syabana, Widiharih, & Rochayani, 2025).

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

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

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

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

dengan \(TP\) adalah True Positive, \(TN\) adalah True Negative, \(FP\) adalah False Positive, dan \(FN\) adalah False Negative. Sensitivitas disebut juga recall dan mengukur proporsi sampel positif yang berhasil diidentifikasi dengan benar, sedangkan presisi mengukur proporsi prediksi positif yang benar-benar positif (Syabana, Widiharih, & Rochayani, 2025).

Evaluasi performa model regresi menggunakan metrik yang mengukur besaran galat antara nilai aktual dan nilai prediksi. Wijaya dkk. (2026) menggunakan Mean Absolute Error, Root Mean Square Error, dan koefisien determinasi untuk menilai tingkat kesalahan serta kemampuan model menjelaskan variasi data sebenarnya. Mienye dan Sun (2022) menyatakan bahwa nilai MAE, RMSE, dan MAPE yang semakin kecil serta nilai R-square yang mendekati satu menunjukkan kinerja model yang semakin baik. Syabana, Widiharih, dan Rochayani (2025) menambahkan bahwa MSE, RMSE, MAE, dan R-square digunakan sebagai metrik evaluasi untuk bagging regression tree.

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

\[ RMSE = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (Y_i - \hat{Y}_i)^2} \]

\[ MAE = \frac{1}{n} \sum_{i=1}^{n} \left| Y_i - \hat{Y}_i \right| \]

dengan \(Y_i\) adalah nilai aktual, \(\hat{Y}_i\) adalah nilai hasil prediksi, dan \(n\) adalah jumlah total data (Wijaya dkk., 2026). MSE mengukur rata-rata kuadrat selisih antara nilai aktual dan prediksi, sedangkan RMSE merupakan akar dari MSE sehingga satuannya sama dengan data asli (Syabana, Widiharih, & Rochayani, 2025). MAE menghitung rata-rata kesalahan absolut sehingga memberikan gambaran kesalahan secara langsung (Wijaya dkk., 2026).

BAB III METODE PENELITIAN

3.1 Jenis dan Sumber Data

Jenis data yang digunakan dalam penelitian ini adalah data kategorik, yaitu data yang menunjukkan pengelompokan objek berdasarkan kategori tertentu. Data yang digunakan berasal dari hasil pemeriksaan klinis sel kanker payudara yang disajikan dalam bentuk kategori.

Sumber data yang digunakan dalam penelitian ini adalah data sekunder. Data sekunder merupakan data yang telah dikumpulkan oleh pihak lain dan dapat dimanfaatkan kembali untuk keperluan penelitian. Dataset BreastCancer diperoleh dari package mlbench pada perangkat lunak R. Dataset tersebut terdiri atas 699 observasi dan 11 variabel, termasuk variabel Id yang hanya berfungsi sebagai pengenal.

3.2 Variabel Penelitian

Variabel merupakan karakteristik atau atribut yang dapat diukur maupun diamati dalam suatu penelitian. Penelitian ini menggunakan sepuluh variabel, yaitu Cl.thickness, Cell.size, Cell.shape, Marg.adhesion, Epith.c.size, Bare.nuclei, Bl.cromatin, Normal.nucleoli, Mitoses, dan Class. Variabel Id tidak diikutsertakan karena tidak memuat informasi yang berkaitan dengan karakteristik sel.

Variabel Class berperan sebagai variabel respons yang bertipe kategorik dengan dua kelas, yaitu benign (jinak) dan malignant (ganas). Sembilan variabel lainnya berperan sebagai variabel prediktor yang bertipe kategorik dengan skala 1 sampai 10, kecuali variabel Mitoses yang memiliki skala 1 sampai 9. Kelas malignant ditetapkan sebagai kelas positif dalam penghitungan metrik evaluasi.

3.3 Analisis Data

Berikut merupakan algoritma penelitian pada batasan masalah:

  1. Input data.
  2. Periksa struktur data.
  3. Tetapkan nilai seed dan nbagg.
  4. Bentuk model bagging.
  5. Prediksi kelas pada data.
  6. Bentuk confusion matrix.
  7. Hitung metrik evaluasi.
  8. Output.
  9. Interpretasi.

BAB IV HASIL DAN PEMBAHASAN

4.1 Pemanggilan Library dan Data

library(MASS)
library(survival)
library(mlbench)
library(ipred)

# Memanggil data Breast Cancer
data("BreastCancer", package = "mlbench")
data <- BreastCancer

# Struktur data
str(data)
## 'data.frame':    699 obs. of  11 variables:
##  $ Id             : chr  "1000025" "1002945" "1015425" "1016277" ...
##  $ Cl.thickness   : Ord.factor w/ 10 levels "1"<"2"<"3"<"4"<..: 5 5 3 6 4 8 1 2 2 4 ...
##  $ Cell.size      : Ord.factor w/ 10 levels "1"<"2"<"3"<"4"<..: 1 4 1 8 1 10 1 1 1 2 ...
##  $ Cell.shape     : Ord.factor w/ 10 levels "1"<"2"<"3"<"4"<..: 1 4 1 8 1 10 1 2 1 1 ...
##  $ Marg.adhesion  : Ord.factor w/ 10 levels "1"<"2"<"3"<"4"<..: 1 5 1 1 3 8 1 1 1 1 ...
##  $ Epith.c.size   : Ord.factor w/ 10 levels "1"<"2"<"3"<"4"<..: 2 7 2 3 2 7 2 2 2 2 ...
##  $ Bare.nuclei    : Factor w/ 10 levels "1","2","3","4",..: 1 10 2 4 1 10 10 1 1 1 ...
##  $ Bl.cromatin    : Factor w/ 10 levels "1","2","3","4",..: 3 3 3 3 3 9 3 3 1 2 ...
##  $ Normal.nucleoli: Factor w/ 10 levels "1","2","3","4",..: 1 2 1 7 1 7 1 1 1 1 ...
##  $ Mitoses        : Factor w/ 9 levels "1","2","3","4",..: 1 1 1 1 1 1 1 1 5 1 ...
##  $ Class          : Factor w/ 2 levels "benign","malignant": 1 1 1 1 1 2 1 1 1 1 ...

Pada batasan masalah diminta penggunaan data Breast Cancer untuk melakukan klasifikasi dengan metode Bagging. Package MASS dan survival dipanggil sebagai package pendukung, sedangkan mlbench menyediakan data Breast Cancer dan ipred menyediakan fungsi bagging. Data dipanggil dari mlbench, kemudian disimpan pada objek data agar mudah digunakan pada tahap berikutnya.

Fungsi str menampilkan bahwa data terdiri atas 699 observasi dan 11 variabel. Variabel Id bertipe karakter dan hanya berfungsi sebagai pengenal sehingga tidak dimasukkan ke dalam model. Sembilan variabel prediktor bertipe faktor, dengan sebagian besar memiliki 10 tingkat. Variabel Class sebagai variabel respons memiliki dua kategori, yaitu benign dan malignant.

4.2 Pembentukan Model Bagging Classification dan Perhitungan Metrik Evaluasi

# Menetapkan seed agar hasil dapat direproduksi
set.seed(46)

# Banyaknya sampel bootstrap yang dibandingkan
nbagg_list <- c(25, 20, 100)

# Wadah untuk menyimpan model dan hasil evaluasi
model_list <- list()
hasil_evaluasi <- data.frame()

for (b in nbagg_list) {

  cat("BAGGING DENGAN nbagg =", b, "\n")

  # Membuat model Bagging Classification
  class_mod <- bagging(
    Class ~ Cl.thickness + Cell.size +
      Cell.shape + Marg.adhesion +
      Epith.c.size + Bare.nuclei +
      Bl.cromatin + Normal.nucleoli +
      Mitoses,
    data = BreastCancer,
    nbagg = b,
    coob = TRUE
  )

  # Menyimpan model
  model_list[[paste0("nbagg_", b)]] <- class_mod

  # Menampilkan hasil model
  print(class_mod)
  summary(class_mod)

  # Prediksi
  pred_mod <- predict(
    class_mod,
    newdata = BreastCancer
  )

  # Confusion Matrix
  ConfusionMatrix <- table(
    Aktual = factor(BreastCancer$Class,
                    levels = c("benign", "malignant")),
    Prediksi = factor(pred_mod,
                      levels = c("benign", "malignant"))
  )

  print(ConfusionMatrix)

  # Mengambil nilai confusion matrix
  TN <- ConfusionMatrix[1, 1]
  FP <- ConfusionMatrix[1, 2]
  FN <- ConfusionMatrix[2, 1]
  TP <- ConfusionMatrix[2, 2]

  # Matriks Evaluasi

  # Accuracy
  accuracy <- (TP + TN) / (TP + TN + FP + FN)

  # Precision
  precision <- TP / (TP + FP)

  # Recall (Sensitivity)
  recall <- TP / (TP + FN)

  # Specificity
  specificity <- TN / (TN + FP)

  # Out-of-bag error
  oob_error <- class_mod$err

  # Menampilkan metrik evaluasi
  cat("\nAccuracy    :", round(accuracy, 4), "\n")
  cat("Precision   :", round(precision, 4), "\n")
  cat("Recall      :", round(recall, 4), "\n")
  cat("Specificity :", round(specificity, 4), "\n")
  cat("OOB Error   :", round(oob_error, 4), "\n")

  # Menyimpan hasil ke dalam tabel perbandingan
  hasil_evaluasi <- rbind(
    hasil_evaluasi,
    data.frame(
      nbagg       = b,
      TN          = TN,
      FP          = FP,
      FN          = FN,
      TP          = TP,
      Accuracy    = round(accuracy, 4),
      Precision   = round(precision, 4),
      Recall      = round(recall, 4),
      Specificity = round(specificity, 4),
      OOB_Error   = round(oob_error, 4)
    )
  )
}
## BAGGING DENGAN nbagg = 25 
## 
## Bagging classification trees with 25 bootstrap replications 
## 
## Call: bagging.data.frame(formula = Class ~ Cl.thickness + Cell.size + 
##     Cell.shape + Marg.adhesion + Epith.c.size + Bare.nuclei + 
##     Bl.cromatin + Normal.nucleoli + Mitoses, data = BreastCancer, 
##     nbagg = b, coob = TRUE)
## 
## Out-of-bag estimate of misclassification error:  0.0381 
## 
## 
## Bagging classification trees with 25 bootstrap replications 
## 
## Call: bagging.data.frame(formula = Class ~ Cl.thickness + Cell.size + 
##     Cell.shape + Marg.adhesion + Epith.c.size + Bare.nuclei + 
##     Bl.cromatin + Normal.nucleoli + Mitoses, data = BreastCancer, 
##     nbagg = b, coob = TRUE)
## 
## Out-of-bag estimate of misclassification error:  0.0381 
## 
##            Prediksi
## Aktual      benign malignant
##   benign       456         2
##   malignant      0       241
## 
## Accuracy    : 0.9971 
## Precision   : 0.9918 
## Recall      : 1 
## Specificity : 0.9956 
## OOB Error   : 0.0381 
## BAGGING DENGAN nbagg = 20 
## 
## Bagging classification trees with 20 bootstrap replications 
## 
## Call: bagging.data.frame(formula = Class ~ Cl.thickness + Cell.size + 
##     Cell.shape + Marg.adhesion + Epith.c.size + Bare.nuclei + 
##     Bl.cromatin + Normal.nucleoli + Mitoses, data = BreastCancer, 
##     nbagg = b, coob = TRUE)
## 
## Out-of-bag estimate of misclassification error:  0.0439 
## 
## 
## Bagging classification trees with 20 bootstrap replications 
## 
## Call: bagging.data.frame(formula = Class ~ Cl.thickness + Cell.size + 
##     Cell.shape + Marg.adhesion + Epith.c.size + Bare.nuclei + 
##     Bl.cromatin + Normal.nucleoli + Mitoses, data = BreastCancer, 
##     nbagg = b, coob = TRUE)
## 
## Out-of-bag estimate of misclassification error:  0.0439 
## 
##            Prediksi
## Aktual      benign malignant
##   benign       451         7
##   malignant      0       241
## 
## Accuracy    : 0.99 
## Precision   : 0.9718 
## Recall      : 1 
## Specificity : 0.9847 
## OOB Error   : 0.0439 
## BAGGING DENGAN nbagg = 100 
## 
## Bagging classification trees with 100 bootstrap replications 
## 
## Call: bagging.data.frame(formula = Class ~ Cl.thickness + Cell.size + 
##     Cell.shape + Marg.adhesion + Epith.c.size + Bare.nuclei + 
##     Bl.cromatin + Normal.nucleoli + Mitoses, data = BreastCancer, 
##     nbagg = b, coob = TRUE)
## 
## Out-of-bag estimate of misclassification error:  0.041 
## 
## 
## Bagging classification trees with 100 bootstrap replications 
## 
## Call: bagging.data.frame(formula = Class ~ Cl.thickness + Cell.size + 
##     Cell.shape + Marg.adhesion + Epith.c.size + Bare.nuclei + 
##     Bl.cromatin + Normal.nucleoli + Mitoses, data = BreastCancer, 
##     nbagg = b, coob = TRUE)
## 
## Out-of-bag estimate of misclassification error:  0.041 
## 
##            Prediksi
## Aktual      benign malignant
##   benign       455         3
##   malignant      0       241
## 
## Accuracy    : 0.9957 
## Precision   : 0.9877 
## Recall      : 1 
## Specificity : 0.9934 
## OOB Error   : 0.041

Pada batasan masalah diminta perbandingan hasil model Bagging dengan nilai nbagg sebesar 25, 20, dan 100. Ketiga nilai tersebut disimpan pada vektor nbagg_list dan dijalankan secara berurutan menggunakan perulangan for. Fungsi set.seed(46) ditetapkan sebelum perulangan agar sampel bootstrap yang terbentuk dapat direproduksi.

Fungsi bagging dari package ipred membentuk model dengan Class sebagai variabel respons dan sembilan variabel prediktor. Argumen nbagg menentukan banyaknya sampel bootstrap sekaligus banyaknya pohon klasifikasi yang dibangun. Argumen coob = TRUE meminta penghitungan estimasi galat out-of-bag, yaitu galat klasifikasi pada observasi yang tidak terambil dalam sampel bootstrap. Model pada setiap perulangan disimpan pada objek model_list.

Prediksi dilakukan pada seluruh data sehingga confusion matrix dapat disusun dari perbandingan kelas aktual dan kelas prediksi. Kelas malignant ditetapkan sebagai kelas positif, sehingga TN, FP, FN, dan TP berturut-turut menyatakan jumlah benign terprediksi benign, benign terprediksi malignant, malignant terprediksi benign, dan malignant terprediksi malignant. Metrik accuracy, precision, recall, dan specificity dihitung dari keempat nilai tersebut, sedangkan OOB error diambil dari objek model. Hasil setiap perulangan dikumpulkan pada objek hasil_evaluasi.

Accuracy menyatakan proporsi seluruh prediksi yang benar, sedangkan precision menyatakan ketepatan prediksi kelas malignant. Recall menunjukkan kemampuan model mendeteksi seluruh observasi malignant, dan specificity menunjukkan kemampuan model mengenali observasi benign. OOB error menyatakan proporsi kesalahan klasifikasi pada observasi yang tidak ikut melatih pohon yang bersangkutan.

4.3 Hasil Bagging Classification dengan nbagg = 25

model_list$nbagg_25
## 
## Bagging classification trees with 25 bootstrap replications 
## 
## Call: bagging.data.frame(formula = Class ~ Cl.thickness + Cell.size + 
##     Cell.shape + Marg.adhesion + Epith.c.size + Bare.nuclei + 
##     Bl.cromatin + Normal.nucleoli + Mitoses, data = BreastCancer, 
##     nbagg = b, coob = TRUE)
## 
## Out-of-bag estimate of misclassification error:  0.0381
hasil_evaluasi[hasil_evaluasi$nbagg == 25, ]
##   nbagg  TN FP FN  TP Accuracy Precision Recall Specificity OOB_Error
## 1    25 456  2  0 241   0.9971    0.9918      1      0.9956    0.0381

Tabel 4.1 Confusion matrix Bagging dengan nbagg = 25

Aktual  Prediksi Benign Malignant
Benign 456 2
Malignant 0 241

Model dengan 25 sampel bootstrap menghasilkan estimasi galat out-of-bag sebesar 0,0381. Nilai tersebut berarti sekitar 3,81 persen observasi yang tidak terambil pada sampel bootstrap salah diklasifikasikan. Galat ini menjadi ukuran yang lebih objektif karena dihitung pada observasi yang tidak digunakan untuk melatih pohon yang bersangkutan.

Tabel 4.1 menunjukkan bahwa 456 observasi benign terklasifikasi dengan benar, sedangkan 2 observasi benign salah diklasifikasikan sebagai malignant. Seluruh 241 observasi malignant terklasifikasi dengan benar sehingga tidak terdapat nilai FN. Accuracy yang diperoleh sebesar 0,9971, precision sebesar 0,9918, recall sebesar 1, dan specificity sebesar 0,9956. Nilai-nilai tersebut dihitung pada data yang sama dengan data pembentuk model sehingga cenderung lebih tinggi daripada estimasi OOB.

4.4 Hasil Bagging Classification dengan nbagg = 20

model_list$nbagg_20
## 
## Bagging classification trees with 20 bootstrap replications 
## 
## Call: bagging.data.frame(formula = Class ~ Cl.thickness + Cell.size + 
##     Cell.shape + Marg.adhesion + Epith.c.size + Bare.nuclei + 
##     Bl.cromatin + Normal.nucleoli + Mitoses, data = BreastCancer, 
##     nbagg = b, coob = TRUE)
## 
## Out-of-bag estimate of misclassification error:  0.0439
hasil_evaluasi[hasil_evaluasi$nbagg == 20, ]
##   nbagg  TN FP FN  TP Accuracy Precision Recall Specificity OOB_Error
## 2    20 451  7  0 241     0.99    0.9718      1      0.9847    0.0439

Tabel 4.2 Confusion matrix Bagging dengan nbagg = 20

Aktual  Prediksi Benign Malignant
Benign 451 7
Malignant 0 241

Model dengan 20 sampel bootstrap menghasilkan estimasi galat out-of-bag sebesar 0,0439, yang merupakan nilai tertinggi di antara ketiga model. Nilai tersebut menunjukkan bahwa sekitar 4,39 persen observasi out-of-bag salah diklasifikasikan. Galat yang lebih besar ini sejalan dengan banyaknya pohon yang paling sedikit pada model ini.

Tabel 4.2 menunjukkan bahwa 451 observasi benign terklasifikasi dengan benar dan 7 observasi benign salah diklasifikasikan sebagai malignant. Seluruh 241 observasi malignant tetap terklasifikasi dengan benar. Accuracy yang diperoleh sebesar 0,9900, precision sebesar 0,9718, recall sebesar 1, dan specificity sebesar 0,9847. Jumlah FP sebanyak 7 observasi menjadi penyebab precision dan specificity pada model ini lebih rendah daripada model lainnya.

4.5 Hasil Bagging Classification dengan nbagg = 100

model_list$nbagg_100
## 
## Bagging classification trees with 100 bootstrap replications 
## 
## Call: bagging.data.frame(formula = Class ~ Cl.thickness + Cell.size + 
##     Cell.shape + Marg.adhesion + Epith.c.size + Bare.nuclei + 
##     Bl.cromatin + Normal.nucleoli + Mitoses, data = BreastCancer, 
##     nbagg = b, coob = TRUE)
## 
## Out-of-bag estimate of misclassification error:  0.041
hasil_evaluasi[hasil_evaluasi$nbagg == 100, ]
##   nbagg  TN FP FN  TP Accuracy Precision Recall Specificity OOB_Error
## 3   100 455  3  0 241   0.9957    0.9877      1      0.9934     0.041

Tabel 4.3 Confusion matrix Bagging dengan nbagg = 100

Aktual  Prediksi Benign Malignant
Benign 455 3
Malignant 0 241

Model dengan 100 sampel bootstrap menghasilkan estimasi galat out-of-bag sebesar 0,0410. Nilai tersebut berarti sekitar 4,10 persen observasi out-of-bag salah diklasifikasikan. Galat ini lebih rendah daripada model dengan 20 sampel bootstrap, tetapi lebih tinggi daripada model dengan 25 sampel bootstrap.

Tabel 4.3 menunjukkan bahwa 455 observasi benign terklasifikasi dengan benar dan 3 observasi benign salah diklasifikasikan sebagai malignant. Seluruh 241 observasi malignant terklasifikasi dengan benar sehingga nilai FN tetap nol. Accuracy yang diperoleh sebesar 0,9957, precision sebesar 0,9877, recall sebesar 1, dan specificity sebesar 0,9934.

4.6 Perbandingan Hasil Evaluasi Model

# Tabel perbandingan hasil evaluasi
hasil_evaluasi
##   nbagg  TN FP FN  TP Accuracy Precision Recall Specificity OOB_Error
## 1    25 456  2  0 241   0.9971    0.9918      1      0.9956    0.0381
## 2    20 451  7  0 241   0.9900    0.9718      1      0.9847    0.0439
## 3   100 455  3  0 241   0.9957    0.9877      1      0.9934    0.0410

Tabel 4.4 Perbandingan metrik evaluasi Bagging Classification

nbagg TN FP FN TP Accuracy Precision Recall Specificity OOB Error
25 456 2 0 241 0,9971 0,9918 1 0,9956 0,0381
20 451 7 0 241 0,9900 0,9718 1 0,9847 0,0439
100 455 3 0 241 0,9957 0,9877 1 0,9934 0,0410

Tabel 4.4 memperlihatkan bahwa nilai recall sama pada ketiga model, yaitu 1, sehingga seluruh observasi malignant terdeteksi dengan benar. Perbedaan antarmodel terletak pada jumlah FP, yaitu 2, 7, dan 3 untuk nbagg sebesar 25, 20, dan 100. Perbedaan jumlah FP tersebut memengaruhi nilai accuracy, precision, dan specificity pada masing-masing model.

Model dengan nbagg = 25 memberikan hasil terbaik pada seluruh metrik, dengan accuracy sebesar 0,9971 dan OOB error terendah sebesar 0,0381. Model dengan nbagg = 20 menunjukkan performa terendah, dengan accuracy sebesar 0,9900 dan OOB error sebesar 0,0439. Model dengan nbagg = 100 berada di antara keduanya, dengan accuracy sebesar 0,9957 dan OOB error sebesar 0,0410.

Peningkatan nbagg dari 20 menjadi 100 memperbaiki performa model, tetapi model dengan nbagg = 25 justru lebih baik daripada model dengan nbagg = 100. Kondisi tersebut dapat terjadi karena sampel bootstrap dibangkitkan secara acak sehingga setiap model memuat variasi tersendiri. Selisih antarmodel yang kecil menunjukkan bahwa ketiga model sama-sama memiliki kemampuan klasifikasi yang sangat baik. Model dengan nbagg = 25 dipilih sebagai model terbaik karena memiliki OOB error paling rendah.

BAB V PENUTUP

5.1 Kesimpulan

Bagging (Bootstrap Aggregating) merupakan metode ensemble yang membentuk beberapa sampel bootstrap melalui pengambilan sampel dengan pengembalian dari data training. Setiap sampel digunakan untuk melatih satu model dasar secara paralel dan independen, umumnya berupa pohon keputusan yang memiliki varians tinggi. Hasil prediksi seluruh model digabungkan melalui pemungutan suara mayoritas pada klasifikasi atau rata-rata pada regresi. Mekanisme tersebut menurunkan varians dan meningkatkan kestabilan prediksi tanpa menambah bias.

Implementasi metode Bagging pada R dilakukan menggunakan fungsi bagging dari package ipred. Pembentukan model diawali dengan pemanggilan data, penetapan variabel respons dan variabel prediktor, serta penentuan banyaknya sampel bootstrap melalui argumen nbagg. Prediksi yang dihasilkan kemudian dibandingkan dengan kelas aktual dalam bentuk confusion matrix. Argumen coob digunakan untuk memperoleh estimasi galat out-of-bag dari data yang tidak terambil dalam sampel bootstrap.

Evaluasi performa model Bagging dilakukan menggunakan confusion matrix yang memuat komponen \(TP\), \(TN\), \(FP\), dan \(FN\). Dari keempat komponen tersebut dihitung metrik accuracy, precision, recall, dan specificity untuk menilai ketepatan prediksi pada masing-masing kelas. Estimasi galat out-of-bag melengkapi metrik tersebut sebagai ukuran yang lebih objektif karena dihitung pada data yang tidak ikut melatih pohon yang bersangkutan. Kombinasi ukuran ini memungkinkan kualitas prediksi dinilai secara menyeluruh.

Pada batasan masalah diminta penggunaan data Breast Cancer untuk Bagging Classification dengan perbandingan nilai nbagg sebesar 25, 20, dan 100. Ketiga model menghasilkan nilai recall sebesar 1 sehingga seluruh observasi malignant terklasifikasi dengan benar. Model dengan nbagg = 25 memberikan hasil terbaik dengan accuracy sebesar 0,9971 dan galat out-of-bag terendah sebesar 0,0381. Selisih antarmodel yang kecil menunjukkan bahwa ketiga model memiliki kemampuan klasifikasi yang sangat baik.

5.2 Saran

Penelitian selanjutnya disarankan membagi data menjadi data training dan data testing agar evaluasi mengukur kemampuan generalisasi model pada data baru. Cross-validation dan pengulangan dengan beberapa nilai seed juga dapat digunakan untuk memastikan hasil tidak dipengaruhi oleh pengambilan sampel bootstrap yang bersifat acak. Perbandingan dengan metode ensemble lain dapat memberikan gambaran yang lebih lengkap mengenai performa Bagging. Rentang nilai nbagg yang lebih luas dan beraturan juga dapat dicoba untuk melihat pengaruh jumlah sampel bootstrap secara lebih jelas.

DAFTAR PUSTAKA

Cintari, N. P., Alifviansyah, K., Tsabitah, D. U., Sartono, B., & Firdawanti, A. R. (2024). Analisis Perbandingan Kinerja Metode Ensemble Bagging dan Boosting pada Klasifikasi Bantuan Subsidi Listrik di Kabupaten/Kota Bogor. The Indonesian Journal of Computer Science, 13(6), 10071–10081. https://doi.org/10.33022/ijcs.v13i6.4537

Fransiska, H. (2026). Modul Praktikum Machine Learning and Modern Prediction. Bengkulu: Laboratorium Matematika Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Bengkulu.

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

Nanfack, G., Temple, P., & Frénay, B. (2022). Constraint Enforcement on Decision Trees: A Survey. ACM Computing Surveys, 54(10), 1–36. https://doi.org/10.1145/3506734

Rachmatullah, M. I. C. (2025). Ensemble Learning untuk Klasifikasi: Tinjauan Komprehensif Metode, Aplikasi, dan Perkembangan Terkini. IMPROVE, 17(1), 29–31.

Sudrajat, D., Purnamasari, A. I., Kurnia, D. A., & Bahtiar, A. (2022). Klasifikasi Mutu Pembelajaran Hybrid berdasarkan Algoritma C.45, Random Forest dan Naïve Bayes dengan Optimasi Bootsrap Areggating (Bagging) pada masa COVID-19. JURIKOM (Jurnal Riset Komputer), 9(6), 2227–2233. https://doi.org/10.30865/jurikom.v9i6.5179

Syabana, M. F., Widiharih, T., & Rochayani, M. Y. (2025). Bootstrap Aggregating Classification and Regression Trees (Bagging CART) untuk Klasifikasi Potensi Karyawan Resign Berdasarkan Kenyamanan Bekerja. Jurnal Gaussian, 14(2), 512–523. https://doi.org/10.14710/j.gauss.14.2.512-523

Wijaya, A., Siahaan, S. L., Fernando, C., & Manalu, M. P. P. (2026). Evaluasi Kinerja Regresi Linear, Random Forest, dan XGBoost dalam Prediksi XAU/USD. Jurnal Ilmu Komputer dan Sistem Informasi, 14(2), 1–10.