🔹 Περιγραφή του συνόλου δεδομένων

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

Link for the dataset(Kaggle.com)

🔹 Αρχική διερεύνηση του συνόλου

  1. Μετατροπή των Inches και RAM.
    Στο αρχικό Dataset, τα attributes Inches, Weight και RAM ήταν τύπου Categorical, παρά το γεγονός ότι ήταν νούμερα.
    Έγινε η μετατροπή τους σε Numeric για την καλύτερη ερμηνεία του συνόλου.

  2. Μετατροπή των τιμών.
    Οι τιμές των φορητών υπολογιστών ήταν εκφρασμένες σε Ρουπία Ινδίας.
    Αυτές μετατράπηκαν σε ευρώ και έγινε στρογγυλοποίηση των 2 δεκαδικών στοιχείων για καλύτερη κατανόηση του συνόλου.

  3. Έλεγχος και χειρισμός ελλιπών τιμών.
    Τα αντικείμενα του συνόλου δεδομένων ήταν 1303.
    Μετά τον έλεγχο για διπλότυπα και την αφαίρεση των ελλιπών τιμών,
    έμειναν 1273 αντικείμενα.

    Εικόνα 1: OpenRefine Preproccesing Steps
    Εικόνα 1: OpenRefine Preproccesing Steps

Χαρακτηριστικά του συνόλου

kable(df, format = "html", align = "c", escape = FALSE) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"),
                full_width = FALSE, position = "center") %>%
  column_spec(3, bold = TRUE)
Χαρακτηριστικό Περιγραφή Τύπος
Εταιρεία Η μάρκα του φορητού υπολογιστή (π.χ. Dell, HP, Apple). Categorical
TypeName Η κατηγορία/ο τύπος του φορητού υπολογιστή (π.χ. Gaming, Ultrabook, Notebook). Categorical
Inches Το μέγεθος της οθόνης του φορητού υπολογιστή σε ίντσες. Numeric
ScreenResolution Η ανάλυση της οθόνης (π.χ. 1920x1080, 4K). Categorical
CPU Τα στοιχεία του επεξεργαστή (π.χ. Intel Core i5, AMD Ryzen 7). Categorical
RAM Η ποσότητα της μνήμης τυχαίας προσπέλασης (RAM) σε gigabytes (GB). Numeric
Μνήμη Ο τύπος και το μέγεθος του αποθηκευτικού χώρου (π.χ. 256 GB SSD, 1 TB HDD). Categorical
GPU Η μονάδα επεξεργασίας γραφικών (π.χ. NVIDIA GTX 1650, Intel HD Graphics). Categorical
Βάρος Το βάρος του φορητού υπολογιστή σε κιλά(kg). Numeric
Λειτουργικό Σύστημα Το λειτουργικό σύστημα του φορητού υπολογιστή (π.χ. Windows, macOS, Linux). Categorical
Τιμή Η τιμή του φορητού υπολογιστή σε Ευρώ. Numeric
IsExpensive Κατηγοριοποιεί τα λάπτοπ σε ακριβά και μη ακριβά εάν η τιμή τους ξεπερνάει τα 800 ευρώ Boolean

🔹 Επιλογή και Κανονικοποίηση Μεταβλητών

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

# Επιλέγουμε μόνο τις μεταβλητές Ram και Weight για το clustering
laptopClusterDataRaw <- laptopData[, c("Ram", "Weight")]

# Κανονικοποιούμε τα δεδομένα ώστε να έχουν μέσο όρο 0 και τυπική απόκλιση 1
laptopClusterData <- scale(laptopClusterDataRaw)

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

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

# Υπολογισμός αποστάσεων (ευκλείδεια απόσταση)
distMatrix <- dist(laptopClusterData, method = "euclidean")

# Δημιουργία του ιεραρχικού δέντρου με μέθοδο σύνδεσης ward.D2
hcModel <- hclust(distMatrix, method = "ward.D2")

# Οπτικοποίηση του δενδρογράμματος
plot(hcModel, labels = FALSE, main = "Δενδροδιάγραμμα Ιεραρχικής Συσταδοποίησης")

🔹 Δημιουργία συστάδων

Το δενδροδιάγραμμα «κόπηκε» σε 5 επίπεδα για να προκύψουν πέντε συστάδες. Οι κατηγορίες αποθηκεύτηκαν ως νέα μεταβλητή HC_Cluster στο dataset. Η επιλογή 5 clusters θεωρείται κατάλληλη γιατί οι ομάδες που προέκυψαν έχουν σαφή διαχωρισμό στο γράφημα και αντανακλούν διαφορετικούς τύπους laptops, όπως: ελαφριά με λίγη RAM, βασικά laptops, ισχυρά με πολλή RAM, βαριά (π.χ. gaming) κ.λπ. Αν είχαμε λιγότερα clusters, θα χάναμε χρήσιμη πληροφορία, ενώ περισσότερα θα δυσκόλευαν την ερμηνεία. Τα 5 clusters προσφέρουν καλή ισορροπία μεταξύ απλότητας και πληροφορίας. Στο κάθε cluster μπήκαν και ταιριαστά labels ανάλογα με τα χαραχτηριστικά τους.

# Κατηγοριοποίηση των παρατηρήσεων σε 5 clusters
clusters_hc <- cutree(hcModel, k = 5)

# Προσθήκη των clusters στο αρχικό dataset
laptopData$HC_Cluster <- factor(clusters_hc, 
                                levels = c(1, 2, 3, 4, 5),
                                labels = c("Basic Lightweight",
                                           "Basic Heavy",
                                           "Balanced",
                                           "High Performance",
                                           "Gaming/Power Users"))

table(laptopData$HC_Cluster) %>%
kable(
    col.names = c("Cluster", "Count"),
    align = c("l", "l"),  # l = left alignment
    caption = "Αριθμός εγγραφών ανά συστάδα")
Αριθμός εγγραφών ανά συστάδα
Cluster Count
Basic Lightweight 373
Basic Heavy 654
Balanced 178
High Performance 3
Gaming/Power Users 64

🔹 Οπτικοποίηση συστάδων

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

ggplot(laptopData, aes(x = Ram, y = Weight, color = HC_Cluster)) +
  geom_point(size = 2) +
  labs(title = "Ιεραρχική Συσταδοποίηση Laptops (3 Clusters)",
       x = "RAM (GB)", y = "Βάρος (kg)", color = "Cluster") +
  theme_minimal()