Το dataset bank-additional.csv αφορά μια καμπάνια άμεσου μάρκετινγκ πορτογαλικής τράπεζας με στόχο να πείσει πελάτες να ανοίξουν λογαριασμό προθεσμίας (term deposit).
Περιλαμβάνει:
4,119 παρατηρήσεις
21 μεταβλητές, όπως:
Δημογραφικά (π.χ. age, job, marital, education)
Οικονομική κατάσταση (π.χ. housing, loan, default)
Στοιχεία επικοινωνίας (contact, month, day_of_week)
Αποτέλεσμα (y: αν ο πελάτης δέχτηκε να ανοίξει λογαριασμό – ναι/όχι)
Η ανάλυση του συγκεκριμένου dataset μπορεί να βοηθήσει την τράπεζα να
απαντήσει σε σημαντικά επιχειρηματικά ερωτήματα, όπως: Ποια
χαρακτηριστικά πελατών αυξάνουν την πιθανότητα αποδοχής μιας προσφοράς;
Ποιοι δημογραφικοί ή οικονομικοί παράγοντες σχετίζονται με την επιτυχία
των προωθητικών ενεργειών; Ποια χρονική περίοδος ή τύπος επικοινωνίας
είναι πιο αποτελεσματικός; Απαντώντας σε αυτά τα ερωτήματα μέσω
λογιστικής παλινδρόμησης, η επιχείρηση μπορεί να στοχεύσει καλύτερα τις
καμπάνιες της και να βελτιώσει το ποσοστό απόκρισης.
| Μεταβλητή | Τύπος | Περιγραφή |
|---|---|---|
| age | Αριθμητική | Ηλικία πελάτη |
| job | Κατηγορική | Επάγγελμα πελάτη |
| marital | Κατηγορική | Οικογενειακή κατάσταση |
| education | Κατηγορική | Εκπαίδευση πελάτη |
| default | Κατηγορική | Έχει ιστορικό αθέτησης δανείου |
| housing | Κατηγορική | Έχει στεγαστικό δάνειο |
| loan | Κατηγορική | Έχει καταναλωτικό δάνειο |
| contact | Κατηγορική | Μέσος επικοινωνίας |
| month | Κατηγορική | Μήνας επικοινωνίας |
| day_of_week | Κατηγορική | Ημέρα επικοινωνίας |
| duration | Αριθμητική | Διάρκεια τελευταίας επαφής (σε δευτερόλεπτα) |
| campaign | Αριθμητική | Αριθμός επαφών σε αυτή την καμπάνια |
| pdays | Αριθμητική | Ημέρες από την προηγούμενη επαφή |
| previous | Αριθμητική | Αριθμός προηγούμενων επαφών |
| poutcome | Κατηγορική | Αποτέλεσμα προηγούμενης καμπάνιας |
| emp.var.rate | Αριθμητική | Οικονομικός δείκτης: ρυθμός ανεργίας |
| cons.price.idx | Αριθμητική | Δείκτης τιμών καταναλωτή |
| cons.conf.idx | Αριθμητική | Δείκτης εμπιστοσύνης καταναλωτή |
| euribor3m | Αριθμητική | Επιτόκιο euribor 3 μηνών |
| nr.employed | Αριθμητική | Αριθμός εργαζομένων |
| y | Διωνυμική | Αποτέλεσμα καμπάνιας (yes/no) |
| Μεταβλητή | Μέσος_Όρος | Διάμεσος | Τυπική_Απόκλιση |
|---|---|---|---|
| age | 40.113620 | 38 | 10.313361 |
| duration | 256.788055 | 181 | 254.703736 |
| campaign | 2.537266 | 2 | 2.568159 |
Σχόλιο Η μέση ηλικία των πελατών είναι 40 έτη, με μικρή διασπορά (τυπική απόκλιση ≈ 10). Η διάρκεια των κλήσεων έχει μεγάλη μεταβλητότητα, με μέσο όρο 257 και διάμεσο 181, δείχνοντας πιθανή ύπαρξη ακραίων τιμών. Ο αριθμός επαφών (campaign) είναι συνήθως χαμηλός, με μέσο όρο 2.5 και διάμεσο 2
library(ggplot2)
# Δημιουργία scatterplot: ηλικία vs διάρκεια επικοινωνίας
ggplot(data, aes(x = age, y = duration)) +
geom_point(alpha = 0.5, color = "steelblue") +
labs(title = "Σχέση ηλικίας και διάρκειας επικοινωνίας",
x = "Ηλικία",
y = "Διάρκεια (δευτερόλεπτα)")
*ΣχόλιοΗ παραπάνω διασπορά (scatterplot) απεικονίζει τη
σχέση μεταξύ της ηλικίας των πελατών και της διάρκειας της τηλεφωνικής
επικοινωνίας. Παρατηρούνται ορισμένες μεγάλες τιμές διάρκειας, ενώ δεν
διακρίνεται σαφής γραμμική συσχέτιση μεταξύ των δύο μεταβλητών.
library(ggplot2)
# Δημιουργία boxplot
ggplot(data, aes(x = y, y = age)) +
geom_boxplot(fill = "skyblue") +
labs(
title = "Κατανομή ηλικιών ανάλογα με την αποδοχή προσφοράς",
x = "Αποδοχή προσφοράς (y)",
y = "Ηλικία"
) +
theme_minimal()
Σχόλιο Το παραπάνω boxplot απεικονίζει την
κατανομή των ηλικιών των πελατών, χωρισμένη ανάλογα με το αν αποδέχθηκαν
(“yes”) ή όχι (“no”) την τραπεζική προσφορά.
Οριζόντιος άξονας (x): Η μεταβλητή y, δηλαδή η τελική απόκριση του πελάτη στην προσφορά (yes ή no).
Κατακόρυφος άξονας (y): Η μεταβλητή age, δηλαδή η ηλικία του πελάτη.
Με αυτή την απεικόνιση μπορούμε να παρατηρήσουμε αν, για παράδειγμα:
Υπάρχει διαφορά στην ηλικιακή κατανομή μεταξύ όσων αποδέχτηκαν και όσων απέρριψαν την προσφορά.
Οι πελάτες που αποδέχθηκαν την προσφορά τείνουν να είναι μεγαλύτεροι ή μικρότεροι σε ηλικία.
Αυτή η οπτικοποίηση μπορεί να προσφέρει πολύτιμες πληροφορίες για το πώς η ηλικία σχετίζεται με την επιτυχία των καμπανιών, κάτι που είναι χρήσιμο στη λογιστική παλινδρόμηση που ακολουθεί.
library(ggplot2)
# Δημιουργία ραβδογράμματος για τη μεταβλητή job
ggplot(data, aes(x = job)) +
geom_bar(fill = "darkorange") +
labs(title = "Κατανομή επαγγελμάτων", x = "Επάγγελμα", y = "Συχνότητα") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Σχόλιο Το ραβδόγραμμα δείχνει τη συχνότητα
εμφάνισης κάθε επαγγελματικής κατηγορίας στο δείγμα. Παρατηρείται ότι οι
περισσότεροι πελάτες είναι σε επαγγέλματα όπως “admin.”, “blue-collar”
και “technician”, ενώ επαγγέλματα όπως “student” και “unemployed”
εμφανίζονται λιγότερο συχνά.
if (!require(pROC)) install.packages("pROC")
library(pROC)
data$y_bin <- ifelse(data$y == "yes", 1, 0)
model <- glm(y_bin ~ age + duration, data = data, family = "binomial")
probs <- predict(model, type = "response")
roc_obj <- roc(data$y_bin, probs)
plot(roc_obj, col = "blue", main = "ROC Curve")
auc(roc_obj)
## Area under the curve: 0.8174
Σχόλιο Η ROC καμπύλη (Receiver Operating Characteristic) είναι ένα διαγνωστικό εργαλείο που αξιολογεί την απόδοση ενός δυαδικού ταξινομητή. Στην καμπύλη αυτή, στον άξονα Χ απεικονίζεται το 1 - Ειδικότητα (False Positive Rate), ενώ στον άξονα Υ απεικονίζεται η Ευαισθησία (True Positive Rate).
Στην περίπτωσή μας, η καμπύλη είναι αρκετά κοντά στην επάνω αριστερή γωνία, γεγονός που υποδηλώνει καλή ταξινομητική ικανότητα του μοντέλου. Η επιφάνεια κάτω από την καμπύλη (AUC) έχει τιμή 0.8174, που σημαίνει ότι το μοντέλο έχει καλή ακρίβεια στο να διακρίνει μεταξύ των δύο κατηγοριών (δηλαδή ποιοι θα απαντήσουν θετικά και ποιοι όχι).