Kemajuan teknologi informasi dan analisis data telah membawa perubahan besar dalam bidang kesehatan, terutama dalam diagnosis penyakit dan pengambilan keputusan klinis. Machine learning menjadi salah satu pendekatan yang banyak digunakan untuk mengolah data medis dalam jumlah besar serta menemukan pola prediktif yang dapat membantu tenaga medis (Purnomo dkk., 2025). Salah satu metode machine learning yang dapat digunakan untuk klasifikasi penyakit adalah Decision Tree. Metode ini mampu mengolah data dengan atribut numerik maupun kategorikal serta menyajikan hasil klasifikasi dalam bentuk pohon keputusan yang mudah dipahami dan diinterpretasikan oleh tenaga kesehatan (Fiqriansyah dkk., 2022).
Algoritma Decision Tree bekerja dengan membagi dataset ke dalam beberapa cabang berdasarkan atribut tertentu hingga diperoleh keputusan akhir berupa kelas target. Dalam bidang medis, Decision Tree telah digunakan untuk membantu diagnosis berbagai penyakit, seperti penyakit jantung, kanker payudara, pneumonia, dan penyakit ginjal kronis (Fatah & Kholishah, 2026). Namun, salah satu tantangan dalam pengolahan data medis adalah adanya data yang hilang atau tidak konsisten. Oleh karena itu, preprocessing data menjadi langkah penting dalam mempersiapkan data sebelum pemodelan (Yuliani, 2022).
Sehubungan dengan hal tersebut, praktikum ini bertujuan untuk menerapkan dan menganalisis kinerja algoritma Decision Tree menggunakan metode Classification and Regression Tree (CART) dalam mengklasifikasikan kondisi kanker payudara berdasarkan dataset BreastCancer dari package mlbench di R. Analisis dilakukan untuk mengetahui kemampuan algoritma dalam menghasilkan klasifikasi yang akurat berdasarkan data medis serta mengevaluasi kinerja model menggunakan confusion matrix, kurva ROC, dan nilai AUC sebelum dan sesudah proses pruning.
Decision Tree merupakan salah satu metode supervised learning berbasis pohon yang dapat digunakan untuk membentuk aturan prediksi. Pada metode ini, data dibagi secara bertahap melalui proses splitting berdasarkan variabel prediktor sehingga terbentuk kelompok-kelompok data yang semakin homogen. Setiap percabangan pada pohon menunjukkan aturan pemisahan sedangkan simpul akhir (leaf node) menunjukkan hasil prediksi (Fransiska, 2026).
Pada decision tree terdapat 3 jenis node, yaitu (Prabawati dkk., 2019: a. Root Node: Node awal. yang tidak memiliki input dan dapat memiliki satu atau lebih output. b. Internal Node: Node percabangan. Node ini hanya memiliki satu input dan minimal dua output. c. Leaf node atau terminal node: node akhir, node ini hanya terdapat satu input dan tidak mempunyai output.
Salah satu metode dalam Decision Tree adalah Classification and Regression Tree (CART). CART dapat digunakan untuk dua jenis pemodelan, yaitu klasifikasi untuk memprediksi kategori atau kelas regresi untuk memprediksi nilai numerik. Jika variabel respon berupa kategori, pohon yang terbentuk disebut pohon klasifikasi (Classification Tree), jika variabel respon berupa numerik kontinu disebut pohon regresi (Regression Tree) (Fransiska, 2026).
Pada Classification Tree, pemisahan data dilakukan dengan menentukan aturan yang dapat membentuk kelompok data dengan kelas yang semakin homogen.Beberapa ukuran yang digunakan dalam proses pemisahan tersebut antara lain Entropy, Information Gain, dan Gini Index (Fransiska, 2026).
Entropy digunakan untuk mengukur tingkat ketidakpastian atau ketidakmurnian kelas dalam suatu simpul. Semakin kecil nilai Entropy, semakin homogen simpul tersebut. Dirumuskan sebagai (Fransiska, 2026):
\[ \ \mathrm{Entropy}(t)=-\sum_{k=1}^{K}p_k\log_2(p_k) \ \] Semakin kecil nilai Entropy, semakin homogen data dalam suatu simpul. Sebaliknya, nilai Entropy semakin besar apabila proporsi kelas dalam simpul semakin seimbang. Jika seluruh amatan dalam suatu simpul berasal dari satu kelas yang sama, maka nilai Entropy sama dengan 0.
Digunakan untuk mengukur seberapa besar tingkat ketidakpastian (Entropy) berkurang setelah dilakukan suatu split. Semakin besar nilai Information Gain, semakin baik pemisahan yang dilakukan karena kelompok data yang terbentuk menjadi semakin homogen. Jika suatu dataset 𝐷 dipartisi menjadi beberapa bagian 𝐷1,𝐷2,…,𝐷𝑗, maka Information Gain dirumuskan sebagai:
\[ \ IG=E(D)-\sum_{j=1}^{J}\frac{|D_j|}{|D|}E(D_j) \ \]
Jika data hanya dibagi menjadi dua bagian, yaitu 𝐷1 dan 𝐷2 maka rumusnya dapat ditulis sebagai:
\[ \ IG=E(D)-\left[\frac{|D_1|}{|D|}E(D_1)+\frac{|D_2|}{|D|}E(D_2)\right] \ \]
Digunakan untuk mengukur tingkat ketidakmurnian kelas (Gini impurity) dalam suatu simpul. Semakin kecil nilai Gini Index, semakin homogen data dalam simpul tersebut. Gini index dirumuskan sebagai:
\[ \ \mathrm{Gini}(t)=1-\sum_{k=1}^{K}p_k^2 \ \]
Jika dataset 𝐷 dipartisi menjadi dua bagian 𝐷1 dan 𝐷2, maka nilai Gini setelah pemisahan dihitung menggunakan rata-rata terbobot:
\[ \ \mathrm{Gini}_{\mathrm{split}}= \frac{|D_1|}{|D|}\mathrm{Gini}(D_1) +\frac{|D_2|}{|D|}\mathrm{Gini}(D_2) \ \]
Proses perhitungan entropy dan gain diulang secara rekursif pada setiap node hingga seluruh data terpartisi sempurna atau tidak ada lagi atribut yang dapat dipartisi (Fatah & Kholishah, 2026).
Sumber data yang digunakan dalam penelitian ini adalah data sekunder berupa dataset BreastCancer dari package mlbench pada program R, yang digunakan untuk klasifikasi kondisi kanker payudara.
Pada penelitian ini, variabel yang digunakan terdiri atas variabel prediktor dan variabel target. Variabel target yang digunakan yaitu Class, sedangkan variabel prediktor terdiri atas Cl.thickness (ketebalan gumpalan sel), Cell.size (keseragaman ukuran sel), Cell.shape (keseragaman bentuk sel), Marg.adhesion (perlekatan sel), Epith.c.size (ukuran sel epitel), Bare.nuclei (kondisi inti sel), Bl.cromatin (struktur kromatin sel), Normal.nucleoli (kondisi nukleolus sel), dan Mitoses (aktivitas pembelahan sel). Variabel Class menunjukkan kondisi kanker payudara yang dikategorikan menjadi benign (jinak) dan malignant (ganas).
Variabel Class menunjukkan klasifikasi kondisi kanker payudara, yaitu benign (jinak) dan malignant (ganas), sedangkan variabel prediktor digunakan untuk mengklasifikasikan kondisi tersebut.
Langkah-langkah analisis dalam penelitian ini adalah sebagai berikut:
mlbench pada program R.Id dan membagi data
training dan testing.##
## 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
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats 1.0.1 ✔ readr 2.2.0
## ✔ ggplot2 4.0.3 ✔ stringr 1.6.0
## ✔ lubridate 1.9.5 ✔ tibble 3.3.1
## ✔ purrr 1.2.2 ✔ tidyr 1.3.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
## Loading required package: lattice
##
## Attaching package: 'caret'
##
## The following object is masked from 'package:purrr':
##
## lift
##
## Attaching package: 'mice'
##
## The following object is masked from 'package:stats':
##
## filter
##
## The following objects are masked from 'package:base':
##
## cbind, rbind
##
## Attaching package: 'yardstick'
##
## The following objects are masked from 'package:caret':
##
## precision, recall, sensitivity, specificity
##
## The following object is masked from 'package:readr':
##
## spec
##
## Attaching package: 'Metrics'
##
## The following objects are masked from 'package:yardstick':
##
## accuracy, mae, mape, mase, mse, precision, recall, rmse, smape
##
## The following objects are masked from 'package:caret':
##
## precision, recall
## '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 ...
Dataset BreastCancer terdiri dari 699 observasi dengan 11 variabel. Variabel Id merupakan identitas sampel. Sembilan variabel lainnya merupakan prediktor yang menggambarkan karakteristik sel, sedangkan Class merupakan variabel respons yang terdiri dari dua kategori, yaitu benign (jinak) dan malignant (ganas)
BreastCancer$Bare.nuclei <- as.character(BreastCancer$Bare.nuclei)
BreastCancer$Bare.nuclei[BreastCancer$Bare.nuclei == "?"] <- NA
BreastCancer$Bare.nuclei <- factor(BreastCancer$Bare.nuclei)
sum(is.na(BreastCancer))## [1] 16
## Id Cl.thickness Cell.size Cell.shape Marg.adhesion
## 0 0 0 0 0
## Epith.c.size Bare.nuclei Bl.cromatin Normal.nucleoli Mitoses
## 0 16 0 0 0
## Class
## 0
Berdasarkan hasil output terdapat 16 missing value dari total 699 observasi. Nilai yang hilang terdapat pada variabel Bare.nuclei, sedangkan 10 varibael yang lain tidak terdapat missing value, sehingga perlu dilakukan penanganan missing value menggunakan metode imputasi melalui package mice sebelum membangun model Classification Tree.
BreastCancer <- BreastCancer[, -1]
metode <- make.method(BreastCancer)
metode["Class"] <- ""
prediktor <- make.predictorMatrix(BreastCancer)
prediktor[, "Class"] <- 0
prediktor["Class", ] <- 0
set.seed(234)
data_mice <- mice(
BreastCancer,
m = 5,
method = metode,
predictorMatrix = prediktor,
seed = 234
)##
## iter imp variable
## 1 1 Bare.nuclei
## 1 2 Bare.nuclei
## 1 3 Bare.nuclei
## 1 4 Bare.nuclei
## 1 5 Bare.nuclei
## 2 1 Bare.nuclei
## 2 2 Bare.nuclei
## 2 3 Bare.nuclei
## 2 4 Bare.nuclei
## 2 5 Bare.nuclei
## 3 1 Bare.nuclei
## 3 2 Bare.nuclei
## 3 3 Bare.nuclei
## 3 4 Bare.nuclei
## 3 5 Bare.nuclei
## 4 1 Bare.nuclei
## 4 2 Bare.nuclei
## 4 3 Bare.nuclei
## 4 4 Bare.nuclei
## 4 5 Bare.nuclei
## 5 1 Bare.nuclei
## 5 2 Bare.nuclei
## 5 3 Bare.nuclei
## 5 4 Bare.nuclei
## 5 5 Bare.nuclei
## [1] 0
## Cl.thickness Cell.size Cell.shape Marg.adhesion Epith.c.size
## 0 0 0 0 0
## Bare.nuclei Bl.cromatin Normal.nucleoli Mitoses Class
## 0 0 0 0 0
Berdasarkan hasil imputasi menggunakan metode MICE, proses imputasi dilakukan terhadap variabel Bare.nuclei yang sebelumnya memiliki 16 missing value. Hasil menunjukkan bahwa jumlah missing value setelah imputasi adalah 0, baik secara keseluruhan maupun pada setiap variabel. Dengan demikian, proses penanganan missing value berhasil dilakukan sehingga dataset dapat digunakan untuk tahap pemodelan Classification Tree.
BreastCancer$Class <- factor(
BreastCancer$Class,
levels = c("benign", "malignant"))
set.seed(234)
train <- createDataPartition(
BreastCancer$Class,
p = 0.7,
list = FALSE)
BreastCancer.train <- BreastCancer[train, ]
BreastCancer.test <- BreastCancer[-train, ]
Class.test <- BreastCancer.test$ClassDari 699 observasi, data dibagi menjadi 70% data training dan 30% data testing dengan mempertahankan proporsi kelas benign dan malignant. Data training digunakan untuk membangun model Classification Tree, sedangkan data testing digunakan untuk mengevaluasi hasil klasifikasi model
## n= 490
##
## node), split, n, loss, yval, (yprob)
## * denotes terminal node
##
## 1) root 490 169 benign (0.65510204 0.34489796)
## 2) Cell.size=1,2 309 11 benign (0.96440129 0.03559871)
## 4) Bare.nuclei=1,2,3,5 300 4 benign (0.98666667 0.01333333) *
## 5) Bare.nuclei=10,4,6,7,8 9 2 malignant (0.22222222 0.77777778) *
## 3) Cell.size=3,4,5,6,7,8,9,10 181 23 malignant (0.12707182 0.87292818)
## 6) Bare.nuclei=1,6 23 9 benign (0.60869565 0.39130435)
## 12) Cell.size=1,2,3 12 0 benign (1.00000000 0.00000000) *
## 13) Cell.size=4,5,6,7,8,9,10 11 2 malignant (0.18181818 0.81818182) *
## 7) Bare.nuclei=10,2,3,4,5,7,8,9 158 9 malignant (0.05696203 0.94303797) *
Interpretasi:
Model Classification Tree dibangun menggunakan 490 observasi data training. Pada simpul akar (root node), kelas benign memiliki proporsi sebesar 65%, sedangkan kelas malignant sebesar 35%.
Pemisahan pertama dilakukan berdasarkan variabel Cell.size. Kategori 1–2 didominasi kelas benign sebesar 96%, sedangkan kategori 3–10 didominasi kelas malignant sebesar 87%.
Pada kelompok Cell.size kategori 1–2, pemisahan berdasarkan Bare.nuclei menghasilkan kelas benign sebesar 99% untuk kategori 1, 2, 3, dan 5. Sementara itu, kategori 4, 6, 7, 8, dan 10 didominasi kelas malignant sebesar 78%.
Pada kelompok Cell.size kategori 3–10 dengan Bare.nuclei kategori 1 atau 6, pemisahan lanjutan berdasarkan Cell.size menghasilkan kelas benign sebesar 100% pada kategori 1–3 dan kelas malignant sebesar 82% pada kategori 4–10.
Pada cabang lainnya, yaitu kelompok Cell.size kategori 3–10 dengan Bare.nuclei kategori 2, 3, 4, 5, 7, 8, 9, dan 10, kelas malignant mendominasi sebesar 94%.
## Cell.size Cell.shape Bare.nuclei Bl.cromatin Epith.c.size
## 167.736760 134.863251 132.969691 122.495034 117.704827
## Normal.nucleoli Marg.adhesion Cl.thickness
## 114.854366 6.286741 3.404128
fit.tree$variable.importance %>%
data.frame() %>%
rownames_to_column(var = "Feature") %>%
rename(Overall = ".") %>%
ggplot(
aes(
x = fct_reorder(Feature, Overall),
y = Overall
)
) +
geom_pointrange(
aes(
ymin = 0,
ymax = Overall
),
color = "cadetblue",
size = 0.3
) +
theme_minimal() +
coord_flip() +
labs(
x = "",
y = "",
title = "Variable Importance with Classification Tree")Berdasarkan hasil variable importance, variabel Cell.size memiliki nilai kepentingan tertinggi sebesar 167,74, diikuti Cell.shape sebesar 134,86 dan Bare.nuclei sebesar 132,97. Sementara itu, Cl.thickness memiliki nilai kepentingan terendah sebesar 3,40, diikuti Marg.adhesion sebesar 6,29. Hasil ini menunjukkan bahwa Cell.size merupakan variabel yang paling berperan dalam pembentukan model Classification Tree.
pred.tree <- predict(
fit.tree,
newdata = BreastCancer.test,
type = "class")
table(pred.tree, Class.test)## Class.test
## pred.tree benign malignant
## benign 122 0
## malignant 15 72
### 10. Confusion Matrix Sebelum Pruning
matriks_kesalahan <- confusionMatrix(
data = pred.tree,
reference = Class.test,
positive = "malignant")
matriks_kesalahan## Confusion Matrix and Statistics
##
## Reference
## Prediction benign malignant
## benign 122 0
## malignant 15 72
##
## Accuracy : 0.9282
## 95% CI : (0.8844, 0.9593)
## No Information Rate : 0.6555
## P-Value [Acc > NIR] : < 2.2e-16
##
## Kappa : 0.8486
##
## Mcnemar's Test P-Value : 0.0003006
##
## Sensitivity : 1.0000
## Specificity : 0.8905
## Pos Pred Value : 0.8276
## Neg Pred Value : 1.0000
## Prevalence : 0.3445
## Detection Rate : 0.3445
## Detection Prevalence : 0.4163
## Balanced Accuracy : 0.9453
##
## 'Positive' Class : malignant
##
Berdasarkan hasil evaluasi Classification Tree sebelum pruning, model memperoleh nilai akurasi sebesar 92,82% dan nilai Kappa sebesar 0,8486. Dari 209 data testing, sebanyak 122 data benign dan 72 data malignant diklasifikasikan dengan benar, sedangkan 15 data benign salah diklasifikasikan sebagai malignant. Model memiliki sensitivitas sebesar 100% dan spesifisitas sebesar 89,05%, yang menunjukkan bahwa seluruh data aktual malignant berhasil teridentifikasi, sementara 89,05% data aktual benign diklasifikasikan dengan benar.
##
## Classification tree:
## rpart(formula = Class ~ ., data = BreastCancer.train, method = "class",
## cp = 0.008)
##
## Variables actually used in tree construction:
## [1] Bare.nuclei Cell.size
##
## Root node error: 169/490 = 0.3449
##
## n= 490
##
## CP nsplit rel error xerror xstd
## 1 0.798817 0 1.00000 1.00000 0.062260
## 2 0.035503 1 0.20118 0.27811 0.038571
## 3 0.029586 3 0.13018 0.18343 0.031886
## 4 0.008000 4 0.10059 0.18343 0.031886
## [1] 0.0295858
Berdasarkan tabel complexity parameter dan plot CP, nilai cross-validation error (xerror) terendah sebesar 0,18343 diperoleh pada CP 0,029586 dan 0,008. Pada plot, nilai kesalahan validasi silang menurun tajam dari satu pemisahan menjadi tiga pemisahan, kemudian relatif stabil pada empat pemisahan. Berdasarkan hasil tersebut, nilai CP terbaik adalah 0,0295858, sesuai dengan hasil pemilihan CP melalui nilai xerror minimum. Nilai ini selanjutnya digunakan untuk melakukan pruning pada pohon keputusan.
### 13. Prediksi Setelah Pruning
pred.prune <- predict(
pruned.tree,
newdata = BreastCancer.test,
type = "class")
table(pred.prune, Class.test)## Class.test
## pred.prune benign malignant
## benign 126 1
## malignant 11 71
Selanjutnya dilakukan pruning classification tree. Berdasarkan hasil pruning, pohon keputusan menjadi lebih sederhana dengan mengurangi jumlah percabangan. Pada data testing, sebanyak 126 data benign dan 71 data malignant diklasifikasikan dengan benar. Sementara itu, 11 data benign salah diklasifikasikan sebagai malignant dan 1 data malignant salah diklasifikasikan sebagai benign. Hasil ini menunjukkan bahwa model setelah pruning memiliki struktur pohon yang lebih sederhana dengan hasil klasifikasi yang perlu dievaluasi kembali menggunakan confusion matrix.
matriks_kesalahan <- confusionMatrix(
data = pred.prune,
reference = Class.test,
positive = "malignant")
matriks_kesalahan## Confusion Matrix and Statistics
##
## Reference
## Prediction benign malignant
## benign 126 1
## malignant 11 71
##
## Accuracy : 0.9426
## 95% CI : (0.9019, 0.97)
## No Information Rate : 0.6555
## P-Value [Acc > NIR] : < 2.2e-16
##
## Kappa : 0.8769
##
## Mcnemar's Test P-Value : 0.009375
##
## Sensitivity : 0.9861
## Specificity : 0.9197
## Pos Pred Value : 0.8659
## Neg Pred Value : 0.9921
## Prevalence : 0.3445
## Detection Rate : 0.3397
## Detection Prevalence : 0.3923
## Balanced Accuracy : 0.9529
##
## 'Positive' Class : malignant
##
Berdasarkan output, model memperoleh akurasi sebesar 94,26% dan nilai Kappa sebesar 0,8769. Dari 209 data testing, sebanyak 126 data benign dan 71 data malignant diklasifikasikan dengan benar, sedangkan 11 data benign salah diklasifikasikan sebagai malignant dan 1 data malignant salah diklasifikasikan sebagai benign. Model memiliki sensitivitas sebesar 98,61% dan spesifisitas sebesar 91,97%. Hasil ini menunjukkan bahwa model setelah pruning memiliki kinerja klasifikasi yang lebih baik dibandingkan model sebelum pruning, dengan peningkatan akurasi dari 92,82% menjadi 94,26%.
breastcancer_preds_cart <- bind_cols(
as.data.frame(
predict(
pruned.tree,
newdata = BreastCancer.test,
type = "prob")),
predicted = pred.prune,
actual = Class.test)
breastcancer_preds_cart## benign malignant predicted actual
## 5 0.96440129 0.03559871 benign benign
## 7 0.96440129 0.03559871 benign benign
## 9 0.96440129 0.03559871 benign benign
## 12 0.96440129 0.03559871 benign benign
## 19 0.05696203 0.94303797 malignant malignant
## 27 0.96440129 0.03559871 benign benign
## 30 0.96440129 0.03559871 benign benign
## 32 0.96440129 0.03559871 benign benign
## 33 0.05696203 0.94303797 malignant malignant
## 37 0.18181818 0.81818182 malignant malignant
## 41 0.05696203 0.94303797 malignant benign
## 45 0.18181818 0.81818182 malignant malignant
## 46 0.96440129 0.03559871 benign benign
## 50 0.05696203 0.94303797 malignant malignant
## 51 0.05696203 0.94303797 malignant malignant
## 56 0.05696203 0.94303797 malignant malignant
## 57 0.18181818 0.81818182 malignant malignant
## 62 0.96440129 0.03559871 benign benign
## 67 0.96440129 0.03559871 benign benign
## 68 0.05696203 0.94303797 malignant malignant
## 70 0.96440129 0.03559871 benign benign
## 73 1.00000000 0.00000000 benign benign
## 74 0.05696203 0.94303797 malignant malignant
## 75 0.05696203 0.94303797 malignant malignant
## 79 0.96440129 0.03559871 benign benign
## 87 0.05696203 0.94303797 malignant malignant
## 93 0.96440129 0.03559871 benign benign
## 94 0.96440129 0.03559871 benign benign
## 98 0.96440129 0.03559871 benign benign
## 99 0.18181818 0.81818182 malignant malignant
## 100 0.05696203 0.94303797 malignant malignant
## 101 0.05696203 0.94303797 malignant malignant
## 102 0.05696203 0.94303797 malignant malignant
## 110 0.05696203 0.94303797 malignant malignant
## 112 0.05696203 0.94303797 malignant malignant
## 114 0.05696203 0.94303797 malignant malignant
## 120 0.96440129 0.03559871 benign benign
## 123 0.05696203 0.94303797 malignant malignant
## 124 0.05696203 0.94303797 malignant malignant
## 126 0.96440129 0.03559871 benign benign
## 131 0.96440129 0.03559871 benign benign
## 134 0.96440129 0.03559871 benign benign
## 138 0.96440129 0.03559871 benign benign
## 144 0.96440129 0.03559871 benign benign
## 145 0.96440129 0.03559871 benign benign
## 152 0.96440129 0.03559871 benign malignant
## 167 0.05696203 0.94303797 malignant malignant
## 168 0.18181818 0.81818182 malignant malignant
## 173 0.96440129 0.03559871 benign benign
## 175 0.05696203 0.94303797 malignant malignant
## 177 0.96440129 0.03559871 benign benign
## 178 0.18181818 0.81818182 malignant malignant
## 180 0.05696203 0.94303797 malignant malignant
## 185 0.05696203 0.94303797 malignant malignant
## 186 0.96440129 0.03559871 benign benign
## 188 0.05696203 0.94303797 malignant malignant
## 191 0.05696203 0.94303797 malignant malignant
## 197 0.05696203 0.94303797 malignant benign
## 199 0.96440129 0.03559871 benign benign
## 205 0.96440129 0.03559871 benign benign
## 209 0.96440129 0.03559871 benign benign
## 211 0.05696203 0.94303797 malignant malignant
## 217 0.96440129 0.03559871 benign benign
## 219 0.05696203 0.94303797 malignant malignant
## 222 0.05696203 0.94303797 malignant malignant
## 226 0.96440129 0.03559871 benign benign
## 229 0.96440129 0.03559871 benign benign
## 231 0.05696203 0.94303797 malignant malignant
## 232 0.05696203 0.94303797 malignant malignant
## 235 1.00000000 0.00000000 benign benign
## 238 0.05696203 0.94303797 malignant malignant
## 244 0.96440129 0.03559871 benign benign
## 247 0.05696203 0.94303797 malignant malignant
## 253 0.05696203 0.94303797 malignant benign
## 256 0.05696203 0.94303797 malignant malignant
## 261 0.05696203 0.94303797 malignant malignant
## 269 0.05696203 0.94303797 malignant malignant
## 270 0.96440129 0.03559871 benign benign
## 272 0.96440129 0.03559871 benign benign
## 275 0.96440129 0.03559871 benign benign
## 280 0.05696203 0.94303797 malignant malignant
## 282 0.96440129 0.03559871 benign benign
## 287 0.05696203 0.94303797 malignant malignant
## 290 0.05696203 0.94303797 malignant malignant
## 297 0.05696203 0.94303797 malignant benign
## 298 0.05696203 0.94303797 malignant benign
## 310 0.96440129 0.03559871 benign benign
## 320 0.05696203 0.94303797 malignant benign
## 323 0.96440129 0.03559871 benign benign
## 325 0.96440129 0.03559871 benign benign
## 328 0.96440129 0.03559871 benign benign
## 329 0.05696203 0.94303797 malignant malignant
## 333 0.96440129 0.03559871 benign benign
## 338 0.96440129 0.03559871 benign benign
## 341 0.05696203 0.94303797 malignant malignant
## 345 0.05696203 0.94303797 malignant malignant
## 346 0.96440129 0.03559871 benign benign
## 348 0.96440129 0.03559871 benign benign
## 349 0.18181818 0.81818182 malignant malignant
## 355 0.96440129 0.03559871 benign benign
## 357 0.05696203 0.94303797 malignant malignant
## 364 0.05696203 0.94303797 malignant benign
## 365 0.96440129 0.03559871 benign benign
## 370 0.96440129 0.03559871 benign benign
## 371 1.00000000 0.00000000 benign benign
## 381 0.96440129 0.03559871 benign benign
## 387 0.05696203 0.94303797 malignant malignant
## 389 0.96440129 0.03559871 benign benign
## 392 0.05696203 0.94303797 malignant malignant
## 394 0.96440129 0.03559871 benign benign
## 395 0.96440129 0.03559871 benign benign
## 399 0.96440129 0.03559871 benign benign
## 401 0.05696203 0.94303797 malignant malignant
## 403 1.00000000 0.00000000 benign benign
## 408 0.96440129 0.03559871 benign benign
## 409 0.05696203 0.94303797 malignant benign
## 416 0.05696203 0.94303797 malignant benign
## 420 1.00000000 0.00000000 benign benign
## 421 0.96440129 0.03559871 benign benign
## 424 0.96440129 0.03559871 benign benign
## 430 0.96440129 0.03559871 benign benign
## 431 1.00000000 0.00000000 benign benign
## 440 0.96440129 0.03559871 benign benign
## 441 0.05696203 0.94303797 malignant malignant
## 442 0.96440129 0.03559871 benign benign
## 450 0.05696203 0.94303797 malignant malignant
## 451 0.96440129 0.03559871 benign benign
## 457 0.05696203 0.94303797 malignant malignant
## 464 0.96440129 0.03559871 benign benign
## 465 0.96440129 0.03559871 benign benign
## 466 0.05696203 0.94303797 malignant malignant
## 467 0.05696203 0.94303797 malignant malignant
## 469 0.96440129 0.03559871 benign benign
## 474 0.96440129 0.03559871 benign benign
## 477 0.96440129 0.03559871 benign benign
## 493 0.96440129 0.03559871 benign benign
## 494 0.05696203 0.94303797 malignant malignant
## 496 0.96440129 0.03559871 benign benign
## 499 0.96440129 0.03559871 benign benign
## 500 0.96440129 0.03559871 benign benign
## 503 0.96440129 0.03559871 benign benign
## 505 0.96440129 0.03559871 benign benign
## 510 0.96440129 0.03559871 benign benign
## 512 0.96440129 0.03559871 benign benign
## 513 0.96440129 0.03559871 benign benign
## 514 0.96440129 0.03559871 benign benign
## 516 0.05696203 0.94303797 malignant malignant
## 521 0.96440129 0.03559871 benign benign
## 532 0.96440129 0.03559871 benign benign
## 535 0.96440129 0.03559871 benign benign
## 540 0.96440129 0.03559871 benign benign
## 541 0.96440129 0.03559871 benign benign
## 547 0.05696203 0.94303797 malignant malignant
## 550 0.05696203 0.94303797 malignant malignant
## 552 0.96440129 0.03559871 benign benign
## 553 0.96440129 0.03559871 benign benign
## 554 0.05696203 0.94303797 malignant benign
## 556 1.00000000 0.00000000 benign benign
## 557 0.96440129 0.03559871 benign benign
## 559 0.96440129 0.03559871 benign benign
## 562 0.96440129 0.03559871 benign benign
## 567 0.96440129 0.03559871 benign benign
## 568 0.96440129 0.03559871 benign benign
## 574 0.96440129 0.03559871 benign benign
## 576 0.96440129 0.03559871 benign benign
## 578 0.96440129 0.03559871 benign benign
## 581 0.96440129 0.03559871 benign benign
## 582 0.05696203 0.94303797 malignant malignant
## 583 0.05696203 0.94303797 malignant malignant
## 590 0.96440129 0.03559871 benign benign
## 594 0.96440129 0.03559871 benign benign
## 597 0.96440129 0.03559871 benign benign
## 600 0.96440129 0.03559871 benign benign
## 606 0.05696203 0.94303797 malignant malignant
## 607 0.96440129 0.03559871 benign benign
## 611 0.05696203 0.94303797 malignant malignant
## 621 0.96440129 0.03559871 benign benign
## 624 0.96440129 0.03559871 benign benign
## 626 0.96440129 0.03559871 benign benign
## 639 0.96440129 0.03559871 benign benign
## 640 0.96440129 0.03559871 benign benign
## 641 0.96440129 0.03559871 benign benign
## 642 0.96440129 0.03559871 benign benign
## 644 0.96440129 0.03559871 benign benign
## 647 0.96440129 0.03559871 benign benign
## 651 0.96440129 0.03559871 benign benign
## 655 0.96440129 0.03559871 benign benign
## 656 0.96440129 0.03559871 benign benign
## 657 0.96440129 0.03559871 benign benign
## 658 0.18181818 0.81818182 malignant benign
## 663 0.96440129 0.03559871 benign benign
## 665 0.96440129 0.03559871 benign benign
## 668 0.96440129 0.03559871 benign benign
## 669 0.18181818 0.81818182 malignant malignant
## 670 0.05696203 0.94303797 malignant malignant
## 671 0.05696203 0.94303797 malignant malignant
## 673 0.96440129 0.03559871 benign benign
## 680 0.96440129 0.03559871 benign benign
## 681 0.05696203 0.94303797 malignant malignant
## 685 0.96440129 0.03559871 benign benign
## 686 0.96440129 0.03559871 benign benign
## 688 0.96440129 0.03559871 benign benign
## 691 0.96440129 0.03559871 benign benign
## 692 0.05696203 0.94303797 malignant malignant
## 693 0.96440129 0.03559871 benign benign
## 695 0.96440129 0.03559871 benign benign
## 697 0.05696203 0.94303797 malignant malignant
## 698 0.05696203 0.94303797 malignant malignant
## 699 0.05696203 0.94303797 malignant malignant
Berdasarkan Output, probabilitas prediksi kelas benign dan malignant untuk setiap observasi pada data testing setelah pruning. Kolom predicted menunjukkan kelas hasil prediksi model, sedangkan kolom actual menunjukkan kelas sebenarnya. Sebagian besar observasi memiliki hasil prediksi yang sesuai dengan kelas aktual, meskipun masih terdapat beberapa kesalahan klasifikasi. Sebagai contoh, observasi 41 diprediksi sebagai malignant dengan probabilitas 94,30%, sedangkan kelas aktualnya termasuk dalam kategori benign
mdl_auc <- Metrics::auc(
actual = as.numeric(
breastcancer_preds_cart$actual == "malignant"),
predicted = breastcancer_preds_cart$malignant)
yardstick::roc_curve(
breastcancer_preds_cart,
truth = actual,
malignant,
event_level = "second") %>%
autoplot() +
labs(
title = "ROC Curve",
subtitle = paste0(
"AUC = ",
round(mdl_auc, 4)))Berdasarkan output kurva ROC, model Classification Tree setelah pruning memperoleh nilai AUC sebesar 0,9524. Nilai tersebut menunjukkan bahwa model memiliki kemampuan yang sangat baik dalam membedakan kelas benign dan malignant. Kurva ROC yang berada dekat dengan sudut kiri atas menunjukkan sensitivitas yang tinggi dengan tingkat false positive yang relatif rendah.
Akbar, F., Fiqriansyah, F., Andiko, V. C., Ahmad, K. G., Rasywir, E., Meisak, D., Pratama, Y., & Feranika, A. (2022). Penerapan algoritma Naïve Bayes untuk mengetahui pasien penyakit gagal jantung. Jurnal Informatika dan Rekayasa Komputer (JAKAKOM), 2(2). https://doi.org/10.33998/jakakom.2022.2.2.117
Fatah, Z., & Kholishah, R. N. (2026). Penerapan algoritma decision tree untuk klasifikasi diagnosa pasien. JAMASTIKA: Jurnal Mahasiswa Teknik Informatika, 5(1), 98–103. https://doi.org/10.35473/jamastika.v5i1.4596
Fransiska, H. (2026). Modul praktikum machine learning and modern prediction. Universitas Bengkulu.
Prabawati, N. I., Widodo, & Ajie, H. (2019). Kinerja algoritma Classification and Regression Tree (CART) dalam mengklasifikasikan lama masa studi mahasiswa yang mengikuti organisasi di Universitas Negeri Jakarta. PINTER: Jurnal Pendidikan Teknik Informatika dan Komputer, 3(2), 139–145. https://doi.org/10.21009/pinter.3.2.9
Purnomo, H., Pambudi, R. E., & Irawan, R. (2025). Penerapan decision tree untuk klasifikasi penyakit berdasarkan data rekam medis. Aisyah Journal of Informatics and Electrical Engineering, 7(1), 1–8.
Yuliani, Y. (2022). Algoritma Random Forest untuk prediksi kelangsungan hidup pasien gagal jantung menggunakan seleksi fitur Bestfirst. Infotek: Jurnal Informatika dan Teknologi, 5(2), 298–306. https://doi.org/10.29408/jit.v5i2.5896