BAB I PENDAHULUAN

1.1 Latar Belakang Masalah

Perkembangan machine learning memungkinkan pengolahan data menggunakan berbagai algoritma untuk menghasilkan prediksi yang akurat. Salah satu pendekatan yang dapat digunakan adalah ensemble learning, yaitu teknik yang menggabungkan beberapa model untuk meningkatkan kinerja prediksi. Salah satu metode dalam ensemble learning adalah Boosting, yang membangun model secara bertahap dengan memperhatikan kesalahan prediksi model sebelumnya (Cendani dan Wibowo, 2022).

Metode Boosting dapat diterapkan pada permasalahan klasifikasi maupun regresi dengan algoritma seperti AdaBoost, Gradient Boosting, dan Extreme Gradient Boosting. Pada prosesnya, setiap model dibangun secara berurutan untuk memperbaiki kesalahan prediksi sehingga menghasilkan model gabungan yang lebih baik. Implementasi metode Boosting menggunakan R dapat dilakukan untuk membangun model berdasarkan karakteristik data dan tujuan analisis (Lutfiani et al., 2023).

Keberhasilan penerapan Boosting perlu dinilai melalui evaluasi performa model agar kemampuan prediksi yang dihasilkan dapat diketahui. Pada klasifikasi, evaluasi dapat menggunakan accuracy, precision, recall, F1-score, dan specificity, sedangkan pada regresi dapat menggunakan MAE, MSE, dan RMSE. Pemilihan ukuran evaluasi yang sesuai dengan jenis permasalahan diperlukan untuk memperoleh gambaran kinerja model secara tepat (Wibisono et al., 2024).

1.2 Rumusan Masalah

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

  1. Apa yang dimaksud dengan Boosting sebagai metode ensemble learning?

  2. Bagaimana mengimplementasikan Boosting untuk kasus klasifikasi dan regresi menggunakan R?

  3. Bagaimana mengevaluasi performa model menggunakan ukuran evaluasi yang sesuai?

1.3 Tujuan

Berdasarkan rumusan masalah pada penelitian ini, tujuan yang dapat disimpulkan adalah:

  1. Mahasiswa dapat memahami Boosting sebagai metode ensemble learning.

  2. Mahasiswa dapat mengimplementasikan Boosting untuk kasus klasifikasi dan regresi menggunakan R.

  3. Mahasiswa dapat mengevaluasi performa model menggunakan ukuran evaluasi yang sesuai.

BAB II TINJAUAN PUSTAKA

2.1 Boosting

Teknik ensemble learning dalam machine learning adalah penggabungan hasil dari beberapa model machine learning yang berbeda untuk meningkatkan kinerja keseluruhan prediksi. Ensemble learning sering digunakan karena dapat meningkatkan kinerja model klasifikasi secara signifikan, dengan mengurangi overfitting, dan membuat prediksi yang lebih stabil. Salah satu pendekatan ensemble learning adalah Boosting (Wibisono et al., 2024).

Berbeda dengan Bagging, model-model pada Boosting tidak dibangun secara independen. Pada Bagging, banyak model dapat dibentuk secara paralel dan kemudian hasil prediksinya diagregasi. Pada Boosting, learner ke-2 dibangun berdasarkan informasi dari hasil learner ke-1, learner ke-3 memperbaiki hasil yang masih belum baik dari tahap sebelumnya, dan proses tersebut dilanjutkan secara berurutan. Prinsip sequential learning inilah yang menjadi salah satu ciri utama Boosting.

Pada Boosting berbasis pohon, decision tree sering digunakan sebagai base learner. Kedalaman pohon dapat dibatasi sehingga setiap pohon tetap sederhana dan berperan sebagai weak learner. Selanjutnya, kontribusi dari pohon-pohon tersebut digabungkan secara bertahap sehingga membentuk model Boosting akhir (Fransiska, 2026).

2.2 Metrik Evaluasi Model Klasifikasi

Metrik evaluasi digunakan untuk menilai kinerja model klasifikasi berdasarkan hasil prediksi terhadap kelas sebenarnya. Menurut Syahrir et al. (2025), evaluasi model klasifikasi dapat dilakukan menggunakan metrik accuracy, precision, recall, dan F1-score. Berikut adalah penjelasam setiap metrik (Fransiska, 2026)(Wibisono et al., 2024):

  1. Accuracy

Accuracy adalah metrik evaluasi yang digunakan untuk mengukur proporsi jumlah prediksi yang benar terhadap seluruh data yang dievaluasi.

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

  1. Precision

Precision adalah metrik evaluasi yang digunakan untuk mengukur ketepatan model dalam memprediksi kelas positif dibandingkan dengan seluruh data yang diprediksi sebagai kelas positif.

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

  1. Recall

Recall adalah metrik evaluasi yang digunakan untuk mengukur kemampuan model dalam mengidentifikasi data yang sebenarnya termasuk kelas positif.

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

  1. F1-Score

F1-score adalah metrik evaluasi yang digunakan untuk mengukur keseimbangan antara precision dan recall melalui rata-rata harmonik kedua metrik tersebut.

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

  1. Specificity

Specificity adalah metrik evaluasi yang digunakan untuk mengukur proporsi data negatif yang diprediksi dengan benar sebagai negatif dari seluruh data yang sebenarnya negatif.

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

BAB III METODE PENELITIAN

3.1 Sumber Data

Jenis data pada penelitian ini adalah data kuantitatif dan data kualitatif. Data kuantitatif merupakan data atau informasi yang didapatkan dalam bentuk angka atau numerik. Data kuantitatif dapat diproses menggunakan rumus matematika atau dapat juga dianalisis dengan sistem statistik. Data kualitatif adalah suatu data yang tidak bisa diukur dengan angka. Data kualitatif adalah data yang dinyatakan dalam bentuk deskriptif atau naratif, bukan dalam bentuk angka.

Sumber data yang digunakan oleh penulis merupakan data sekunder. Data sekunder adalah sumber data yang diperoleh secara tidak langsung atau melalui media perantara. Data yang digunakan pada batasan masalah laporan ini merupakan data BreastCancer yang diperoleh langsung dari program R.

3.2 Variabel Penelitian

Variabel penelitian adalah karakter atau segala sesuatu yang menjadi perhatian dalam suatu penelitian. Pada laporan ini terdapat 10 variabel yang digunakan pada data. Variabel tersebut, yaitu Cl.thickness, Cell.size, Cell.shape, Marg.adhesion, Epith.c.size, Bare.nuclei, Bl,cromatin, Normal.nucleoli, Mitoses sebagai variabel prediktor, dan Class sebagai variabel respon.

3.3 Langkah-langkah Analisis

  1. Input data.

  2. Preprocessing data.

  3. Pembagian data training dan data testing.

  4. Menentukan jumlah weak learner.

  5. Membentuk model AdaBoost Classification dengan beberapa variasi weak learner.

  6. Melakukan prediksi pada model.

  7. Menghitung metrik evaluasi.

  8. Membandingkan hasil evaluasi dan menentukan model terbaik.

  9. Output dan interpretasi.

BAB IV HASIL DAN PEMBAHASAN

4.1 Input Package dan Dataset

Langkah pertama yang dilakukan adalah memanggil library dan meng-import data

knitr::opts_chunk$set(echo = TRUE)

library(adabag)
## Loading required package: rpart
## Loading required package: caret
## Loading required package: ggplot2
## Loading required package: lattice
## Loading required package: foreach
## Loading required package: doParallel
## Loading required package: iterators
## Loading required package: parallel
library(mlbench)
library(caret)
library(rpart)
library(ggplot2)
library(tidyr)
library(knitr)

# Memuat data
data(BreastCancer, package = "mlbench")
bc <- BreastCancer

# Persiapan data
bc$Id <- NULL
bc <- na.omit(bc)
bc$Class <- droplevels(as.factor(bc$Class))

knitr::kable(
  as.data.frame(table(Kelas = bc$Class)),
  col.names = c("Kelas", "Jumlah"),
  caption = "Distribusi kelas pada dataset BreastCancer"
)
Distribusi kelas pada dataset BreastCancer
Kelas Jumlah
benign 444
malignant 239

Berdasarkan hasil statistik deskriptif pada data BreastCancer, diperoleh sebanyak 683 observasi dan 10 variabel yang terdiri atas 9 variabel prediktor dan 1 variabel respon, yaitu Class. Data telah melalui proses pembersihan dengan menghapus kolom ID dan observasi yang memiliki missing value, sehingga tidak terdapat nilai yang hilang pada seluruh variabel. Variabel respon Class terdiri atas 444 data benign (jinak) atau sebesar 65,01% dan 239 data malignant (ganas) atau sebesar 34,99%. Hasil tersebut menunjukkan bahwa data didominasi oleh kelas benign. Data ini selanjutnya digunakan untuk membangun model AdaBoost Classification dengan variasi jumlah weak learner (mfinal) sebesar 50, 100, dan 200 untuk membandingkan kinerja klasifikasi berdasarkan metrik evaluasi, yaitu Accuracy, Precision, Recall, Specificity, dan F1-Score.

4.2 Membagi Data Training dan Testing

# Membagi data training dan testing (70% dan 30%)
set.seed(234)

idx.cls <- createDataPartition(
  bc$Class,
  p = 0.70,
  list = FALSE
)

bc.train <- bc[idx.cls, ]
bc.test <- bc[-idx.cls, ]

ukuran_data <- data.frame(
  Data = c("Training", "Testing", "Total"),
  Observasi = c(
    nrow(bc.train),
    nrow(bc.test),
    nrow(bc)
  )
)

knitr::kable(
  ukuran_data,
  caption = "Pembagian data training dan testing"
)
Pembagian data training dan testing
Data Observasi
Training 479
Testing 204
Total 683
distribusi.test <- as.data.frame(
  table(Kelas = bc.test$Class)
)

names(distribusi.test) <- c("Kelas", "Jumlah")

distribusi.test$Persentase <- round(
  distribusi.test$Jumlah /
    sum(distribusi.test$Jumlah) * 100,
  2
)

knitr::kable(
  distribusi.test,
  col.names = c("Kelas", "Jumlah", "Persentase (%)"),
  caption = "Distribusi kelas pada data testing"
)
Distribusi kelas pada data testing
Kelas Jumlah Persentase (%)
benign 133 65.2
malignant 71 34.8

Berdasarkan hasil pembagian data BreastCancer, diperoleh sebanyak 479 observasi sebagai data training (70%) dan 204 observasi sebagai data testing (30%) dari total 683 observasi. Pada data testing, terdapat 133 observasi kelas benign (jinak) atau sebesar 65,20% dan 71 observasi kelas malignant (ganas) atau sebesar 34,80%. Hasil tersebut menunjukkan bahwa kelas benign memiliki proporsi lebih besar dibandingkan kelas malignant pada data testing. Data training ini digunakan untuk membangun model AdaBoost Classification, sedangkan data testing digunakan untuk mengevaluasi kinerja masing-masing model.

4.3 Membentuk Model AdaBoost

# Membentuk model AdaBoost
# Decision stump menggunakan maxdepth = 1

jumlah.learner <- c(50, 100, 200)
model.ada <- list()

for (m in jumlah.learner) {

  set.seed(234)

  model.ada[[as.character(m)]] <- boosting(
    Class ~ .,
    data = bc.train,
    boos = FALSE,
    mfinal = m,
    coeflearn = "Freund",
    control = rpart.control(
      maxdepth = 1,
      minsplit = 10,
      cp = 0
    )
  )
}

# Tabel variasi model
ringkasan.model <- data.frame(
  Jumlah.Learner = jumlah.learner,
  Model = c(
    "AdaBoost 50 learner",
    "AdaBoost 100 learner",
    "AdaBoost 200 learner"
  )
)

knitr::kable(
  ringkasan.model,
  caption = "Variasi model AdaBoost yang dibandingkan"
)
Variasi model AdaBoost yang dibandingkan
Jumlah.Learner Model
50 AdaBoost 50 learner
100 AdaBoost 100 learner
200 AdaBoost 200 learner

Berdasarkan hasil pembentukan model AdaBoost Classification, dilakukan pemodelan dengan tiga variasi jumlah weak learner, yaitu 50, 100, dan 200. Pembentukan model menggunakan metode decision stump dengan kedalaman maksimum pohon sebesar 1, sehingga setiap pohon keputusan memiliki struktur sederhana. Variasi jumlah weak learner dipilih untuk mengetahui pengaruh penambahan jumlah weak learner terhadap kinerja klasifikasi model. Jumlah weak learner yang berbeda memungkinkan perbandingan kemampuan model dalam meningkatkan ketepatan klasifikasi melalui proses pembelajaran secara bertahap.

4.4 Prediksi pada Data Testing

# Melakukan prediksi data testing
pred.ada <- list()
hasil.prediksi <- data.frame(
  Aktual = bc.test$Class
)

for (m in jumlah.learner) {

  nama <- as.character(m)

  objek.prediksi <- predict(
    model.ada[[nama]],
    newdata = bc.test
  )

  pred <- factor(
    objek.prediksi$class,
    levels = levels(bc.test$Class)
  )

  pred.ada[[nama]] <- pred

  hasil.prediksi[[paste0("Prediksi_", nama)]] <- pred
}

knitr::kable(
  head(hasil.prediksi, 10),
  caption = "Hasil prediksi pada data testing"
)
Hasil prediksi pada data testing
Aktual Prediksi_50 Prediksi_100 Prediksi_200
benign malignant malignant malignant
benign benign benign benign
benign benign benign benign
benign benign benign benign
benign benign benign benign
malignant malignant malignant malignant
benign benign benign benign
benign benign benign benign
benign benign benign benign
malignant malignant malignant malignant

Berdasarkan hasil prediksi pada 10 observasi pertama data testing, diperoleh perbandingan antara kelas aktual dan hasil klasifikasi. Hasil menunjukkan bahwa ketiga model memberikan prediksi yang sama pada seluruh observasi yang ditampilkan, meskipun terdapat beberapa prediksi yang berbeda dari kelas aktual. Sebagai contoh, pada observasi pertama, kelas aktual benign diprediksi sebagai malignant oleh ketiga model. Sementara itu, pada sebagian besar observasi lainnya, hasil prediksi sesuai dengan kelas aktual. Namun, hasil pada 10 observasi pertama belum cukup untuk menentukan model dengan kinerja terbaik, sehingga diperlukan evaluasi menggunakan keseluruhan data testing melalui confusion matrix dan metrik evaluasi klasifikasi.

4.5 Menghitung Confusion Matrix dan Metrik Evaluasi

# Menghitung confusion matrix dan metrik evaluasi
# Kelas positif = malignant

hitung.evaluasi <- function(aktual, prediksi) {

  aktual <- factor(
    aktual,
    levels = c("benign", "malignant")
  )

  prediksi <- factor(
    prediksi,
    levels = c("benign", "malignant")
  )

  tab <- table(
    Aktual = aktual,
    Prediksi = prediksi
  )

  TN <- unname(tab["benign", "benign"])
  FP <- unname(tab["benign", "malignant"])
  FN <- unname(tab["malignant", "benign"])
  TP <- unname(tab["malignant", "malignant"])

  # Accuracy
  Accuracy <- (TP + TN) / sum(tab)

  # Precision
  Precision <- if ((TP + FP) == 0) {
    NA_real_
  } else {
    TP / (TP + FP)
  }

  # Recall
  Recall <- if ((TP + FN) == 0) {
    NA_real_
  } else {
    TP / (TP + FN)
  }

  # Specificity
  Specificity <- if ((TN + FP) == 0) {
    NA_real_
  } else {
    TN / (TN + FP)
  }

  # F1-score
  F1.Score <- if (
    is.na(Precision) ||
    is.na(Recall) ||
    (Precision + Recall) == 0
  ) {
    NA_real_
  } else {
    2 * Precision * Recall / (Precision + Recall)
  }

  list(
    confusion = tab,
    metrics = data.frame(
      Accuracy = Accuracy,
      Precision = Precision,
      Recall = Recall,
      Specificity = Specificity,
      F1_Score = F1.Score
    )
  )
}

# Menghitung evaluasi untuk setiap model
confusion.ada <- list()
evaluasi.ada <- list()

for (m in jumlah.learner) {

  nama <- as.character(m)

  hasil <- hitung.evaluasi(
    bc.test$Class,
    pred.ada[[nama]]
  )

  confusion.ada[[nama]] <- hasil$confusion
  evaluasi.ada[[nama]] <- hasil$metrics
}

# Menampilkan confusion matrix sebagai tabel
knitr::kable(
  as.data.frame.matrix(confusion.ada[["50"]]),
  caption = "Confusion matrix AdaBoost 50 learner"
)
Confusion matrix AdaBoost 50 learner
benign malignant
benign 130 3
malignant 4 67
knitr::kable(
  as.data.frame.matrix(confusion.ada[["100"]]),
  caption = "Confusion matrix AdaBoost 100 learner"
)
Confusion matrix AdaBoost 100 learner
benign malignant
benign 130 3
malignant 4 67
knitr::kable(
  as.data.frame.matrix(confusion.ada[["200"]]),
  caption = "Confusion matrix AdaBoost 200 learner"
)
Confusion matrix AdaBoost 200 learner
benign malignant
benign 130 3
malignant 5 66
# Menggabungkan hasil evaluasi
hasil.metrik <- do.call(rbind, evaluasi.ada)

hasil.metrik$Learner <- jumlah.learner

hasil.metrik <- hasil.metrik[
  ,
  c(
    "Learner",
    "Accuracy",
    "Precision",
    "Recall",
    "Specificity",
    "F1_Score"
  )
]

rownames(hasil.metrik) <- NULL

knitr::kable(
  hasil.metrik,
  digits = 4,
  caption = "Perbandingan metrik evaluasi AdaBoost"
)
Perbandingan metrik evaluasi AdaBoost
Learner Accuracy Precision Recall Specificity F1_Score
50 0.9657 0.9571 0.9437 0.9774 0.9504
100 0.9657 0.9571 0.9437 0.9774 0.9504
200 0.9608 0.9565 0.9296 0.9774 0.9429

Berdasarkan hasil confusion matrix, model AdaBoost dengan 50 dan 100 weak learner berhasil mengklasifikasikan 130 data benign dan 67 data malignant dengan benar, sedangkan model dengan 200 weak learner mengklasifikasikan 130 data benign dan 66 data malignant dengan benar. Hasil evaluasi menunjukkan bahwa model dengan 50 dan 100 weak learner memiliki kinerja yang sama, dengan nilai Accuracy sebesar 96,57%, Precision sebesar 95,71%, Recall sebesar 94,37%, Specificity sebesar 97,74%, dan F1-Score sebesar 95,04%. Adapun model dengan 200 weak learner memiliki Accuracy sebesar 96,08%, Precision sebesar 95,65%, Recall sebesar 92,96%, Specificity sebesar 97,74%, dan F1-Score sebesar 94,29%, sehingga penambahan jumlah weak learner tidak selalu meningkatkan kinerja klasifikasi.

4.6 Perbandingan Kinerja Model

# Mengubah tabel evaluasi ke format panjang
metrik.long <- tidyr::pivot_longer(
  hasil.metrik,
  cols = c(
    Accuracy,
    Precision,
    Recall,
    Specificity,
    F1_Score
  ),
  names_to = "Metrik",
  values_to = "Nilai"
)

# Membuat grafik perbandingan
ggplot(
  metrik.long,
  aes(
    x = factor(Learner),
    y = Nilai,
    group = Metrik
  )
) +
  geom_line() +
  geom_point(size = 2.5) +
  facet_wrap(~ Metrik) +
  labs(
    title = "Perbandingan Kinerja Model AdaBoost",
    x = "Jumlah learner",
    y = "Nilai metrik"
  ) +
  theme_minimal()

Berdasarkan grafik perbandingan kinerja model AdaBoost, model dengan 50 dan 100 weak learner menghasilkan nilai Accuracy, Precision, Recall, Specificity, dan F1-Score yang sama. Adapun model dengan 200 weak learner menunjukkan penurunan nilai Accuracy, Precision, Recall, dan F1-Score, sedangkan nilai Specificity tetap. Hasil tersebut menunjukkan bahwa model dengan 50 dan 100 weak learner memiliki kinerja klasifikasi yang sama dan lebih baik dibandingkan model dengan 200 weak learner berdasarkan metrik evaluasi yang digunakan.

4.7 Menentukan Model Terbaik

# Menentukan model terbaik
# Kriteria utama F1-score, lalu Recall, kemudian Accuracy

peringkat <- hasil.metrik[
  order(
    -hasil.metrik$F1_Score,
    -hasil.metrik$Recall,
    -hasil.metrik$Accuracy
  ),
]

rownames(peringkat) <- NULL

knitr::kable(
  peringkat,
  digits = 4,
  caption = "Peringkat model AdaBoost berdasarkan metrik evaluasi"
)
Peringkat model AdaBoost berdasarkan metrik evaluasi
Learner Accuracy Precision Recall Specificity F1_Score
50 0.9657 0.9571 0.9437 0.9774 0.9504
100 0.9657 0.9571 0.9437 0.9774 0.9504
200 0.9608 0.9565 0.9296 0.9774 0.9429
# Mengambil model terbaik
model.terbaik <- peringkat[1, ]

cat(
  "\nJumlah learner terbaik:",
  model.terbaik$Learner,
  "\n"
)
## 
## Jumlah learner terbaik: 50
cat(
  "F1-score:",
  round(model.terbaik$F1_Score, 4),
  "\n"
)
## F1-score: 0.9504
cat(
  "Recall:",
  round(model.terbaik$Recall, 4),
  "\n"
)
## Recall: 0.9437
cat(
  "Accuracy:",
  round(model.terbaik$Accuracy, 4),
  "\n"
)
## Accuracy: 0.9657

Berdasarkan hasil peringkat model AdaBoost, model dengan 50 weak learner terpilih sebagai model terbaik karena memiliki nilai Accuracy sebesar 96,57%, Precision sebesar 95,71%, Recall sebesar 94,37%, Specificity sebesar 97,74%, dan F1-Score sebesar 95,04%. Meskipun model dengan 100 weak learner menghasilkan nilai evaluasi yang sama, model dengan 50 weak learner dipilih karena mampu mencapai kinerja tersebut dengan jumlah weak learner yang lebih sedikit. Sedangkan model dengan 200 weak learner menghasilkan nilai evaluasi yang lebih rendah pada sebagian besar metrik evaluasi, sehingga penambahan jumlah weak learner tidak memberikan peningkatan kinerja klasifikasi.

BAB V KESIMPULAN

5.1 Kesimpulan

Boosting merupakan metode ensemble learning yang menggabungkan beberapa model sederhana (weak learner) secara bertahap untuk membentuk model yang memiliki kemampuan prediksi lebih baik. Setiap model baru dibentuk dengan memperhatikan kesalahan model sebelumnya sehingga proses pembelajaran dapat meningkatkan ketepatan prediksi secara keseluruhan. Metode ini dapat digunakan untuk menyelesaikan permasalahan klasifikasi maupun regresi.

Implementasi Boosting menggunakan R dilakukan melalui tahapan persiapan data, pembagian data training dan testing, pembentukan model, serta prediksi hasil. Model dibangun dengan menentukan algoritma Boosting dan parameter yang sesuai dengan karakteristik data serta tujuan analisis. Hasil pemodelan kemudian digunakan untuk menghasilkan prediksi pada data yang diuji.

Evaluasi performa model dilakukan menggunakan ukuran evaluasi yang disesuaikan dengan jenis permasalahan yang dianalisis. Pada klasifikasi, evaluasi dapat menggunakan Accuracy, Precision, Recall, Specificity, dan F1-Score, sedangkan pada regresi dapat menggunakan RMSE, MAE, dan MSE. Hasil evaluasi digunakan untuk menilai kemampuan prediksi model dan membandingkan kinerjanya berdasarkan ukuran evaluasi yang digunakan.

Berdasarkan hasil analisis dapat disimpulkan bahwa model AdaBoost yang dibangun menggunakan variasi jumlah weak learner sebanyak 50, 100, dan 200, dengan model 50 dan 100 weak learner menghasilkan kinerja yang sama. Sedangkan model dengan 200 weak learner menunjukkan kinerja yang lebih rendah. Dengan demikian, model dengan 50 weak learner dipilih sebagai model terbaik karena menghasilkan kinerja yang sama dengan 100 weak learner namun menggunakan jumlah weak learner yang lebih sedikit.

DAFTAR PUSTAKA

Cendani, L. M., & Wibowo, A. (2022). Perbandingan Metode Ensemble Learning pada Klasifikasi Penyakit Diabetes. Jurnal Masyarakat Informatika, 13(1), 33–44. https://doi.org/10.14710/jmasif.13.1.42912

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

Lutfiani, S., Saragih, T. H., Abadi, F., Faisal, M. R., & Kartini, D. (2023). Perbandingan Metode Extreme Gradient Boosting dan Metode Decision Tree untuk Klasifikasi Genre Musik. JIP (Jurnal Informatika Polinema), 9(4), 373–382.

Wibisono, S., Hadikurniawati, W., Yulianton, H., Lestariningsih, E., & Cahyono, T. D. (2024). Optimalisasi Model Klasifikasi Diabetes Menggunakan Ensemble Learning Adaboost, Gradient Boosting, dan XGBoost. Jurnal Teknik Informatika Unika ST. Thomas, 9(2), 2657–1501.