ΣΧΟΛΗ ΕΦΑΡΜΟΣΜΕΝΩΝ ΜΑΘΗΜΑΤΙΚΩΝ ΚΑΙ ΦΥΣΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΠΜΣ ΣΤΙΣ ΕΦΑΡΜΟΣΜΕΝΕΣ ΜΑΘΗΜΑΤΙΚΕΣ ΕΠΙΣΤΗΜΕΣ ΤΕΛΙΚΗ ΕΡΓΑΣΙΑ ΑΛΓΟΡΙΘΜΟΙ ΕΞΟΡΥΞΗΣ ΠΛΗΡΟΦΟΡΙΑΣ ΈΤΟΣ 2009 ΌΝΟΜΑ : ΚΑΤΣΑΒΡΙΑΣ ΕΥΑΓΓΕΛΟΣ Α.Μ. : 09480014 ΕΞΑΜΗΝΟ : 2 Ο ΜΕΤΑΠΤΥΧΙΑΚΟ Ι ΑΣΚΩΝ : ΓΕΩΡΓΙΟΣ ΤΖΙΡΑΛΗΣ
Τα δεδοµένα που µας έχουν δοθεί προς επεξεργασία χωρίζονται σε τρία µέρη : 1. Σε ένα σύνολο εκπαίδευσης ( training set ), που αποτελείται από 2528 υποδείγµατα ( instances ) και 40 αριθµητικά χαρακτηριστικά ( numeric attributes ). Το σύνολο εκπαίδευσης είναι για την δηµιουργία µοντέλων ταξινόµησης. 2. Σε ένα σύνολο επαλήθευσης ( quiz set ), που αποτελείται από 1265 υποδείγµατα και 39 αριθµητικά χαρακτηριστικά. Το σύνολο επαλήθευσης είναι για την βελτιστοποίηση των παραµέτρων κάθε µοντέλου. 3. Σε ένα σύνολο ελέγχου ( test set ), που αποτελείται από 1265 υποδείγµατα και 39 αριθµητικά χαρακτηριστικά. Το σύνολο ελέγχου είναι για τον υπολογισµό της τιµής σφάλµατος της τελικά επιλεγµένης και βελτιστοποιηµένης µεθόδου. 1 ο Βήµα : Επιλογή των attributes Πριν ξεκινήσουµε να τρέχουµε οποιονδήποτε αλγόριθµο στο training set, πρέπει να προεπεξεργαστούµε τα δεδοµένα µας (δηλ. αν χρειάζεται να αφαιρέσουµε κάποια χαρακτηριστικά). Καταρχάς, µε την επιλογή select attributes και διαλέγοντας κάποιες µεθόδους, το WEKA µας εµφανίζει τα σηµαντικότερα χαρακτηριστικά κάθε φορά. Έτσι τρέχοντας κάποιους αλγόριθµους µε αυτά τα χαρακτηριστικά, παρατηρήσαµε ότι τα σφάλµατα ( Relative absolute error, Root relative squared error, Mean absolute error, Root mean squared error) µεγάλωσαν, όπως επίσης το Correlation coefficient µίκρυνε. Συνεπώς καταλαβαίνουµε ότι δεν είναι καλή επιλογή. Μία δεύτερη σκέψη ήταν επιλέγοντας έναν απλό αλγόριθµο (π.χ. το δοκίµασα µε τον M5Rules) να αρχίσουµε να αφαιρούµε ένα ένα τα χαρακτηριστικά και να τα κρατάµε ή να τα αφαιρούµε ανάλογα µε το τι έκανε το σφάλµα. Έτσι καταλήξαµε σε 14 χαρακτηριστικά ( attr10, 11, 15, 17, 22, 23, 24, 27, 29, 32, ΚΑΤΣΑΒΡΙΑΣ ΕΥΑΓΓΕΛΟΣ 2
33, 37, 39, output). Με αυτό τον τρόπο το µόνο που καταφέραµε ήταν να βελτιστοποιήσουµε την λύση µόνο µε τον παραπάνω αλγόριθµο. Μια τρίτη σκέψη ήταν να αφήσω τα χαρακτηριστικά όπως είναι και να µην αφαιρέσω κανένα (να µην πετάξουµε καµία πληροφορία). Αυτό σε µερικούς αλγορίθµους µας βοήθησε και σε άλλους όχι. Τέλος µε το WEKA µπορούµε να κάνουµε έναν γρήγορο οπτικό έλεγχο στα χαρακτηριστικά µας µε την επιλογή Visualize All. Με την βοήθεια αυτής της επιλογής µπορούµε να ελέγξουµε ποια χαρακτηριστικά είναι σηµαντικά και ποια όχι, έτσι έχουµε : Παρατηρούµε ότι στο attribute38 όλα τα instances έχουν τιµή 0, συνεπώς µπορούµε να την αφαιρέσουµε χωρίς να έχουµε ιδιαίτερο πρόβληµα. Όµοια παρατηρούµε ότι τα attribute34 και attribute36 µπορούν και αυτά να αφαιρεθούν. Από την επιλογή edit, παρατηρούµε ότι το attribute34 έχει όλα τα instances 0 εκτός από ένα και το attribute36 έχει και αυτό σχεδόν όλα τα instances 0. ΚΑΤΣΑΒΡΙΑΣ ΕΥΑΓΓΕΛΟΣ 3
Μετά την αφαίρεση των τριών χαρακτηριστικών τρέχοντας τυχαία κάποιους αλγόριθµους παρατηρούµε ότι τα σφάλµατα στους περισσότερους αλγόριθµους δεν µεταβάλλονται, ενώ σε µερικούς έχουν µειωθεί. Συνεπώς από τα παραπάνω καταλαβαίνουµε ότι η καλύτερη επιλογή είναι η τελευταία, όπου έχουµε αφαιρέσει τα τρία attributes (34, 36, 38) που δεν είναι σηµαντικά. 2 ο Βήµα : Επιλογή κατάλληλου αλγορίθµου (σε training και quiz set) Σε αυτό το βήµα θα προσπαθήσουµε να βρούµε τον κατάλληλο αλγόριθµο, µε το µικρότερο σφάλµα στο training set. Έπειτα, θα κάνουµε την ίδια διαδικασία στο quiz set για να δούµε το ποσοστό επιτυχίας (success rate) του αλγορίθµου αυτού, που πιθανότατα θα είναι και η βέλτιστη λύση. Εδώ, πρέπει να αναφέρουµε ότι το quiz set έχει 39 attributes. Γι αυτό το λόγο δηµιουργούµε ένα ψεύτικο attribute, το ονοµάζουµε output και του δίνουµε τιµή 0 σε όλα τα instances. Έτσι ξεκινάµε να δοκιµάζουµε διάφορους αλγόριθµους. Όπως έχουµε αναφέρει και παραπάνω, τα χαρακτηριστικά µας είναι αριθµητικά, συνεπώς ο αριθµός των αλγορίθµων που µπορούµε να τρέξουµε είναι περιορισµένος. Με αριθµητικά χαρακτηριστικά δεν τρέχουν καθόλου οι αλγόριθµοι Bayes, Mi και Misc, όπως επίσης αρκετοί από τα trees και rules. Με την βοήθεια του WEKA µπορούµε να ΚΑΤΣΑΒΡΙΑΣ ΕΥΑΓΓΕΛΟΣ 4
µετατρέψουµε τα χαρακτηριστικά από numeric σε nominal, αλλά δεν θα το πράξουµε γιατί έτσι θα χάσουµε πολύτιµες πληροφορίες. Για αρχή ξεκινήσαµε να τρέχουµε κάποιους αλγόριθµους functions και rules, αλλά τα αποτελέσµατα δεν ήταν και πολύ καλά, ούτε στο training set, αλλά ούτε και στο quiz set. Το ίδιο ισχύει και για τους αλγόριθµους trees και lazy. Οι καλύτεροι αλγόριθµοι, από θεωρητικής πλευράς αλλά και από πλευράς αποτελεσµάτων, είναι οι meta. Μπορούµε να συνδυάσουµε τους meta ή µε άλλους meta ή µε τους υπόλοιπους αλγόριθµους, και έτσι παίρνουµε πολύ µικρά σφάλµατα. Πάντα όµως υπάρχει και ο φόβος του overtraining, δηλαδή να µην έχουµε βελτιστοποιήσει την λύση συνολικά, αλλά µόνο στο training set. Γι αυτό καλό θα ήταν να µην χρησιµοποιήσουµε, πάνω απο τρείς φορές µαζί, meta αλγόριθµο. Έπειτα λοιπόν από αρκετούς συνδυασµούς meta αλγορίθµων, καταλήξαµε ότι ένας πολύ καλός meta αλγόριθµος είναι ο RegressionByDiscretization. Οι τέσσερις καλύτεροι συνδυασµοί που βρήκαµε, µε µικρά σφάλµατα, µεγάλο Correlation coefficient και καλό success rate, µετά από την εφαρµογή τους στο quiz set, είναι οι παρακάτω : 1 ος Αλγόριθµος : Bagging RegressionByDiscretization J48 === Cross-validation === === Summary === Correlation coefficient 0.9123 Mean absolute error 0.0615 Root mean squared error 0.1742 Relative absolute error 17.0029 % Root relative squared error 40.9434 % Total Number of Instances 2528 ΚΑΤΣΑΒΡΙΑΣ ΕΥΑΓΓΕΛΟΣ 5
2 ος Αλγόριθµος : RandomSubSpace RegressionByDiscretization J48 === Cross-validation === === Summary === Correlation coefficient 0.9154 Mean absolute error 0.0721 Root mean squared error 0.1722 Relative absolute error 19.9263 % Root relative squared error 40.4707 % Total Number of Instances 2528 3 ος Αλγόριθµος : RandomSubSpace RegressionByDiscretization J48graft === Cross-validation === === Summary === Correlation coefficient 0.9198 Mean absolute error 0.0685 Root mean squared error 0.1678 Relative absolute error 18.9252 % Root relative squared error 39.4458 % Total Number of Instances 2528 ΚΑΤΣΑΒΡΙΑΣ ΕΥΑΓΓΕΛΟΣ 6
4 ος Αλγόριθµος : RegressionByDiscretization Vote { J48, J48graft, Bagging, AdaBoostM1, RandomSubSpace, RotationForest } === Cross-validation === === Summary === Correlation coefficient 0.9252 Mean absolute error 0.0657 Root mean squared error 0.1624 Relative absolute error 18.1707 % Root relative squared error 38.184 % Total Number of Instances 2528 Για να βρούµε τώρα το ποσοστό επιτυχίας (success rate) των αλγορίθµων, θα πρέπει να αφαιρέσουµε από το quiz set, τα χαρακτηριστικά που είχαµε αφαιρέσει και στο training set (attr34, attr36, attr38). Έπειτα θα ορίσουµε σαν Supplied test set το νέο quiz set και έχουµε τα ακόλουθα αποτελέσµατα : Success rates 1 ος Αλγόριθµος : 0.9534 2 ος Αλγόριθµος : 0.9526 3 ος Αλγόριθµος : 0.9549 4 ος Αλγόριθµος : 0.9541 ΚΑΤΣΑΒΡΙΑΣ ΕΥΑΓΓΕΛΟΣ 7
3 ο Βήµα : Εφαρµογή του αλγόριθµου στο test set Για την τελική µας υποβολή στο test set, θα επιλέξουµε τον 3 ο αλγόριθµο, δηλ. RandomSubSpace RegressionByDiscretization J48graft. Πολύ καλός αλγόριθµος φαίνεται να είναι και ο 4 ος ( RegressionByDiscretization Vote {J48, J48graft, Bagging, AdaBoostM1, RandomSubSpace, RotationForest} ), γιατί έχει µικρότερο σφάλµα και καλύτερο Correlation coefficient από τον 3 ο, αλλά δεν θα τον επιλέξουµε για τον λόγο ότι έχουµε χρησιµοποιήσει τρείς meta αλγορίθµους και υπάρχει ο φόβος του overtraining. Για να εφαρµόσουµε τον επιλεγµένο αλγόριθµο στο test set, πρέπει να µετατρέψουµε το test set αυτό. ηλαδή πρέπει να αφαιρέσουµε από αυτό τις attribute 34, 36, 38 και να προσθέτουµε ένα ψεύτικο attribute, όπου το ονοµάζουµε output και του δίνουµε τιµή 0 σε όλα τα instances. Έτσι τώρα, ορίζουµε, το νέο test set στο Supplied test set και τρέχουµε τον αλγόριθµο. ΚΑΤΣΑΒΡΙΑΣ ΕΥΑΓΓΕΛΟΣ 8