Αλγόριθμοι Μηχανικής Μάθησης σε Πολυεπεξεργαστικά Περιβάλλοντα

Σχετικά έγγραφα
Υπερπροσαρμογή (Overfitting) (1)

Ευφυής Προγραμματισμός

ΔΙΑΧΕΙΡΙΣΗ ΠΕΡΙΕΧΟΜΕΝΟΥ ΠΑΓΚΟΣΜΙΟΥ ΙΣΤΟΥ ΚΑΙ ΓΛΩΣΣΙΚΑ ΕΡΓΑΛΕΙΑ. Data Mining - Classification

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΕΦΑΡΜΟΣΜΕΝΩΝ ΜΑΘΗΜΑΤΙΚΩΝ ΚΑΙ ΦΥΣΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΠΛΗΡΟΦΟΡΙΑΣ ΠΑΡΟΥΣΙΑΣΗ ΤΕΛΙΚΗΣ ΕΡΓΑΣΙΑΣ ΛΙΝΑ ΜΑΣΣΟΥ

ΑΛΓΟΡΙΘΜΟΙ ΕΞΟΡΥΞΗΣ ΠΛΗΡΟΦΟΡΙΑΣ

ΔΠΜΣ: ΕΦΑΡΜΟΣΜΕΝΕΣ ΜΑΘΗΜΑΤΙΚΕΣ ΕΠΙΣΤΗΜΕΣ ΑΛΓΟΡΙΘΜΟΙ ΕΞΟΡΥΞΗΣ ΠΛΗΡΟΦΟΡΙΑΣ ΤΕΛΙΚΗ ΕΡΓΑΣΙΑ

Κατηγοριοποίηση βάσει διανύσματος χαρακτηριστικών

ΚΕΦΑΛΑΙΟ Μηχανική Μάθηση

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

ΑΕΠΠ Ερωτήσεις θεωρίας

Ανάλυση Δεδομένων με χρήση του Στατιστικού Πακέτου R

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Τεχνητή Νοημοσύνη. 16η διάλεξη ( ) Ίων Ανδρουτσόπουλος.

Αναγνώριση Προτύπων Ι

ΔΠΜΣ: ΕΦΑΡΜΟΣΜΕΝΕΣ ΜΑΘΗΜΑΤΙΚΕΣ ΕΠΙΣΤΗΜΕΣ ΡΟΗ: ΣΤΑΤΙΣΤΙΚΗ-ΠΙΘΑΝΟΤΗΤΕΣ ΜΑΘΗΜΑ: ΑΛΓΟΡΙΘΜΟΙ ΕΞΟΡΥΞΗΣ ΠΛΗΡΟΦΟΡΙΑΣ ΤΕΛΙΚΗ ΕΡΓΑΣΙΑ ΔΗΜΗΤΡΑ ΤΑΤΣΙΟΥ

Βασίλειος Μαχαιράς Πολιτικός Μηχανικός Ph.D.

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

«Τεχνογλωσσία VIII» Εξαγωγή πληροφοριών από κείμενα

ΣΧΟΛΗ ΕΦΑΡΜΟΣΜΕΝΩΝ ΜΑΘΗΜΑΤΙΚΩΝ ΚΑΙ ΦΥΣΙΚΩΝ ΕΠΙΣΤΗΜΩΝ

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

ΑΝΔΡΟΥΛΑΚΗΣ ΜΑΝΟΣ A.M AΛΓΟΡΙΘΜΟΙ ΕΞΟΡΥΞΗΣ ΠΛΗΡΟΦΟΡΙΑΣ

ΑΛΓΟΡΙΘΜΟΙ ΕΞΟΡΥΞΗΣ ΠΛΗΡΟΦΟΡΙΑΣ (Data Mining) Πανδή Αθηνά

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ

Μέρος Β /Στατιστική. Μέρος Β. Στατιστική. Γεωπονικό Πανεπιστήμιο Αθηνών Εργαστήριο Μαθηματικών&Στατιστικής/Γ. Παπαδόπουλος (

Ασκήσεις μελέτης της 16 ης διάλεξης

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Έλεγχος υποθέσεων και διαστήματα εμπιστοσύνης

Αναγνώριση Προτύπων Εργασία 1η Classification

Βασίλειος Μαχαιράς Πολιτικός Μηχανικός Ph.D.

Διπλωματική Εργασία: «Συγκριτική Μελέτη Μηχανισμών Εκτίμησης Ελλιπούς Πληροφορίας σε Ασύρματα Δίκτυα Αισθητήρων»

Θέματα Προγραμματισμού Η/Υ

ΤΕΛΙΚΟ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ

Δέντρα Απόφασης (Decision(

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Τελικό επαναληπτικό διαγώνισμα Επιμέλεια: Δρεμούσης Παντελής

Κεφάλαιο 4: Λογισμικό Συστήματος

ΜΕΘΟΔΟΛΟΓΙΕΣ ΑΝΑΠΤΥΞΗΣ ΣΥΣΤΗΜΑΤΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ

Δομές Δεδομένων. Ενότητα 1 - Εισαγωγή. Χρήστος Γκουμόπουλος. Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων

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

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Οργάνωση Υπολογιστών

Πληροφορική 2. Αλγόριθμοι

Μαλούτα Θεανώ Σελίδα 1

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΝΕΥΡΩΝΙΚΑ ΔΙΚΤΥΑ

Διπλωματική εργασία Θέμα: «Δημιουργία ευφυούς συστήματος για τη διαχείριση και διαλογή των ασθενών Τμήματος Επειγόντων Περιστατικών

8 Τεχνικός Εφαρμογών Πληροφορικής με Πολυμέσα

Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής

Χαλκίδης Νέστωρας, Τσαγιοπούλου Μαρία, Παπακωνσταντίνου Νίκος, Μωυσιάδης Θεόδωρος. Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης 2016

Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες)

Κατηγοριοποίηση. Εξόρυξη Δεδομένων και Αλγόριθμοι Μάθησης. 2 ο Φροντιστήριο. Σκούρα Αγγελική

Ευφυής Προγραμματισμός

Τεχνητή Νοημοσύνη. 17η διάλεξη ( ) Ίων Ανδρουτσόπουλος.

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος

"The Project ARXIMIDIS ΙΙ is co-funded by the European Social Fund and National Resources EPEAEK ΙΙ "

Σέργιος Θεοδωρίδης Κωνσταντίνος Κουτρούμπας. Version 2

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

Α Ν Α Λ Τ Η Α Λ Γ Ο Ρ Ι Θ Μ Ω Ν Κ Ε Υ Α Λ Α Ι Ο 5. Πως υπολογίζεται ο χρόνος εκτέλεσης ενός αλγορίθμου;

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΣΧΟΛΗ ΕΠΙΣΤΗΜΩΝ ΤΗΣ ΔΙΟΙΚΗΣΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΟΙΚΟΝΟΜΙΑΣ ΚΑΙ ΔΙΟΙΚΗΣΗΣ ΣΤΑΤΙΣΤΙΚΗ

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές

Η Διωνυμική Κατανομή. μαθηματικών. 2 Ο γονότυπος μπορεί να είναι ΑΑ, Αα ή αα.

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Η αβεβαιότητα στη μέτρηση.

Αναγνώριση Προτύπων Ι

Δομές Δεδομένων Εργαστηριακή Άσκηση Γκόγκος Νίκος Α.Μ.: 4973 Έτος: 3 ο gkogkos@ceid.upatras.gr. Εισαγωγικά:

ΕΝΙΑΙΟ ΠΛΑΙΣΙΟ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΠΟΥΔΩΝ

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

Ι. Preprocessing (Επεξεργασία train.arff):

Δυναμικές Δομές Δεδομένων Λίστες Δένδρα - Γράφοι

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

Δειγματοληψία στην Ερευνα. Ετος

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1

Διαγράμματα Κλάσεων στη Σχεδίαση

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

Μέθοδοι Μηχανών Μάθησης για Ευφυή Αναγνώριση και ιάγνωση Ιατρικών εδοµένων

Η ΙΣΧΥΣ ΕΝΟΣ ΕΛΕΓΧΟΥ. (Power of a Test) ΚΕΦΑΛΑΙΟ 21

HMY 795: Αναγνώριση Προτύπων

Μάθηση και Γενίκευση. "Τεχνητά Νευρωνικά Δίκτυα" (Διαφάνειες), Α. Λύκας, Παν. Ιωαννίνων

Πληροφορική ΙΙ Ενότητα 1

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΟΙΚΟΝΟΜΙΑΣ ΚΑΙ ΔΙΟΙΚΗΣΗΣ ΣΤΑΤΙΣΤΙΚΗ

Εργαλεία CASE. Computer Assisted Systems Engineering. Δρ Βαγγελιώ Καβακλή. Τμήμα Πολιτισμικής Τεχνολογίας και Επικοινωνίας Πανεπιστήμιο Αιγαίου

Δρ. Βασίλειος Γ. Καμπουρλάζος Δρ. Ανέστης Γ. Χατζημιχαηλίδης

ΕΙΔΗ ΕΡΕΥΝΑΣ I: ΠΕΙΡΑΜΑΤΙΚΗ ΕΡΕΥΝΑ & ΠΕΙΡΑΜΑΤΙΚΟΙ ΣΧΕΔΙΑΣΜΟΙ

ΠΕΙΡΑΜΑΤΙΚΕΣ ΠΡΟΣΟΜΟΙΩΣΕΙΣ ΚΕΦΑΛΑΙΟ 4. είναι η πραγματική απόκριση του j δεδομένου (εκπαίδευσης ή ελέγχου) και y ˆ j

Ε Ι Α Γ Ω Γ Η Σ Ο Ν Π Ρ Ο Γ Ρ Α Μ Μ Α Σ Ι Μ Ο Κ Ε Υ Α Λ Α Ι Ο 6. Σο πρόγραμμα γράφεται σε κάποια γλώσσα προγραμματισμού.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΣΧΟΛΗ ΕΠΙΣΤΗΜΩΝ ΤΗΣ ΔΙΟΙΚΗΣΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΟΙΚΟΝΟΜΙΑΣ ΚΑΙ ΔΙΟΙΚΗΣΗΣ ΣΤΑΤΙΣΤΙΚΗ

Αναδρομή. Τι γνωρίζετε για τη δυνατότητα «κλήσης» αλγορίθμων; Τι νόημα έχει;

ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ.

Το μοντέλο Perceptron

ΑΥΤΟΝΟΜΟΙ ΠΡΑΚΤΟΡΕΣ. ΑΝΑΦΟΡΑ ΕΡΓΑΣΙΑΣ Othello-TD Learning. Βόλτσης Βαγγέλης Α.Μ

Σχεδιασμός και Διεξαγωγή Πειραμάτων

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Α. Ερωτήσεις Ανάπτυξης

Δομές Δεδομένων & Αλγόριθμοι

HMY 795: Αναγνώριση Προτύπων

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΣΤΑΤΙΣΤΙΚΗ ΤΩΝ ΕΠΙΧΕΙΡΗΣΕΩΝ. Κεφάλαιο 6. Πιθανότητες

Εξόρυξη γνώμης πολιτών από ελεύθερο κείμενο

Για τις λύσεις των προβλημάτων υπάρχει τρόπος εκτίμησης της επίδοσης (performance) και της αποδοτικότητας (efficiency). Ερωτήματα για την επίδοση

Υπολογιστική Νοημοσύνη. Μάθημα 9: Γενίκευση

Εξόρυξη Γνώσης από Βιολογικά εδομένα

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07

Διαφορές single-processor αρχιτεκτονικών και SoCs

Transcript:

Αλγόριθμοι Μηχανικής Μάθησης σε Πολυεπεξεργαστικά Περιβάλλοντα Στεργίου Κωνσταντίνος Α.Μ.496 Σχολή Θετικών Επιστημών - Τμήμα Μαθηματικών Μ.Π.Σ. Μαθηματικά και Σύγχρονες Εφαρμογές στα «Υπολογιστικά Μαθηματικά και Υπολογιστική Νοημοσύνη» Επιβλέπων καθηγητής: Σωτήρης Β. Κωτσιαντής Οκτώβριος 2014 1

Τριμελής Επιτροπή Γράψα Θεοδούλα Αναπληρώτρια Καθηγήτρια Τμήματος Μαθηματικών Πανεπιστημίου Πατρών Ράγγος Όμηρος Επίκουρος Καθηγητής Τμήματος Μαθηματικών Πανεπιστημίου Πατρών Κωτσιαντής Σωτήριος Λέκτορας Τμήματος Μαθηματικών Πανεπιστημίου Πατρών 2

Περιεχόμενα Περιεχόμενα... 3 Διαγράμματα... 5 Εικόνες... 7 Περίληψη... 8 Εισαγωγή... 10 Μηχανική Μάθηση... 13 Επιβλεπόμενη Μάθηση... 15 Προσέγγιση Πρόβλεψη (Regression)... 16 Κατηγοριοποίηση (Classification)... 16 Cross Validation... 17 Φαινόμενο Υπερεκπαίδευσης (Overtraining, Overfitting)... 18 Δένδρα Ταξινόμησης και Απόφασης... 18 Εντροπία και Κέρδος Πληροφορίας (Entropy and Information Gain)... 20 Προβλήματα της μεθόδου και Αποκοπή («Κλάδεμα») Δέντρων (Tree Pruning)... 27 Κλασικοί Αλγόριθμοι Μάθησης... 30 Bootstrapping... 31 Bagging (Bootstrap Aggregating)... 32 Boosting... 34 Random Forest... 35 Αρχιτεκτονική και Υλοποίηση Αλγορίθμων στο Weka... 38 Αρχιτεκτονική της Εφαρμογής... 39 Υλοποίηση Αλγορίθμων... 45 Παράδειγμα 1 ο... 46 Παράδειγμα 2 ο... 47 Υλοποίηση Random Forest... 49 Πολυεπεξεργασία (Multiprocessing) και Πολυνημάτωση (Multithreading)... 55 Ιστορική Αναδρομή... 55 Βασικές Αρχές Πολυεπεξεργασίας... 58 Συγχρονισμός (Concurrency)... 60 Διαδικασίες (Processes)... 61 Νήματα (Threads)... 67 Νήματα Επιπέδου Χρήστη και Πυρήνα... 72 Συγκρίνοντας νήματα και διαδικασίες... 76 Πειραματική Διαδικασία... 77 Μεθοδολογία... 77 Περιγραφή Εφαρμογής... 80 Μεθοδολογία Ανάπτυξης... 82 WekaMethods... 83 extoptions (extended options)... 83 extmethods (extended methods)... 85 3

Gui... 86 Common... 86 Αποτελέσματα... 88 Σύγκριση με weka... 88 Μικρά Σύνολα Δεδομένων... 91 Μεγάλα Σύνολα Δεδομένων... 96 Παράμετροι Αλγορίθμου... 103 NumFeatures... 103 MaxDepth... 106 Συμπεράσματα... 110 Παράρτημα Α : Weka Architecture... 112 Παράρτημα B : Πρόσθετα πειραματικά αποτελέσματα... 125 Αρχείο Iris... 125 Αρχείο Anneal... 128 Βιβλιογραφία... 132 4

Διαγράμματα Διάγραμμα 1 : Δέντρο απόφασης προβλήματος Outlook... 27 Διάγραμμα 2 : Δέντρο απόφασης με όμοιους κλάδους... 28 Διάγραμμα 3 : Bagging Method... 33 Διάγραμμα 4 : Boosting Method... 34 Διάγραμμα 5 : Αρχιτεκτονική Weka... 40 Διάγραμμα 6 : Core Schematic Architecture... 41 Διάγραμμα 7 : Core Analytical UML Architecture... 42 Διάγραμμα 8 : Core Package Dependencies... 43 Διάγραμμα 9 : Core Depended On Core... 44 Διάγραμμα 10 : Core Depended on Packages... 45 Διάγραμμα 11 : Διάγραμμα κλάσεων Random Forest... 51 Διάγραμμα 12 : Classes στις οποίες ο Random Forest βασίζεται (Depend On)... 53 Διάγραμμα 13 : Κατανομή κώδικα στην μέθοδο Random Forest... 54 Διάγραμμα 14: Επίπεδα πόρων λειτουργικού συστήματος [36]... 60 Διάγραμμα 15: Linux Process Descriptor [35]... 62 Διάγραμμα 16: Σχηματική παράσταση Process Descriptor για συστήματα Unix [35]... 64 Διάγραμμα 17 :Περιεχόμενα διαδικασιών και βασικοί τρόποι επικοινωνίας τους [36]. 65 Διάγραμμα 18: Σχηματική παρουσίαση των βασικών καταστάσεων Διαδικασιών και Νημάτων [36]... 69 Διάγραμμα 19: Διάγραμμα όλων των δυνατών καταστάσεων μιας διαδικασίας σε συστήματα Unix [35]... 70 Διάγραμμα 20: Αναλυτικό διάγραμμα καταστάσεων για το Linux [35]... 70 Διάγραμμα 21: Πλήρες διάγραμμα καταστάσεων για συστήματα Windows [35]... 71 Διάγραμμα 22: Διάγραμμα επικοινωνίας μεταξύ νημάτων της ίδιας διαδικασίας (ITC) [35]... 72 Διάγραμμα 23: Διάγραμμα χρόνων αλγορίθμου σε μικρά σύνολα δεδομένων... 91 Διάγραμμα 24 : Διάγραμμα συμπεριφοράς thread σε μικρά αρχεία... 93 Διάγραμμα 25 : Συμπεριφορά μνήμης κατά την χρήση RandomForest σε μικρά αρχεία94 Διάγραμμα 26 : Υπολογιστική Ισχύς στην χρήση μικρών αρχείων... 95 Διάγραμμα 27 : Εμφάνιση των thread ανά επεξεργαστή... 96 Διάγραμμα 28 : Χρόνοι αλγορίθμου με χρήση μεγάλων συνόλων δεδομένων (αρχείων)... 97 Διάγραμμα 29 : Χρόνοι μεγάλων αρχείων μετά από αλλαγή των παραμέτρων του JVM... 99 Διάγραμμα 30 : Συμπεριφορά της μνήμης σε περίπτωση λάθους... 101 Διάγραμμα 31 : Συμπεριφορά thread μετά από λάθος... 102 Διάγραμμα 32 : Συνολικοί χρόνοι εκτέλεσης για διάφορες τιμές NumFeatures... 105 Διάγραμμα 33 : Μέσοι χρόνοι εκτέλεσης για διάφορες τιμές NumFeatures... 105 Διάγραμμα 34: Συνολικοί χρόνοι εκτέλεσης για διάφορες τιμές MaxDepth... 107 Διάγραμμα 35: Μέσος χρόνοι εκτέλεσης για διάφορες τιμές MaxDepth... 108 5

Διάγραμμα 36: (Iris) Συνολικός χρόνος εκτέλεσης για διάφορες τιμές της παραμέτρου MaxDepth... 126 Διάγραμμα 37: Μέσος χρόνος εκτέλεσης για διάφορες τιμές της παραμέτρου MaxDepth... 126 Διάγραμμα 38 : Συνολικός χρόνος εκτέλεσης για διάφορες τιμές της παραμέτρου numfeatures... 127 Διάγραμμα 39 : Μέσος χρόνος εκτέλεσης για διάφορες τιμές της παραμέτρου numfeatures... 128 Διάγραμμα 40: (Anneal) Συνολικός χρόνος εκτέλεσης για διάφορες τιμές της παραμέτρου MaxDepth... 129 Διάγραμμα 41 : (Anneal) Μέσος χρόνος εκτέλεσης για διάφορες τιμές της παραμέτρου MaxDepth... 129 Διάγραμμα 42 : (Anneal) Συνολικός χρόνος εκτέλεσης για διάφορες τιμές της παραμέτρου NumFeatures... 130 Διάγραμμα 43 : (Anneal) Μέσος χρόνος εκτέλεσης για διάφορες τιμές της παραμέτρου NumFeatures... 131 6

Εικόνες Εικόνα 1 : Σχηματικό διάγραμμα μεθόδου RandomForest... 37 Εικόνα 2: Σχηματική παράσταση συστημάτων SMP και MPP [36]... 59 Εικόνα 3 : Διάγραμμα νήματος χρήστη [35]... 73 Εικόνα 4 : Διάγραμμα νήματος πυρήνα [35]... 75 Εικόνα 5 : Σχηματικό διάγραμμα λειτουργίας Thread Pool [47]... 79 Εικόνα 6 : Βασική Οθόνη Εφαρμογής... 80 Εικόνα 7 : Οθόνες παραμέτρων μεθόδων... 82 Εικόνα 8 : Εμφάνιση της συμπεριφοράς της εφαρμογής σε περίπτωση προβλημάτων (ελλιπών πόρων)... 100 Πίνακες Πίνακας 1: Πεδία του descriptor μιας διαδικασίας... 63 Πίνακας 2: Στοιχεία που περιλαμβάνονται στους descriptor των νημάτων... 68 Πίνακας 3 : Στοιχεία αρχείων δεδομένων... 89 Πίνακας 4: Χρόνοι Randomforest σε περιβάλλον Weka... 89 Πίνακας 5 : Χρόνοι αλγορίθμου Randomforest σε διάφορα σύνολα δεδομένων... 91 Πίνακας 6 : Τιμές Χρόνων εκτέλεσης για διαφορετικές τιμές παραμέτρου NumFeatures... 104 Πίνακας 7 :Τιμές Χρόνων εκτέλεσης για διαφορετικές τιμές παραμέτρου MaxDepth. 107 Πίνακας 8 : Αποτελέσματα μετρήσεων δεδομένων Iris για την παράμετρο MaxDepth 125 Πίνακας 9 : Αποτελέσματα μετρήσεων δεδομένων Iris για την παράμετρο NumFeatures... 127 Πίνακας 10: (Anneal) Αποτελέσματα μετρήσεων δεδομένων Iris για την παράμετρο MaxDepth... 128 Πίνακας 13: (Anneal) Αποτελέσματα μετρήσεων δεδομένων Iris για την παράμετρο NumFeatures... 130 7

Περίληψη Σκοπός της διπλωματικής εργασίας είναι η μελέτη αλγορίθμων Μηχανικής Μάθησης σε περιβάλλοντα πολυεπεξεργασίας. Οι τελευταίες εξελίξεις στον τομέα της παράλληλης και της κατανεμημένης επεξεργασίας, έχουν φέρει πραγματική επανάσταση στην κατασκευή των υπολογιστών. Παρότι όμως η εξέλιξη του υλικού (hardware) προχωρά με αλματώδεις ρυθμούς, η αντίστοιχη ανάπτυξη του λογισμικού καθυστερεί σε μεγάλο βαθμό. Αποτέλεσμα είναι να παρέχεται σε απλούς χρήστες μεγάλη επεξεργαστική ισχύς, η οποία όμως παραμένει αναξιοποίητη, λόγω των εφαρμογών που δεν μπορούν να εκμεταλλευτούν σε ικανοποιητικό βαθμό την παρεχόμενη ισχύ. Η ανάπτυξη αλγορίθμων στον τομέα της τεχνητής νοημοσύνης έως τώρα γίνονταν σύμφωνα με τα κλασικά πρότυπα της συναρτησιακής μεθόδου ή στην καλύτερη περίπτωση με τεχνικές αντικειμενοστραφούς προγραμματισμού. Σε κάθε περίπτωση, η εκτέλεση του αλγορίθμου γίνεται σε έναν επεξεργαστή με τις εντολές να εκτελούνται σειριακά. Την τελευταία δεκαετία αναπτύχθηκαν εφαρμογές και περιβάλλοντα τα οποία διευκόλυναν την εκτέλεση πολλών διαφορετικών αλγορίθμων και μεθόδων μέσω ενός κοινού περιβάλλοντος διεπαφής με τον χρήστη (πχ Weka, R, Matlab κλπ). Η προσέγγιση αυτή διευκόλυνε την διάδοση αλγορίθμων και μεθόδων που ήταν πριν πολύ δύσκολο να εκτελεστούν από ανθρώπους που δεν είχαν την κατάλληλη εξοικείωση με τον προγραμματισμό. Από την άλλη πλευρά όμως πρόσθεσε ένα ακόμη επίπεδο πολυπλοκότητας στις μεθόδους που αναπτύσσονταν γι αυτά τα περιβάλλοντα, κάτι που είχε σαν αποτέλεσμα αλγόριθμους πιο αργούς και με αυξημένους περιορισμούς λόγω των μηχανισμών της εφαρμογής που τους φιλοξενούσε. Οι μετρήσεις έγιναν με την χρήση αλγόριθμων δέντρων απόφασης. Η κατηγορία αυτή των μεθόδων μηχανικής μάθησης είναι ένας εξαιρετικός υποψήφιος, για να μεταφερθεί σε νέες πολυεπεξεργαστικές πλατφόρμες καθώς αποτελούνται από επαναληπτικές διαδικασίες που δεν χρειάζονται να περιμένουν άλλες για να εκτελεστούν. 8

Στην παρούσα εργασία αναπτύχθηκε μια εφαρμογή, η οποία μπορεί να δέχεται σαν όρισμα έναν ή περισσότερους αλγόριθμους δέντρων απόφασης, να ορίζει τις παραμέτρους αυτών και κατόπιν να τους εκτελεί παράλληλα. Οι συγκεκριμένες μέθοδοι που επιλέχθηκαν, έχουν υλοποιηθεί αρχικά μέσα στο περιβάλλον Weka, για να μπορέσουν όμως να εκτελεστούν παράλληλα έπρεπε να ενσωματωθούν σε μια άλλη εφαρμογή, η οποία θα μπορούσε να δημιουργήσει πολλά διαφορετικά στιγμιότυπα. Η χρήση της εφαρμογής που αναπτύξαμε επιτρέπει την παράλληλη εκτέλεση αλγορίθμων, αλλά απέχει πολύ από τον μπορεί να τους βελτιστοποιήσει, έτσι ώστε να μπορέσουν να εκτελεστούν με την μέγιστη δυνατή ταχύτητα. Αυτό συμβαίνει, γιατί ακόμα και εκτός του περιβάλλοντος για το οποία αναπτύχθηκε, ο κώδικάς τους χρησιμοποιεί τις γενικές και αφηρημένες τεχνικές που είναι απαραίτητες για την ενσωμάτωσή τους στο Weka. Παρόλα αυτά, καταφέραμε να τρέξουμε πολλές διαφορετικές εκδόσεις αλγορίθμων, μέσα σε ένα κλάσμα του χρόνου που θα απαιτούνταν για να τρέξουν όλες αυτές οι μορφές μέσα στο Weka. Παρατηρήσαμε ότι η επίδραση των παραμέτρων στον χρόνο εκτέλεσης των μεθόδων δεν είναι ιδιαίτερα σημαντική. Αντίθετα, το μέγεθος των δεδομένων μεταβάλλει σε αρκετά βαθμό τον χρόνο εκτέλεσης, χωρίς όμως η σχέση του χρόνου εκτέλεσης και του μεγέθους των στοιχείων να είναι γραμμική. Καλύτερη σχεδίαση των μεθόδων θα μπορούσε να επιφέρει δραματική επιτάχυνση του χρόνου εκτέλεσης. 9

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

να τις κάνουμε να εκτελούνται σε περισσότερους από έναν επεξεργαστές. Προσπαθούμε λοιπόν να βρούμε σε ποια σημεία ενός αλγορίθμου μπορούμε να επέμβουμε και να αλλάξουμε την σειρά εκτέλεσης ορισμένων εντολών ή και ολόκληρων τμημάτων κώδικα, έτσι ώστε κάποια τμήματα του αλγορίθμου να μπορούν να εκτελεστούν παράλληλα, όταν δεν είναι αναγκαίο να έχει ολοκληρωθεί ένα τμήμα για να προχωρήσει το επόμενο. Αυτή η τεχνική απέχει πολύ από το να είναι μια πλήρης παράλληλη επεξεργασία, μπορεί όμως να επιταχύνει την εκτέλεση ενός αλγορίθμου ή σε περίπτωση όπου θέλουμε να εκτελέσουμε πολλές φορές τον ίδιο αλγόριθμο με διαφορετικά στοιχεία και παραμέτρους, αυτό να γίνει παράλληλα και όχι σειριακά. Στόχος της εργασίας αυτής είναι να παρουσιάσει την σχεδίαση και ανάπτυξη τέτοιων τεχνικών σε μεθόδους αλγορίθμων μηχανικής μάθησης, και ειδικότερα σε αλγόριθμους δέντρων απόφασης. Στο πρώτο κεφάλαιο παρουσιάζουμε τις απαραίτητες από την θεωρία της Μηχανικής Μάθησης. Δίνουμε κυρίως σημασία στην περιγραφή εννοιών και όρων που είναι απαραίτητες για την κατανόηση των αλγορίθμων που θα αναπτυχθούν και εφαρμοστούν πιο κάτω. Στο δεύτερο κεφάλαιο αναφέρουμε τις μεθόδους στατιστικής που εφαρμόζονται στους meta αλγόριθμους και αναλύουμε τον τρόπο λειτουργίας του Random Forest. Στόχος είναι να καταλάβουμε την βασική λειτουργία αυτών των μεθόδων και γιατί είναι καλοί υποψήφιοι για να μπορέσουν να μετατραπούν σε μεθόδους παράλληλης επεξεργασίας δεδομένων. Στο τρίτο κεφάλαιο παρουσιάζουμε την υλοποίηση των αλγόριθμων αυτών στο περιβάλλον weka. Ξεκινώντας από την υλοποίηση αυτή θα προχωρήσουμε σε προσπάθεια εκτέλεσης των αλγορίθμων σε πολλούς επεξεργαστές ταυτόχρονα. Στο τέταρτο κεφάλαιο, υπάρχει μια συνοπτική ανάλυση της αρχιτεκτονικής των πολυεπεξεργαστών, των νημάτων (threads) και πως αυτά μπορούν να μας βοηθήσουν να επιταχύνουμε τους αλγόριθμους που αναφέραμε στα προηγούμενα κεφάλαια. 11

Στο πέμπτο και τελευταίο κεφάλαιο παρουσιάζουμε την εφαρμογή που έχει αναπτυχθεί, με βάση την οποία χρησιμοποιούμε meta αλγόριθμους του weka για επεξεργαστούμε πολλά σύνολα δεδομένων ταυτόχρονα σε ένα πολυεπεξεργαστικό υπολογιστικό σύστημα. 12

Μηχανική Μάθηση Όταν μιλάμε για μηχανική μάθηση εννοούμε την μελέτη και την ανάπτυξη αλγορίθμων, τέτοιων ώστε να μπορούν να «μάθουν» να εκτελούν διαδικασίες με βάση την πρότερη εμπειρία, χρησιμοποιώντας υπάρχοντα δεδομένα.[2] Ένας πιο τυπικός ορισμός είναι ότι «Μηχανική Μάθηση είναι η επιστήμη η οποία δίνει την δυνατότητα στους υπολογιστές να μαθαίνουν, χωρίς να χρειαστεί να προγραμματιστούν αναλυτικά». Πολλές φορές η μηχανική μάθηση παρομοιάζεται με προγραμματισμό με βάση παραδείγματα (programming by example).[1] Ουσιαστικά οι μέθοδοι (αλγόριθμοι) «μαθαίνουν να συμπεριφέρονται» σε μελλοντικά δεδομένα, με βάση τις παρατηρήσεις που έχουν κάνει στα παλιότερα. Ουσιαστικός στόχος είναι αυτή η μάθηση να είναι δυναμική και αυτόματη, δηλαδή να μην χρειάζεται η επέμβαση του ανθρώπου για να καθοδηγήσει τον αλγόριθμο προς της σωστή κατεύθυνση. Είναι πολύ βασικό οι αλγόριθμοι που δημιουργούνται να είναι γενικοί και αποδοτικοί. Η γενικότητα σημαίνει να είναι εφαρμόσιμοι σε μεγάλο εύρος προβλημάτων, ενώ η αποδοτικότητα αναφέρεται στο να μπορούν να εκτελεστούν σε πραγματικό χρόνο και με την χρήση περιορισμένων υπολογιστικών πόρων (μνήμη και αποθηκευτικό χώρο).[1] Πολύ σημαντικός παράγοντας στην μάθηση είναι ο όγκος των δεδομένων που είναι απαραίτητος για την ικανοποιητική λειτουργία των αλγορίθμων. Ένας υπολογιστής μπορεί να επεξεργαστεί ένα πολύ μεγάλο όγκο δεδομένων, συνεπώς και να δώσει καλύτερα αποτελέσματα από έναν άνθρωπο, ο οποίος μπορεί να μελετήσει ένα μικρό μόνο μέρος των υπαρχόντων δεδομένων. Αν και ο άνθρωπος είναι εξαιρετικά προσαρμοσμένος στο να παρατηρεί, να αξιολογεί και να προσαρμόζεται σε δεδομένα που λαμβάνει από το περιβάλλον του, ο όγκος και ο ρυθμός αύξησης των παραγόμενων δεδομένων στην σύγχρονη εποχή, έχει κάνει την άμεση παρατήρηση και αξιολόγηση ουσιαστικά αδύνατη. 13

Είναι προφανές ότι η ανθρώπινη ευφυΐα είναι πολύ γενικότερη έννοια από την μηχανική μάθηση, καθώς περιλαμβάνει διαδικασίες όπως ο συλλογισμός (reasoning) και η αναγωγή (deduction), στην περίπτωση της μάθησης μας ενδιαφέρουν κυρίως η εξαγωγή συμπερασμάτων (inference) και η προσαρμογή (adaptation).[1] Ένας πολύ σημαντικός παράγοντας της Μηχανική Μάθησης είναι ο βαθμός πολυπλοκότητας των αλγορίθμων που αναπτύσσουμε. Οι μέθοδοι που χρησιμοποιούνται είναι πιθανότατο να εφαρμοστούν σε πάρα πολύ μεγάλα σύνολα δεδομένων, συνεπώς ο βαθμός της υπολογιστικής πολυπλοκότητας είναι σημαντικότατος παράγοντας στην επιλογή της βέλτιστης μεθόδου. Συνήθως διακρίνουμε σε δύο κατηγορίες την πολυπλοκότητα [7] 1. Πολυπλοκότητα της εκπαίδευσης, η οποία δεν θεωρείται πολλές φορές πολύ σημαντική, καθώς η εκπαίδευση δεν γίνεται πολύ συχνά στις καθημερινές εφαρμογές 2. Πολυπλοκότητα της εφαρμογής σε νέα δεδομένα. Είναι εξαιρετικά σημαντική καθώς θέλουμε να πάρουμε απαντήσεις στα συνεχώς δημιουργούμενα δεδομένα σε όσο το δυνατό μικρότερο χρόνο. [1] Η Μηχανική Μάθηση χωρίζεται σε μερικές βασικές κατηγορίες [3] 1. Επιβλεπόμενη Μάθηση (Supervised Learning). Σε αυτή την περίπτωση γνωρίζουμε τα δεδομένα μας καθώς και τις σωστές απαντήσεις τους. Με βάση αυτά τα στοιχεία, ο αλγόριθμος γενικεύει την πρόβλεψή του σε όλες τις δυνατές εισόδους. 2. Μη Επιβλεπόμενη Μάθηση (Unsupervised Learning). Δεν έχουμε τις σωστές απαντήσεις στα δεδομένα μας, συνεπώς ο αλγόριθμος προσπαθεί να βρει συσχετίσεις και να γενικεύσει (κατηγοριοποιήσει) τα δεδομένα εισόδου. Υπάρχουν και άλλες κατηγορίες μάθησης, όπως η εξελικτική μάθηση (Evolutionary Learning), Reinforcement Learning κλπ., [3] εμείς όμως θα επικεντρωθούμε στην συγκεκριμένη μελέτη μόνο με την πρώτη περίπτωση, της επιβλεπόμενης μάθησης. 14

Επιβλεπόμενη Μάθηση Το χαρακτηριστικό αυτής είναι ότι μας δίνονται τα δεδομένα εισόδου, συνήθως με την μορφή διανυσμάτων, καθώς και το σωστό αποτέλεσμα στην έξοδο του αλγορίθμου. Στόχος μας είναι η εκπαίδευση του αλγόριθμου ώστε να μάθει από τα δεδομένα που γνωρίζουμε τις απαντήσεις τους και κατόπιν να γενικεύσουμε, έτσι ώστε όταν παρουσιάσουμε στον αλγόριθμο νέα δεδομένα με άγνωστες απαντήσεις, αυτός να μπορέσει να παράξει τις σωστές απαντήσεις με βάση την εμπειρία που απέκτησε από τα γνωστά δεδομένα. [6] Ουσιαστικά, στην επιβλεπόμενη μάθηση, το σύστημα προσεγγίζει μια συνάρτηση στόχο, η οποία περιγράφει το φαινόμενο που εξετάζουμε. Τα δεδομένα εκπαίδευσης (training data set) συνήθως συμβολίζονται σαν σύνολα (xi, ti), όπου xi είναι τα διανύσματα των δεδομένων εισόδου ενώ ti είναι είναι το αποτέλεσμα κάθε εισόδου i. [3] Το σύνολο των διανυσμάτων εισόδου αποτελούν το πεδίο ορισμού της συνάρτησης που επιχειρούμε να προσεγγίσουμε και ονομάζονται στιγμιότυπα (instances). Κάθε στιγμιότυπο (διάνυσμα) μπορεί να έχει πολλές διαστάσεις, τις οποίες ονομάζουμε χαρακτηριστικά (attributes). Ανάλογα με τα δεδομένα εξόδου που έχουμε, χαρακτηρίζουμε το σύνολό μας ως συνεχές ή διακριτό. Συνεχές είναι στην περίπτωση όπου τα ti μπορούν να πάρουν οποιαδήποτε τιμή, είναι για παράδειγμα δεδομένα χρόνου, απόστασης κλπ. Αντίθετα, στα διακριτά δεδομένα τα ti μπορούν να πάρουν συγκεκριμένες τιμές μέσα από κάποιο πεπερασμένο σύνολο τιμών, για παράδειγμα είναι (true, false), (0,1) κα. Οι διακριτές τιμές που μπορούν να πάρουν μπορεί να είναι πολλές (Πόλεις μιας χώρας, ονόματα φυτών κλπ.) ή λίγες (το φύλο ενός προσώπου), είναι όμως πάντα συγκεκριμένες και αριθμήσιμες. [4] Με βάση την προηγούμενη κατηγοριοποίηση των δεδομένων εξόδου, έχουμε και τον χαρακτηρισμό των προβλημάτων που μελετούμε σε προβλήματα πρόβλεψης και κατηγοριοποίησης. 15

Προσέγγιση Πρόβλεψη (Regression) Στην περίπτωση της πρόβλεψης, έχουμε συνεχή δεδομένα. Θεωρούμε ότι οι έξοδοι των δεδομένων, ti, είναι αποτελέσματα μιας συνάρτησης που εφαρμόζεται πάνω στις εισόδους μας, την αναλυτική όμως μορφή της συνάρτησης δεν την γνωρίζουμε. Χρησιμοποιώντας λοιπόν τα γνωστά δεδομένα μας, (xi, ti), εκπαιδεύουμε έναν αλγόριθμο έτσι ώστε η συμπεριφορά του να προσεγγίζει την άγνωστη σε εμάς συνάρτηση. Όταν του εισάγουμε τις γνωστές μας τιμές να μας δίνει τις σωστές εξόδους και όταν εισάγουμε νέες τιμές με άγνωστες τιμές εξόδου, αυτός να μπορεί να προβλέψει την τιμή που θα έδινε σαν έξοδο η άγνωστη συνάρτηση. [1, 2, 5, 6] Ουσιαστικά είναι γενίκευση των αντίστοιχων μεθόδων πρόβλεψης της αριθμητικής ανάλυσης, για παράδειγμα μπορεί να εφαρμοστεί και σε μορφές δεδομένων στις οποίες δεν μπορούμε να εφαρμόσουμε τις κλασικές μεθόδους. Η μορφή της συνάρτησης που προσπαθούμε να προσεγγίσουμε παραμένει άγνωστη και η ακρίβεια της πρόβλεψης εξαρτάται από πολλούς παράγοντες. [6] Κατηγοριοποίηση (Classification) Στην κατηγορία αυτή έχουμε διακριτά δεδομένα, αντί για συνεχή. Οι τιμές εξόδου, ti, αντιστοιχούν σε κατηγορίες στις οποίες κατατάσσονται τα διανύσματα εισόδου. Συνεπώς, παρουσιάζοντας νέα δεδομένα, δεν προσπαθούμε να προσεγγίσουμε την τιμή μιας συνάρτησης, αλλά να κατατάξουμε την είσοδό μας σε κάποια από τις κατηγορίες που γνωρίζουμε. Οι κατηγορίες αυτές συνήθως ονομάζονται κλάσεις και μπορεί να έχουν αριθμητικές τιμές, να είναι σύμβολα κλπ. Γενικά ανάλογα με την φύση του προβλήματος που μελετούμε καθορίζονται και οι κλάσεις στις οποίες ομαδοποιούνται τα δεδομένα μας. Οι μεθοδολογίες που εφαρμόζονται στα προβλήματα κατηγοριοποίησης διαφέρουν πολύ μεταξύ τους σε ότι αφορά τον τρόπο με τον οποίο προσπαθούν να ομαδοποιήσουν τα στοιχεία που τους παρέχονται. Στην γενική τους όμως μορφή, εκείνο που προσπαθούν να κάνουν είναι να υπολογίσουν τα όρια μεταξύ των 16

κατηγοριών - κλάσεων (decision boundaries). Cross Validation Η εκπαίδευση του αλγορίθμου μας γίνεται πάντα με την χρήση των δεδομένων που γνωρίζουμε. Το πρόβλημα που παρουσιάζεται είναι κατά πόσο αξιόπιστα είναι τα αποτελέσματα που θα πάρουμε στην διαδικασία της γενίκευσης, δηλαδή όταν θα εισάγουμε στον αλγόριθμό μας, δεδομένα με άγνωστη τιμή εξόδου, την οποία θα πρέπει να υπολογίσει με βάση την εκπαίδευση που του έχει γίνει. [5] Πρέπει με κάποιο τρόπο να ελέγξουμε την ικανότητα του αλγορίθμου να απαντά σωστά, αξιοποιώντας την παρεχόμενη εκπαίδευση. Ο μόνος τρόπος ελέγχου που έχουμε είναι να χρησιμοποιήσουμε πάλι τα γνωστά δεδομένα που έχουμε, τώρα όχι σαν στοιχεία της εκπαίδευσης αλλά σαν στοιχεία ελέγχου. Για τον λόγο αυτό χωρίζουμε το σύνολο των γνωστών δεδομένων μας σε δύο τμήματα. Αφού χρησιμοποιήσουμε το πρώτο τμήμα για την εκπαίδευση του αλγορίθμου, κατόπιν εισάγουμε σε αυτόν τα στοιχεία του δεύτερου τμήματος. Οι απαντήσεις που μας δίνει η μέθοδός μας ελέγχονται με τις γνωστές τιμές εξόδου των δεδομένων μας και προκύπτει ένα ποσοστό επιτυχίας της εκπαίδευσης. [3, 5] Για παράδειγμα έστω ότι έχουμε ένα σύνολο δεδομένων με 1000 στοιχεία (instances). Χωρίζουμε το σύνολο αυτό σε δύο τμήματα, ένα με 100 στοιχεία και το δεύτερο με τα εναπομείναντα 900. Εκπαιδεύουμε τον αλγόριθμό μας χρησιμοποιώντας το πρώτο τμήμα. Σε δεύτερη φάση εισάγουμε, στον εκπαιδευμένο πια αλγόριθμο τα 900 στοιχεία του δεύτερου τμήματος. Ο αλγόριθμος θα μας δώσει 900 τιμές εξόδου, μια για κάθε στοιχείο (instance). Εμείς όμως γνωρίζουμε εκ των προτέρων τις σωστές απαντήσεις (εξόδους) για κάθε στοιχείο. Συνεπώς συγκρίνουμε τις γνωστές και σωστές τιμές με αυτές που έχει υπολογίσει ο αλγόριθμος και βρίσκουμε ότι ο αλγόριθμος μας έδωσε σωστά 17

αποτελέσματα σε 800 από τις 900 τιμές και λάθος στις υπόλοιπες 100 τιμές. Συνεπώς μπορούμε να πούμε ότι ο αλγόριθμός μας είναι αξιόπιστος κατά 800/900=0.8889 ή 88.89 %. Άρα όταν εισάγουμε νέα στοιχεία με άγνωστες εξόδους στον αλγόριθμο που εκπαιδεύσαμε, θα μπορούμε να αναμένουμε ότι το αποτέλεσμα που θα πάρουμε θα είναι σωστό κατά 88.89%. Η μέθοδος που περιγράψαμε ονομάζεται cross validation και είναι από τις πιο βασικές μεθοδολογίες που διαθέτουμε για έλεγχο της αξιοπιστίας των μεθόδων που χρησιμοποιούμε. Φαινόμενο Υπερεκπαίδευσης (Overtraining, Overfitting) Επίσης μπορεί να εμφανιστεί το φαινόμενο της υπερεκπαίδευσης, δηλαδή ο αλγόριθμός μας να κάνει πολύ καλές προβλέψεις για τα δεδομένα εκπαίδευσης και ελέγχου, αλλά να μην γενικεύει καθόλου καλά σε νέα και άγνωστα δεδομένα. Αυτό σημαίνει ότι ο αλγόριθμος έχει «μάθει» πολύ καλά τα συγκεκριμένα δεδομένα που του δίνουμε στο στάδιο της εκπαίδευσης και του ελέγχου, αλλά η γενίκευσή του δεν είναι καλή καθώς είναι πια προσαρμοσμένος να απαντά σωστά μόνο στα δεδομένα που του παρουσιάσαμε. [3, 5, 6] Δένδρα Ταξινόμησης και Απόφασης Από τους δημοφιλέστερους αλγόριθμους μηχανικής μάθησης με επίβλεψη είναι τα δέντρα ταξινόμησης (classification trees) και δέντρα απόφασης (decision trees). Είναι μια μέθοδος κατασκευής - προσέγγισης συναρτήσεων με έξοδο διακριτές τιμές. [7] Το παραγόμενο αποτέλεσμα είναι μια δενδροειδής μορφή η οποία περιγράφει τα δεδομένα και τους κανόνες που χρησιμοποιήθηκαν για την κατασκευή του δέντρου (classification rules). 18

Κάθε εσωτερικός κόμβος του δέντρου, αντιστοιχεί σε μια συνθήκη ελέγχου της τιμής ενός χαρακτηριστικού (attribute) των περιπτώσεων (instances) που χρησιμοποιήθηκαν στην κατασκευή του δέντρου. Κάθε κλαδί που φεύγει από έναν κόμβο αντιστοιχεί σε διαφορετική τιμή του χαρακτηριστικού που ελέγχθηκε στον κόμβο αυτό. Στους εξωτερικούς κόμβους του δέντρου αντιστοιχούν οι τιμές εξόδου (classes) των δεδομένων μας. Το σημαντικότερο πλεονέκτημα των δέντρων ταξινόμησης είναι η ευκολία που προσφέρουν για την ερμηνεία των αποτελεσμάτων που παίρνουμε. Οι δεντρικές δομές είναι πολύ απλές στην χρήση τους, στην κατανόησή τους, αλλά και στην κατασκευή τους, καθώς το υπολογιστικό κόστος είναι της τάξης του O(lg n) στην περίπτωση των δυαδικών δέντρων, τα οποία είναι και τα πιο συνηθισμένα. Αντίστοιχο είναι το κόστος το οποίο έχουμε και στις περιπτώσεις ανεύρεσης και ταξινόμησης δεδομένων που βρίσκονται σε μορφή δέντρων. Η κατασκευή του δέντρου γίνεται με την χρήση αναδρομικών μεθόδων, από πάνω προς τα κάτω (top down) και αποτελείται από τέσσερα στάδια [8] 1. Εύρεση του χαρακτηριστικού (attribute) το οποίο αν χρησιμοποιηθεί σαν κριτήριο διαχωρισμού των δεδομένων (instances) μπορεί να οδηγήσει σε κόμβους που είναι διαφορετικοί σε σχέση με την αναζητούμενη τιμή (class). 2. Δημιουργία του κόμβου και προσθήκη στο δέντρο 3. Διαχωρισμός των δεδομένων 4. Επανάληψη της προηγούμενης διαδικασίας έως ότου φτάσουμε σε μη διαχωριζόμενους κόμβους (φύλλα) Όπως είναι φανερό, το βασικό σημείο της διαδικασίας είναι η εύρεση του χαρακτηριστικού που θα χρησιμοποιηθεί για την κατασκευή του κόμβου και τον διαχωρισμό. Οι μέθοδοι που εφαρμόζονται είναι στατιστικές και υπολογίζουν μεταβλητές οι οποίες μας δίνουν ένα μέτρο του βέλτιστου χαρακτηριστικού. [10] Η επιλογή του βέλτιστου χαρακτηριστικού γίνεται σε κάθε βήμα (κόμβο) που πρέπει να υπολογίσουμε. Στην επιλογή συμμετέχουν μόνο τα δεδομένα που 19

ανήκουν σε αυτό τον κόμβο και όχι το σύνολο των δεδομένων μας. Η όλη διαδικασία κατασκευής του δέντρου ολοκληρώνεται όταν ο κόμβος που υπολογίζουμε γίνει φύλλο(leaf). Για να χαρακτηριστεί κάποιος κόμβος ως φύλλο, θα πρέπει όλα τα δεδομένα που ανήκουν σε αυτό τον κόμβο να ανήκουν και στην ίδια κατηγορία (κλάση). Η τιμή της κλάσης αυτής είναι και η τιμή του αντίστοιχου κόμβου. Εντροπία και Κέρδος Πληροφορίας (Entropy and Information Gain) Πριν εξηγήσουμε αναλυτικότερα την μέθοδο εύρεσης του βέλτιστου χαρακτηριστικού, θα πρέπει να ορίσουμε την έννοια της εντροπίας. Ο ορισμός της εντροπίας βασίζεται στην αντίστοιχη έννοια της Θεωρίας Πληροφοριών και υπολογίζεται από την σχέση [10, 11]! Η = p! lg(p! )!!! όπου n είναι ο αριθμός των κλάσεων που υπάρχουν στα δεδομένα μας και p! είναι το ποσοστό των παραδειγμάτων του συνόλου μας που ανήκει στην κλάση i. Η εντροπία μας βοηθά να εκτιμήσουμε την «ομοιογένεια» των δεδομένων μας σε σχέση με τις κλάσεις που υπάρχουν σε αυτά. Θα μπορούσαμε να χρησιμοποιήσουμε τον προηγούμενο ορισμό για να εκτιμήσουμε το βέλτιστο χαρακτηριστικό, εφόσον η εντροπία αποτελεί ένα μέτρο της συνεισφοράς του χαρακτηριστικού στην κλάση που ανήκει το συγκεκριμένο instance. Δεν μας δίνει όμως καμιά πληροφορία για το κατά πόσο θα μεταβληθεί η εντροπία στα εναπομείναντα δεδομένα, εφόσον επιλεγεί το συγκεκριμένο χαρακτηριστικό. Γι αυτό τον λόγο εισάγουμε την έννοια του «Κέρδους Πληροφορίας» (Information Gain), το οποίο μας δείχνει κατά πόσο θα μειωθεί η εντροπία των δεδομένων εκπαίδευσης, στην 20

περίπτωση που επιλέξουμε το χαρακτηριστικό A i, από το σύνολο των χαρακτηριστικών A i,, A n. Το κέρδος της πληροφορίας δίνεται από την σχέση G(S, A! ) = H S! S H(S!)!!! όπου S είναι το σύνολο εκπαίδευσης Η είναι η εντροπία του S A i, η ανεξάρτητη μεταβλητή (χαρακτηριστικό) το οποίο εξετάζουμε Su, το σύνολο των δεδομένων με τιμή u στο χαρακτηριστικό A i H(S! ), η εντροπία του υπό εξέταση κόμβου ως προς την τιμή u του A i Μπορούμε να πούμε ότι το κέρδος πληροφορίας μας δίνει την μείωση της εντροπίας στο σύνολο των δεδομένων μας, αν επιλεγεί το χαρακτηριστικό A i ως μεταβλητή διαχωρισμού. Μείωση της εντροπίας οδηγεί στην αύξηση της πυκνότητας της πληροφορίας και συνεπώς και σε περισσότερο «συμπαγή» δεδομένα. Στην πράξη, ο δεύτερος όρος της προηγούμενης σχέσης, μας δίνει την εντροπία των δεδομένων μετά τον διαχωρισμό που θα γίνει με βάση το συγκεκριμένο χαρακτηριστικό. Συνεπώς, σε κάθε κόμβο υπολογίζουμε το κέρδος πληροφορίας για κάθε χαρακτηριστικά, και επιλέγουμε αυτό που μας δίνει το μέγιστο κέρδος, κάθε φορά. Παράδειγμα Θα δώσουμε ένα παράδειγμα για το πως εφαρμόζεται η μεθοδολογία που αναφέραμε για την κατασκευή δέντρων αποφάσεων. Για τον σκοπό αυτό θα χρησιμοποιήσουμε 21

ένα πολύ γνωστό σύνολο δεδομένων, το οποίο έχει καιρικά στοιχεία και η κλάση (πρόβλεψη) που επιχειρείται να γίνει, είναι αν με τις δεδομένες καιρικές συνθήκες μπορεί κάποιος να παίξει σε ανοικτό χώρο. Τα γνωστά δεδομένα μας εμφανίζονται στον πίνακα 1. Το σύνολό μας περιέχει 14 γραμμές (instances) και κάθε γραμμή περιέχει 5 στήλες (attributes). Τα τέσσερα πρώτα χαρακτηριστικά μας καθορίζουν τα στοιχεία εισόδου (outlook, temperature, humidity, windy) και το πέμπτο χαρακτηριστικό είναι η πρόβλεψη (κλάση) που γίνεται με βάση τα τέσσερα πρώτα. Ξεκινώντας να κατασκευάσουμε το δέντρο μας θεωρούμε ότι όλα τα δεδομένα μας βρίσκονται στην ρίζα του δέντρου μας (root). Θα διαχωρίσουμε τα δεδομένα μας (partition data) με βάση κάποιο από τα χαρακτηριστικά μας, υπολογίζοντας το κέρδος πληροφορίας για αυτά. Outlook Temperature Humidity Windy Play? sunny hot high false No sunny hot high true No overcast hot high false Yes rain mild high false Yes rain cool normal false Yes rain cool normal true No overcast cool normal true Yes sunny mild high false No 22

sunny cool normal false Yes rain mild normal false Yes sunny mild normal true Yes overcast mild high true Yes overcast hot normal false Yes rain mild high true No Υπολογίζουμε την εντροπία για το χαρακτηριστικό outlook. Αυτό περιέχει πέντε φορές την τιμή «rainy» εκ των οποίων οι τρεις μας δίνουν τιμή κλάσης «yes» και οι δύο τιμή κλάσης «no». Συνολικά για το outlook έχουμε Συνολικά η εντροπία για το outlook είναι (9 κλάσεις «yes» και 5 κλάσεις «no») 23

H Outlook =!!" lg!!"!!" lg!!" = 0.94 Υπολογίζουμε κατόπιν την εντροπία για κάθε τιμή του χαρακτηριστικού outlook H Outlook, Sunny = 2 5 lg 2 5 3 5 lg 3 5 = 0.971 H Outlook, Rainy = 3 5 lg 3 5 2 5 lg 2 5 = 0.971 H Outlook, Overcast = 4 4 lg 4 4 0 4 lg 0 4 = 1 lg 1 0 lg (0) = 0 (επειδή το lg(0) δεν ορίζεται θεωρούμε ότι lg(0)=0) Με βάση τα προηγούμενα βρίσκουμε ότι η αναμενόμενη πληροφορία για το outlook (expected information for attribute) είναι info Outlook = 5 14 0.971 + 5 14 0.971 + 4 14 0 = 0.693 Τελικά το κέρδος πληροφορίας για το outlook είναι G Outlook = H Outlook info Outlook = 0.94 0.693 = 0.247 24

Εργαζόμενοι με τον ίδιο τρόπο βρίσκουμε ότι G Temperature = 0.029 G Humidity = 0.152 G Windy = 0.048 Συνεπώς η καλύτερη επιλογή χαρακτηριστικού για να κάνουμε τον διαχωρισμό είναι το Outlook, και ο πρώτος κόμβος του δέντρου μας θα είναι Outlook Sunny Rainy Overcast Επαναλαμβάνοντας τα προηγούμενα βήματα για τα υπόλοιπα χαρακτηριστικά και ξεκινώντας από τον κλάδο «Sunny» βρίσκουμε 25

G Temperature = 0.571 G Windy = 0.02 G Humidity = 0.971 26

Αν κάνουμε τους υπολογισμούς έως το τέλος θα καταλήξουμε σε δέντρο απόφασης της μορφής Διάγραμμα 1 : Δέντρο απόφασης προβλήματος Outlook Προβλήματα της μεθόδου και Αποκοπή («Κλάδεμα») Δέντρων (Tree Pruning) Το ερώτημα που τίθεται τώρα είναι αν το δέντρο που κατασκευάστηκε με την προηγούμενη μέθοδο είναι το βέλτιστο ή μπορεί να κατασκευαστεί και κάποιο καλύτερο. [9] Η μορφή του δέντρου εξαρτάται από τα δεδομένα μας, συνεπώς η επιλογή των δεδομένων που θα γίνει κατά την εφαρμογή του cross- validation, έχει μεγάλη σημασία στην τελική μορφή του δέντρου. Διαφορετικές επιλογές συνόλων μπορεί να οδηγήσουν σε πολλά διαφορετικά δέντρα. Επίσης κατά την κατασκευή δέντρων απόφασης οι μέθοδοι επιλογής χαρακτηριστικών μπορεί να οδηγήσουν, σε μερικές μορφές δεδομένων, να προσθέτουν όμοιους κλάδους στο δέντρο (replicated trees). Στο δέντρο της εικόνας που ακολουθεί είναι προφανές το πρόβλημα της πολλαπλής εμφάνισης όμοιων κλάδων σε ένα δέντρο απόφασης. [8] 27

Διάγραμμα 2 : Δέντρο απόφασης με όμοιους κλάδους Για την αποφυγή τέτοιων προβλημάτων έχουν αναπτυχθεί διάφορες τεχνικές «κουρέματος». Οι μέθοδοι αυτοί ακολουθούν την αντίστροφη διαδρομή από την κατασκευή του δέντρου (bottom up) και ξεκινώντας από τα φύλλα, ελέγχουν αν κάποια φύλλα ή κόμβοι μπορούν να διαγραφούν (κούρεμα) ή να ενωθούν σε ένα νέο φύλλο ή κόμβο, μειώνοντας έτσι το ύψος και την πολυπλοκότητα του δέντρου. Υπάρχουν βέβαια και αλγόριθμοι κουρέματος που ακολουθούν την διαδρομή που ακολουθήθηκε και κατά την κατασκευή του δέντρου (top down). Ο απλούστερος αλγόριθμος που εφαρμόζεται είναι αυτός της αναγωγής (reduced error pruning). Σύμφωνα με αυτόν κάθε κόμβος αντικαθίσταται με την κλάση που κυριαρχεί στον κόμβο. Αν η ακρίβεια πρόβλεψης στο νέο δέντρο δεν επηρεάζεται, τότε κρατάμε το νέο δέντρο, αλλιώς επιστρέφουμε στο προηγούμενο. Αυτή η μέθοδος είναι πολύ απλή και γρήγορη και γι αυτό είναι και πολύ δημοφιλής, αν και δεν βασίζεται σε κάποιο μοντέλο που μπορεί να εξηγήσει αναλυτικά για πιο λόγο δεν επηρεάζεται η ικανότητα του δέντρου να αποφασίζει και να γενικεύει σωστά. [10] 28

Στην δική μας περίπτωση, οι αλγόριθμοι που χρησιμοποιούμε χρησιμοποιούν κυρίως τον αλγόριθμο υπολογισμού του κόστους πολυπλοκότητας (cost complexity error pruning). Σε αυτή την περίπτωση, δημιουργούμε μια ακολουθία δέντρων, Τ 0, Τ 1,..., Τ n, όπου Τ 0 είναι το αρχικό μας δέντρο και τελικό δέντρο T n είναι ένα δέντρο που περιέχει μόνο ένα κόμβο, την ρίζα του αρχικού μας δέντρου. Στο βήμα i, από το δέντρο του βήματος i- 1, αποκόπτεται ένας κλάδος και αντικαθίσταται με ένα φύλλο, το οποίο προκύπτει με την ίδια μέθοδο που χρησιμοποιείται και για την δημιουργία του δέντρου. Για την επιλογή του κλάδου που θα αποκοπεί, υπολογίζουμε τον «ρυθμό λάθους» (error rate) του συγκεκριμένου δέντρου T i- 1, πάνω στο σύνολο των δεδομένων που χρησιμοποιούμε για την εκπαίδευση. Την τιμή του λάθους ενός δέντρου Τ την συμβολίζουμε με err T, S. Έστω ότι έχουμε αποκόψει t κλάδους από το αρχικό μας δέντρο Τ, τότε, το υποδέντρο που ελαχιστοποιεί την ποσότητα err prune T, t, S err(t, s) leaves(t) leaves(prune(t, t)) είναι αυτό που επιλέγουμε να αποκόψουμε από το αρχικό μας δέντρο. Μόλις κατασκευαστεί ολόκληρη η ακολουθία δέντρων, τότε το καλύτερο βρίσκεται εκπαιδεύοντας όλα τα δέντρα και υπολογίζοντας την καλύτερη ακρίβεια γενίκευσης, χρησιμοποιώντας πάντα cross- validation για τον υπολογισμό της ακρίβειας. 29

Κλασικοί Αλγόριθμοι Μάθησης Οι αλγόριθμοι δέντρων αποφάσεων εμφανίζονται αρχικά από τον Quinlan, ο οποίος παρουσίασε τον αλγόριθμο ID3 το 1986. Ο ίδιος εξέλιξε τον ID3, παρουσιάζοντας τον C4.5 το 1996. Ο C4.5 παραμένει ως τώρα ένας από τους πλέον δημοφιλείς αλγόριθμους δέντρων απόφασης, κυρίως μπορεί να χειριστεί συνεχή και διακριτά δεδομένα καθώς και σύνολα δεδομένων με ελλιπή στοιχεία (σύνολα που δεν έχουν τιμές σε όλα τα χαρακτηριστικά τους). Ο ίδιος έχει παρουσιάσει και μια νεότερη έκδοση αυτού του αλγόριθμου, τον C5.0, ο οποίος όμως είναι εμπορικός και όχι ανοικτού κώδικα. Όλοι οι αλγόριθμοι της κατηγορίας αυτής δέχονται τα δεδομένα εισόδου και παράγουν ένα δέντρο απόφασης (κατηγοριοποίησης ή πρόβλεψης). Νεότεροι αλγόριθμοι χρησιμοποιούν τεχνικές της στατιστικής, ώστε να επεξεργαστούν με διάφορους τρόπους τα δεδομένα εκπαίδευσης παράγοντας ένα ή περισσότερα σύνολα δεδομένων εκπαίδευσης, και κατόπιν εισάγουν τα νέα σύνολα σε κάποιον από τους πιο πάνω αλγόριθμους οι οποίοι παράγουν ένα δέντρο για κάθε σύνολο εκπαίδευσης. Κατόπιν, χρησιμοποιώντας πάλι στατιστικές μεθόδους, τα αποτελέσματα που έχουν παραχθεί συγκρίνονται μαζί τους, και τέλος επιλέγεται το καλύτερο δέντρο ή τα παραχθέντα δέντρα συνδυάζονται μεταξύ τους για να πάρουμε το καλύτερο δυνατό αποτέλεσμα. Οι αλγόριθμοι αυτής της μορφής ονομάζονται meta ή ensemble αλγόριθμοι. Χαρακτηριστικά παραδείγματα αυτών των μεθόδων είναι ο Adaboost, Bagging, Random Forest κλπ. Στο τμήμα αυτό της εργασίας θα παρουσιάσουμε μερικές από τις τεχνικές που χρησιμοποιούνται σε αυτό τον τύπο αλγορίθμων. Επίσης θα αναφερθούμε αναλυτικά στον αλγόριθμο Random Forest, ο οποίος είναι από τους δημοφιλέστερους αυτής της κατηγορίας. 30

Bootstrapping Η αξιοπιστία μιας μεθόδου θα μπορούσε να βελτιωθεί, αν μπορούσαμε να εφαρμόσουμε την μέθοδο πάνω σε πολλά διαφορετικά σύνολα δεδομένων, τα οποία να είναι και ασυσχέτιστα μεταξύ τους. Επειδή όμως αυτό είναι δύσκολο, ενώ πολλές φορές έχουμε όχι μόνο ένα σύνολο δεδομένων, αλλά και αυτό με λίγα στοιχεία, εφαρμόζουμε την μέθοδο bootstrapping, η οποία προέρχεται από την στατιστική και η οποία επιχειρεί να εξομοιώσει το ζητούμενο αποτέλεσμα. Κατά την εκτέλεση της μεθόδου bootstraping, ξεκινώντας από ένα αρχικό σύνολο δεδομένων S το οποίο περιέχει n γραμμές (instances), κατασκευάζουμε πολλά νέα σύνολα S 1, S 2,, S m, τα οποία περιέχουν επίσης n γραμμές. Τα νέα σύνολα κατασκευάζονται, επιλέγοντας από το αρχικό τυχαίες γραμμές, έως ότου το νέο σύνολο να αποκτήσει και αυτό n στοιχεία. Κάθε γραμμή μπορεί να επιλεγεί μια ή και περισσότερες φορές. Τα τελικά σύνολα δεδομένων που προκύπτουν δεν είναι πλήρως ασυσχέτιστα μεταξύ τους, μπορούμε όμως να θεωρήσουμε ότι είναι μια ικανοποιητική προσέγγιση. Αρχικό Σύνολο Εκπαίδευσης Νέα Σύνολα Εκπαίδευσης μετά από Boostrap Instance 1 Instance 1 Instance 3 Instance 1 Instance 2 Instance 2 Instance 3 Instance 5 Instance 3 Instance e 1 Instance 3 Instance 4 Instance 4 Instance 4 Instance 1 Instance 3 Instance 5 Instance 5 Instance 4 Instance 5 31

Bagging (Bootstrap Aggregating) Χρησιμοποιώντας την μέθοδο bootstrapping, μπορούμε να ξεκινήσουμε από ένα σύνολο δεδομένων και με βάση αυτό να δημιουργήσουμε m νέα σύνολα εκπαίδευσης. Τώρα έχουμε την δυνατότητα να εφαρμόσουμε σε κάθε ένα από αυτά τα σύνολα, τον αλγόριθμο που θέλουμε και να πάρουμε m διαφορετικά αποτελέσματα (δέντρα στην περίπτωσή μας). Ο αλγόριθμος που χρησιμοποιούμε για την εκπαίδευση ονομάζεται βασικός ταξινομητής (base classifier). Αυτά τα αποτελέσματα θα πρέπει στο επόμενο βήμα να συγκριθούν μεταξύ τους και να αξιολογηθούν, έτσι ώστε να επιλέξουμε το καλύτερο. Αν το πρόβλημά μας είναι πρόβλημα κατηγοριοποίησης (classification), τότε στα αποτελέσματα χρησιμοποιούμε την μέθοδο της ψηφοφορίας (voting), ενώ αν είναι πρόβλημα προσέγγισης πρόβλεψης (regression) τότε υπολογίζουμε συνήθως τον μέσο όρο. Γενικά μπορούμε να εφαρμόσουμε διάφορες στατιστικές μεθόδους για να συγκρίνουμε τα αποτελέσματα, το ποια θα εφαρμόσουμε επιλέγεται κατά περίπτωση ανάλογα με την φύση του προβλήματος που εξετάζουμε. Η μέθοδος αυτή ονομάστηκε Bagging από τα αρχικά των λέξεων Bootstrap Aggregating και δίνει καλύτερα αποτελέσματα από το να εφαρμόσουμε μόνο τον βασικό ταξινομητή στο αρχικό σύνολο δεδομένων μας. 32

Διάγραμμα 3 : Bagging Method 33

Boosting Η μέθοδος Boosting είναι μια παραλλαγή της Bagging, με βασική διαφορά ότι εισάγει βάρη στην επιλογή ενός Instance κατά την δημιουργία των συνόλων εκπαίδευσης. Αρχικά όλα τα δείγματά μας έχουν το ίδιο βάρος, w i = 1. Εφαρμόζουμε τον βασικό ταξινομητή στα σύνολα εκπαίδευσης και ελέγχουμε την επιτυχή ταξινόμηση των δειγμάτων μας. Αν κάποιο δείγμα έχει ταξινομηθεί σωστά, τότε το βάρος του παραμένει το ίδιο, ενώ αν έχει ταξινομηθεί λανθασμένα το βάρος του αυξάνεται, συνεπώς αυξάνεται και η πιθανότητα του στοιχείου αυτού να επιλεγεί στο επόμενο μοντέλο. Με τον τρόπο αυτό προσπαθούμε να αυξήσουμε την πιθανότητα να επιλεγούν τα στοιχεία που δεν ταξινομούνται σωστά, άρα αυξάνουμε την πιθανότητα αυτά να ταξινομηθούν σωστά στα επόμενα βήματα της μεθόδου. w 1=1 L 1 w 1=1 L 1 Εφαρμογή w 1=1 L 1 w 1=1 L 1 w 2=1 L 2 w 2=1 L 2 Classifier Έστω ότι το w 2=1 L 2 w 4=1 L 4 w 3=1 L 3 Bootstrap w 3=1 L 3 και έλεγχος με Out Of L 4 ταξινoμείται w 3=1 L 3 Bootstrap w 3=1 L 3 w 4=1 L 4 w 2=1 L 2 Bag (OOB) λάθος ενώ το w 4=2 L 4 w 2=1 L 2 w 5=1 L 5 w 5=1 L 5 στοιχεία L 4 και L 6. L 6 σωστά. w 5=1 L 5 w 5=1 L 5 w 6=1 L 6 w 2 1 L 2 w 6=1 L 6 w 4=1 L 4 Διάγραμμα 4 : Boosting Method Μετά το τέλος της μεθόδου, όλα τα αποτελέσματα μαζεύονται και επιλέγεται με ψηφοφορία ο καλύτερος ταξινομητής, ή στην περίπτωση regression με υπολογισμό της μέσης τιμής σαν καλύτερη προσέγγιση. 34

Random Forest Ο αλγόριθμος αυτός αναπτύχθηκε από τους Leo Breiman και Adele Cutler το 2001. Αποτελεί μια γενίκευση (επέκταση) του bagging, καθώς μεταφέρει κατά μια έννοια την μεθοδολογία του bootstrap, εκτός από τα instances και στα attributes των δεδομένων. Είναι από τους δημοφιλέστερους αλγόριθμους στην κατηγορία του, κυρίως για την ταχύτητα αλλά και την ακρίβεια που προσφέρει. Σύμφωνα με τους δημιουργούς του, προσφέρει Την καλύτερη ακρίβεια μεταξύ των υπαρχόντων αλγορίθμων Η ταχύτητά του είναι πολύ καλή ακόμα και σε πολύ μεγάλα σύνολα δεδομένων εκπαίδευσης Μπορεί να χειριστεί αποδοτικά πάρα πολύ μεγάλο αριθμό χαρακτηριστικών (ακόμα και χιλιάδες) Δίνει μια εκτίμηση για το ποια χαρακτηριστικά είναι τα πιο σημαντικά στην κατηγοριοποίηση Δεν χρειάζεται την χρήση διαφορετικού συνόλου δεδομένων για τον έλεγχο ακρίβειας (δεν είναι δηλαδή απαραίτητο το cross- validation), καθώς η εκτίμηση του λάθους γενίκευσης γίνεται από τον ίδιο τον αλγόριθμο κατά την εκτέλεσή του. Μπορεί να χειριστεί αποδοτικά ελλιπή δεδομένα Δεν παρουσιάζει φαινόμενα υπερεκπαίδευσης Έστω ότι έχουμε ένα σύνολο δεδομένων με N στοιχεία (instances) x!! x!" x!! t! x!" x!" x!! t! x!! x!! x!" t! Τα διανύσματα εισόδου έχουν διάσταση d, είναι δηλαδή x i = (x!!, x!!,, x!" ) όπως φαίνεται και στον πιο πάνω πίνακα. 35

Σαν πρώτο βήμα έχουμε τη δημιουργία πολλών νέων συνόλων εκπαίδευσης, με την μέθοδο bootstrap. Έστω ότι ο αριθμός των νέων συνόλων είναι Τ. Με βάση κάθε σύνολο T i, από τα Τ, κατασκευάζουμε ένα δέντρο απόφασης με την χρήση ενός ταξινομητή βάσης (base classifier). Η διαφορά από τον αλγόριθμο bagging, έγκειται στο ότι κατά την κατασκευή του δέντρου από κάθε T i, όταν πρόκειται να προσθέσουμε ένα κόμβο, δεν παίρνουμε υπόψη μας όλα τα χαρακτηριστικά που έχουμε διαθέσιμα (d συνολικά), αλλά μόνο m από αυτά. Ο αριθμός m είναι σταθερός κατά την εκτέλεση του αλγόριθμου και τον επιλέγουμε έτσι ώστε να είναι m d. Από το σύνολο των δέντρων απόφασης που παράγονται, με ψηφοφορία επιλέγουμε τον καλύτερο ταξινομητή. Είναι προφανές ότι πολύ βασικό ρόλο παίζει η επιλογή της παραμέτρου m. Ο Breiman έχει προτείνει διάφορες τιμές, μεταξύ των οποίων οι συνηθέστερες εξ αυτών είναι οι 1 2 m, m, 2 m Σχηματικά η λειτουργία του Random Forest μπορεί να αναπαρασταθεί με το επόμενο διάγραμμα 36

Αλγόριθμοι Μηχανικής Μάθησης σε Πολυεπεξεργαστικά Περιβάλλοντα Εικόνα 1 : Σχηματικό διάγραμμα μεθόδου RandomForest Αν και η λειτουργία του αλγόριθμου σε Java θα παρουσιαστεί αναλυτικά στο επόμενο κεφάλαιο, μπορούμε να δώσουμε εδώ, την αλγοριθμική μορφή του σε ψευδοκώδικα Εισαγωγή Συνόλου Εκπαίδευσης 𝑺 = (𝒙𝒊, 𝒕𝒊 ) Δημιουργία Τ νέων συνόλων εκπαίδευσης με την χρήση bootstrap Για κάθε t=1 έως Τ Εισαγωγή συνόλου εκπαίδευσης Ti στον επιλεγμένο ταξινομητή Για κάθε κόμβο που πρόκειται να προστεθεί στο δέντρο απόφασης Επέλεξε m χαρακτηριστικά από το σύνολο των d του διανύσματος Υπολόγισε το κέρδος πληροφορίας για τα m αυτά χαρακτηριστικά Διαχώρισε τα δεδομένα στον κόμβο με βάση το υπολογισμένο κέρδος Επανέλαβε τα προηγούμενα βήματα για κάθε σύνολο 𝑻𝒊 𝑻 Από τα παραχθέντα δέντρα με ψηφοφορία επέλεξε το καλύτερο Όπως είναι φανερό και από την παραπάνω ανάλυση, ένα από τα πλεονεκτήματα του Random Forest, αλλά και των άλλων meta (ensemble) αλγορίθμων, είναι και η δυνατότητα παράλληλης εκτέλεσης πολλών τμημάτων του κώδικα, καθώς η δημιουργία των δέντρων και η επιλογή των χαρακτηριστικών, είναι λειτουργίες αυτόνομες και δεν επηρεάζονται από άλλες όμοιες που μπορεί να εκτελούνται ταυτόχρονα. Διπλωματική Εργασία 37

Αρχιτεκτονική και Υλοποίηση Αλγορίθμων στο Weka Το Weka είναι μια εφαρμογή που έχει αναπτυχθεί από το Πανεπιστήμιο Waikato της Νέας Ζηλανδίας. Σε αυτή έχουν υλοποιηθεί, σε γλώσσα Java, πολλοί αλγόριθμοι Μηχανικής Μάθησης και γενικότερα της Τεχνικής Νοημοσύνης (Artificial Intelligence, AI). Χρησιμοποιείται ευρέως από ανθρώπους που θέλουν να μελετήσουν την λειτουργία των αλγορίθμων αυτών, με ένα εύχρηστο και πρακτικό τρόπο. Διαθέτει ένα γραφικό περιβάλλον εργασίας, μέσω του οποίου μπορεί ο χρήστης να επιλέξει τα δεδομένα που θέλει, τον αλγόριθμο που θέλει να εφαρμόσει καθώς και τις παραμέτρους του και τέλος να καθορίσει τον τρόπο εκτέλεσης και να δει τα τελικά αποτελέσματα σε ένα σχετικά εύχρηστο και διαδραστικό περιβάλλον. Τα τελευταία χρόνια έχει προστεθεί ένα τμήμα (Experimenter) το οποίο είναι περισσότερο προσανατολισμένο προς τους ερευνητές και μέσω του οποίου δίνονται δυνατότητες εκτέλεσης πολλών αλγορίθμων σε συνδυασμό με πολλές ομάδες δεδομένων. Μια ακόμη προσθήκη είναι και μια εφαρμογή γραφικού σχεδιασμού, μέσω του οποίου μπορούμε να σχεδιάσουμε γραφικά μια ακολουθία διαδικασιών και αυτές να εκτελεστούν με την σειρά και τους κανόνες που έχουμε θέσει. Γενικά, πρόκειται για μια εφαρμογή καλά σχεδιασμένη και εύχρηστη, η οποία δίνει σε ένα ευρύτερο κοινό, το οποίο δεν είναι εξοικειωμένο με την χρήση γλωσσών προγραμματισμού, την δυνατότητα να εκτελέσει μεθόδους, να πειραματιστεί με τους αλγορίθμους και την συμπεριφορά τους σε διαφορετικά σύνολα δεδομένων. Τα αρνητικά της σημεία είναι επίσης αρκετά και μάλιστα σχετίζονται άμεσα με τα αντίστοιχα θετικά της. Καθώς είναι μια εφαρμογή που προσπαθεί να μεταφέρει τα αποτελέσματα της επιστημονικής έρευνας σε ένα ευρύτερο κοινό, είναι φυσικό να κάνει μερικούς συμβιβασμούς και παραδοχές, οι συνέπειες των οποίων, όμως γίνονται αντιληπτές και δημιουργούν προβλήματα κυρίως όταν προσπαθεί κάποιος να 38

χρησιμοποιήσει το weka σε κάτι περισσότερο από απλές δοκιμές ή εργαστηριακά πειράματα. Η χρήση του weka σε μεγάλης κλίμακας εργασίες είναι αρκετά προβληματική, καθώς η μεγάλη συσχέτιση μεταξύ των τμημάτων της εφαρμογής και ευρεία χρήση όμοιων δομών σε όλους σχεδόν τους αλγόριθμους, δημιουργούν σοβαρά προβλήματα σε κάποιον που θέλει να χρησιμοποιήσει την διεπαφή με τον προγραμματιστή (Application Programming Interface, API). Μερικά από τα θετικά και αρνητικά σημεία θα τα δούμε αναλυτικότερα παρακάτω, καθώς θα αναλύσουμε συνοπτικά την αρχιτεκτονική και τους γενικούς κανόνες σχεδιασμού των αλγορίθμων μέσα στο weka. Θα δούμε επίσης, αναλυτικά την υλοποίηση του Random Forest. Αρχιτεκτονική της Εφαρμογής Το weka έχει αναπτυχθεί σε γλώσσα προγραμματισμού Java, κάτι που του δίνει την δυνατότητα ανάπτυξης και εκτέλεσης σε κάθε λειτουργικό σύστημα και περιβάλλον, στο οποίο μπορεί να εκτελεστεί η Java, πρακτικά λοιπόν οπουδήποτε. Οι βασικές δομές της εφαρμογής είναι Core Classifiers Associations Clusterers Filters Experiments GUI Κάθε ένα από αυτά τα πακέτα, αναλύεται βέβαια σε πολλά άλλα μικρότερα, δημιουργώντας μια ιεραρχική δεντρική δομή. 39

Διάγραμμα 5 : Αρχιτεκτονική Weka 40

Το βασικότερο από τα πακέτα αυτά είναι το Weka.Core το οποίο περιέχει τον κώδικα που είναι απαραίτητος για την λειτουργία της εφαρμογής. Σε κάθε πρόγραμμα που θέλει να χρησιμοποιήσει έστω και μια γραμμή κώδικα από το weka, θα πρέπει να περιλαμβάνεται και αυτό το πακέτο. Διάγραμμα 6 : Core Schematic Architecture Αν και η ύπαρξη ενός τέτοιου πακέτου είναι απόλυτα απαραίτητη σε κάθε εφαρμογή, επιστημονική ή μη, δυστυχώς, με την πάροδο του χρόνου σε αυτό το πακέτο έχουν συμπεριληφθεί πάρα πολλά τμήματα κώδικα, τα οποία δεν είναι σχετικά μεταξύ τους. 41

Διάγραμμα 7 : Core Analytical UML Architecture 42

Αποτέλεσμα αυτού είναι, ότι μέσα στο πακέτο Core περιέχονται κλάσεις και διεπαφές (Interfaces) οι οποίες έχουν να κάνουν με Την επικοινωνία με την Java και τις παραμέτρους που χρειάζονται για να τρέξει η εφαρμογή σωστά (ClassLoaderUtil, ClassCache, ClassDiscovery κλπ.) Προσθήκες και επεκτάσεις σε υπάρχουσες δομές, όπως λίστες και άλλες, οι οποίες είναι μεν απαραίτητες, αλλά έχουν σχέση με τον χειρισμό δεδομένων στην μνήμη και τον δίσκο (FastVector, Queue κλπ.) Χειρισμό των αρχείων εισόδου και εξόδου σε διάφορε μορφές (Json, XML κλπ.) Χειρισμό μαθηματικών συναρτήσεων και δομών (Ranomizable, ManhattanDistance, ChebyshevDistance, Matrix κλπ.) Την βασική υλοποίηση των δομών που χρειάζονται οι αλγόριθμοι (Instances, Attributes, Options κλπ.) Διάγραμμα 8 : Core Package Dependencies Ακόμα και για την υλοποίηση της πιο πρόσφατης προσθήκης, το module Package Manager, ο κώδικας αυτού έχει προστεθεί στο πακέτο Core. Την κατάσταση την κάνει πολύ χειρότερη, η αναφορά μέσα στο πακέτο core, μερικών δομών που έχουν σχέση με την παρουσίαση της εφαρμογής και το γραφικό περιβάλλον της, το οποίο γενικά το χειρίζεται το πακέτο GUI. 43

Διάγραμμα 9 : Core Depended On Core 44

Διάγραμμα 10 : Core Depended on Packages Υλοποίηση Αλγορίθμων Αντίστοιχες συσχετίσεις γίνονται και μεταξύ των άλλων πακέτων. Στην συγκεκριμένη περίπτωση, όπου μας ενδιαφέρει η δομή classifiers, αυτή εισάγει πηγαίο κώδικα από το πακέτο core (αναγκαστικά αφού εκεί βρίσκονται όλοι οι ορισμοί) και το πακέτο GUI, γιατί εκεί υλοποιείται η απεικόνιση των δένδρων. Αυτό βέβαια σημαίνει ότι αν ένας προγραμματιστής θέλει, απλώς να εκτελέσει έναν αλγόριθμο, πχ τον Random Forest, και να πάρει το παραγόμενο δέντρο, θα πρέπει στην εφαρμογή που αναπτύσσει αυτός να προσθέσει και τον κώδικα των Core, Gui, αλλά και το κώδικα που κάνει Evaluation σε dataset, υπολογισμό στατιστικών συναρτήσεων που χρησιμοποιούνται μόνο από την μέθοδο Bayes κλπ. Τελικά, η εφαρμογή που θα αναπτυχθεί θα περιέχει 6-10 ΜΒ άχρηστου κώδικα, τον οποίο όμως θα πρέπει να ενσωματώσει για να μην παρουσιάζονται λάθη κατά το compile του κώδικά του. Μπορεί βέβαια, να διαγράψει (με προσοχή και χειροκίνητα πάντα) τμήματα του κώδικα αυτού, έτσι όμως θα εμφανίζονται πάντα λάθη και θα πρέπει κανείς να είναι πολύ προσεκτικός και να ελέγχει μήπως κάποιο λάθος οφείλεται σε αυτόν ή στον άχρηστο κώδικα που έχει διαγράψει. 45