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

Το επιλεγμένο σύνολο δεδομένων περιέχει πληροφορίες σχετικά με διάφορα μοντέλα φορητών υπολογιστών, τις προδιαγραφές τους και τις αντίστοιχες τιμές τους. Είναι χρήσιμο για την ανάλυση του τρόπου με τον οποίο διάφορα χαρακτηριστικά (όπως η μάρκα, το μέγεθος της οθόνης, η μνήμη 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

🔹 Διαχωρισμός του συνόλου σε Train και Test

Αρχικά θα χωρίσω το σύνολο δεδομένων σε Train και Test με SplitRatio = 0.7 χρησιμοποιώντας την κατηγορική μεταβλητή IsExpensive με seed = 953.

set.seed(953)
spl <- sample.split(laptopData$IsExpensive, SplitRatio = 0.7)
laptopTrain <- subset(laptopData, spl==TRUE) 
laptopTest <- subset(laptopData, spl==FALSE)

🔹 Δημιουργία δέντρου απόφασης με CART

Tο δέντρο απόφασης αφορά την πρόβλεψη της μεταβλητής IsExpensive (αν ένα laptop είναι ακριβό ή όχι — δηλαδή κατηγορία 1 για ακριβό, 0 για όχι). Παρακάτω εξηγείται κάθε κόμβος του δέντρου βήμα-βήμα:

laptopTree <- rpart(IsExpensive ~ Ram + TypeName + Company + Weight, data = laptopTrain,
              method="class", minbucket=25)

prp(laptopTree) 

🔍 Διαδρομή Απόφασης του Δέντρου

  • Ρίζα (root node):

    • Αν Ram < 14, πάμε αριστερά (yes).

    • Αλλιώς, πάμε δεξιά → IsExpensive = 1 (σίγουρη πρόβλεψη ότι είναι ακριβό).

  • Αριστερό υποδέντρο:

    • Αν το TypeName είναι Gmn, Netbk, Notbk → τότε IsExpensive = 0 (προβλέπεται ότι δεν είναι ακριβό).

    • Αλλιώς, συνεχίζουμε με βάση την Company.

  • Μεταβλητή Company:

    • Αν η εταιρεία είναι μία από Acr, Ass, Mdc, Rzr, Xim → IsExpensive = 0.

    • Αλλιώς, εξετάζουμε ξανά τη μνήμη RAM.

  • Ram < 7:

    • Αν Ram < 7 → IsExpensive = 0

    • Αλλιώς, εξετάζουμε το βάρος.

  • Weight >= 1.5:

    • Αν το βάρος είναι >= 1.5 kg → IsExpensive = 1

    • Αν είναι μικρότερο → IsExpensive = 0

🔹 Προβλέψεις με το μοντέλο CART

laptopPredictCART <- predict(laptopTree, newdata=laptopTest, type="class")

table(laptopTest$IsExpensive, laptopPredictCART)
##    laptopPredictCART
##       0   1
##   0 243  35
##   1  21  82

Παραπάνω φαίνονται οι προβλέψεις του που έκανε το δέντρο απόφασης για το Test-set. Παρατηρώ ότι το μοντέλο μου προέβλεψε σωστά το 85.3% των 381 εγγραφών.

PredictROC_CART <- predict(laptopTree, newdata = laptopTest)

pred <- prediction(PredictROC_CART[,2], laptopTest$IsExpensive)
perf <- performance(pred, "tpr", "fpr")
plot(perf)

as.numeric(performance(pred, "auc")@y.values)
## [1] 0.8956311

Τέλος, η ROC καμπύλη δείχνει ότι το λογιστικό μοντέλο έχει πολύ καλή ικανότητα διάκρισης μεταξύ ακριβών και μη ακριβών laptops, καθώς η καμπύλη πλησιάζει το επάνω αριστερό άκρο, μακριά από τη διαγώνιο της τυχαίας πρόβλεψης. Η τιμή του AUC είναι 0.8956, γεγονός που υποδηλώνει ότι το μοντέλο έχει πολύ υψηλή προβλεπτική ακρίβεια, με πολύ κοντά στα 90% πιθανότητα να κατατάξει σωστά ένα τυχαίο ζεύγος παρατηρήσεων. Συνεπώς, το μοντέλο θεωρείται ιδιαίτερα αποδοτικό στη συγκεκριμένη ταξινόμηση.

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

Παρακάτω είναι το μοντέλο λογιστικής παλινδρόμησης που δημιουργήθηκε με τις ίδιες προδιαγραφές για σύγκριση.

# Logistic regression model
laptopLogit <- glm(IsExpensive ~ Ram + TypeName + Company + Weight,
                   data = laptopTrain,
                   family = "binomial")

predictTest <- predict(laptopLogit, type="response", newdata=laptopTest)

table(laptopTest$IsExpensive, predictTest > 0.75)
##    
##     FALSE TRUE
##   0   266   12
##   1    53   49

Παραπάνω φαίνονται οι προβλέψεις του που έκανε το δέντρο απόφασης για το Test-set. Παρατηρώ ότι το μοντέλο μου προέβλεψε σωστά το 82.8% των 380 εγγραφών.

🔹 Σύγκριση μοντέλων

Συγκρίνοντας τα δύο μοντέλα ως προς την ακρίβεια πρόβλεψη, συμπαιρένω πώς το μοντέλο CART υπερέχει ελαφρώς, με ποσοστό ακρίβειας 85.3% στις προβλέψεις του Test-set, έναντι 82.8% του μοντέλου λογιστικής παλινδρόμησης. Αυτό δείχνει ότι το δέντρο απόφασης είχε καλύτερη επίδοση στην ταξινόμηση των laptops ως «ακριβά» ή όχι, καθιστώντας το πιο αποδοτικό για το συγκεκριμένο πρόβλημα.