library(mlbench)
## Warning: package 'mlbench' was built under R version 4.4.3
data("BreastCancer")
Kita akan melihat struktur dari dataset BreastCanser, Terdapat 10 Variabel dengan jumlah total observasinya 699.
## '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 ...
akan dilihat level dari variabel Class untuk mengetahui berapa jenis tumor yang ada di dataset.
## [1] "benign" "malignant"
agar dapat dilihat lebih jelas dan detail mengenai dataset BreastCanser, bisa menggunakan fungsi summary()
## Id Cl.thickness Cell.size Cell.shape Marg.adhesion
## Length:699 1 :145 1 :384 1 :353 1 :407
## Class :character 5 :130 10 : 67 2 : 59 2 : 58
## Mode :character 3 :108 3 : 52 10 : 58 3 : 58
## 4 : 80 2 : 45 3 : 56 10 : 55
## 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 NA's : 16 (Other): 69 (Other): 69 (Other): 17
## Class
## benign :458
## malignant:241
##
##
##
##
##
Dari fungsi summary() terlihat ada 16 data NA di Bare.nuclei sehingga perlu diproses
## Warning: package 'mice' was built under R version 4.4.3
##
## Attaching package: 'mice'
## The following object is masked from 'package:stats':
##
## filter
## The following objects are masked from 'package:base':
##
## cbind, rbind
## Warning: package 'caret' was built under R version 4.4.3
## Loading required package: ggplot2
## Loading required package: lattice
## Warning: package 'lattice' was built under R version 4.4.3
pengecekan ulang data set yang sudah diperbaiki
## Class Cl.thickness Cell.size Cell.shape Marg.adhesion
## benign :458 1 :145 1 :384 1 :353 1 :407
## malignant:241 5 :130 10 : 67 2 : 59 2 : 58
## 3 :108 3 : 52 10 : 58 3 : 58
## 4 : 80 2 : 45 3 : 56 10 : 55
## 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 :412 2 :166 1 :443 1 :579
## 3 : 72 10 :133 3 :165 10 : 61 2 : 35
## 4 : 48 2 : 31 1 :152 3 : 44 3 : 33
## 1 : 47 5 : 31 7 : 73 2 : 36 10 : 14
## 6 : 41 3 : 29 4 : 40 8 : 24 4 : 12
## 5 : 39 8 : 21 5 : 34 6 : 22 7 : 9
## (Other): 66 (Other): 42 (Other): 69 (Other): 69 (Other): 17
load library yang caTools
library(caTools) #library untuk pembagian dataset
## Warning: package 'caTools' was built under R version 4.4.3
set.seed(150)
split=sample.split(BreastCancer, SplitRatio = 0.7) # Membagi Dataset menjadi data training dan data testing
training_set=subset(BreastCancer,split==TRUE) # Dataset Training
test_set=subset(BreastCancer,split==FALSE) # Datset Testing
kita akan melihat dimensi dari Data Training yang sudah dibuat
dim(training_set) # Dimensi data training
## [1] 490 10
dim(test_set)
## [1] 209 10
Untuk melihat data yang digunakan untuk prediksi adalah dengan menghapus variabel kedua dari dataset,yakni variabel Class
topredict_set<-test_set[2:10] # Menghapus Target Class
dim(topredict_set)
## [1] 209 9
Decision Tree, atau yang dikenal sebagai pohon keputusan, merupakan salah satu metode dalam pemodelan prediktif yang banyak digunakan dalam bidang statistik, data mining, dan machine learning. Metode ini memungkinkan pengguna untuk membuat kesimpulan mengenai nilai target suatu item berdasarkan pengamatan terhadap karakteristik item tersebut.
install Paket rpart untuk memulai
library(rpart)
## Warning: package 'rpart' was built under R version 4.4.3
model_dtree<- rpart(Class ~ ., data=training_set) #Implementing Decision Tree
preds_dtree <- predict(model_dtree,newdata=topredict_set, type = "class")
#plot(preds_dtree, main="Decision tree created using rpart")
(conf_matrix_dtree <- table(preds_dtree, test_set$Class))
##
## preds_dtree benign malignant
## benign 127 5
## malignant 8 69
Berdasarkan hasil dari Decision Tree, metode ini berhasil mengklasifikasikan 127 kasus benign (jinak) dengan tepat, namun terdapat 5 kesalahan prediksi. Sementara itu, untuk kasus malignant (ganas), Decision Tree memprediksi dengan benar sebanyak 69 kasus dan melakukan 8 kesalahan prediksi.
untuk mengetahui akurasi dari Metode DecisionTree digunakan script berikut:
confusionMatrix(conf_matrix_dtree)
## Confusion Matrix and Statistics
##
##
## preds_dtree benign malignant
## benign 127 5
## malignant 8 69
##
## Accuracy : 0.9378
## 95% CI : (0.896, 0.9665)
## No Information Rate : 0.6459
## P-Value [Acc > NIR] : <2e-16
##
## Kappa : 0.8652
##
## Mcnemar's Test P-Value : 0.5791
##
## Sensitivity : 0.9407
## Specificity : 0.9324
## Pos Pred Value : 0.9621
## Neg Pred Value : 0.8961
## Prevalence : 0.6459
## Detection Rate : 0.6077
## Detection Prevalence : 0.6316
## Balanced Accuracy : 0.9366
##
## 'Positive' Class : benign
##
Output menunjukkan untuk keakuratan motode DecisionTree untuk memprediksi Kanker Payudara sebesar 93.78%