Machine learning bukanlah konsep yang baru. Sejak akhir tahun 1950-an, para peneliti telah berupaya mengembangkan algoritma yang memungkinkan mesin untuk belajar dari data. Salah satu pionirnya adalah Arthur Samuel, yang mengembangkan program bermain catur yang dapat “belajar” dari permainan sebelumnya untuk menjadi lebih baik. Seiring waktu, machine learning berkembang pesat dengan meningkatnya kemampuan komputasi dan ketersediaan data dalam jumlah besar. Di era digital saat ini, machine learning telah menjadi salah satu bidang yang paling cepat berkembang di dunia teknologi. Dari pengenalan pola sederhana hingga sistem pembelajaran mendalam (deep learning) yang kompleks, machine learning telah menjadi fondasi dari banyak inovasi teknologi modern, seperti pengenalan wajah, kendaraan otonom, asisten virtual, dan sistem rekomendasi (Bintoro dkk., 2024).
Machine Learning terbagi menjadi 2 macam konsep pembelajaran, yaitu pertama Supervised Learning yang merupakan teknik machine learning yang membuat suatu fungsi berdasarkan data latihan yang sudah ada, dalam hal ini dapat dikatakan untuk teknik ini sudah tersedia data latihan secara detail dan terklasifikasi dengan baik yang akan dijadikan sebuah model data saat dilakukan proses uji coba dengan data tes yang baru dan menghasilkan hasil keluaran yang sesuai diharapkan sebelumnya berdasarkan data latihan yang ada. Kedua adalah Unsupervised Learning yang merupakan teknik machine learning yang berusaha untuk melakukan representasi pola sebuah input yang berasal dari data latihan dan salah satu yang menjadi perbedaan dengan Supervised Learning adalah tidak adanya pengklasifikasian dari input data. Dalam Machine Learning teknik Unsupervised Learning menjadi esensial karena sistem kerja yang diberikan sama dengan cara kerja otak manusia dimana dalam proses pembelajaran tidak ada role model atau informasi dan contoh yang tersedia untuk dijadikan sebagai model dalam melakukan proses uji coba untuk penyelesaian sebuah masalah dengan data yang baru (Fathurohman, 2021).
Algoritma boosting merupakan metode yang menggabungkan beberapa model untuk meningkatkan perfoma dan akurasi. Di antara berbagai pendekatan machine learning, algoritma boostingmerupakan salah satu metode yang baik untuk melakukan prediksi. Algoritma boosting memiliki berbagai jenis pendekatan. Salah satu pendekatan menggunakan algoritma boosting diantaranya adalah AdaBoost, CatBoost, LightGBM, GradientBoost, dan XGBoost (Mawardi, Pradini, dan Haris, 2025). Ensemble learning adalah gabungan dari beberapa pembelajaran mesin untuk meningkatkan performa sistem secara keseluruhan. Studi empiris telah menunjukkan bahwa masalah klasifikasi dan regresi menggunakan ensemble learning seringkali menghasilkan performa model yang akurat daripada model base individual. Salah satu metode boosting yang sering digunakan adalah bagging. Teknik bagging, boosting dan random subspace method (RSM) di desain dan biasanya diaplikasikan pada Decision Tree (Rosyidi dan Rochmawati, 2023).
Berdasarkan latar belakang tersebut, rumusan masalah yang dapat disimpulkan adalah:
1.Bagaimana cara memahami 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?
Berdasarkan rumusan masalah tersebut, 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.
Adapun manfaat pada penelitian ini yaitu:
1.Bagi Penulis
a.Memberikan informasi serta pengetahuan tentang konsep dasar dan prinsip kerja metode Boosting dalam Machine Learning.
b.Mengembangkan dan menerapkan wawasan ilmu yang telah diperoleh dalam bidang statistika, khususnya tentang konsep dasar dan prinsip kerja metode Boosting, dan mengevaluasi performa Boosting dengan R-Studio.
2.Bagi Pembaca
Menambah ilmu pengetahuan dan pemahaman yang berkaitan dengan konsep dasar dan prinsip kerja metode Boosting dan penerapannya dengan R-Studio.
Lakukan analisis Boosting secara lengkap mulai dari persiapan data, pembentukan model, prediksi, evaluasi, visualisasi, dan interpretasi. Gunakan set.seed(234) agar hasil pembagian data dapat direproduksi. Lakukan klasifikasi menggunakan AdaBoost pada data BreastCancer. Clue: Gunakan adabag::boosting() dengan decision stump sebagai weak learner. Bandingkan untuk 50, 100 dan 200 jumlah learner. Bandingkan pula performa model berdasarkan confusion matrix, Accuracy, Precision, Recall, Specificity, dan F1-score.
Adapun sistematika penulisan dari praktikum ini adalah sebagai berikut.
BAB IPENDAHULUAN
Bab ini terdiri dari latar belakang, rumusan masalah, tujuan penelitian, manfaat penelitian, batasan masalah, dan sistematika penulisan.
BAB IITINJAUAN PUSTAKA
Bab ini berisi kajian pustaka yang terdiri dari jurnal, buku, dan informasi pendukung mengenai Boosting pada program RStudio.
BAB IIIMETODE PENELITIAN
Bab ini terdiri dari jenis dan sumber data, variabel penelitian, algoritma penelitian, dan diagram alir.
BAB IVHASIL DAN PEMBAHASAN
Bab ini berisi hasil yang diperoleh dari analisis data beserta penjelasannya pada bagian pembahasan.
BAB VKESIMPULAN
Bab ini merupakan bagian penutup laporan yang berisi kesimpulan dari hasil analisis serta saran dari penulis.
DAFTAR PUSTAKA
LAMPIRAN
Machine Learning adalah studi tentang algoritma untuk mempelajari bagaimana melakukan tugas-tugas tertentu yang dilakukan secara otomatis oleh orang-orang. Di sini, belajar mengacu pada kemampuan untuk melakukan berbagai kegiatan yang sudah ada atau untuk mengekstrapolasi kesimpulan baru dengan benar dari berbagai pola yang diamati sebelumnya. Salah satu subbidang kecerdasan buatan, Machine Learning, dapat berdampak pada sejumlah bidang lain, termasuk statistik, matematika, dan banyak bidang teoretis ilmu komputer. Intinya, tujuan machine learning adalah untuk mengembangkan algoritma yang dapat mengeksekusi sistem pembelajaran otonom dengan sangat sedikit masukan dari orang-orang pada umumnya. Berikut beberapa contoh algoritma dari konsep pembelajaran Supervised Learning dan Unsupervised Learning (Fathurohman, 2021):
1.Supervised Learning
a.Logistic Regression: adalah strategi statistik yang dapat digunakan untuk memecahkan masalah dengan membuat prediksi variabel baru berdasarkan sejumlah variabel yang sudah ada dan yang ditentukan sebelumnya dan mencari korelasi antara variabel data input yang ditentukan sebelumnya dengan variabel prediksi baru.
b.K-Nearest Neighbors Algorithm (KNN): memerlukan pembentukan ruang fitur di mana item yang menjadi data pelatihan dan model data diberi nilai berbobot dan direpresentasikan dalam vektor n-dimensi untuk menyelesaikan masalah klasifikasi. Kesulitan tersebut kemudian diselesaikan dengan menentukan jarak dari item baru yang dapat ditentukan menggunakan model data dalam vektor n-dimensi, dan objek baru tersebut kemudian diberikan kategori.
2.Unsupervised Learning
a.Clustering: sebuah proses untuk membuat arketipe item yang digunakan dalam pembelajaran mesin untuk mengatasi tantangan seperti mengklasifikasikan atau mengkategorikan hal-hal ke dalam kelas atau kategori. Data yang digunakan sebagai model data belum membentuk kelompok data, sehingga tidak dapat mengidentifikasi klasifikasi suatu item. Akibatnya, pola dasar pertama-tama harus dibangun menggunakan sejumlah karakteristik yang diperlukan sebelum model data dan data pelatihan dapat digunakan. jika terjadi klasifikasi objek baru.
Boosting adalah metode ensemble yang membentuk serangkaian model sederhana secara berurutan (sequential). Model berikutnya dibangun dengan memperhatikan kesalahan yang masih dilakukan oleh model sebelumnya. Oleh karena itu, kekuatan Boosting bukan berasal dari satu model yang sangat kompleks, melainkan dari gabungan banyak model sederhana yang secara bertahap memperbaiki hasil prediksi (Fransiska, 2026).
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. Karena Bagging dan Boosting sama-sama termasuk metode ensemble learning, perbedaannya adalah sebagai berikut.
Tabel 1. Perbedaan Bagging dan Boosting
| Aspek | Bagging | Boosting |
|---|---|---|
| Cara membangun model | Paralel/relatif independen | Sequential; learner berikutnya bergantung pada hasil sebelumnya |
| Data tiap learner | Umumnya sampel bootstrap | Data, bobot, atau target dapat disesuaikan berdasarkan kesalahan sebelumnya |
| Fokus utama | Mengurangi variance melalui agregasi | Memperbaiki kesalahan secara bertahap |
| Kontribusi learner | Umumnya setara pada Bagging dasar | Dapat berbeda; misalnya pada AdaBoost melalui \(\alpha_m\) |
| Base learner | Sering menggunakan pohon yang relatif besar | Umumnya menggunakan learner sederhana/pohon dangkal |
| Komputasi | Mudah diparalelkan | Lebih sulit diparalelkan karena bersifat sequential |
| Parameter penting | Jumlah model/bootstrap | Jumlah iterasi, learning rate, dan kompleksitas learner |
AdaBoost (Adaptive Boosting) merupakan salah satu algoritma Boosting yang banyak digunakan untuk kasus klasifikasi. Pada klasifikasi berbasis pohon, base learner yang digunakan biasanya berupa pohon sederhana atau decision stump. Prinsip utama AdaBoost adalah memberikan perhatian lebih besar pada observasi yang masih salah diklasifikasikan (Fransiska, 2026).
Pada kasus regresi, kesalahan model dapat dilihat melalui residual, yaitu selisih antara nilai aktual dan nilai hasil prediksi (Fransiska, 2026):
\[ e_i = y_i - \hat{y}_i \]
Residual menunjukkan bagian dari respons yang masih belum dapat diprediksi dengan baik oleh model. Gradient Boosting membangun weak learner berikutnya untuk mempelajari bagian kesalahan tersebut.
Kinerja Boosting dipengaruhi oleh beberapa parameter berikut (Fransiska, 2026).
| Parameter | Peran |
|---|---|
| Jumlah iterasi / jumlah learner | Menentukan berapa banyak learner yang ditambahkan |
| Learning rate \(\nu\) | Mengatur besar kontribusi setiap learner baru |
| Kedalaman pohon | Mengatur kompleksitas setiap weak learner |
Jumlah iterasi yang terlalu sedikit dapat menyebabkan underfitting, sedangkan model yang terlalu kompleks berpotensi mengalami overfitting. Oleh karena itu, jumlah iterasi perlu dipilih dengan hati-hati (James et al., 2021).
Evaluasi model klasifikasi dilakukan dengan membandingkan kelas aktual dan kelas hasil prediksi yang disajikan dalam confusion matrix:
| Predicted Positive | Predicted Negative | |
|---|---|---|
| Actual Positive | True Positive (TP) | False Negative (FN) |
| Actual Negative | False Positive (FP) | True Negative (TN) |
Berdasarkan confusion matrix, ukuran evaluasi yang digunakan adalah:
\[ Accuracy = \frac{TP+TN}{TP+TN+FP+FN} \qquad Precision = \frac{TP}{TP+FP} \qquad Recall = \frac{TP}{TP+FN} \] \[ Specificity = \frac{TN}{TN+FP} \qquad F1\text{-}Score = 2\left(\frac{Precision \times Recall}{Precision + Recall}\right) \] Recall (sensitivitas) menunjukkan kemampuan model mendeteksi kelas positif, sedangkan specificity menunjukkan kemampuan mendeteksi kelas negatif (Fransiska, 2026). Pada kasus ini, kelas positif adalah malignant, sehingga recall yang tinggi berarti sedikit tumor ganas yang terlewat (false negative).
Penelitian ini menggunakan pendekatan kuantitatif dengan metode klasifikasi machine learning. Data yang digunakan merupakan data sekunder Breast Cancer Wisconsin (Diagnostic) yang diperoleh melalui Kaggle, dengan sumber asli dari UCI Machine Learning Repository. Data tersebut berisi karakteristik sel tumor yang diperoleh dari citra Fine Needle Aspirate (FNA) dan digunakan untuk mengklasifikasikan tumor ke dalam dua kategori, yaitu Benign (jinak) dan Malignant (ganas). Data terdiri atas 569 observasi dengan 30 variabel prediktor numerik dan satu variabel respons berupa diagnosis tumor. Variabel id hanya berfungsi sebagai identitas pengamatan sehingga tidak digunakan dalam pembentukan model. Data dianalisis menggunakan algoritma Adaptive Boosting (AdaBoost) dengan decision stump sebagai weak learner. Pemodelan dilakukan menggunakan jumlah learner sebanyak 50, 100, dan 200 untuk mengetahui perbedaan performa klasifikasi berdasarkan jumlah pembelajar yang digunakan.
Variabel penelitian terdiri atas variabel respons dan variabel prediktor. Variabel respons adalah diagnosis, yang menunjukkan kategori tumor jinak (Benign/B) atau tumor ganas (Malignant/M). Sementara itu, variabel prediktor terdiri atas 30 karakteristik numerik sel tumor yang digunakan oleh algoritma AdaBoost untuk memprediksi diagnosis. Tiga puluh prediktor mencakup nilai rata-rata (mean), kesalahan standar (standard error), dan nilai terburuk (worst) dari sepuluh karakteristik sel, yaitu radius, tekstur, perimeter, area, smoothness, compactness, concavity, concave points, symmetry, dan fractal dimension. Dengan demikian, model menggunakan karakteristik sel tumor sebagai informasi untuk membedakan diagnosis jinak dan ganas.
Algoritma berdasarkan batasan masalah adalah:
1.Memasukkan dataset BreastCancer ke dalam R-Studio.
2.Memeriksa struktur dan distribusi kelas pada dataset.
3.Mengidentifikasi variabel prediktor dan variabel respon pada dataset.
4.Menghapus variabel identitas (ID) yang tidak digunakan dalam pemodelan.
5.Mengidentifikasi dan menangani nilai yang hilang (missing value) pada dataset.
6.Membagi dataset menjadi data training sebesar 70% dan data testing sebesar 30% menggunakan set.seed(234) dengan mempertahankan proporsi kelas.
7.Membentuk model AdaBoost Classification dengan jumlah learner sebanyak 50 menggunakan adabag::boosting() dan decision stump sebagai weak learner.
8.Membentuk model AdaBoost Classification dengan jumlah learner sebanyak 100 menggunakan parameter pemodelan yang sama.
9.Membentuk model AdaBoost Classification dengan jumlah learner sebanyak 200 menggunakan parameter pemodelan yang sama.
10.Melakukan prediksi kelas pada data testing menggunakan ketiga model AdaBoost Classification.
11.Membentuk confusion matrix untuk setiap model berdasarkan hasil prediksi dan kelas aktual.
12.Menghitung nilai Accuracy, Precision, Recall, Specificity, dan F1-score pada setiap model.
13.Membandingkan hasil metrik evaluasi dari ketiga model AdaBoost Classification melalui tabel dan visualisasi.
14.Membandingkan perkembangan error model pada data training dan testing serta mengidentifikasi variabel yang memiliki tingkat kepentingan tinggi (variable importance).
15.Menentukan model AdaBoost Classification dengan kinerja terbaik berdasarkan hasil evaluasi dan kemampuan mengklasifikasikan kelas Malignant secara tepat.
16.Kesimpulan.
Berikut ini diagram alir penelitian:
Diagram Alir Penelitian
Berikut ini library dan statistik deskriptif yang digunakan dalam meng-import data dari excel:
## 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
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(tidyr)
# ============================================================
# A1. MEMUAT DAN MEMERIKSA DATA
# ============================================================
data(BreastCancer, package = "mlbench")
bc <- BreastCancer
# Struktur dan ringkasan data
str(bc)## '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 ...
## Id Cl.thickness Cell.size Cell.shape Marg.adhesion
## Length :699 1 :145 1 :384 1 :353 1 :407
## N.unique :645 5 :130 10 : 67 2 : 59 2 : 58
## N.blank : 0 3 :108 3 : 52 10 : 58 3 : 58
## Min.nchar: 5 4 : 80 2 : 45 3 : 56 10 : 55
## Max.nchar: 8 10 : 69 4 : 40 4 : 44 4 : 33
## 2 : 50 5 : 30 5 : 34 8 : 25
## (Other):117 (Other): 81 (Other): 95 (Other): 63
## Epith.c.size Bare.nuclei Bl.cromatin Normal.nucleoli Mitoses
## 2 :386 1 :402 2 :166 1 :443 1 :579
## 3 : 72 10 :132 3 :165 10 : 61 2 : 35
## 4 : 48 2 : 30 1 :152 3 : 44 3 : 33
## 1 : 47 5 : 30 7 : 73 2 : 36 10 : 14
## 6 : 41 3 : 28 4 : 40 8 : 24 4 : 12
## 5 : 39 (Other): 61 5 : 34 6 : 22 7 : 9
## (Other): 66 NAs : 16 (Other): 69 (Other): 69 (Other): 17
## Class
## benign :458
## malignant:241
##
##
##
##
##
## [1] 699 11
## Cl.thickness Cell.size Cell.shape Marg.adhesion Epith.c.size
## 0 0 0 0 0
## Bare.nuclei Bl.cromatin Normal.nucleoli Mitoses Class
## 16 0 0 0 0
# Menghapus observasi dengan missing value
bc <- na.omit(bc)
# Memastikan respons berupa factor
bc$Class <- droplevels(as.factor(bc$Class))
# Memeriksa kategori dan distribusi kelas
levels(bc$Class)## [1] "benign" "malignant"
##
## benign malignant
## 444 239
##
## benign malignant
## 65.01 34.99
## [1] 683 10
Berdasarkan hasil pemeriksaan, dataset BreastCancer dari package mlbench terdiri atas 699 observasi dan 11 variabel, yaitu satu variabel identitas, sembilan variabel prediktor, dan satu variabel respons (Class). Variabel identitas Id dihapus karena tidak digunakan dalam pemodelan, sedangkan pemeriksaan missing value menunjukkan terdapat 16 nilai hilang pada variabel Bare.nuclei yang kemudian ditangani menggunakan fungsi na.omit(). Setelah proses preprocessing, diperoleh 683 observasi dan 10 variabel, dengan distribusi kelas benign sebanyak 444 observasi (65,01%) dan malignant sebanyak 239 observasi (34,99%). Variabel respons Class telah dipastikan bertipe faktor dengan dua kategori, yaitu benign (tumor jinak) dan malignant (tumor ganas), sehingga dataset siap digunakan untuk pemodelan klasifikasi menggunakan algoritma AdaBoost.
Berikut ini eksplorasi data yang digunakan:
# Distribusi kelas diagnosis
distribusi <- as.data.frame(table(bc$Class))
names(distribusi) <- c("Diagnosis", "Jumlah")
distribusi$Persentase <- round(
distribusi$Jumlah / sum(distribusi$Jumlah) * 100, 2
)
print(distribusi)## Diagnosis Jumlah Persentase
## 1 benign 444 65.01
## 2 malignant 239 34.99
# Visualisasi distribusi kelas
ggplot(distribusi, aes(x = Diagnosis, y = Jumlah,
fill = Diagnosis)) +
geom_col(width = 0.6) +
geom_text(aes(label = Jumlah), vjust = -0.5) +
labs(
title = "Distribusi Kelas Diagnosis BreastCancer",
x = "Diagnosis",
y = "Jumlah Pengamatan"
) +
theme_minimal() +
theme(legend.position = "none")
Berdasarkan hasil distribusi kelas diagnosis pada data BreastCancer,
diketahui bahwa dari total 683 pengamatan, terdapat 444 pengamatan
dengan diagnosis benign (jinak) atau sebesar 65,01%, sedangkan diagnosis
malignant (ganas) sebanyak 239 pengamatan atau sebesar 34,99%. Diagram
batang menunjukkan bahwa jumlah pasien dengan diagnosis jinak lebih
banyak dibandingkan pasien dengan diagnosis ganas. Hasil ini menunjukkan
bahwa distribusi kelas diagnosis pada data BreastCancer belum seimbang
karena jumlah pengamatan pada kelas benign lebih besar daripada kelas
malignant.
Berikut ini pembagian data train dan data test pada data yang digunakan:
# Set seed agar pembagian data dapat direproduksi
set.seed(234)
# Pembagian 70% training dan 30% testing secara stratifikasi
idx.cls <- createDataPartition(
bc$Class,
p = 0.70,
list = FALSE
)
bc.train <- bc[idx.cls, ]
bc.test <- bc[-idx.cls, ]
# Memeriksa ukuran data
dim(bc.train)## [1] 479 10
## [1] 204 10
##
## benign malignant
## 311 168
##
## benign malignant
## 133 71
##
## benign malignant
## 0.6492693 0.3507307
##
## benign malignant
## 0.6519608 0.3480392
Berdasarkan hasil pembagian data BreastCancer, sebanyak 479 pengamatan digunakan sebagai data training dan 204 pengamatan sebagai data testing, sehingga pembagian data mendekati proporsi 70% untuk pelatihan dan 30% untuk pengujian. Pada data training, terdapat 311 pengamatan dengan diagnosis benign dan 168 pengamatan dengan diagnosis malignant, sedangkan pada data testing terdapat 133 pengamatan benign dan 71 pengamatan malignant. Proporsi kelas pada data training menunjukkan bahwa diagnosis benign sebesar 64,93% dan malignant sebesar 35,07%. Hasil ini menunjukkan bahwa pembagian data secara stratifikasi berhasil mempertahankan proporsi kelas yang relatif serupa dengan data awal, sehingga kedua kelompok data dapat digunakan untuk membangun dan mengevaluasi model klasifikasi menggunakan metode Bagging.
Berikut ini pembentukan model AdaBoost pada data yang digunakan:
# Decision stump: pohon keputusan dengan kedalaman maksimum 1
kontrol <- rpart.control(
maxdepth = 1,
minsplit = 10,
cp = 0
)
# Fungsi pembentukan model dan evaluasi
evaluasi_adaboost <- function(m) {
set.seed(234)
# Membentuk model AdaBoost
model <- adabag::boosting(
Class ~ .,
data = bc.train,
boos = FALSE,
mfinal = m,
coeflearn = "Freund",
control = kontrol
)
# Prediksi data testing
hasil.pred <- predict(model, newdata = bc.test)
pred <- factor(
as.character(hasil.pred$class),
levels = levels(bc.test$Class)
)
aktual <- factor(
as.character(bc.test$Class),
levels = levels(bc.test$Class)
)
# Confusion matrix
cm <- caret::confusionMatrix(
data = pred,
reference = aktual,
positive = "malignant"
)
print(cm)
# Menyusun confusion matrix secara konsisten
tab <- table(
Aktual = factor(aktual,
levels = c("benign", "malignant")),
Prediksi = factor(pred,
levels = c("benign", "malignant"))
)
TN <- unname(tab["benign", "benign"])
FP <- unname(tab["benign", "malignant"])
FN <- unname(tab["malignant", "benign"])
TP <- unname(tab["malignant", "malignant"])
# Menghitung ukuran evaluasi
Accuracy <- (TP + TN) / sum(tab)
Precision <- if ((TP + FP) > 0) {
TP / (TP + FP)
} else {
NA_real_
}
Recall <- if ((TP + FN) > 0) {
TP / (TP + FN)
} else {
NA_real_
}
Specificity <- if ((TN + FP) > 0) {
TN / (TN + FP)
} else {
NA_real_
}
F1_Score <- if (is.finite(Precision) &&
is.finite(Recall) &&
(Precision + Recall) > 0) {
2 * Precision * Recall / (Precision + Recall)
} else {
NA_real_
}
metrik <- data.frame(
Learner = m,
Accuracy = Accuracy,
Precision = Precision,
Recall = Recall,
Specificity = Specificity,
F1_Score = F1_Score
)
# Menyimpan hasil prediksi
hasil <- data.frame(
Aktual = aktual,
Prediksi = pred
)
list(
model = model,
prediksi = hasil.pred,
hasil = hasil,
confusion = tab,
evaluasi = metrik,
cm = cm
)
}
# Menjalankan evaluasi AdaBoost
hasil_50 <- evaluasi_adaboost(50)## Confusion Matrix and Statistics
##
## Reference
## Prediction benign malignant
## benign 130 4
## malignant 3 67
##
## Accuracy : 0.9657
## 95% CI : (0.9306, 0.9861)
## No Information Rate : 0.652
## P-Value [Acc > NIR] : <2e-16
##
## Kappa : 0.9241
##
## Mcnemar's Test P-Value : 1
##
## Sensitivity : 0.9437
## Specificity : 0.9774
## Pos Pred Value : 0.9571
## Neg Pred Value : 0.9701
## Prevalence : 0.3480
## Detection Rate : 0.3284
## Detection Prevalence : 0.3431
## Balanced Accuracy : 0.9606
##
## 'Positive' Class : malignant
##
## Confusion Matrix and Statistics
##
## Reference
## Prediction benign malignant
## benign 130 4
## malignant 3 67
##
## Accuracy : 0.9657
## 95% CI : (0.9306, 0.9861)
## No Information Rate : 0.652
## P-Value [Acc > NIR] : <2e-16
##
## Kappa : 0.9241
##
## Mcnemar's Test P-Value : 1
##
## Sensitivity : 0.9437
## Specificity : 0.9774
## Pos Pred Value : 0.9571
## Neg Pred Value : 0.9701
## Prevalence : 0.3480
## Detection Rate : 0.3284
## Detection Prevalence : 0.3431
## Balanced Accuracy : 0.9606
##
## 'Positive' Class : malignant
##
## 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
## Prevalence : 0.3480
## Detection Rate : 0.3235
## Detection Prevalence : 0.3382
## Balanced Accuracy : 0.9535
##
## 'Positive' Class : malignant
##
Berdasarkan hasil penerapan metode Adaptive Boosting (AdaBoost) dengan decision stump pada data BreastCancer, diperoleh hasil evaluasi yang sama untuk jumlah iterasi (learner) sebanyak 25, 50, dan 100. Pada setiap model, dari 204 data pengujian, sebanyak 130 data dengan diagnosis benign dan 67 data dengan diagnosis malignant berhasil diklasifikasikan dengan benar, sedangkan 4 data malignant salah diklasifikasikan sebagai benign dan 3 data benign salah diklasifikasikan sebagai malignant. Ketiga model menghasilkan nilai accuracy sebesar 96,57%, sensitivity sebesar 94,37%, specificity sebesar 97,74%, dan Kappa sebesar 0,9241, yang menunjukkan tingkat kesesuaian klasifikasi yang sangat tinggi. Nilai precision untuk kelas malignant sebesar 95,71% menunjukkan bahwa sebagian besar prediksi ganas memang benar-benar ganas, sedangkan balanced accuracy sebesar 96,06% menunjukkan bahwa kemampuan klasifikasi kedua kelas relatif baik. Hasil yang sama pada ketiga jumlah iterasi menunjukkan bahwa penambahan learner dari 25 menjadi 50 dan 100 belum memberikan perubahan prediksi pada data pengujian. Dengan demikian, model AdaBoost dengan 25 learner dapat dipertimbangkan sebagai pilihan yang lebih efisien karena menghasilkan kinerja yang sama dengan model yang menggunakan lebih banyak learner.
Berikut ini hasil prediksi pada data yang digunakan:
## Aktual Prediksi
## 1 benign malignant
## 2 benign benign
## 3 benign benign
## 4 benign benign
## 5 benign benign
## 6 malignant malignant
## 7 benign benign
## 8 benign benign
## 9 benign benign
## 10 malignant malignant
## Aktual Prediksi
## 1 benign malignant
## 2 benign benign
## 3 benign benign
## 4 benign benign
## 5 benign benign
## 6 malignant malignant
## 7 benign benign
## 8 benign benign
## 9 benign benign
## 10 malignant malignant
## Aktual Prediksi
## 1 benign malignant
## 2 benign benign
## 3 benign benign
## 4 benign benign
## 5 benign benign
## 6 malignant malignant
## 7 benign benign
## 8 benign benign
## 9 benign benign
## 10 malignant malignant
Berdasarkan sintaks tersebut, fungsi head(hasil_50\(hasil, 10), head(hasil_100\)hasil, 10), dan head(hasil_200$hasil, 10) digunakan untuk menampilkan sepuluh prediksi pertama dari masing-masing model AdaBoost dengan jumlah learner sebanyak 50, 100, dan 200. Hasil yang ditampilkan terdiri atas kolom Aktual, yaitu diagnosis sebenarnya pada data testing, dan kolom Prediksi, yaitu diagnosis yang dihasilkan oleh model. Dengan membandingkan kedua kolom tersebut, dapat diketahui apakah model berhasil mengklasifikasikan diagnosis dengan benar atau masih melakukan kesalahan prediksi. Jika nilai pada kedua kolom sama, berarti klasifikasi pada pengamatan tersebut benar, sedangkan jika berbeda, berarti terjadi kesalahan klasifikasi. Perbandingan hasil prediksi dari ketiga model ini dapat membantu melihat konsistensi kinerja AdaBoost berdasarkan jumlah learner yang digunakan.
Berikut ini hasil confusion matrix pada data yang digunakan:
## Prediksi
## Aktual benign malignant
## benign 130 3
## malignant 4 67
## Prediksi
## Aktual benign malignant
## benign 130 3
## malignant 4 67
## Prediksi
## Aktual benign malignant
## benign 130 3
## malignant 5 66
Berdasarkan hasil confusion matrix pada model AdaBoost dengan 50, 100, dan 200 learner, model dengan 50 dan 100 learner menghasilkan klasifikasi yang sama, yaitu 130 data benign berhasil diprediksi dengan benar dan 67 data malignant berhasil diprediksi dengan benar. Selain itu, terdapat 3 data benign yang salah diklasifikasikan sebagai malignant dan 4 data malignant yang salah diklasifikasikan sebagai benign. Sementara itu, model dengan 200 learner menghasilkan 130 prediksi benar untuk kelas benign dan 66 prediksi benar untuk kelas malignant, dengan 3 data benign salah diklasifikasikan sebagai malignant serta 5 data malignant salah diklasifikasikan sebagai benign. Hasil ini menunjukkan bahwa model dengan 50 dan 100 learner memiliki kinerja klasifikasi yang sama, sedangkan penggunaan 200 learner menyebabkan satu tambahan kesalahan klasifikasi pada kelas malignant. Dengan demikian, penambahan jumlah learner tidak selalu meningkatkan kemampuan klasifikasi model AdaBoost, sehingga pemilihan model sebaiknya mempertimbangkan nilai metrik evaluasi secara keseluruhan serta efisiensi jumlah learner yang digunakan.
Berikut ini hasil perbandingan ukuran evaluasi pada data yang digunakan:
evaluasi.semua <- bind_rows(
hasil_50$evaluasi,
hasil_100$evaluasi,
hasil_200$evaluasi
)
# Menampilkan hasil dalam bentuk persentase
evaluasi.persen <- evaluasi.semua %>%
mutate(
across(
c(Accuracy, Precision, Recall, Specificity, F1_Score),
~ round(.x * 100, 2)
)
)
print(evaluasi.persen)## Learner Accuracy Precision Recall Specificity F1_Score
## 1 50 96.57 95.71 94.37 97.74 95.04
## 2 100 96.57 95.71 94.37 97.74 95.04
## 3 200 96.08 95.65 92.96 97.74 94.29
Berdasarkan hasil evaluasi dalam bentuk persentase, model AdaBoost dengan 50 dan 100 learner menghasilkan kinerja yang sama, yaitu accuracy sebesar 96,57%, precision sebesar 95,71%, recall sebesar 94,37%, specificity sebesar 97,74%, dan F1-Score sebesar 95,04%. Sementara itu, model dengan 200 learner menghasilkan accuracy sebesar 96,08%, precision sebesar 95,65%, recall sebesar 92,96%, specificity sebesar 97,74%, dan F1-Score sebesar 94,29%. Hasil tersebut menunjukkan bahwa model dengan 50 dan 100 learner memiliki performa yang lebih baik dibandingkan model dengan 200 learner, terutama dalam mendeteksi kelas malignant, yang ditunjukkan oleh nilai recall yang lebih tinggi. Oleh karena itu, model AdaBoost dengan 50 learner dapat dipilih sebagai model yang lebih efisien karena menghasilkan nilai evaluasi yang sama dengan model 100 learner, tetapi menggunakan jumlah learner yang lebih sedikit.
Berikut ini hasil visualisasi perbandingan performa model pada data yang digunakan:
evaluasi.long <- evaluasi.semua %>%
pivot_longer(
cols = c(
Accuracy, Precision, Recall,
Specificity, F1_Score
),
names_to = "Metrik",
values_to = "Nilai"
)
ggplot(
evaluasi.long,
aes(
x = factor(Learner),
y = Nilai,
fill = Metrik
)
) +
geom_col(position = "dodge") +
geom_text(
aes(label = round(Nilai, 3)),
position = position_dodge(width = 0.9),
vjust = -0.3,
size = 3
) +
scale_y_continuous(
limits = c(0, 1.12),
breaks = seq(0, 1, 0.2)
) +
labs(
title = "Perbandingan Performa Model AdaBoost",
subtitle = "Jumlah learner: 50, 100, dan 200",
x = "Jumlah Learner",
y = "Nilai Evaluasi",
fill = "Metrik"
) +
theme_minimal()
Berdasarkan diagram perbandingan performa model AdaBoost dengan jumlah
learner sebanyak 50, 100, dan 200, terlihat bahwa model dengan 50 dan
100 learner menghasilkan nilai evaluasi yang sama, yaitu Accuracy
sebesar 0,966, F1-Score sebesar 0,950, Precision sebesar 0,957, Recall
sebesar 0,944, dan Specificity sebesar 0,977. Sementara itu, model
dengan 200 learner mengalami penurunan pada beberapa metrik, yaitu
Accuracy menjadi 0,961, F1-Score menjadi 0,943, Precision menjadi 0,957,
dan Recall menjadi 0,930, sedangkan Specificity tetap sebesar 0,977.
Diagram tersebut menunjukkan bahwa penambahan jumlah learner tidak
selalu meningkatkan performa model. Oleh karena itu, model AdaBoost
dengan 50 learner dapat dipilih sebagai model terbaik karena memiliki
performa evaluasi yang sama dengan model 100 learner, tetapi menggunakan
jumlah learner yang lebih sedikit sehingga lebih efisien.
Berikut ini hasil visualisasi confusion matrix pada data yang digunakan:
buat_plot_cm <- function(tab, jumlah.learner) {
data.cm <- as.data.frame(tab)
names(data.cm) <- c("Aktual", "Prediksi", "Jumlah")
ggplot(
data.cm,
aes(x = Prediksi, y = Aktual, fill = Jumlah)
) +
geom_tile(color = "white") +
geom_text(aes(label = Jumlah), size = 6) +
labs(
title = paste(
"Confusion Matrix -",
jumlah.learner, "Learner"
),
x = "Kelas Prediksi",
y = "Kelas Aktual"
) +
theme_minimal()
}
buat_plot_cm(hasil_50$confusion, 50)
Berdasarkan visualisasi confusion matrix, model AdaBoost dengan 50 dan
100 learner menghasilkan klasifikasi yang sama, yaitu 130 data benign
berhasil diprediksi dengan benar dan 67 data malignant berhasil
diprediksi dengan benar. Sementara itu, terdapat 3 data benign yang
salah diklasifikasikan sebagai malignant dan 4 data malignant yang salah
diklasifikasikan sebagai benign. Pada model dengan 200 learner, sebanyak
130 data benign dan 66 data malignant berhasil diklasifikasikan dengan
benar, sedangkan 3 data benign salah diprediksi sebagai malignant dan 5
data malignant salah diprediksi sebagai benign. Hasil tersebut
menunjukkan bahwa model dengan 50 dan 100 learner memiliki kinerja
klasifikasi yang lebih baik dibandingkan model dengan 200 learner,
khususnya dalam mendeteksi diagnosis ganas (malignant). Dengan demikian,
model AdaBoost dengan 50 learner dapat dipilih karena menghasilkan
prediksi yang sama dengan model 100 learner dan memiliki jumlah learner
lebih sedikit sehingga lebih efisien.
Berikut ini hasil perkembangan error AdaBoost pada data yang digunakan:
# Model 50 learner
error.train_50 <- adabag::errorevol(
hasil_50$model, newdata = bc.train
)
error.test_50 <- adabag::errorevol(
hasil_50$model, newdata = bc.test
)
plot.errorevol(error.test_50, error.train_50)# Model 100 learner
error.train_100 <- adabag::errorevol(
hasil_100$model, newdata = bc.train
)
error.test_100 <- adabag::errorevol(
hasil_100$model, newdata = bc.test
)
plot.errorevol(error.test_100, error.train_100)# Model 200 learner
error.train_200 <- adabag::errorevol(
hasil_200$model, newdata = bc.train
)
error.test_200 <- adabag::errorevol(
hasil_200$model, newdata = bc.test
)
plot.errorevol(error.test_200, error.train_200)
Berdasarkan ketiga grafik Ensemble Error vs Number of Trees, terlihat
bahwa nilai kesalahan (error) pada data training (garis biru
putus-putus) dan data testing (garis merah) cenderung menurun seiring
bertambahnya jumlah iterasi atau pohon yang digunakan. Pada model dengan
50 dan 100 learner, kesalahan data testing menurun pada iterasi awal,
kemudian relatif stabil pada nilai sekitar 0,034 atau 3,4%. Sementara
itu, pada model dengan 200 learner, kesalahan data testing juga menurun
pada iterasi awal, tetapi mengalami sedikit peningkatan sekitar iterasi
ke-135 dan kemudian stabil di sekitar 0,038 atau 3,8%. Di sisi lain,
kesalahan data training terus menurun seiring bertambahnya iterasi, yang
menunjukkan bahwa model semakin baik dalam menyesuaikan data pelatihan.
Secara keseluruhan, grafik menunjukkan bahwa penambahan jumlah learner
tidak selalu menurunkan kesalahan prediksi pada data pengujian. Oleh
karena itu, model dengan 50 atau 100 learner dapat dipertimbangkan
karena memiliki kesalahan pengujian yang lebih rendah dibandingkan model
dengan 200 learner.
Berikut ini hasil variable importance pada data yang digunakan:
# Mengambil variable importance dari model 200 learner
importance.ada <- hasil_200$model$importance
# Mengurutkan dari terbesar ke terkecil
importance.ada <- sort(
importance.ada,
decreasing = TRUE
)
print(importance.ada)## Cell.size Bare.nuclei Cl.thickness Marg.adhesion Normal.nucleoli
## 37.360946 28.171016 9.835175 7.317661 5.932666
## Mitoses Epith.c.size Cell.shape Bl.cromatin
## 3.170586 2.965481 2.740277 2.506192
# Visualisasi 10 variabel terpenting
importance.top10 <- head(importance.ada, 10)
barplot(
importance.top10,
las = 2,
main = "10 Variabel Terpenting - AdaBoost",
xlab = "",
ylab = "Importance"
)
Berdasarkan hasil variable importance pada model AdaBoost dengan 200
learner, variabel Cell.size memiliki tingkat kepentingan tertinggi
sebesar 37,36, diikuti oleh Bare.nuclei sebesar 28,17 dan Cl.thickness
sebesar 9,84. Selanjutnya, variabel Marg.adhesion memiliki nilai
kepentingan sebesar 7,32, Normal.nucleoli sebesar 5,93, Mitoses sebesar
3,17, Epith.c.size sebesar 2,97, Cell.shape sebesar 2,74, dan
Bl.cromatin sebesar 2,51. Hasil tersebut menunjukkan bahwa Cell.size dan
Bare.nuclei merupakan variabel yang paling berperan dalam proses
klasifikasi diagnosis kanker payudara menggunakan AdaBoost, sedangkan
variabel lainnya memiliki tingkat kepentingan yang relatif lebih rendah.
Diagram batang memperjelas perbedaan kontribusi setiap variabel dalam
model. Namun, nilai importance menunjukkan kontribusi relatif variabel
terhadap proses prediksi, bukan membuktikan hubungan sebab-akibat dengan
diagnosis kanker payudara.
Berikut ini hasil model terbaik pada data yang digunakan:
# Model dengan F1-score tertinggi
model.terbaik <- evaluasi.semua$Learner[
which.max(evaluasi.semua$F1_Score)
]
cat(
"Jumlah learner dengan F1-score tertinggi:",
model.terbaik, "\n"
)## Jumlah learner dengan F1-score tertinggi: 50
# Model dengan Recall tertinggi
model.recall <- evaluasi.semua$Learner[
which.max(evaluasi.semua$Recall)
]
cat(
"Jumlah learner dengan Recall tertinggi:",
model.recall, "\n"
)## Jumlah learner dengan Recall tertinggi: 50
# Model dengan Accuracy tertinggi
model.accuracy <- evaluasi.semua$Learner[
which.max(evaluasi.semua$Accuracy)
]
cat(
"Jumlah learner dengan Accuracy tertinggi:",
model.accuracy, "\n"
)## Jumlah learner dengan Accuracy tertinggi: 50
Berdasarkan hasil penentuan model terbaik menggunakan tiga kriteria evaluasi, yaitu F1-Score, Recall, dan Accuracy, diperoleh bahwa model AdaBoost dengan 50 learner memiliki nilai tertinggi pada ketiga kriteria tersebut. Hasil ini menunjukkan bahwa model dengan 50 learner memberikan keseimbangan yang baik antara ketepatan prediksi kelas malignant dan kemampuan mendeteksi diagnosis ganas, serta memiliki tingkat ketepatan klasifikasi keseluruhan yang tinggi. Meskipun model dengan 100 learner menghasilkan nilai evaluasi yang sama, model dengan 50 learner dipilih karena menggunakan jumlah learner yang lebih sedikit sehingga lebih efisien. Sementara itu, model dengan 200 learner menunjukkan penurunan nilai F1-Score, Recall, dan Accuracy. Dengan demikian, model AdaBoost dengan 50 learner dipilih sebagai model terbaik berdasarkan hasil evaluasi pada data testing.
Machine Learning adalah studi tentang algoritma untuk mempelajari bagaimana melakukan tugas-tugas tertentu yang dilakukan secara otomatis oleh orang-orang. Di sini, belajar mengacu pada kemampuan untuk melakukan berbagai kegiatan yang sudah ada atau untuk mengekstrapolasi kesimpulan baru dengan benar dari berbagai pola yang diamati sebelumnya. Salah satu subbidang kecerdasan buatan, Machine Learning, dapat berdampak pada sejumlah bidang lain, termasuk statistik, matematika, dan banyak bidang teoretis ilmu komputer. Intinya, tujuan machine learning adalah untuk mengembangkan algoritma yang dapat mengeksekusi sistem pembelajaran otonom dengan sangat sedikit masukan dari orang-orang pada umumnya.
Boosting adalah metode ensemble yang membentuk serangkaian model sederhana secara berurutan (sequential). Model berikutnya dibangun dengan memperhatikan kesalahan yang masih dilakukan oleh model sebelumnya. Oleh karena itu, kekuatan Boosting bukan berasal dari satu model yang sangat kompleks, melainkan dari gabungan banyak model sederhana yang secara bertahap memperbaiki hasil prediksi (Fransiska, 2026).
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.
Berdasarkan keseluruhan hasil analisis klasifikasi data BreastCancer menggunakan metode Adaptive Boosting (AdaBoost), sebanyak 683 pengamatan dibagi menjadi 479 data training dan 204 data testing dengan mempertahankan proporsi kelas diagnosis. Pengujian dilakukan menggunakan jumlah learner sebanyak 50, 100, dan 200 dengan decision stump sebagai pembelajar dasar. Hasil evaluasi menunjukkan bahwa model dengan 50 dan 100 learner menghasilkan kinerja yang sama, yaitu Accuracy sebesar 96,57%, Precision sebesar 95,71%, Recall sebesar 94,37%, Specificity sebesar 97,74%, dan F1-Score sebesar 95,04%. Sementara itu, model dengan 200 learner mengalami penurunan Accuracy menjadi 96,08%, Recall menjadi 92,96%, dan F1-Score menjadi 94,29%. Hasil confusion matrix menunjukkan bahwa model 50 dan 100 learner berhasil mengklasifikasikan 197 dari 204 data pengujian dengan benar, sedangkan model 200 learner mengklasifikasikan 196 data dengan benar. Analisis variable importance juga menunjukkan bahwa Cell.size dan Bare.nuclei merupakan variabel yang paling berperan dalam proses klasifikasi. Dengan demikian, model AdaBoost dengan 50 learner dipilih sebagai model terbaik karena menghasilkan nilai Accuracy, Recall, dan F1-Score tertinggi bersama model 100 learner, tetapi menggunakan jumlah learner yang lebih sedikit sehingga lebih efisien.
Ketika menggunakan program R, diperlukan ketelitian dalam penulisan, memasukkan, melakukan perhitungan, dan hal lainnya dikarenakan jika salah maka tidak akan mendapatkan hasil yang diharapkan. Oleh karena itu, harus mengikuti prosedur yang ada. Ketelitian dalam menginterprestasikan output-nya agar tidak terjadi kekeliruan. Harus cermat dalam menggunakan fungsi yang akan gunakan.
Bintoro, P., Ratnasari., Wihardjo, E., Putri, I, P., Asari, A. (2024). Pengantar Machine Learning.
Fathurohman, A. (2021). Machine Learning Untuk Pendidikan: Mengapa Dan Bagaimana. JURNAL JITEK, Vol 1 No. 3 November (2021), Hal 57-62.
Fransiska, H. (2026). Modul Praktikum Machine Learning and Modern Prediction. Laboratorium Statistika, Universitas Bengkulu.
Mawardi, A, B., Pradini, R. S., dan Haris, M. S. (2025). Komparasi Algoritma Boosting untuk Prediksi Gangguan Tidur JITET (Jurnal Informatika dan Teknik Elektro Terapan), Vol. 13 No. 3, pISSN: 2303-0577 eISSN: 2830-7062.
Rosyidi, M. I. U., dan Rochmawati, N. (2023). JINACS (Journal of Informatics and Computer Science), Volume 05 Nomor 02, 2023.