Memuat library dan data

library(mlbench)
## Warning: package 'mlbench' was built under R version 4.4.3
data("BreastCancer")

Mengeksplor Dataset

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  
##                 
##                 
##                 
##                 
## 

Pembersihan Data

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

Membagi Dataset kedalam bentuk data training, data testing, dan data untuk prediksi

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

DecisionTree

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%