Θα χρησιμοποιήσουμε το dataset breast_cancer.cvs το οποίο περιέχει χαρακτηριστικά όγκων με τα οποία θέλουμε να προβλέψουμε αν είναι καλοήθης ή κακοήθης.
Το dataset περιέχει 699 εγγραφές και 10 μεταβλητές.
class, υποδεικνύει αν ο όγκος είναι καλοήθης (class=2), ή κακοήθης (class=4).
-clump thickness: Πάχος όγκου, όσο μεγαλύτερο τόσο πιο ύποπτο
-uniformity of cell size: Ομοιομορφία μεγέθους κυττάρων. Η ανομοιομορφία υποδεικνύει πιθανή κακοήθεια
-uniformity of cell shape: Ομοιομορφία σχήματος κυττάρων, οι ανωμαλίες είναι ύποπτες
-marginal adhesion: Συνοχή των κυττάρων. Χαμηλή συνοχή υποδεικνύει κακοήθεια
-single epithelial cell size: Μέγεθος μεμονωμένων επιθηλιακών κυττάρων. Όταν είναι μεγάλα, υποδεικνύουν πιθανότητα ανωμαλίας
-bare nuclei: Πυρήνες χωρίς κυτταρόπλασμα, συχνά είναι δείκτης κακοήθειας
-bland chromatin: Ομοιομορφία χρωματίνης στον πυρήνα. Όταν είναι ακανόνιστη είναι ύποπτη
-normal nucleoli: Κανονικότητα πυρηνίσκων. Όταν είναι έντονοι και πολλοί, υποδεικνύουν κακοήθεια
-mitoses: Ρυθμός κυτταρικών διαιρέσεων. Όταν ο ρυθμός είναι υψηλός, υποδεικνύει επιθετικό όγκο.
Πριν την ανάλυση, αλλάξαμε τις τιμές της μεταβλητής Class σε 0 (καλοήθης)/ 1 (κακοήθης) και χωρίσαμε τη βάση δεδομένων σε δύο σύνολα:
-το training set (65%), το οποίο χρησιμοποιείται για την εκπαίδευση του μοντέλου
-και το testing set (35%), για την αξιολόγηση της ακρίβειάς του.
Χρησιμοποιήθηκε ο αριθμός seed 3 για τη διασφάλιση της αναπαραγωγιμότητας των αποτελεσμάτων.
data <- read.csv("C:/Users/maria/Downloads/archive (3)/breast_cancer.csv")
# Εισαγωγή βιβλιοθηκων
library(caTools)
## Warning: package 'caTools' was built under R version 4.5.3
library(ROCR)
## Warning: package 'ROCR' was built under R version 4.5.3
# Αλλαγή τιμών Class (0/1)
data$Class <- ifelse(data$Class == 4, 1, 0)
data$Class <- as.factor(data$Class)
# Ορισμός Seed
set.seed(3)
# Διαχωρισμός (65% train)
split <- sample.split(data$Class, SplitRatio = 0.65)
train <- subset(data, split == TRUE)
test <- subset(data, split == FALSE)
# Εμφάνιση πλήθους εγγραφών
nrow(train)
## [1] 444
nrow(test)
## [1] 239
Παρατηρούμε ότι το training set περιλαμβάνει 444 εγγραφές, ενώ το testing set 239.
Δημιουργούμε το μοντέλο λογιστικής παλινδρόμησης, χρησιμοποιώντας όλες τις ανεξάρτητες μεταβλητές.
#Δημιουργίας μοντέλου
model <- glm(Class ~ ., data = train, family = binomial)
#Εμφάνιση αποτελεσμάτων
summary(model)
##
## Call:
## glm(formula = Class ~ ., family = binomial, data = train)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -11.71205 1.85944 -6.299 3e-10 ***
## Clump.Thickness 0.70278 0.20101 3.496 0.000472 ***
## Uniformity.of.Cell.Size -0.05977 0.27191 -0.220 0.826007
## Uniformity.of.Cell.Shape 0.15260 0.32456 0.470 0.638221
## Marginal.Adhesion 0.31364 0.15224 2.060 0.039381 *
## Single.Epithelial.Cell.Size 0.12280 0.23101 0.532 0.595029
## Bare.Nuclei 0.48746 0.13212 3.690 0.000225 ***
## Bland.Chromatin 0.53397 0.23005 2.321 0.020280 *
## Normal.Nucleoli 0.29898 0.14603 2.047 0.040616 *
## Mitoses 0.69042 0.59118 1.168 0.242859
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 574.436 on 443 degrees of freedom
## Residual deviance: 55.914 on 434 degrees of freedom
## AIC: 75.914
##
## Number of Fisher Scoring iterations: 9
predictTest <- predict(model, newdata = test, type = "response")
head(predictTest)
## 2 15 16 20 22 23
## 0.914184377 0.999929819 0.521488413 0.022653574 0.999748516 0.001647522
Η εντολή predict με την παράμετρο type = “response” δίνει την εκτιμώμενη πιθανότητα (από 0 έως 1) ο όγκος να είναι κακοήθης (Class=4).
Για τη μετατροπή των πιθανοτήτων σε κατηγορίες χρησιμοποιήσαμε κατώφλι (threshold) 0.5, όπου τιμές μεγαλύτερες του 0.5 ταξινομούνται ως κακοήθεις (1), ενώ μικρότερες ως καλοήθεις (0).
# Δημιουργία του Confusion Matrix
conf_matrix <- table(test$Class, predictTest > 0.5)
conf_matrix
##
## FALSE TRUE
## 0 152 3
## 1 6 78
# Υπολογισμός Ακρίβειας (Accuracy)
accuracy <- sum(diag(conf_matrix)) / sum(conf_matrix)
accuracy
## [1] 0.9623431
table(test$Class)
##
## 0 1
## 155 84
# Υπολογισμός Sensitivity και Specificity
sensitivity <- conf_matrix[2,2] / sum(conf_matrix[2,])
specificity <- conf_matrix[1,1] / sum(conf_matrix[1,])
sensitivity
## [1] 0.9285714
specificity
## [1] 0.9806452
# Υπολογισμός Baseline Accuracy
baseline_accuracy <- max(prop.table(table(test$Class)))
baseline_accuracy
## [1] 0.6485356
Η ακρίβεια του μοντέλου είναι 96.2%, η οποία είναι μεγαλύτερη από τη baseline accuracy (περίπου 65%). Αυτό σημαίνει ότι το μοντέλο κάνει καλύτερες προβλέψεις από μια απλή τυχαία ή βασική επιλογή.
# Kαμπύλη ROC
ROCRpred <- prediction(predictTest, test$Class)
ROCRperf <- performance(ROCRpred, "tpr", "fpr")
plot(ROCRperf, colorize = TRUE)
Η καμπύλη ROC δείχνει ότι το μοντέλο δουλεύει πολύ καλά, αφού η γραμμή είναι κοντά στην πάνω αριστερή πλευρά του γραφήματος. Αυτό σημαίνει ότι ξεχωρίζει σωστά τους καλοήθεις από τους κακοήθεις όγκους στις περισσότερες περιπτώσεις.
Έχουμε ήδη χωρίσει το dataset σε train και test, οπότε εισάγουμε τις απαραίτητες βιβλιοθήκες και δημιουργούμε το μοντέλο CART με όνομα CancerTree.
# Εισαγωγή βιβλιοθηκων
library(rpart)
## Warning: package 'rpart' was built under R version 4.5.3
library(rpart.plot)
## Warning: package 'rpart.plot' was built under R version 4.5.3
# Δημιουργία μοντέλου CART
CancerTree <- rpart(Class ~ ., data = train, method="class", minbucket=25)
prp(CancerTree)
Παρατηρούμε ότι το δέντρο χρησιμοποιεί μόνο δύο μεταβλητές (uniformity of cell size και bare nuclei), παρόλο που δόθηκαν όλες οι μεταβλητές στο μοντέλο.
Αυτό συμβαίνει επειδή το CART επιλέγει μόνο τις πιο σημαντικές μεταβλητές που βελτιώνουν σημαντικά τον διαχωρισμό των δεδομένων.
Στη συγκεκριμένη περίπτωση, αυτές οι δύο μεταβλητές είναι αρκετές για να επιτύχουν υψηλή ακρίβεια, επομένως το μοντέλο δεν χρειάζεται επιπλέον splits.
Αυτό δείχνει ότι το μοντέλο είναι απλό και εύκολα ερμηνεύσιμο.
summary(CancerTree)
## Call:
## rpart(formula = Class ~ ., data = train, method = "class", minbucket = 25)
## n= 444
##
## CP nsplit rel error xerror xstd
## 1 0.79354839 0 1.0000000 1.0000000 0.06480247
## 2 0.06451613 1 0.2064516 0.2064516 0.03515608
## 3 0.01000000 2 0.1419355 0.2193548 0.03614999
##
## Variable importance
## Uniformity.of.Cell.Size Uniformity.of.Cell.Shape
## 21 18
## Bare.Nuclei Bland.Chromatin
## 17 15
## Normal.Nucleoli Single.Epithelial.Cell.Size
## 15 13
## Clump.Thickness
## 1
##
## Node number 1: 444 observations, complexity param=0.7935484
## predicted class=0 expected loss=0.3490991 P(node) =1
## class counts: 289 155
## probabilities: 0.651 0.349
## left son=2 (303 obs) right son=3 (141 obs)
## Primary splits:
## Uniformity.of.Cell.Size < 3.5 to the left, improve=142.4200, (0 missing)
## Uniformity.of.Cell.Shape < 3.5 to the left, improve=137.6203, (0 missing)
## Bare.Nuclei < 3.5 to the left, improve=130.6364, (0 missing)
## Single.Epithelial.Cell.Size < 2.5 to the left, improve=125.7415, (0 missing)
## Normal.Nucleoli < 2.5 to the left, improve=124.1403, (0 missing)
## Surrogate splits:
## Uniformity.of.Cell.Shape < 3.5 to the left, agree=0.939, adj=0.809, (0 split)
## Bland.Chromatin < 3.5 to the left, agree=0.894, adj=0.667, (0 split)
## Bare.Nuclei < 3.5 to the left, agree=0.885, adj=0.638, (0 split)
## Normal.Nucleoli < 2.5 to the left, agree=0.885, adj=0.638, (0 split)
## Single.Epithelial.Cell.Size < 2.5 to the left, agree=0.883, adj=0.631, (0 split)
##
## Node number 2: 303 observations, complexity param=0.06451613
## predicted class=0 expected loss=0.07590759 P(node) =0.6824324
## class counts: 280 23
## probabilities: 0.924 0.076
## left son=4 (277 obs) right son=5 (26 obs)
## Primary splits:
## Bare.Nuclei < 3.5 to the left, improve=21.611830, (0 missing)
## Normal.Nucleoli < 2.5 to the left, improve=18.998950, (0 missing)
## Uniformity.of.Cell.Shape < 2.5 to the left, improve=12.676730, (0 missing)
## Single.Epithelial.Cell.Size < 2.5 to the left, improve=12.503970, (0 missing)
## Uniformity.of.Cell.Size < 1.5 to the left, improve= 9.281664, (0 missing)
## Surrogate splits:
## Clump.Thickness < 6.5 to the left, agree=0.941, adj=0.308, (0 split)
## Normal.Nucleoli < 3.5 to the left, agree=0.937, adj=0.269, (0 split)
## Uniformity.of.Cell.Shape < 4.5 to the left, agree=0.927, adj=0.154, (0 split)
## Bland.Chromatin < 3.5 to the left, agree=0.927, adj=0.154, (0 split)
## Marginal.Adhesion < 3.5 to the left, agree=0.921, adj=0.077, (0 split)
##
## Node number 3: 141 observations
## predicted class=1 expected loss=0.06382979 P(node) =0.3175676
## class counts: 9 132
## probabilities: 0.064 0.936
##
## Node number 4: 277 observations
## predicted class=0 expected loss=0.01805054 P(node) =0.6238739
## class counts: 272 5
## probabilities: 0.982 0.018
##
## Node number 5: 26 observations
## predicted class=1 expected loss=0.3076923 P(node) =0.05855856
## class counts: 8 18
## probabilities: 0.308 0.692
Χρησιμοποιούμε το εκπαιδευμένο δέντρο απόφασης για την πρόβλεψη των τιμών στο test set.
Η συνάρτηση predict() με την επιλογή type = “class” επιστρέφει την τελική κατηγορία (0 ή 1) για κάθε εγγραφή.
PredictCART <- predict (CancerTree, newdata=test, type='class')
# Ακρίβεια μοντέλου
table(test$Class, PredictCART)
## PredictCART
## 0 1
## 0 146 9
## 1 2 82
Για την αξιολόγηση του μοντέλου χρησιμοποιούμε επίσης την καμπύλη ROC. Σε αυτή την περίπτωση, χρησιμοποιούνται πιθανότητες (type = “prob”) αντί για κατηγορίες, ώστε να υπολογιστεί σωστά η απόδοση του μοντέλου σε όλα τα πιθανά thresholds.
# Καμπλύλη ROC από το CART
PredictROC <- predict(CancerTree, newdata = test, type = "prob")
PredictROC
## 0 1
## 2 0.06382979 0.93617021
## 15 0.06382979 0.93617021
## 16 0.06382979 0.93617021
## 20 0.98194946 0.01805054
## 22 0.06382979 0.93617021
## 23 0.98194946 0.01805054
## 26 0.98194946 0.01805054
## 27 0.98194946 0.01805054
## 35 0.98194946 0.01805054
## 39 0.06382979 0.93617021
## 40 0.06382979 0.93617021
## 42 0.06382979 0.93617021
## 43 0.06382979 0.93617021
## 44 0.98194946 0.01805054
## 47 0.98194946 0.01805054
## 56 0.98194946 0.01805054
## 66 0.30769231 0.69230769
## 74 0.98194946 0.01805054
## 79 0.98194946 0.01805054
## 83 0.06382979 0.93617021
## 84 0.06382979 0.93617021
## 85 0.30769231 0.69230769
## 91 0.98194946 0.01805054
## 94 0.98194946 0.01805054
## 95 0.98194946 0.01805054
## 96 0.98194946 0.01805054
## 98 0.06382979 0.93617021
## 100 0.30769231 0.69230769
## 101 0.98194946 0.01805054
## 103 0.06382979 0.93617021
## 108 0.06382979 0.93617021
## 110 0.06382979 0.93617021
## 111 0.30769231 0.69230769
## 112 0.06382979 0.93617021
## 115 0.98194946 0.01805054
## 116 0.06382979 0.93617021
## 118 0.98194946 0.01805054
## 120 0.98194946 0.01805054
## 121 0.06382979 0.93617021
## 125 0.06382979 0.93617021
## 126 0.98194946 0.01805054
## 132 0.98194946 0.01805054
## 133 0.98194946 0.01805054
## 134 0.98194946 0.01805054
## 135 0.98194946 0.01805054
## 141 0.30769231 0.69230769
## 142 0.98194946 0.01805054
## 144 0.98194946 0.01805054
## 145 0.98194946 0.01805054
## 148 0.30769231 0.69230769
## 149 0.06382979 0.93617021
## 151 0.98194946 0.01805054
## 152 0.06382979 0.93617021
## 153 0.98194946 0.01805054
## 159 0.98194946 0.01805054
## 165 0.98194946 0.01805054
## 166 0.98194946 0.01805054
## 168 0.06382979 0.93617021
## 176 0.98194946 0.01805054
## 177 0.98194946 0.01805054
## 178 0.06382979 0.93617021
## 179 0.06382979 0.93617021
## 180 0.98194946 0.01805054
## 181 0.06382979 0.93617021
## 182 0.06382979 0.93617021
## 187 0.98194946 0.01805054
## 202 0.98194946 0.01805054
## 203 0.98194946 0.01805054
## 204 0.98194946 0.01805054
## 207 0.98194946 0.01805054
## 208 0.06382979 0.93617021
## 214 0.98194946 0.01805054
## 215 0.98194946 0.01805054
## 217 0.30769231 0.69230769
## 218 0.06382979 0.93617021
## 220 0.98194946 0.01805054
## 224 0.06382979 0.93617021
## 228 0.06382979 0.93617021
## 230 0.06382979 0.93617021
## 233 0.06382979 0.93617021
## 236 0.98194946 0.01805054
## 240 0.06382979 0.93617021
## 245 0.30769231 0.69230769
## 247 0.06382979 0.93617021
## 248 0.06382979 0.93617021
## 260 0.30769231 0.69230769
## 265 0.30769231 0.69230769
## 267 0.98194946 0.01805054
## 268 0.98194946 0.01805054
## 269 0.98194946 0.01805054
## 271 0.06382979 0.93617021
## 273 0.98194946 0.01805054
## 276 0.06382979 0.93617021
## 277 0.06382979 0.93617021
## 278 0.06382979 0.93617021
## 283 0.98194946 0.01805054
## 284 0.06382979 0.93617021
## 285 0.06382979 0.93617021
## 287 0.98194946 0.01805054
## 289 0.06382979 0.93617021
## 291 0.06382979 0.93617021
## 293 0.30769231 0.69230769
## 297 0.06382979 0.93617021
## 302 0.98194946 0.01805054
## 307 0.06382979 0.93617021
## 308 0.06382979 0.93617021
## 309 0.98194946 0.01805054
## 310 0.06382979 0.93617021
## 311 0.98194946 0.01805054
## 312 0.98194946 0.01805054
## 316 0.06382979 0.93617021
## 318 0.98194946 0.01805054
## 321 0.06382979 0.93617021
## 323 0.06382979 0.93617021
## 327 0.30769231 0.69230769
## 328 0.98194946 0.01805054
## 331 0.06382979 0.93617021
## 332 0.98194946 0.01805054
## 333 0.98194946 0.01805054
## 335 0.06382979 0.93617021
## 343 0.98194946 0.01805054
## 344 0.06382979 0.93617021
## 351 0.98194946 0.01805054
## 358 0.98194946 0.01805054
## 361 0.98194946 0.01805054
## 363 0.98194946 0.01805054
## 364 0.98194946 0.01805054
## 367 0.98194946 0.01805054
## 368 0.06382979 0.93617021
## 369 0.98194946 0.01805054
## 372 0.98194946 0.01805054
## 373 0.06382979 0.93617021
## 375 0.98194946 0.01805054
## 376 0.98194946 0.01805054
## 377 0.98194946 0.01805054
## 380 0.98194946 0.01805054
## 385 0.98194946 0.01805054
## 387 0.06382979 0.93617021
## 389 0.98194946 0.01805054
## 390 0.30769231 0.69230769
## 392 0.98194946 0.01805054
## 396 0.98194946 0.01805054
## 397 0.98194946 0.01805054
## 407 0.06382979 0.93617021
## 410 0.98194946 0.01805054
## 418 0.98194946 0.01805054
## 423 0.98194946 0.01805054
## 426 0.06382979 0.93617021
## 427 0.30769231 0.69230769
## 428 0.98194946 0.01805054
## 429 0.98194946 0.01805054
## 432 0.98194946 0.01805054
## 439 0.06382979 0.93617021
## 440 0.98194946 0.01805054
## 444 0.98194946 0.01805054
## 445 0.98194946 0.01805054
## 446 0.98194946 0.01805054
## 449 0.98194946 0.01805054
## 450 0.98194946 0.01805054
## 459 0.98194946 0.01805054
## 460 0.98194946 0.01805054
## 461 0.98194946 0.01805054
## 475 0.30769231 0.69230769
## 483 0.98194946 0.01805054
## 484 0.98194946 0.01805054
## 485 0.98194946 0.01805054
## 486 0.98194946 0.01805054
## 493 0.30769231 0.69230769
## 494 0.98194946 0.01805054
## 495 0.98194946 0.01805054
## 499 0.98194946 0.01805054
## 502 0.98194946 0.01805054
## 503 0.98194946 0.01805054
## 505 0.06382979 0.93617021
## 506 0.98194946 0.01805054
## 508 0.06382979 0.93617021
## 510 0.98194946 0.01805054
## 511 0.98194946 0.01805054
## 518 0.98194946 0.01805054
## 520 0.98194946 0.01805054
## 521 0.98194946 0.01805054
## 525 0.98194946 0.01805054
## 527 0.98194946 0.01805054
## 529 0.98194946 0.01805054
## 530 0.98194946 0.01805054
## 531 0.98194946 0.01805054
## 533 0.98194946 0.01805054
## 534 0.98194946 0.01805054
## 537 0.98194946 0.01805054
## 540 0.98194946 0.01805054
## 541 0.98194946 0.01805054
## 543 0.98194946 0.01805054
## 551 0.06382979 0.93617021
## 559 0.98194946 0.01805054
## 561 0.98194946 0.01805054
## 563 0.98194946 0.01805054
## 564 0.98194946 0.01805054
## 570 0.98194946 0.01805054
## 573 0.98194946 0.01805054
## 577 0.06382979 0.93617021
## 580 0.06382979 0.93617021
## 582 0.98194946 0.01805054
## 583 0.98194946 0.01805054
## 590 0.30769231 0.69230769
## 591 0.06382979 0.93617021
## 594 0.06382979 0.93617021
## 597 0.06382979 0.93617021
## 598 0.06382979 0.93617021
## 600 0.98194946 0.01805054
## 601 0.98194946 0.01805054
## 602 0.98194946 0.01805054
## 610 0.30769231 0.69230769
## 612 0.30769231 0.69230769
## 613 0.98194946 0.01805054
## 615 0.98194946 0.01805054
## 618 0.06382979 0.93617021
## 619 0.98194946 0.01805054
## 622 0.98194946 0.01805054
## 626 0.98194946 0.01805054
## 630 0.98194946 0.01805054
## 634 0.98194946 0.01805054
## 640 0.98194946 0.01805054
## 641 0.98194946 0.01805054
## 644 0.98194946 0.01805054
## 645 0.98194946 0.01805054
## 653 0.06382979 0.93617021
## 657 0.98194946 0.01805054
## 658 0.98194946 0.01805054
## 662 0.98194946 0.01805054
## 670 0.98194946 0.01805054
## 672 0.98194946 0.01805054
## 673 0.98194946 0.01805054
## 674 0.98194946 0.01805054
## 675 0.98194946 0.01805054
## 676 0.06382979 0.93617021
## 679 0.98194946 0.01805054
## 680 0.98194946 0.01805054
## 682 0.06382979 0.93617021
## 683 0.06382979 0.93617021
pred <- prediction(PredictROC[,2], test$Class)
perf <- performance(pred, "tpr", "fpr")
plot(perf)
Η τιμή AUC που προκύπτει δείχνει τη συνολική ικανότητα του μοντέλου να διαχωρίζει τις δύο κατηγορίες. Όσο πιο κοντά είναι στο 1, τόσο καλύτερη είναι η απόδοση.
as.numeric(performance(pred, "auc")@y.values)
## [1] 0.9769585
Η λογιστική παλινδρόμηση και το δέντρο απόφασης (CART) εφαρμόστηκαν στο ίδιο dataset με στόχο την πρόβλεψη της κατηγορίας του όγκου (καλοήθης ή κακοήθης).
Η λογιστική παλινδρόμηση πέτυχε πολύ υψηλή ακρίβεια (περίπου 96%), η οποία είναι σημαντικά μεγαλύτερη από τη baseline accuracy. Η καμπύλη ROC έδειξε επίσης πολύ καλή απόδοση, γεγονός που σημαίνει ότι το μοντέλο διαχωρίζει σωστά τις δύο κατηγορίες.
Το μοντέλο CART παρουσίασε επίσης καλή απόδοση, αν και σε ορισμένες περιπτώσεις μπορεί να έχει ελαφρώς χαμηλότερη ακρίβεια από τη λογιστική παλινδρόμηση.
Η βασική διαφορά μεταξύ των δύο μοντέλων είναι ότι:
Η λογιστική παλινδρόμηση είναι πιο σταθερή και συχνά πιο ακριβής. Το δέντρο απόφασης είναι πιο εύκολο στην κατανόηση, καθώς παρουσιάζει τις αποφάσεις με μορφή κανόνων (if-else).
Συνολικά, και τα δύο μοντέλα αποδίδουν πολύ καλά, αλλά εξυπηρετούν διαφορετικούς σκοπούς.
Στην παρούσα εργασία εφαρμόστηκαν δύο διαφορετικά μοντέλα ταξινόμησης: η λογιστική παλινδρόμηση και το δέντρο απόφασης (CART), με στόχο την πρόβλεψη της κατηγορίας ενός όγκου (καλοήθης/κακοήθης).
Τα αποτελέσματα έδειξαν ότι και τα δύο μοντέλα έχουν πολύ καλή απόδοση, με υψηλή ακρίβεια και καλή συμπεριφορά στην καμπύλη ROC.
Η λογιστική παλινδρόμηση παρουσίασε ελαφρώς καλύτερη ακρίβεια, γεγονός που την καθιστά πιο κατάλληλη όταν ο βασικός στόχος είναι η όσο το δυνατόν πιο σωστή πρόβλεψη.
Από την άλλη πλευρά, το δέντρο απόφασης έχει το πλεονέκτημα της απλότητας και της ευκολίας ερμηνείας. Οι αποφάσεις του μπορούν να παρουσιαστούν με απλούς κανόνες, κάτι που είναι ιδιαίτερα χρήσιμο σε εφαρμογές όπου απαιτείται κατανόηση του μοντέλου.
Επιπλέον, παρατηρήθηκε ότι το δέντρο χρησιμοποίησε μόνο λίγες μεταβλητές, κάτι που δείχνει ότι το dataset μπορεί να διαχωριστεί αποτελεσματικά με περιορισμένη πληροφορία.
Καταλήγουμε ότι η επιλογή του κατάλληλου μοντέλου εξαρτάται από τον στόχο της ανάλυσης.