Εισαγωγή

Περιγραφή του Dataset

Το Bank Marketing κοινοποιήθηκε στις 11/5/2015 στην UC Irvine Machine Learning Repository, ένα αποθετήριο βάσεων, συνόλων δεδομένων και θεωριών πεδίων. Προέρχεται από μία καμπάνια άμεσου μάρκετινγκ πορτογαλικής τράπεζας και περιλαμβάνει πληροφορίες για πελάτες στους οποίους προτάθηκε τηλεφωνικά να κάνουν μια προθεσμιακή κατάθεση (term deposit) στον λογαρισμό τους. Το dataset περιέχει 45.211 εγγραφές (πελάτες) και 17 μεταβλητές, τόσο δημογραφικές όσο και άλλες σχετικές με την προηγούμενη επικοινωνία του πελάτη με την τράπεζα.

Επιχειρηματική Αναλυτική

Η ανάλυση των δεδομένων του dataset βοηθά την επιχείρηση να κατανοήσει ποιοι παράγοντες επηρεάζουν την απόφαση των πελατών να αποδεχτούν ή να αρνηθούν την πρόταση για προθεσμιακή κατάθεση. Έτσι, η τράπεζα μπορεί να βελτιστοποιήσει τις καμπάνιες μάρκετινγκ και να στοχεύσει αποτελεσματικότερα στους πελάτες με μεγαλύτερη πιθανότητα αποδοχής.

Περιγραφή των Μεταβλητών

Αναλυτικός πίνακας με τα στοιχεία των πελατών της τράπεζας:
Μεταβλητή Περιγραφή Τύπος Εύρος Μονάδα Μέτρησης
Age Ηλικία Αριθμητική 18 - 95 Έτη
Job Επάγγελμα Κατηγορική admin., blue-collar, entrepreneur, housemaid, management, retired, self-employed, services, student, technician, unemployed, unknown
Marital Οικογενειακή κατάσταση Κατηγορική divorced, married, single
Education Εκπαίδευση Κατηγορική primary, secondary, tertiary, unknown
Default Πιστωτικό υπόλοιπο δανείων σε καθυστέρηση Κατηγορική no, yes
Balance Μέσο ετήσιο υπόλοιπο Αριθμητική -8019 - 102127 Ευρώ (€)
Housing Στεγαστικό δάνειο Κατηγορική no, yes
Loan Προσωπικό δάνειο Κατηγορική no, yes
Αναλυτικός πίνακας με τα στοιχεία της επικοινωνίας του πελάτη με την τράπεζα κατά την τρέχουσα καμπάνια:
Μεταβλητή Περιγραφή Τύπος Εύρος Μονάδα Μέτρησης
Contact Τρόπος επικοινωνίας κατά την καμπάνια Κατηγορική cellular, telephone, unknown
Day Ημέρα τελευταίας επικοινωνίας Αριθμητική 1 - 31 Ημέρες
Month Μήνας τελευταίας επικοινωνίας Κατηγορική apr, aug, dec, feb, jan, jul, jun, mar, may, nov, oct, sep
Duration Διάρκεια τελευταίας επικοινωνίας Αριθμητική 0 - 4918 Δευτερόλεπτα
Campaign Πλήθος κλήσεων κατά την τρέχουσα καμπάνια με τον πελάτη Αριθμητική 1 - 63 Αριθμός κλήσεων
Αναλυτικός πίνακας με τα στοιχεία προηγούμενων κλήσεων του πελάτη με την τράπεζα:
Μεταβλητή Περιγραφή Τύπος Εύρος Μονάδα Μέτρησης
Pdays Ημέρες από την τελευταία επικοινωνία που είχε ο πελάτης με προηγούμενη καμπάνια Αριθμητική -1 - 871 Ημέρες
Previous Πλήθος προηγούμενων επικοινωνιών με τον πελάτη πριν την καμπάνια Αριθμητική 0 - 275 Αριθμός κλήσεων
Poutcome Αποτέλεσμα προηγούμενης καμπάνιας Κατηγορική failure, other, success, unknown
Y Προθεσμιακή κατάθεση πελάτη Κατηγορική no, yes

Έλεγχος εγκυρότητας του dataset

Ελλιπείς Τιμές

cat(sum(is.na(bank_data)))
## 0

Διπλότυπες Εγγραφές

cat(sum(duplicated(bank_data)))
## 0

Λογιστική Παλινδρόμηση

Κατανομή των τιμών της εξαρτημένης μεταβλητής Y του dataset:

table(bank_data$y)
## 
##    no   yes 
## 39922  5289
baseaccprop <- (39922/45211)*100
cat(round(baseaccprop, digits = 1))
## 88.3

Σχόλιο
Παρατηρείται πως μόνο οι 5.289 πελάτες από τους 45.211 (δηλαδή το 11.7%) έχουν κάνει προθεσμιακή κατάθεση μέσω προωθητικών ενεργειών της τράπεζας. Έαν λοιπόν προβλέψουμε ότι κανείς δεν θα προχωρήσει σε προθεσμιακή κατάθεση τότε σύμφωνα με την μέθοδο της απλής βάσης θα πετύχουμε το αποτέλεσμα με ακρίβεια της τάξης του 88.3%. Αυτή η προσέγγιση αγνοεί πλήρως τις θετικές περιπτώσεις, οι οποίες είναι αυτές που μας ενδιαφέρουν. Γι’ αυτό με τη λογιστική παλινδρόμηση στοχεύουμε στην καλύτερη ικανότητα αναγνώρισης των πελατών που είναι πιθανό να προχωρήσουν σε προθεσμιακή κατάθεση, δηλαδή να αυξήσουμε τη σωστή πρόβλεψη του 11.7%.

Προετοιμασία των δεδομένων

Μετατρέπουμε όλες τις μεταβλητές τύπου character σε factor.

bank_data$y <- ifelse(bank_data$y == "yes", 1, 0)
bank_data$job <- as.factor(bank_data$job)
bank_data$marital <- as.factor(bank_data$marital)
bank_data$education <- as.factor(bank_data$education)
bank_data$default <- as.factor(bank_data$default)
bank_data$housing <- as.factor(bank_data$housing)
bank_data$loan <- as.factor(bank_data$loan)
bank_data$contact <- as.factor(bank_data$contact)
bank_data$month <- as.factor(bank_data$month)
bank_data$poutcome <- as.factor(bank_data$poutcome)

Διαχωρισμός του dataset σε training και testing sets

Χωρίζουμε το dataset με τυχαίο τρόπο σε δύο ξεχωριστά αρχεία train και test. Το train αποτελεί το 65% της βάσης και ορίζουμε το seed σε 918 καθιστώντας τον τυχαίο διαχωρισμό train/test σταθερό σε κάθε εκτέλεση του κώδικα. Το train χρησιμοποιείται για τη δημιουργία του μοντέλου μας και το test για να μετρήσουμε πως αυτό λειτουργεί για δεδομένα εκτός του train.

library(caTools)

set.seed(918)  
split <- sample.split(bank_data$y, SplitRatio = 0.65)
train <- subset(bank_data, split == TRUE)
test <- subset(bank_data, split == FALSE)

cat("Train set:", nrow(train), "πελάτες | Test set:", nrow(test), "πελάτες")
## Train set: 29387 πελάτες | Test set: 15824 πελάτες

Δημιουργία Μοντέλου Λογιστικής Παλινδρόμησης

model_logit <- glm(y ~ ., data = bank_data, family = "binomial")
summary(model_logit)
## 
## Call:
## glm(formula = y ~ ., family = "binomial", data = bank_data)
## 
## Coefficients:
##                      Estimate Std. Error z value Pr(>|z|)    
## (Intercept)        -2.536e+00  1.837e-01 -13.803  < 2e-16 ***
## age                 1.127e-04  2.205e-03   0.051 0.959233    
## jobblue-collar     -3.099e-01  7.267e-02  -4.264 2.01e-05 ***
## jobentrepreneur    -3.571e-01  1.256e-01  -2.844 0.004455 ** 
## jobhousemaid       -5.040e-01  1.365e-01  -3.693 0.000221 ***
## jobmanagement      -1.653e-01  7.329e-02  -2.255 0.024130 *  
## jobretired          2.524e-01  9.722e-02   2.596 0.009436 ** 
## jobself-employed   -2.983e-01  1.120e-01  -2.664 0.007726 ** 
## jobservices        -2.238e-01  8.406e-02  -2.662 0.007763 ** 
## jobstudent          3.821e-01  1.090e-01   3.505 0.000457 ***
## jobtechnician      -1.760e-01  6.893e-02  -2.554 0.010664 *  
## jobunemployed      -1.767e-01  1.116e-01  -1.583 0.113456    
## jobunknown         -3.133e-01  2.335e-01  -1.342 0.179656    
## maritalmarried     -1.795e-01  5.891e-02  -3.046 0.002318 ** 
## maritalsingle       9.250e-02  6.726e-02   1.375 0.169066    
## educationsecondary  1.835e-01  6.479e-02   2.833 0.004618 ** 
## educationtertiary   3.789e-01  7.532e-02   5.031 4.88e-07 ***
## educationunknown    2.505e-01  1.039e-01   2.411 0.015915 *  
## defaultyes         -1.668e-02  1.628e-01  -0.102 0.918407    
## balance             1.283e-05  5.148e-06   2.493 0.012651 *  
## housingyes         -6.754e-01  4.387e-02 -15.395  < 2e-16 ***
## loanyes            -4.254e-01  5.999e-02  -7.091 1.33e-12 ***
## contacttelephone   -1.634e-01  7.519e-02  -2.173 0.029784 *  
## contactunknown     -1.623e+00  7.317e-02 -22.184  < 2e-16 ***
## day                 9.969e-03  2.497e-03   3.993 6.53e-05 ***
## monthaug           -6.939e-01  7.847e-02  -8.842  < 2e-16 ***
## monthdec            6.911e-01  1.767e-01   3.912 9.17e-05 ***
## monthfeb           -1.473e-01  8.941e-02  -1.648 0.099427 .  
## monthjan           -1.262e+00  1.217e-01 -10.367  < 2e-16 ***
## monthjul           -8.308e-01  7.740e-02 -10.733  < 2e-16 ***
## monthjun            4.536e-01  9.367e-02   4.843 1.28e-06 ***
## monthmar            1.590e+00  1.199e-01  13.265  < 2e-16 ***
## monthmay           -3.991e-01  7.229e-02  -5.521 3.36e-08 ***
## monthnov           -8.734e-01  8.441e-02 -10.347  < 2e-16 ***
## monthoct            8.814e-01  1.080e-01   8.159 3.37e-16 ***
## monthsep            8.741e-01  1.195e-01   7.314 2.58e-13 ***
## duration            4.194e-03  6.453e-05  64.986  < 2e-16 ***
## campaign           -9.078e-02  1.014e-02  -8.955  < 2e-16 ***
## pdays              -1.027e-04  3.061e-04  -0.335 0.737268    
## previous            1.015e-02  6.503e-03   1.561 0.118476    
## poutcomeother       2.035e-01  8.986e-02   2.265 0.023543 *  
## poutcomesuccess     2.291e+00  8.235e-02  27.821  < 2e-16 ***
## poutcomeunknown    -9.179e-02  9.347e-02  -0.982 0.326093    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 32631  on 45210  degrees of freedom
## Residual deviance: 21562  on 45168  degrees of freedom
## AIC: 21648
## 
## Number of Fisher Scoring iterations: 6

Ερμηνεία Συσχετίσεων
Θεωρούμε στατιστικά σημαντικές τις ανεξάρτητες μεταβλητές που στη στήλη Pr(>|z|) έχουν τιμές <0.001, δηλαδή αυτές που έχουν *** από δίπλα τους.

Στατιστικά σημαντικές μεταβλητές (p < 0.001):
Μεταβλητή Συντελεστής (Estimate) P-value Επίδραση
monthmar +1.590 < 2e-16 Πάρα πολύ ισχυρή
poutcomesuccess +2.291 < 2e-16 Πάρα πολύ ισχυρή
duration +0.00419 < 2e-16 Πολύ ισχυρή
jobstudent +0.382 0.000457 Πολύ ισχυρή
educationtertiary +0.379 4.88e-07 Πολύ ισχυρή
housingyes −0.675 < 2e-16 Πολύ ισχυρή
loanyes −0.425 1.33e-12 Πολύ ισχυρή
campaign −0.0908 < 2e-16 Πολύ ισχυρή
monthjan −1.262 < 2e-16 Πολύ ισχυρή
jobblue-collar −0.310 2.01e-05 Πολύ ισχυρή
balance +0.0000128 0.0126 Μέτρια

Παρατηρήσεις:

  • Όσο μεγαλύτερη είναι η διάρκεια της τηλεφωνικής επικοινωνίας με τον πελάτη, τόσο αυξάνεται σημαντικά η πιθανότητα αποδοχής της προσφοράς για προθεσμιακή κατάθεση.

  • Η προηγούμενη επιτυχής τηλεφωνική επαφή με τον πελάτη επηρεάζει θετικά την αποδοχή της προσφοράς για προθεσμιακή κατάθεση, υποδεικνύοντας πως υπάρχει θετική εμπειρία.

  • Ο Μάρτιος σχετίζεται θετικά με την επιτυχία του προωθητικού σκοπού, ίσως λόγω εποχικών στρατηγικών marketing.

  • Οι φοιτητές και οι απόφοιτοι τριτοβάθμιας εκπαίδευσης εμφανίζουν υψηλή πιθανότητα αποδοχής της προωθητικής ενέργειας, δείχνοντας έτσι τη θετική στάση των ηλικιακά μορφωμένων πελατών.

  • Το υπόλοιπο του λογαριασμού του πελάτη έχει μέτρια θετική επίδραση στην αποδοχή της προθεσμιακής κατάθεσης, υποδηλώνοντας ότι οι οικονομικά εύρωστοι πελάτες είναι πιο δεκτικοί.

  • Η ύπαρξη στεγαστικού ή και καταναλωτικού δανείου σχετίζεται αρνητικά με πιθανή προθεσμιακή κατάθεση, ενδεχομένως λόγω οικονομικής στενότητα.

  • Οι πελάτες που αναφέρονται ως εργάτες δείχνουν μικρότερη πιθανότητα αποδοχής της προωθητικής ενέργειας, πιθανώς λόγω χαμηλότερης οικονομικής ευχέρειας ή καχυποψίας.

  • Ο Ιανουάριος έχει ισχυρή αρνητική συσχέτιση με τον προωθητικό σκοπό και μπορεί να σχετίζεται με τη μειωμένη διάθεση για νέες δεσμεύσεις μετά τις γιορτές.

  • Το πλήθος των τηλεφωνικών επικοινωνιών με τον πελάτη κατά την τρέχουσα καμπάνια έχει αρνητική συσχέτιση με την αναμενόμενη έκβαση, δείχνοντας ότι η υπερβολική επιμονή ίσως πετυχαίνει αντίθετο αποτέλεσμα.

Διαγράμματα Συσχετίσεων

library(ggplot2)
ggplot(bank_data, aes(duration, y, color = month)) + 
  geom_point() +
  geom_smooth(method = "glm", method.args = list(family = "binomial")) +
  labs(title = "Logistic Regression Plot for duration and month",
       x = "Independent Variable (duration)",
       y = "Probability") +
  theme_minimal()

Σχόλια
Παρατηρείται θετική συσχέτιση μεταξύ duration και της πιθανότητας θετικής απάντησης του πελάτη για προθεσμιακή κατάθεση, καθώς όσο αυξάνεται η διάρκεια της κλήσης, τόσο αυξάνεται και η πιθανότητα θετικής απάντησης στην τράπεζα. Η κλίση της γραμμής δείχνει ότι η duration είναι από τους σημαντικότερους θετικούς προβλεπτικούς παράγοντες, όπως είχε φανεί και στη λογιστική παλινδρόμηση (estimate ≈ +0.00419, p < 2e-16). Το χρώμα μας δείχνει πώς διαφέρει η συμπεριφορά της πιθανότητας ανά μήνα. Ορισμένοι μήνες (π.χ. Μάρτιος, Οκτώβριος, Σεπτέμβριος) μπορεί να έχουν υψηλότερες πιθανότητες θετικής απάντησης σε ίδιες τιμές duration, κάτι που υποδηλώνει πιθανή εποχιακή επίδραση. Η κατανομή των σημείων δείχνει ότι οι περισσότερες επαφές έχουν διάρκεια μικρότερη από 600–800 δευτερόλεπτα, ενώ μεγαλύτερες διάρκειες είναι σπανιότερες αλλά πολύ πιο αποτελεσματικές.

ggplot(bank_data, aes(campaign, y, color = job)) + 
  geom_point() +
  geom_smooth(method = "glm", method.args = list(family = "binomial")) +
  labs(title = "Logistic Regression Plot for campaign and job",
       x = "Independent Variable (campaign)",
       y = "Probability") +
  theme_minimal()

Σχόλια
Υπάρχει αρνητική συσχέτιση ανάμεσα στο πλήθος των κλήσεων κατά την τρέχουσα καμπάνια με τον πελάτη και στην πιθανότητα αποδοχής της προωθητικής ενέργειας για προθεσμιακή κατάθεση. Πρακτικά, όσο περισσότερες είναι οι τηλεφωνικές επαφές, τόσο μικρότερη είναι η πιθανότητα επιτυχίας, κάτι που υποδεικνύει την έννοια του “ενοχλητικού” marketing. Αυτό συμφωνεί με τη λογιστική παλινδρόμηση (estimate −0.0908, p < 2e-16), που δείχνει ότι η campaign επηρεάζει αρνητικά την έκβαση. Επίσης η πιθανότητα επιτυχίας διαφέρει ανάλογα με το επάγγελμα. Για παράδειγμα, φοιτητές (student) και συνταξιούχοι (retired) φαίνεται να έχουν υψηλότερη πιθανότητα θετικής απάντησης χωρίς πολλές τηλεφωνικές επικοινωνίες με την τράπεζα. Αντίθετα, οι εργάτες (blue-collar) έχουν χαμηλότερη συνολική πιθανότητα αποδοχής της προωθητικής ενέργειας και φαίνεται να επηρεάζονται περισσότερο αρνητικά από τις πολλές τηλεφωνικές επικοινωνίες.

Προβλέψεις τιμών σε test και train set

predictTest <- predict(model_logit, newdata = test, type = "response")
head(predictTest)
##           2           3           5           8           9          10 
## 0.009685532 0.002953187 0.021315020 0.022699351 0.006210440 0.006542593
cat("Μέση Τιμή: ", mean(predictTest), "\n", "Εύρος Τιμών: ", range(predictTest))
## Μέση Τιμή:  0.1178841 
##  Εύρος Τιμών:  3.336816e-05 0.9999948
predictTrain <- predict(model_logit, newdata = train, type='response')
tapply(predictTrain, factor(train$y, levels = c(0, 1), labels = c("no", "yes")), mean)
##         no        yes 
## 0.07880895 0.40098542

Σχόλια

  • Η συνάρτηση predict με type = “response” επιστρέφει τιμές μεταξύ 0 και 1, οι οποίες εκφράζουν την πιθανότητα το αποτέλεσμα του y να είναι “yes” για κάθε παρατήρηση του test.

  • Η συνάρτηση tapply ομαδοποιεί αυτές τις πιθανότητες με βάση την πραγματική τιμή του y στο training set και υπολογίζει το μέσο όρο ανά κατηγορία (0 ή 1).

  • Τα αποτελέσματα από την πρόβλεψη του μοντέλου λογιστικής παλινδρόμησης για το test set δείχνουν πολύ χαμηλές πιθανότητες (όλες κάτω από 1%, μέση τιμή ~ 0,12%) για το ενδεχόμενο ένας πελάτης να προχωρήσει σε προθεσμιακή κατάθεση, γεγονός που αντικατοπτρίζει την ανισορροπία της εξαρτημένης μεταβλητής y και την τάση του μοντέλου να προβλέπει κυρίως την κυρίαρχη κατηγορία no.

  • Η μέση προβλεπόμενη πιθανότητα για τους πελάτες που δεν έκαναν προθεσμιακή κατάθεση είναι περίπου 7.9%, ενώ αντίθετα για όσους έκαναν είναι 40.1%. Αυτό δείχνει ότι το μοντέλο μπορεί να διαφοροποιήσει ικανοποιητικά τις δύο κατηγορίες, αν και οι προβλεπόμενες τιμές παραμένουν γενικά χαμηλές, κάτι που οφείλεται και στην έντονη ανισορροπία του dataset.

Confusion Matrix

threshold <- 0.5
pred_class <- ifelse(predictTest >= threshold, "yes", "no")
pred_class <- factor(pred_class, levels = c("no", "yes"))
actual_class <- factor(test$y, levels = c(0, 1), labels = c("no", "yes"))

conf_mat <- table(Predicted = pred_class, Actual = actual_class)
print(conf_mat)
##          Actual
## Predicted    no   yes
##       no  13627  1173
##       yes   346   678

Σχόλια

  • Ο πίνακας confusion matrix δείχνει την απόδοση του μοντέλου λογιστικής παλινδρόμησης στο test set με κατώφλι πρόβλεψης 0.5.

  • Από τις 13.973 περιπτώσεις όπου η πραγματική τιμή ήταν “no”, το μοντέλο προέβλεψε σωστά τις 13.627 και έκανε 346 false positives.

  • Από τις 1.851 περιπτώσεις με πραγματική τιμή “yes”, το μοντέλο προέβλεψε σωστά μόνο 678 και έχασε 1.173 περιπτώσεις (false negatives).

  • Το μοντέλο είναι πολύ καλό στον εντοπισμό των αρνητικών απαντήσεων, αλλά έχει χαμηλότερη ικανότητα στην πρόβλεψη των θετικών. Αυτό είναι αναμενόμενο, καθώς πρόκειται για μη ισορροπημένο dataset: μόνο το 11.7% των παρατηρήσεων είναι “yes”.

Υπολογισμός Μετρικών

Αναλυτικός πίνακας μετρικών απόδοσης:
Μετρική Τύπος Τιμή
Accuracy (TP + TN) / (TN + FP + FN + TP) 0.904
Sensitivity TP / (TP + FN) 0.366
Specificity TN / (TN + FP) 0.975
Baseline Accuracy (TN + FP) / (TN + FP + FN + TP) 0.883

Σχόλια

  • Accuracy: Πολύ υψηλή ακρίβεια, όμως επηρεάζεται από την ανισορροπία των κλάσεων.

  • Sensitivity (True Positive Rate): Το μοντέλο εντοπίζει μόνο το 36.6% των θετικών απαντήσεων (yes). Αυτό είναι αρκετά χαμηλό και σημαίνει πως πολλοί πελάτες που θα προχωρούσαν σε προθεσμιακή κατάθεση δεν προβλέπονται σωστά

  • Specificity (True Negative Rate): Το μοντέλο προβλέπει σωστά σχεδόν όλους όσους δεν κάνουν κατάθεση (“no”).

  • Baseline Accuracy: Αν προβλέπαμε πάντα “no”, θα είχαμε 88.3% ακρίβεια. Το μοντέλο λογιστικής παλινδρόμησης βελτιώνει ελάχιστα την baseline accuracy (από 88.3% σε 90.4%), αλλά με κόστος τη χαμηλή ευαισθησία.

Συμπέρασμα: Γενικότερα το μοντέλο είναι υψηλής ακρίβειας, αλλά δεν είναι καλό στην πρόβλεψη των πελατών που ανταποκρίνονται θετικά στην προωθητική ενέργεια. Συνεπώς θα πρέπει να μειωθεί το κατώφλι έτσι ώστε το μοντέλο να μπορεί να προβλέψει με μεγαλύτερη ακρίβεια τις περιπτώσεις αυτές.

Μοντέλο ROCpred

library(ROCR)
ROCRpred <- prediction(predictTest, test$y)
train2 <- na.omit(train)
test2 <- na.omit(test)

cat("Καταχωρήσεις στο train2:", nrow(train2), "\n", "Καταχωρήσεις στο test2:", nrow(test2), "\n")
## Καταχωρήσεις στο train2: 29387 
##  Καταχωρήσεις στο test2: 15824

Σχόλιο
Από την στιγμή που ήδη γνωρίζουμε ότι στο αρχικό dataset δεν υπάρχουν missing values περιμένουμε ότι τα νέα training και testing sets θα έχουν 45.211 καταχωρήσεις, όπως και συμβαίνει.

Καμπύλη ROC και AUC

ROCRperf <- performance(ROCRpred, "tpr", "fpr")

plot(ROCRperf, colorize = TRUE, print.cutoffs.at = c(0.2, 0.5, 0.8),
     main = "ROC Curve", xlab = "Specificity", ylab = "Sensitivity")

auc <- performance(ROCRpred, "auc")@y.values[[1]]
cat("AUC:", round(auc, 3), "\n")
## AUC: 0.909

Σχόλια

  • Κάθε χρώμα της καμπύλης αντιστοιχεί σε διαφορετική τιμή κατωφλιού πρόβλεψης.

  • Οι αριθμοί που εμφανίζονται (π.χ. 0.2, 0.5, 0.8) είναι τα σημεία όπου το print.cutoffs.at ζητά να εμφανιστούν οι αντίστοιχες τιμές κατωφλίου πάνω στην καμπύλη.

  • Η AUC (Area Under the Curve) είναι το εμβαδόν της περιοχής κάτω από την καμπύλη ROC και μας δίνει μια απόλυτη τιμή της ποιότητας πρόβλεψης. Στο παράδειγμα αυτό AUC = 0.909 που σημαίνει ότι η πρόβλεψη του μοντέλου είναι πολύ καλή.