1. Περιγραφή του Dataset & Μεταβλητών

Το παρόν σύνολο δεδομένων δημιουργήθηκε για εκπαιδευτικούς σκοπούς, με στόχο την κατανόηση της έννοιας της τμηματοποίησης πελατών (customer segmentation), γνωστή και ως market basket analysis. Το σενάριο αφορά έναν ιδιοκτήτη εμπορικού κέντρου, ο οποίος μέσω καρτών μέλους διαθέτει βασικά δημογραφικά και οικονομικά στοιχεία για τους πελάτες του, όπως:

summary(Data)
##    CustomerID        Gender               Age        Annual_Income_inK
##  Min.   :  1.00   Length:200         Min.   :18.00   Min.   : 15.00   
##  1st Qu.: 50.75   Class :character   1st Qu.:28.75   1st Qu.: 41.50   
##  Median :100.50   Mode  :character   Median :36.00   Median : 61.50   
##  Mean   :100.50                      Mean   :38.85   Mean   : 60.56   
##  3rd Qu.:150.25                      3rd Qu.:49.00   3rd Qu.: 78.00   
##  Max.   :200.00                      Max.   :70.00   Max.   :137.00   
##  SpendingScore  
##  Min.   : 1.00  
##  1st Qu.:34.75  
##  Median :50.00  
##  Mean   :50.20  
##  3rd Qu.:73.00  
##  Max.   :99.00

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

Η ανάλυση βασίζεται σε υλικό από το μάθημα Machine Learning A-Z (Udemy) και το αρχείο δεδομένων είναι διαθέσιμο στο GitHub.

Με τη μελέτη αυτού του συνόλου δεδομένων επιδιώκεται να απαντηθούν βασικά ερωτήματα όπως:

Πηγή απο το Kaggle

2. Αλλαγές στο Dataset χρησιμοποιώντας OpenRefine

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

OpenRefine History
OpenRefine History

3. Αρχικά διαγράμματα κατανόησης του Dataset

Το παρακάτω boxplot απεικονίζει την κατανομή του ετήσιου εισοδήματος (Annual Income in K) ανά φύλο (Gender), διαχωρίζοντας τους πελάτες σε δύο κατηγορίες: Female και Male.

Συμπεράσματα

ggplot(Data, aes(Gender, Annual_Income_inK)) +
      geom_boxplot()

ggplot(Data, aes(Annual_Income_inK)) +
      geom_histogram()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

ggplot(Data, aes(Age, SpendingScore)) +
      geom_point()

4. Ιεραρχική Συσταδοποίηση

distances = dist(Data, method = "euclidean")
## Warning in dist(Data, method = "euclidean"): NAs introduced by coercion
clusterData = hclust(distances, method = "ward.D2") 
plot(clusterData, labels = FALSE, main = "Δενδροδιάγραμμα - Ιεραρχική Συσταδοποίηση")

Επιλογή Αριθμού Ομάδων (Clusters)

Μέσω της εφαρμογής της μεθόδου Elbow, αναμένεται ότι το σημείο κάμψης στο γράφημα (elbow point) θα εντοπιστεί όταν ο αριθμός των ομάδων κυμαίνεται μεταξύ 5 και 6. Το σημείο αυτό υποδεικνύει ότι η αύξηση του αριθμού των clusters πέρα από αυτό το όριο δεν προσφέρει ουσιαστική βελτίωση στην εσωτερική συνοχή των ομάδων (inertia), κάτι που αποτελεί βασική ένδειξη για τον βέλτιστο αριθμό ομάδων.

Αν η καμπύλη επιβεβαιώσει αυτή την υπόθεση, τότε η επιλογή των 5 ή 6 clusters θα θεωρείται ως η καταλληλότερη και πιο ισορροπημένη λύση, επιτρέποντας μια ικανοποιητική διαφοροποίηση μεταξύ των πελατών, χωρίς να εισάγεται περιττή πολυπλοκότητα ή υπερβολική εξειδίκευση που ενδεχομένως να δυσχεράνει την επιχειρησιακή αξιοποίηση των αποτελεσμάτων.