Το επιλεγμένο σύνολο δεδομένων περιέχει πληροφορίες σχετικά με διάφορα μοντέλα φορητών υπολογιστών, τις προδιαγραφές τους και τις αντίστοιχες τιμές τους. Είναι χρήσιμο για την ανάλυση του τρόπου με τον οποίο διάφορα χαρακτηριστικά (όπως η μάρκα, το μέγεθος της οθόνης, η μνήμη RAM και ο επεξεργαστής) επηρεάζουν την τιμή ενός φορητού υπολογιστή. Αυτό το σύνολο δεδομένων μπορεί να βοηθήσει τις επιχειρήσεις, τους καταναλωτές και τους αναλυτές να κατανοήσουν τις τάσεις της αγοράς και τις στρατηγικές τιμολόγησης.
Μετατροπή των Inches και RAM.
Στο αρχικό Dataset, τα attributes Inches,
Weight και RAM ήταν τύπου
Categorical, παρά το γεγονός ότι ήταν νούμερα.
Έγινε η μετατροπή τους σε Numeric για την καλύτερη
ερμηνεία του συνόλου.
Μετατροπή των τιμών.
Οι τιμές των φορητών υπολογιστών ήταν εκφρασμένες σε Ρουπία
Ινδίας.
Αυτές μετατράπηκαν σε ευρώ και έγινε στρογγυλοποίηση
των 2 δεκαδικών στοιχείων για καλύτερη κατανόηση του
συνόλου.
Έλεγχος και χειρισμός ελλιπών τιμών.
Τα αντικείμενα του συνόλου δεδομένων ήταν 1303.
Μετά τον έλεγχο για διπλότυπα και την αφαίρεση
των ελλιπών τιμών,
έμειναν 1273 αντικείμενα.
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 με SplitRatio = 0.7 χρησιμοποιώντας την κατηγορική μεταβλητή IsExpensive με seed = 953.
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
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)## [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 ως «ακριβά» ή όχι, καθιστώντας το πιο αποδοτικό για το συγκεκριμένο πρόβλημα.