BAB I PENDAHULUAN

1.1 Latar Belakang

Klasifikasi merupakan salah satu metode dalam machine learning yang digunakan untuk mengelompokkan objek ke dalam kelas berdasarkan karakteristik atau variabel prediktor. Salah satu tantangan dalam klasifikasi adalah memperoleh model yang stabil dan memiliki kemampuan prediksi yang baik pada data baru. Metode ensemble dikembangkan dengan menggabungkan sejumlah model untuk menghasilkan prediksi yang lebih andal.

Bootstrap Aggregating atau Bagging merupakan metode ensemble yang membangun beberapa model dari sampel bootstrap yang diambil dari data pelatihan (Breiman, 1996). Prediksi akhir diperoleh melalui penggabungan hasil prediksi dari model-model tersebut. Pada klasifikasi, penggabungan umumnya dilakukan melalui voting mayoritas. Jumlah model yang digunakan dapat memengaruhi kestabilan prediksi dan waktu komputasi.

Praktikum ini menerapkan Bagging Classification pada data Breast Cancer dari paket mlbench di R. Model dibangun dengan jumlah bootstrap 25, 50, dan 100, lalu kinerjanya dibandingkan menggunakan confusion matrix serta metrik accuracy, precision, recall, specificity, dan F1-score.

1.2 Rumusan Masalah

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

  1. Bagaimana menerapkan metode Bagging Classification pada data Breast Cancer?
  2. Bagaimana kinerja model dengan jumlah bootstrap 25, 50, dan 100?
  3. Model dengan jumlah bootstrap berapa yang menghasilkan kinerja terbaik berdasarkan metrik evaluasi klasifikasi?

1.3 Tujuan Penelitian

Berdasarkan latar belakang di atas, tujuan penelitian ini adalah sebagai berikut:

  1. Menerapkan Bagging Classification pada data Breast Cancer menggunakan RStudio.
  2. Menghasilkan model dengan jumlah bootstrap 25, 50, dan 100.
  3. Mengevaluasi dan membandingkan kinerja model menggunakan accuracy, precision, recall, specificity, dan F1-score.
  4. Menentukan model dengan kinerja terbaik berdasarkan hasil evaluasi pada data pengujian.

1.4 Manfaat Penelitian

Adapun manfaat pada penelitian ini yaitu:

  1. Bagi penulis

    1. Memberikan informasi serta pengetahuan tentang penerapan metode Bagging Classification pada data Breast Cancer dengan RStudio dalam Machine Learning.
    2. Mengembangkan dan menerapkan wawasan ilmu yang telah diperoleh dalam bidang statistika, khususnya tentang metode ensemble, pembuatan model klasifikasi, dan evaluasi model dengan RStudio.
  2. Bagi pembaca

    Menambah ilmu pengetahuan dan pemahaman yang berkaitan tentang penerapan Bagging Classification serta evaluasi kinerja model klasifikasi dengan RStudio.

1.5 Batasan Masalah

Adapun batasan masalah pada penelitian ini yaitu, sebagai berikut:

  1. Data yang digunakan adalah dataset BreastCancer dari paket mlbench di R dengan variabel respons Class (kelas benign dan malignant). Variabel Id tidak digunakan sebagai prediktor dan pengamatan yang memiliki data hilang dikeluarkan dari analisis.
  2. Data dibagi menjadi data latih sebesar 70% dan data uji sebesar 30% menggunakan pembagian terstratifikasi.
  3. Metode yang digunakan adalah Bagging Classification dengan fungsi ipred::bagging() pada jumlah bootstrap (nbagg) sebesar 25, 50, dan 100.
  4. Evaluasi model menggunakan confusion matrix, accuracy, precision, recall, specificity, dan F1-score, dengan kelas malignant ditetapkan sebagai kelas positif.
  5. Kesimpulan hanya berlaku pada hasil pembagian data dan pengaturan yang digunakan dalam praktikum ini.

1.6 Sistematika Penulisan

Adapun sistematika penulisan dari praktikum ini adalah:

BAB I PENDAHULUAN

Bab I terdiri dari latar belakang, rumusan masalah, tujuan penelitian, manfaat penelitian, batasan masalah, dan sistematika penulisan.

BAB II TINJAUAN PUSTAKA

Bab ini berisi tentang kajian pustaka yang terdiri dari jurnal-jurnal, buku-buku, dan informasi pendukung tentang klasifikasi, Bootstrap Aggregating (Bagging), confusion matrix, dan metrik evaluasi pada program RStudio.

BAB III METODE PENELITIAN

Bab ini terdiri dari jenis dan sumber data, variabel penelitian, analisis data, dan diagram alir penelitian.

BAB IV HASIL DAN PEMBAHASAN

Bab ini merupakan tahapan pencapaian hasil yang diperoleh dari analisis data yang dilakukan serta penjelasan dari hasil tersebut di bagian pembahasan.

BAB V KESIMPULAN DAN SARAN

Bab ini merupakan bagian penutup dalam laporan ini berupa penarikan kesimpulan mengenai hasil analisis dari penelitian serta penyampaian saran oleh penulis.

DAFTAR PUSTAKA

LAMPIRAN

BAB II TINJAUAN PUSTAKA

2.1 Klasifikasi

Klasifikasi merupakan teknik pembelajaran terawasi (supervised learning) yang mempelajari hubungan antara variabel prediktor dan variabel respons kategorik. Model yang terbentuk digunakan untuk memprediksi kelas pada pengamatan baru.

2.2 Bootstrap Aggregating (Bagging)

Bagging merupakan metode ensemble yang membangun sejumlah model dari sampel bootstrap (Breiman, 1996). Sampel bootstrap dibentuk dengan pengambilan kembali (sampling with replacement) dari data latih. Pada klasifikasi, prediksi akhir diperoleh melalui voting dari prediksi seluruh model. Bagging bertujuan membantu mengurangi variasi prediksi dan meningkatkan kestabilan model.

Parameter nbagg pada fungsi ipred::bagging() menentukan jumlah model bootstrap yang dibangun. Pada praktikum ini digunakan nilai 25, 50, dan 100 untuk membandingkan hasil prediksi.

2.3 Confusion Matrix

Confusion matrix membandingkan kelas aktual dengan kelas hasil prediksi. Dengan menetapkan kelas malignant sebagai kelas positif, komponennya adalah:

  1. True Positive (TP), yaitu kasus malignant yang diprediksi malignant.
  2. True Negative (TN), yaitu kasus benign yang diprediksi benign.
  3. False Positive (FP), yaitu kasus benign yang diprediksi malignant.
  4. False Negative (FN), yaitu kasus malignant yang diprediksi benign.

2.4 Metrik Evaluasi

Metrik evaluasi yang digunakan dalam praktikum ini adalah sebagai berikut (Kuhn, 2008):

  1. Accuracy, proporsi seluruh prediksi yang benar.

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

  2. Precision, proporsi prediksi positif yang benar.

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

  3. Recall (Sensitivity), proporsi kasus positif aktual yang berhasil dikenali.

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

  4. Specificity, proporsi kasus negatif aktual yang berhasil dikenali.

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

  5. F1-score, rata-rata harmonik precision dan recall.

    \[F1 = 2 \times \frac{Precision \times Recall}{Precision + Recall}\]

BAB III METODE PENELITIAN

3.1 Jenis dan Sumber Data

Jenis data yang digunakan dalam penelitian ini adalah data kuantitatif. Sumber data yang digunakan merupakan data sekunder berupa dataset BreastCancer dari paket mlbench pada R. Dataset memuat variabel respons Class dan sejumlah variabel prediktor yang menggambarkan karakteristik sampel. Variabel Id dikeluarkan dari analisis karena hanya berfungsi sebagai identitas pengamatan. Data diolah menggunakan program RStudio.

3.2 Variabel Penelitian

Variabel yang digunakan terdiri dari satu variabel respons dan sembilan variabel prediktor, sebagaimana disajikan pada Tabel 3.1.

Tabel 3.1 Variabel penelitian
Variabel Peran Keterangan
Class Respons (Y) Kelas sampel: benign atau malignant (malignant sebagai kelas positif)
Cl.thickness Prediktor Ketebalan gumpalan sel
Cell.size Prediktor Keseragaman ukuran sel
Cell.shape Prediktor Keseragaman bentuk sel
Marg.adhesion Prediktor Perlekatan marginal
Epith.c.size Prediktor Ukuran sel epitel tunggal
Bare.nuclei Prediktor Inti sel telanjang
Bl.cromatin Prediktor Kromatin yang lunak
Normal.nucleoli Prediktor Nukleolus normal
Mitoses Prediktor Mitosis

3.3 Analisis Data

Langkah-langkah yang digunakan pada penelitian adalah sebagai berikut:

  1. Input data.
  2. Menghapus variabel identitas dan menangani data hilang.
  3. Mengubah prediktor menjadi numerik dan respons menjadi faktor.
  4. Membagi data menjadi data latih (70%) dan data uji (30%) secara terstratifikasi.
  5. Membangun model Bagging dengan nbagg sebesar 25, 50, dan 100.
  6. Menghasilkan prediksi untuk data uji.
  7. Menghitung confusion matrix serta metrik evaluasi.
  8. Membandingkan model dan menentukan model terbaik.
  9. Output.
  10. Selesai.

3.4 Diagram Alir Penelitian

Gambar 3.1 Diagram alir penelitian

BAB IV HASIL DAN PEMBAHASAN

4.1 Hasil Pembersihan dan Pembagian Data

Dataset dimuat dengan data() ke environment sementara karena BreastCancer bukan objek yang diekspor oleh paket mlbench.

env_data <- new.env()
data("BreastCancer", package = "mlbench", envir = env_data)
data_awal <- env_data$BreastCancer

head(data_awal)
str(data_awal)
## '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 ...
data_analisis <- data_awal
data_analisis$Id <- NULL
data_analisis$Class <- factor(as.character(data_analisis$Class),
                              levels = c("benign", "malignant"))

for (k in setdiff(names(data_analisis), "Class")) {
  data_analisis[[k]] <- suppressWarnings(as.numeric(as.character(data_analisis[[k]])))
}

n_awal <- nrow(data_analisis)
data_analisis <- na.omit(data_analisis)
n_akhir <- nrow(data_analisis)

set.seed(234)
idx <- createDataPartition(data_analisis$Class, p = 0.70, list = FALSE)
data_train <- data_analisis[idx, , drop = FALSE]
data_test  <- data_analisis[-idx, , drop = FALSE]

tb_kelas <- rbind(
  Semua = table(data_analisis$Class),
  Latih = table(data_train$Class),
  Uji   = table(data_test$Class)
)
kable(tb_kelas, caption = "Tabel 4.1 Distribusi kelas pada data")
Tabel 4.1 Distribusi kelas pada data
benign malignant
Semua 444 239
Latih 311 168
Uji 133 71

Dari 699 pengamatan terdapat 16 baris yang dihapus karena memuat data hilang, sehingga data yang dianalisis berjumlah 683 pengamatan. Data dibagi secara terstratifikasi menjadi 479 data latih (70%) dan 204 data uji (30%). Pembagian terstratifikasi menjaga proporsi kelas benign dan malignant tetap serupa pada kedua bagian data.

4.2 Hasil Pemodelan dan Evaluasi Model

Model Bagging dibangun dengan ipred::bagging() pada data latih untuk nbagg = 25, 50, dan 100. Seluruh model diuji pada data uji yang sama. Kelas malignant diperlakukan sebagai kelas positif.

set.seed(234)
hasil   <- list()
cm_list <- list()

for (n in c(25, 50, 100)) {
  nama  <- paste0("Bagging_", n)
  model <- bagging(Class ~ ., data = data_train, nbagg = n, coob = TRUE)
  pred  <- predict(model, newdata = data_test, type = "class")
  pred  <- factor(as.character(pred), levels = c("benign", "malignant"))

  cm <- confusionMatrix(pred, data_test$Class,
                        positive = "malignant", mode = "everything")
  cm_list[[nama]] <- cm

  hasil[[nama]] <- data.frame(
    Model       = nama,
    Bootstrap   = n,
    Accuracy    = unname(cm$overall["Accuracy"]),
    Precision   = unname(cm$byClass["Precision"]),
    Recall      = unname(cm$byClass["Recall"]),
    Specificity = unname(cm$byClass["Specificity"]),
    F1_Score    = unname(cm$byClass["F1"]),
    TP = cm$table["malignant", "malignant"],
    TN = cm$table["benign", "benign"],
    FP = cm$table["malignant", "benign"],
    FN = cm$table["benign", "malignant"],
    row.names = NULL
  )
}

tabel_metrik <- do.call(rbind, hasil)
rownames(tabel_metrik) <- NULL
kolom <- c("Accuracy", "Precision", "Recall", "Specificity", "F1_Score")

kable(transform(tabel_metrik,
                Accuracy = round(Accuracy, 4), Precision = round(Precision, 4),
                Recall = round(Recall, 4), Specificity = round(Specificity, 4),
                F1_Score = round(F1_Score, 4)),
      caption = "Tabel 4.2 Perbandingan kinerja model Bagging Classification")
Tabel 4.2 Perbandingan kinerja model Bagging Classification
Model Bootstrap Accuracy Precision Recall Specificity F1_Score TP TN FP FN
Bagging_25 25 0.9608 0.9565 0.9296 0.9774 0.9429 66 130 3 5
Bagging_50 50 0.9608 0.9565 0.9296 0.9774 0.9429 66 130 3 5
Bagging_100 100 0.9608 0.9565 0.9296 0.9774 0.9429 66 130 3 5

Confusion Matrix Setiap Model

for (nama in names(cm_list)) {
  cat("\n\n**", nama, "**\n\n<pre>\n", sep = "")
  print(cm_list[[nama]])
  cat("</pre>\n")
}

Bagging_25

Confusion Matrix and Statistics

           Reference
Prediction  benign malignant
  benign       130         5
  malignant      3        66
                                          
               Accuracy : 0.9608          
                 95% CI : (0.9242, 0.9829)
    No Information Rate : 0.652           
    P-Value [Acc > NIR] : <2e-16          
                                          
                  Kappa : 0.913           
                                          
 Mcnemar's Test P-Value : 0.7237          
                                          
            Sensitivity : 0.9296          
            Specificity : 0.9774          
         Pos Pred Value : 0.9565          
         Neg Pred Value : 0.9630          
              Precision : 0.9565          
                 Recall : 0.9296          
                     F1 : 0.9429          
             Prevalence : 0.3480          
         Detection Rate : 0.3235          
   Detection Prevalence : 0.3382          
      Balanced Accuracy : 0.9535          
                                          
       'Positive' Class : malignant       
                                          

Bagging_50

Confusion Matrix and Statistics

           Reference
Prediction  benign malignant
  benign       130         5
  malignant      3        66
                                          
               Accuracy : 0.9608          
                 95% CI : (0.9242, 0.9829)
    No Information Rate : 0.652           
    P-Value [Acc > NIR] : <2e-16          
                                          
                  Kappa : 0.913           
                                          
 Mcnemar's Test P-Value : 0.7237          
                                          
            Sensitivity : 0.9296          
            Specificity : 0.9774          
         Pos Pred Value : 0.9565          
         Neg Pred Value : 0.9630          
              Precision : 0.9565          
                 Recall : 0.9296          
                     F1 : 0.9429          
             Prevalence : 0.3480          
         Detection Rate : 0.3235          
   Detection Prevalence : 0.3382          
      Balanced Accuracy : 0.9535          
                                          
       'Positive' Class : malignant       
                                          

Bagging_100

Confusion Matrix and Statistics

           Reference
Prediction  benign malignant
  benign       130         5
  malignant      3        66
                                          
               Accuracy : 0.9608          
                 95% CI : (0.9242, 0.9829)
    No Information Rate : 0.652           
    P-Value [Acc > NIR] : <2e-16          
                                          
                  Kappa : 0.913           
                                          
 Mcnemar's Test P-Value : 0.7237          
                                          
            Sensitivity : 0.9296          
            Specificity : 0.9774          
         Pos Pred Value : 0.9565          
         Neg Pred Value : 0.9630          
              Precision : 0.9565          
                 Recall : 0.9296          
                     F1 : 0.9429          
             Prevalence : 0.3480          
         Detection Rate : 0.3235          
   Detection Prevalence : 0.3382          
      Balanced Accuracy : 0.9535          
                                          
       'Positive' Class : malignant       
                                          

Visualisasi Perbandingan Metrik

data_plot <- data.frame(
  Model  = rep(tabel_metrik$Model, times = length(kolom)),
  Metrik = rep(kolom, each = nrow(tabel_metrik)),
  Nilai  = as.vector(as.matrix(tabel_metrik[, kolom]))
)

ggplot(data_plot, aes(x = Model, y = Nilai, fill = Metrik)) +
  geom_col(position = position_dodge(width = 0.8), width = 0.7) +
  scale_fill_brewer(palette = "Set2") +
  coord_cartesian(ylim = c(0, 1)) +
  labs(title = "Perbandingan Metrik Evaluasi Model Bagging",
       x = "Model", y = "Nilai metrik") +
  theme_minimal(base_size = 12) +
  theme(plot.title = element_text(face = "bold", hjust = 0.5),
        legend.position = "bottom")

4.3 Penentuan Model Terbaik

Model terbaik ditentukan berdasarkan accuracy tertinggi. Jika terdapat nilai accuracy yang sama, F1-score digunakan sebagai pembanding. Aturan ini hanya berlaku untuk praktikum ini dan bukan jaminan model akan menjadi yang terbaik pada data lain.

urut      <- order(-tabel_metrik$Accuracy, -tabel_metrik$F1_Score)
peringkat <- tabel_metrik[urut, ]
terbaik   <- peringkat[1, ]

kable(transform(peringkat,
                Accuracy = round(Accuracy, 4), Precision = round(Precision, 4),
                Recall = round(Recall, 4), Specificity = round(Specificity, 4),
                F1_Score = round(F1_Score, 4)),
      row.names = FALSE,
      caption = "Tabel 4.3 Peringkat model berdasarkan accuracy, kemudian F1-score")
Tabel 4.3 Peringkat model berdasarkan accuracy, kemudian F1-score
Model Bootstrap Accuracy Precision Recall Specificity F1_Score TP TN FP FN
Bagging_25 25 0.9608 0.9565 0.9296 0.9774 0.9429 66 130 3 5
Bagging_50 50 0.9608 0.9565 0.9296 0.9774 0.9429 66 130 3 5
Bagging_100 100 0.9608 0.9565 0.9296 0.9774 0.9429 66 130 3 5
selisih_acc <- max(tabel_metrik$Accuracy) - min(tabel_metrik$Accuracy)

Berdasarkan aturan tersebut, model dengan peringkat tertinggi adalah Bagging_25 dengan accuracy 0.9608, precision 0.9565, recall 0.9296, specificity 0.9774, dan F1-score 0.9429. Pada model ini terdapat 5 kasus malignant yang diprediksi benign (False Negative) dan 3 kasus benign yang diprediksi malignant (False Positive). Selisih accuracy antara model terbaik dan terendah adalah 0.0000.

Nilai recall menggambarkan proporsi kasus malignant aktual yang berhasil dikenali, sedangkan precision menggambarkan proporsi prediksi malignant yang benar. Karena itu penilaian model sebaiknya tidak hanya bergantung pada accuracy, terutama jika kesalahan dalam mengenali kasus malignant memiliki konsekuensi penting.

BAB V KESIMPULAN DAN SARAN

5.1 Kesimpulan

Metode Bagging Classification pada data Breast Cancer diterapkan di RStudio dengan fungsi ipred::bagging(). Data dibersihkan, dibagi secara terstratifikasi menjadi 70% data latih dan 30% data uji, kemudian model dibangun dengan jumlah bootstrap 25, 50, dan 100, dan dievaluasi menggunakan confusion matrix serta metrik accuracy, precision, recall, specificity, dan F1-score.

Berdasarkan hasil evaluasi pada data uji, model dengan jumlah bootstrap 25 (Bagging_25) memberikan kinerja terbaik dengan accuracy 0.9608 dan F1-score 0.9429. Kesimpulan ini hanya berlaku pada pembagian data dan pengaturan yang digunakan dalam praktikum ini.

5.2 Saran

Untuk pengembangan analisis, pengujian dapat dilakukan dengan beberapa nilai set.seed, validasi silang (cross-validation), atau pembagian data yang berbeda untuk melihat kestabilan hasil. Evaluasi juga dapat mempertimbangkan biaya kesalahan klasifikasi, khususnya kesalahan ketika kasus malignant diprediksi sebagai benign. Selain itu, hasil Bagging dapat dibandingkan dengan metode klasifikasi lain menggunakan prosedur pembagian data dan metrik evaluasi yang sama.

DAFTAR PUSTAKA

Breiman, L. (1996). Bagging predictors. Machine Learning, 24(2), 123–140.

Kuhn, M. (2008). Building predictive models in R using the caret package. Journal of Statistical Software, 28(5), 1–26.

R Core Team. (2026). R: A language and environment for statistical computing. R Foundation for Statistical Computing.

LAMPIRAN

Lampiran 1. Kode program R tersedia pada setiap chunk di Bab IV laporan ini. Jalankan seluruh dokumen dengan tombol Knit agar tabel, confusion matrix, grafik, dan interpretasi terisi dari hasil perhitungan aktual.