ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής

Σχετικά έγγραφα
ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής

ΔΙΑΧΩΡΙΣΤΙΚΗ ΟΜΑΔΟΠΟΙΗΣΗ

Η ΜΕΘΟΔΟΣ PCA (Principle Component Analysis)

Πανεπιστήµιο Κύπρου Πολυτεχνική Σχολή

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

ΕΡΓΑΣΙΑ 3. Παίζοντας Sudoku. Ημερομηνία Ανάρτησης: 16/03/2018 Ημερομηνία Παράδοσης: 03/04/2018, 09:00

ΣΤΟΧΑΣΤΙΚΕΣ ΔΙΕΡΓΑΣΙΕΣ & ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ Αίθουσα Νέα Κτίρια ΣΗΜΜΥ Ε.Μ.Π. Ανάλυση Κυρίων Συνιστωσών (Principal-Component Analysis, PCA)

ΣΧΕΔΙΑΣΗ ΣΥΣΤΗΜΑΤΩΝ ΜΕ ΧΡΗΣΗ ΥΠΟΛΟΓΙΣΤΩΝ (E-CAD) ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

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

Σχηματίζοντας Γραφικές Παραστάσεις για Ημίτονο και Συνημίτονο και Ελέγχοντας Περιορισμούς σε Συστάδες Καρτών Τόμπολας

Εφαρμογές Πληροφορικής

ΣΧΕΔΙΑΣΗ ΣΥΣΤΗΜΑΤΩΝ ΜΕ ΧΡΗΣΗ ΥΠΟΛΟΓΙΣΤΩΝ (E-CAD) ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ Χ. Βέργος Καθηγητής

ΟΔΗΓΙΕΣ ΓΙΑ ΕΓΚΑΤΑΣΤΑΣΗ ΚΑΙ ΧΡΗΣΗ ΤΟΥ GOOGLE EARTH [ΠΛΟΗΓΗΣΗ ΚΑΙ ΕΚΤΥΠΩΣΗ ΑΕΡΟΦΩΤΟΓΡΑΦΙΩΝ]

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

Τεχνικές ταξινόµησης αποτελεσµάτων µηχανών αναζήτησης µε βάση την ιστορία του χρήστη

Μέθοδοι Μηχανικής Μάθησης στην επεξεργασία Τηλεπισκοπικών Δεδομένων. Δρ. Ε. Χάρου

Το πρόγραμμα συγχρηματοδοτείται 75% από το Ευρωπαϊκό κοινωνικό ταμείο και 25% από εθνικούς πόρους.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΑΣΚΗΣΗ 5 Ανάπτυξη Προγράμματος Συμπίεσης/Αποσυμπίεσης Αρχείων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΙΑΤΡΙΚΗΣ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ. Χατζηλιάδη Παναγιώτα Ευανθία

Εισαγωγή στην Αριθμητική Ανάλυση

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

9. Ανάλυση κυρίων συνιστωσών *Principal Component Analysis)

Μεθόδων Επίλυσης Προβλημάτων

Επιστηµονικός Υπολογισµός Ι - Πρώτη εργαστηριακή άσκηση

Εικόνα. Τεχνολογία Πολυμέσων και Πολυμεσικές Επικοινωνίες 05-1

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής

«Μηχανή Αναζήτησης Αρχείων» Ημερομηνία Παράδοσης: 30/04/2015, 09:00 π.μ.

ΟΜΑΔΕΣ. Δημιουργία Ομάδων

1 ο Εργαστήριο Συντεταγμένες, Χρώματα, Σχήματα

Διάλεξη 2η Εισαγωγή στο CSS

Clustering. Αλγόριθµοι Οµαδοποίησης Αντικειµένων

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 131: ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I ΕΡΓΑΣΙΑ 2

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα.

Τεχνικές Εξόρυξης Δεδομένων

Επεξεργασία κειμένου: Word 2003

2.0 ΒΑΣΙΚΕΣ ΓΝΩΣΕΙΣ-ΟΡΟΛΟΓΙΕΣ

ΠΛΗΡΟΦΟΡΙΚΗ I. 7 η ΔΙΑΛΕΞΗ Γραφικά με Υπολογιστή

To KINO ανανεώνεται, αλλάζει τη διάθεση. και δίνει ότι Χρειάζονται οι Παίκτες σου!

ΣΧΕΔΙΑΣΗ ΣΥΣΤΗΜΑΤΩΝ ΜΕ ΧΡΗΣΗ ΥΠΟΛΟΓΙΣΤΩΝ (E-CAD) ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

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

ΑΣΚΗΣΗ 2 ΒΑΣΙΚΑ ΚΑΙ ΣΥΝΘΕΤΑ ΣΗΜΑΤΑ ΔΥΟ ΔΙΑΣΤΑΣΕΩΝ - ΕΙΚΟΝΑΣ

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΙΔΙΚΑ ΘΕΜΑΤΑ. Κεφάλαιο 10. Εισαγωγή στην εκτιμητική

Ανάπτυξη και Σχεδίαση Λογισμικού

Μεταβίβαση Δικαιωμάτων Ενιαίας Ενίσχυσης Εγχειρίδιο Εφαρμογής (SUD)

ΕΠΛ132 Άσκηση 3 - Αρχές Προγραμματισμού ΙΙ Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ

ΕΡΓΑΣΙΑ 2. Κατασκευάζοντας Ημερολόγια. Ημερομηνία Ανάρτησης: 23/02/2018 Ημερομηνία Παράδοσης: 13/03/2018, 09:00

3. ΤΕΧΝΙΚΕΣ ΣΥΜΠΙΕΣΗΣ ΠΟΛΥΜΕΣΩΝ

DIP_06 Συμπίεση εικόνας - JPEG. ΤΕΙ Κρήτης

Υποβολή Πιστοποιητικού

[2] Υπολογιστικά συστήματα: Στρώματα. Τύποι δεδομένων. Μπιτ. επικοινωνία εφαρμογές λειτουργικό σύστημα προγράμματα υλικό

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΤΗ JustAlert SPOTIT. Οδηγίες για την εγκατάσταση της εφαρμογής στο κινητό σας

Fortran και Αντικειμενοστραφής προγραμματισμός.

Χρήσιμες οδηγίες για την πορεία δημιουργίας ιστοσελίδων

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ,

Εργαστήρια Text Mining & Sentiment Analysis με Rapid Miner

Συστήματα Πολυμέσων. Ενότητα 7: Συμπίεση Εικόνας κατά JPEG. Θρασύβουλος Γ. Τσιάτσος Τμήμα Πληροφορικής ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ

Τεχνολογία Πολυμέσων. Ενότητα # 5: Εικόνα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

ΗΥ562 Προχωρημένα Θέματα Βάσεων Δεδομένων Efficient Query Evaluation over Temporally Correlated Probabilistic Streams

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

8. ΜΕΤΑΣΧΗΜΑΤΙΣΜΟΣ ΔΕΔΟΜΕΝΩΝ

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Αναπαράσταση δεδομένων

Browsers. Λειτουργικότητα και Παραμετροποίηση

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής

Αρχές κωδικοποίησης. Τεχνολογία Πολυμέσων και Πολυμεσικές Επικοινωνίες 08-1

Πληροφοριακά Συστήματα Διοίκησης

Σύστημα Αποτίμησης Ποιότητας Ευρυζωνικών Συνδέσεων (ΣΑΠΕΣ) Μεθοδολογία υπολογισμού στατιστικών ανά γεωγραφική περιοχή

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

ΑΝΤΑΓΩΝΙΣΤΙΚΗ ΜΑΘΗΣΗ ΔΙΚΤΥA LVQ και SOM. "Τεχνητά Νευρωνικά Δίκτυα" (Διαφάνειες), Α. Λύκας, Παν. Ιωαννίνων

1η Οµάδα Ασκήσεων. ΑΣΚΗΣΗ 1 (Θεωρία)

ΔΙΑΔΙΚΑΣΙΑ ΑΝΑΒΑΘΜΙΣΗΣ ΚΥΠΡΙΑΚΟΥ ΧΑΡΤΗ

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

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

Συστήματα Πολυμέσων. Ενότητα 5: Χαρακτηριστικά Ψηφιακής Εικόνας. Θρασύβουλος Γ. Τσιάτσος Τμήμα Πληροφορικής ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ

1 η υπό-ομάδα (Wind): Ισμαήλ Σερκάν Τσουλουχόπουλος Ιωάννης Φαρμακίδης Πασχάλης Τσακίρη Άννα Αριστινίδης Παύλος. 2 η υπό-ομάδα (Cosmote):

Κεφάλαιο , 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

ΕΡΓΑΣΤΗΡΙΟ 1: Εισαγωγή, Χρήσιμες Εφαρμογές

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΛΟΠΟΝΝΗΣΟΥ. Οδηγός χρήσης του συστήματος αξιολόγησης μαθημάτων

Εισαγωγη στην html. Η δομή μιας ιστοσελίδας (αρχείο html) Η βασική δομή ενός αρχείου html είναι η εξής: <html> <head>

4.4 ΟΜΑΔΟΠΟΙΗΣΗ ΠΑΡΑΤΗΡΗΣΕΩΝ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΠΑΡΑΡΤΗΜΑ Δ Σύντομη παρουσίαση του DATA STUDIO

ιαµέριση - Partitioning

ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 1

Σχεδίαση και Ανάπτυξη Ιστότοπων

Χρήστος Ι. Σχοινάς Αν. Καθηγητής ΔΠΘ. Συμπληρωματικές σημειώσεις για το μάθημα: «Επιχειρησιακή Έρευνα ΙΙ»

Προγραμματιστικές Ασκήσεις, Φυλλάδιο 2: Δείκτες & Δυναμική Ανάθεση Μνήμης

3D FLASH ANIMATOR (3DFA)

Δημιουργώντας μια εφαρμογή ζωγραφικής. 2 η Εργασία

ΕΡΓΑΣΙΑ 4. Εκλογικό Σύστημα με Μεταφορά και Συσσώρευση Ψήφων. Ημερομηνία Ανάρτησης: 16/04/2018 Ημερομηνία Παράδοσης: 04/05/2018, 09:00

Χρονικές σειρές 3 o μάθημα: Εισαγωγή στη MATLAB

Project 1: Principle Component Analysis

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

Transcript:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής ΕΠΛ 451 Εξόρυξη Δεδομένων στον Παγκόσμιο Ιστό I. Στόχος ΑΣΚΗΣΗ 2 Ομαδοποίηση (Clustering) και Μείωση Διαστάσεων (Dimensionality Reduction) Διδάσκων: Γιώργος Πάλλης Υπεύθυνος Εργασίας: Παύλος Αντωνίου Ημερομηνία Ανάθεσης: Τετάρτη 01/03/17 Ημερομηνία Παράδοσης: Τετάρτη 29/03/17 και ώρα 23:59 (28 μέρες) (η λύση να υποβληθεί σε zip μέσω του Moodle) http://www.cs.ucy.ac.cy/courses/epl451 Ο στόχος της άσκησης είναι η διερεύνηση και η εξοικείωση με τις έννοιες της ομαδοποίησης (clustering) και της μείωσης διαστάσεων (dimensionality reduction). Πιο συγκεκριμένα, θα δείτε πότε και πως χρησιμοποιείται η ομαδοποίηση πάνω σε μικρά datasets. Εκτός από τα μικρά datasets, θα κτίσετε και ένα μεγαλύτερο συλλέγοντας πληροφορίες από τους φίλους σας στο Facebook για να μπορέσετε εν συνεχεία να τους ομαδοποιήσετε σε διάφορες ομάδες (clusters) π.χ. ως προς τα ενδιαφέροντά τους. Στο τέλος της εργασίας, θα χρησιμοποιήσετε τεχνικές μείωσης διαστάσεων με στόχο την αναγνώριση χειρόγραφων αριθμών (0-9) από το γνωστό (στην περιοχή της εξόρυξης δεδομένων) dataset με το όνομα MNIST. II. Περιγραφή Στην άσκηση αυτή θα υλοποιήσετε 5 διαφορετικές φάσεις που αναλύονται πιο κάτω. Η κάθε φάση απαρτίζεται από ένα σύνολο μικρότερων εργασιών (tasks). Σας δίνεται ένα αρχείο με το όνομα epl451-as2.py το οποίο περιέχει κώδικα με εκτεταμένα σχόλια για όλες τις φάσεις και εργασίες που καλείστε να ασχοληθείτε. Σε όσα σημεία υπάρχει το None ή Pass θεωρείται ως ασυμπλήρωτος κώδικας, και με βάση τα σχόλια θα συμπληρώνετε αναλόγως. Τα αναμενόμενα αποτελέσματα κάθε εργασίας παρουσιάζονται πιο κάτω. Φάση 1: Αξιολόγηση του αλγόριθμου k-means πάνω σε διαφορετικά datasets Στη φάση αυτή θα διερευνήσετε πως ο αλγόριθμος k-means συμπεριφέρεται πάνω σε datasets με διαφορετική δομή. Θα διερευνήσετε επίσης διάφορους τρόπους τροποποίησης του αλγορίθμου k- means και θα μάθετε πώς να βρείτε μια καλή αρχική τιμή και μια καλή τελική τιμή για το k. Εργασία 1a: Στην 1 η εργασία, θα συμπληρώσετε τον κώδικα της συνάρτησης part1_plot_clustering() για να εκτυπώνει γραφικές παραστάσεις τύπου scatter.

Εργασία 1b: Στη 2 η εργασία, θα καλέσετε τον αλγόριθμο k-means με διαφορετικές παραμέτρους. Για την πρώτη κλήση του k-means θα τυπώσετε τα centroids ως ακολούθως: [[ 5.62930751-4.16861737] [-4.25402493 5.92936468] [-1.14986255 5.51731899] [-5.92179508 2.2297414 ]] και επιπλέον θα καλέσετε τη συνάρτηση της εργασίας 1a για να τυπώσει τις πιο κάτω 3 γραφικές. Εργασία 1c: Στην 3 η εργασία θα καλέσετε τον αλγόριθμο k-means με διαφορετικές παραμέτρους (μεγαλύτερη διακύμανση) και θα καλέσετε τη συνάρτηση της εργασίας 1a για να τυπώσει τις πιο κάτω 3 γραφικές. Εργασία 1d: Στην 4 η εργασία θα καλέσετε τον αλγόριθμο k-means με διαφορετικές παραμέτρους (περισσότερα clusters) και θα καλέσετε τη συνάρτηση της εργασίας 1a για να τυπώσει τις πιο κάτω 3 γραφικές.

Εργασία 1e: Στην 5 η εργασία θα καλέσετε τον αλγόριθμο k-means με διαφορετικές παραμέτρους (περισσότερα clusters και μεγαλύτερη διακύμανση) και θα καλέσετε τη συνάρτηση της εργασίας 1a για να τυπώσει τις πιο κάτω 3 γραφικές. Εργασία 1f: Στην 6 η εργασία θα καλέσετε τον αλγόριθμο k-means πάνω σε διαφορετικού είδους dataset και θα καλέσετε τη συνάρτηση της εργασίας 1a για να τυπώσει τις πιο κάτω 3 γραφικές. Εργασία 1g: Στην 7 η εργασία θα καλέσετε τον αλγόριθμο k-means πάνω σε διαφορετικού είδους dataset και θα καλέσετε τη συνάρτηση της εργασίας 1a για να τυπώσει τις πιο κάτω 3 γραφικές. Εργασία 1h: Στην εργασία αυτή θα εμπλακείτε σε μια πολύ ενδιαφέρουσα εφαρμογή του αλγορίθμου k-means για συμπίεση εικόνας. Θα δείτε μια πιο εξειδικευμένη τεχνική στη φάση 5 που ασχολείται με τη μείωση διαστάσεων. Η ιδέα εδώ είναι υπερβολικά απλή. Υποθέστε ότι έχουμε μια εικόνα που έχει αρκετά χρώματα που επιθυμούμε να συμπιέσουμε. Ένας απλός τρόπος είναι να μειώσουμε τον αριθμό των χρωμάτων. Μια τεχνική συμπίεσης που χρησιμοποιείται από τον τύπο JPG καλείται run length

encoding (RLE). Αν υποθέσουμε ότι έχουμε ένα κείμενο όπως το AAAAAAAABB, η τεχνική RLE το συμπιέζει σαν 8A2B. Διαισθητικά, εικόνες με λιγότερα χρώματα θα έχουν περισσότερα όμοια συνεχόμενα χρώματα (longer runs) και κατά συνέπεια μεγαλύτερη συμπίεση. Υποθέστε ότι τρέχουμε τον αλγόριθμο k-means με είσοδο μια εικόνα χρησιμοποιώντας μια σχετικά μικρή τιμή του k (number of clusters), όπου τα δεδομένα (data points) θεωρείται ότι είναι τα pixels. Για παράδειγμα, υποθέστε ότι αποφασίζουμε να χρησιμοποιήσουμε μόνο 64 διαφορετικά χρώματα. Τότε, τρέχουμε τον αλγόριθμο k-means με k=64. Τα κέντρα των clusters (centroids) που παράγονται αντιστοιχούν στα πιο «αντιπροσωπευτικά» χρώματα της εικόνας. Έτσι αντικαθιστούμε το χρώμα κάθε pixel της εικόνας με το χρώμα του centroid του cluster στο οποίο ανήκει το pixel. Με τον τρόπο αυτό, κβαντίζουμε την εικόνα για να έχει ακριβώς k χρώματα. Δείτε ένα πρόχειρο υπολογισμό του κέρδους συμπίεσης που επιτυγχάνεται. Έστω ότι χρησιμοποιούμε την παλέτα RGB. Στην παλέτα αυτή, κάθε pixel προκύπτει ως συνδυασμός 3 χρωματικών συνιστωσών (Red, Green, Blue) και κάθε χρωματική συνιστώσα απεικονίζεται με 8 bits. Κατά συνέπεια κάθε pixel της αρχικής εικόνας αποτελείται από 24 bits και μπορεί να παρασταθεί από 2 24 διαφορετικά χρώματα. Αν η εικόνα έχει πλάτος x ύψος = 128 128, τότε χρειαζόμαστε 128 128 24 bits. Αν υποθέσουμε ότι συμπιέζαμε την εικόνα χρησιμοποιώντας μόνο 16 διαφορετικά χρώματα (περνώντας την από τον k-means με k=16), τότε θα χρειαζόμασταν μόνο 4 bits (16=2 4 ) για να απεικονίσουμε το κάθε pixel και η εικόνα θα χρειαζόταν μόνο 128 128 4 bits μείωση στο 1/6 του αρχικού μεγέθους!! Στην εργασία αυτή κάνουμε μια απλή επίδειξη των πιο πάνω. Αρχικά θα τυπωθούν οι διαστάσεις της εικόνας, ο αριθμός των pixels (273280=427x640) και το βάθος (depth) του κάθε pixel που είναι 3 χρωματικές συνιστώσες (RGB). Η αρχική εικόνα περιέχει 83312 διαφορετικά χρώματα. Width=427, Height=640, Depth=3 In 2-D the shape is (273280, 3)

Στη συνέχεια θα συμπληρώσετε τον κώδικα που καλεί τον αλγόριθμο k-means με τιμές k=16, 32, 64, 128 έτσι ώστε να μπορέσετε να παράξετε με χρήση της δοθείσας συνάρτησης recreate_image() συμπιεσμένες εικόνες με τον αντίστοιχο αριθμό χρωμάτων. Τα αποτελέσματα της διαδικασίας παρουσιάζονται πιο κάτω. Μια σημαντική παρατήρηση είναι ότι ο χρόνος που δαπανάται για την ολοκλήρωση της διαδικασίας είναι σχετικά μεγάλος. Σε διπύρηνο υπολογιστή Intel Core i5 520M 2.4GHz και 8GB RAM χρειάστηκαν περίπου 29 λεπτά (1748 δευτερόλεπτα). Handling k = 16 Handling k = 32 Handling k = 64 Handling k = 128 Clustering over entire data took 1748.5600888729095 seconds Όπως μπορείτε να δείτε, παρόλο που στα 16 χρώματα η ποιότητα της συμπιεσμένης εικόνας είναι χαμηλή, η εικόνα των 128 χρωμάτων ομοιάζει με την αρχική εικόνα που είναι των 83312 χρωμάτων. Εργασία 1i: Λόγω του ότι η διαδικασία που ακολουθήθηκε στην προηγούμενη εργασία ήταν χρονοβόρα, υπάρχει ανάγκη για εναλλακτική λύση. Στην εργασία αυτή θα ακολουθήσετε μια τακτική που χρησιμοποιείται στην επεξεργασία εικόνας. Αντί να τρέξετε τον αλγόριθμο k-means πάνω σε όλα τα pixels της αρχικής εικόνας, μπορείτε να επιλέξετε ένα υποσύνολο (δείγμα) των pixels. Πιο συγκεκριμένα αν λάβετε ένα δείγμα των 1000 pixels (0.3% των 273280 pixels που υπάρχουν συνολικά στην εικόνα) μπορείτε να επιτύχετε πολύ μεγάλη μείωση στο χρόνο (~ 6 δευτερόλεπτα). Handling k = 16 Handling k = 32 Handling k = 64 Handling k = 128 Clustering with Sampling took 5.54399037361145 seconds

Εργασία 1j: Μια από τις πιο σημαντικές παραμέτρους στον αλγόριθμο k-means είναι το k και αποτελεί ανοικτό πρόβλημα η εύρεση της βέλτιστης τιμής του. Κάποιες φορές, η τιμή του k μπορεί να είναι γνωστή λόγω της φύσεως του προβλήματος. Για παράδειγμα, αν θέλουμε να ομαδοποιήσουμε εικόνες που απεικονίζουν μονοψήφιους χειρόγραφους αριθμούς (βλέπε MNIST dataset) θα χρησιμοποιήσουμε k=10 διότι υπάρχουν 10 ψηφία (0-9). Εντούτοις, δοθέντος ενός αυθαίρετου dataset (ιδίως αν είναι πολλαπλών διαστάσεων), είναι πολύ δύσκολο να βρούμε μια καλή τιμή για το k. Υπάρχουν πολλές πολύπλοκες στατιστικές μέθοδοι για την εύρεση του k. Δείτε εδώ για μια σχετική περίληψη. Παρόλα αυτά, σχεδόν όλες οι μέθοδοι εμπεριέχουν κάποιες κρυφές υποθέσεις και γι αυτό μπορούν να θεωρηθούν μόνο σαν ευριστικές. Η εύρεση μιας καλής τιμής για το k είναι ένα πολύ δύσκολο πρόβλημα. Σε αυτή την εργασία, θα ασχοληθείτε με 3 δημοφιλείς και σχετικά απλές τεχνικές: 1. Μέθοδος Elbow (SSQ) 2. Gap Statistic 3. Gap Statistic differences Στον υπολογισμό του gap statistic θα χρησιμοποιήσετε μια διαφορετική υλοποίηση του k-means από το scipy.vq (vector quantization) module. Μπορείτε να διαβάσετε γι αυτό στο http://docs.scipy.org/doc/scipy/reference/cluster.vq.html. Ο κώδικας υλοποίησης των πιο πάνω μεθόδων δίνεται. Ο στόχος της εργασίας είναι να έρθετε σε επαφή με αυτές τις μεθόδους και να γνωρίζετε την ύπαρξή τους. Τα αποτελέσματα της εργασίας αυτής φαίνονται πιο κάτω.

Φάση 2: Αξιολόγηση του αλγόριθμου ιεραρχικής ομαδοποίησης (hierarchical clustering) πάνω σε ποικίλα datasets Στη δεύτερη φάση, θα διερευνήσετε την μέθοδο της ιεραρχικής ομαδοποίησης (hierarchical clustering) πάνω σε διάφορα datasets. Θα αξιολογήσετε επίσης διάφορους τρόπους για συγχώνευση των clusters. Τα αποτελέσματα της κάθε εργασίας φαίνονται πιο κάτω. Εργασία 2b: Εργασία 2c: Εργασία 2d:

Εργασία 2e:

Φάση 3: Σύγκριση μετρικών αξιολόγησης της ομαδοποίησης Υπάρχουν πολλές στατιστικές μέθοδοι για την αξιολόγηση της ποιότητας των δημιουργηθέντων clusters και θα τις δοκιμάσετε στην εργασία αυτή. Γενικότερα, αυτές οι μέθοδοι μπορούν να χωριστούν σε δύο κατηγορίες: 1. Μετρικές αξιολόγησης της ομαδοποίησης όταν είναι διαθέσιμη η πραγματική ανάθεση των σημείων σε clusters (ground truth). 2. Μετρικές αξιολόγησης όταν η πραγματική ανάθεση (ground truth) δεν είναι διαθέσιμη. Στον ακόλουθο σύνδεσμο μπορείτε να βρείτε πολύ χρήσιμες πληροφορίες: http://scikitlearn.org/stable/modules/clustering.html#clustering-performance-evaluation Εργασία 3a: Όταν είναι διαθέσιμη η πραγματική ανάθεση σε clusters (ground truth available) Ας υποθέσουμε ότι η ανάθεση σε clusters είναι γνωστή. Αυτό αποτελεί μια ιδανική περίπτωση και πολύ συχνά, σε πραγματικές εφαρμογές, δεν συναντάται μιας και η διαδικασία της ομαδοποίησης είναι επί της ουσίας τεχνική για unsupervised learning (που συνεπάγεται δεν έχουμε πρότερη γνώση της μεταβλητής που θέλουμε να προβλέψουμε). Εντούτοις, μιας και τα δικά σας datasets δημιουργούνται με συνθετικό τρόπο (κλήση συνάρτησης make_blobs), είναι δυνατόν να γνωρίζετε την πραγματική ανάθεση (ground truth). Στην πρώτη εργασία θα αξιολογήσετε τις πιο κάτω μετρικές: 1. Adjusted Rand index 2. Adjusted Mutual Information Score 3. Homogeneity 4. Completeness 5. V-measure score Τα αποτελέσματα της πρώτης εργασίας της Φάσης 3 φαίνονται στις πιο κάτω γραφικές παραστάσεις.

Εργασία 3b: Όταν ΔΕΝ είναι διαθέσιμη η πραγματική ανάθεση σε clusters (ground truth ΝΟΤ available) Ας υποθέσουμε ότι η ανάθεση σε clusters δεν είναι γνωστή. Πολύ συχνά, σε πραγματικές εφαρμογές δεν γνωρίζουμε τη σωστή απάντηση, οπότε κατά συνέπεια η επιλογή της τιμής του k είναι πολύ δύσκολη Στην δεύτερη εργασία θα χρησιμοποιήσετε τα συνθετικά δεδομένα που παράξατε αγνοώντας το ground truth. Θα μελετήσετε 3 απλές μετρικές που αναλύουν πόσο καλό είναι το αποτέλεσμα της ομαδοποίησης Πιο συγκεκριμένα θα εξεταστούν οι πιο κάτω μετρικές: 1. SSQ 2. Silhouette Coefficient 3. Stability Τα αποτελέσματα της δεύτερης εργασίας της Φάσης 3 φαίνονται στις πιο κάτω γραφικές παραστάσεις.

Φάση 4: Ομαδοποίηση φίλων Facebook Στην τέταρτη φάση, με τη βοήθεια του εργαλείου selenium θα ανακτήσετε πληροφορίες των φίλων σας από το Facebook με στόχο την ομαδοποίησή τους στη βάση των ενδιαφερόντων τους (Likes). Ο κώδικας για σύνδεση με το Facebook και για ανάκτηση πληροφοριών είναι κατά πολύ μεγάλο ποσοστό έτοιμο, μιας και δεν είναι αυτός ο στόχος της παρούσας άσκησης, αλλά είναι αρκετά ενδιαφέρον και συνίσταται όπως πειραματιστείτε με αυτό. Αυτά που θα κάνετε στην φάση αυτή σε περιληπτική μορφή είναι: 1. Θα χρησιμοποιήσετε το πακέτο selenium/webdriver για να επισκεφτείτε τις σελίδες του Facebook μέσω κάποιου browser και να επιλέξετε elements από την ιστοσελίδα μέσω css selectors για να εξαγάγετε πληροφορίες από τους φίλους σας. 2. Θα μετατρέψετε τα δεδομένα κάθε φίλου σας σε ένα διάνυσμα (vector) έτσι ώστε να μπορεί να τύχει επεξεργασίας από τους αλγόριθμους ομαδοποίησης 3. Θα τρέξετε τους αλγόριθμους ομαδοποίησης και θα μελετήσετε τα αποτελέσματα Κάποια σχόλια: Συνίσταται να χρησιμοποιηθούν οι browsers Mozilla Firefox ή Google Chrome. Οι IE/Safari μπορεί να παρουσιάσουν πρόβλημα. Θα ήταν καλό να αποφύγετε να χρησιμοποιήσετε το λογαριασμό Facebook σας από το παράθυρο του browser (που θα ξεκινήσει το πρόγραμμά σας) καθώς αυτό τρέχει. Χρήσιμες πληροφορίες για το Selenium webdriver μπορείτε να βρείτε στον σύνδεσμο http://selenium-python.readthedocs.io/locating-elements.html Αν έχετε μεγάλο αριθμό φίλων ο κώδικας θα τρέξει για μεγάλο χρονικό διάστημα. Εισήγησή μας είναι να δοκιμάσετε τον κώδικά σας αρχικά σε μικρού μεγέθους δεδομένα Τα αναμενόμενα αποτελέσματα από την εργασία αυτή είναι: 1. Η εκτύπωση της γραφικής που δείχνει απεικονίζει τις μετρικές SSQ, gap statistics and gap differences για διάφορες τιμές του k 2. Η εκτύπωση των clusters για τη καλύτερη τιμή του k (που επιλέξατε με βάση τις πιο πάνω μετρικές) όπως φαίνεται πιο κάτω. Στο κάθε cluster θα τυπώνετε τα ονόματα των φίλων σας που ανήκουν σε αυτό. Cluster 1: X, Y,Z Cluster 2: A,B,C,D etc 3. Η εκτύπωση των 2 πιο αντιπροσωπευτικών φίλων σε κάθε cluster, αυτών που απέχουν λιγότερο από το κέντρο του cluster.

Φάση 5: Μείωση διαστάσεων Η μείωση διαστάσεων αποτελεί πολύ σημαντική τεχνική προ-επεξεργασίας δεδομένων. Χρησιμοποιείται όταν για παράδειγμα θέλουμε να υλοποιήσουμε ένα μοντέλο πρόγνωσης και ο αριθμός των μεταβλητών ή features ή διαστάσεων είναι υπερβολικά μεγάλος κάτι που δυσκολεύει τη μοντελοποίηση. Στη φάση αυτή θα τρέξετε τον αλγόριθμο PCA (Principal Components Analysis Ανάλυση Κύριων Συνιστωσών), μια δημοφιλή τεχνική μείωσης μεταβλητών, δίνοντας σαν είσοδο κάποιες εικόνες έτσι ώστε να πάρετε μια ένδειξη για τις δυνατότητες του αλγορίθμου. Η ανάλυση κύριων συνιστωσών είναι μία στατιστική διαδικασία η οποία μετατρέπει μία ομάδα τιμών (παρατηρήσεων) δυνητικά συσχετιζόμενων μεταβλητών (features) σε μία ομάδα νέων τιμών μη γραμμικά συσχετιζόμενων μεταβλητών οι οποίες καλούνται κύριες συνιστώσες (components). Ο αριθμός των νέων μεταβλητών που προκύπτει είναι ίσος ή και συχνότερα πολύ μικρότερος από τον αριθμό των αρχικών μεταβλητών. Η μετάβαση αυτή πραγματοποιείται με τέτοιο τρόπο ώστε, η πρώτη συνιστώσα να εξηγεί τη μέγιστη δυνατή διακύμανση που αναπτύσσεται μεταξύ των αρχικών μεταβλητών, η δεύτερη, μη συσχετιζόμενη με την πρώτη, να εξηγεί ένα σημαντικό μέρος αυτής αλλά πάντα μικρότερο της πρώτης κοκ. Στη συνέχεια θα εφαρμόσετε τον αλγόριθμο πάνω στα δεδομένα του MNIST dataset για να δείτε πως συμπεριφέρεται. Το MNIST dataset περιλαμβάνει 70000 εικόνες που απεικονίζουν χειρόγραφα ψηφία (0-9). Η κάθε εικόνα είναι 28 x 28 pixels. Τα pixels αποθηκεύονται σαν μη προσημασμένοι αριθμοί (unsigned char) του 1 byte και λαμβάνουν τιμές από 0 έως 255. Ο τρόπος ανάκτησης των δεδομένων που χρησιμοποιούμε στην άσκηση αυτή, τοποθετεί τις εικόνες σε πίνακα 2 διαστάσεων, που σε καθεμιά από τις 70000 γραμμές του πίνακα βρίσκεται μια εικόνα ευθυγραμμισμένη σε διάνυσμα 784 θέσεων (=28 x 28). Για να πάρετε μια ιδέα, πιο κάτω φαίνεται η πρώτη εικόνα του dataset που απεικονίζει τον αριθμό 0. Εργασία 5a Στην πρώτη εργασία θα βρείτε τις μέσες τιμές των τιμών των pixels για κάθε χειρόγραφο ψηφίο και θα τις τυπώσετε όπως φαίνεται πιο κάτω:

Εργασία 5b Στη δεύτερη εργασία, θα εκπαιδεύσετε ένα SVM (support vector machine ) classifier για να μπορεί δοθέντος μια εικόνας με χειρόγραφο αριθμό να προβλέπει/κατηγοριοποιεί ποιο ψηφίο είναι. Κάθε εικόνα είναι επί της ουσίας ένα διάνυσμα 784 τιμών, με άλλα λόγια έχει 784 διαστάσεις (features). Για το λόγο αυτό, η διαδικασία της εκπαίδευσης (fit) του classifier είναι χρονοβόρα όπως θα διαπιστώσετε από το αποτέλεσμα της εργασίας αυτής: SVM training over all features took 167.32604837417603 seconds SVM over all features has an accuracy score of 0.911666666667 Εργασία 5c Στην τρίτη εργασία, θα χρησιμοποιήσετε τον αλγόριθμο PCA για να μειώσετε τις διαστάσεις της κάθε εικόνας και στα 2 datasets (training και testing), και με το νέο dataset (με 100 components) θα εκπαιδεύσετε ξανά ένα SVM classifier. Μπορείτε να δείτε ότι η χρήση της τεχνικής μείωσης διαστάσεων επιτυγχάνει μειωμένο χρόνο εκπαίδευσης χωρίς σημαντική απώλεια ακρίβειας (accuracy score). PCA and transformation took 11.292430400848389 seconds SVM training over top-100 components took 142.57797169685364 seconds SVM over top-100 components has an accuracy score of 0.907238095238 Εργασία 5d Εδώ, θα δούμε πως η μεταβολή των components στην τεχνική PCA μπορεί να επηρεάσει το χρόνο και την ακρίβεια των μοντέλων πρόγνωσης. Η έξοδος της εργασίας αυτής είναι ο πιο κάτω πίνακας. Num Components PCA Time Training Time Total Time Accuracy 784 31.785158 443.350575 475.135733 0.911524 200 23.676838 218.260815 241.937653 0.911000 190 22.124929 212.786750 234.911679 0.911000 180 21.283730 207.178329 228.462059 0.911762 170 20.855804 197.996282 218.852086 0.910857 160 17.915122 189.084661 206.999782 0.911667 150 17.366191 183.437589 200.803780 0.910095 140 15.744201 178.673916 194.418117 0.910143 130 14.515578 199.711884 214.227462 0.909810 120 16.427798 195.608112 212.035910 0.909238 110 15.504960 189.624730 205.129689 0.907190 100 14.315012 187.250707 201.565719 0.907476 90 14.402588 175.977852 190.380440 0.904667

80 12.045852 167.882744 179.928596 0.903571 70 16.472852 160.692686 177.165537 0.900048 60 15.947876 144.962620 160.910495 0.897714 50 12.340112 134.537324 146.877436 0.893714 40 11.286177 124.034420 135.320598 0.886714 30 9.396465 109.452884 118.849349 0.874333 20 7.328102 91.958532 99.286634 0.854952 10 6.112550 89.337358 95.449908 0.769857 5 6.558908 75.785263 82.344171 0.623476 4 4.059874 73.776627 77.836501 0.550095 3 4.565373 77.769283 82.334656 0.441619 2 3.738748 74.041336 77.780083 0.409095 1 4.228009 82.154152 86.382161 0.290762 Εργασία 5e Ένας τρόπος να καθορίσουμε τον καλύτερο αριθμό των components είναι να το θέσουμε στη χαμηλότερη τιμή τέτοια ώστε να εξηγεί 95% της διακύμανσης (variance). Στην τελευταία εργασία, θα υπολογίσετε και θα απεικονίσετε το ποσοστό της διακύμανσης που εξηγεί η επιλογή των 100 πρώτων συνιστωσών που υπολογίζει η τεχνική PCA. Total variance explained with 100 components is 0.914671435638 Οδηγίες Υποβολής Θα υποβάλετε ένα αρχείο username.zip (βάλτε το δικό σας username) που να περιέχει μόνο 2 αρχεία: (α) το αρχείο username.py με συμπληρωμένο τον κώδικά σας και (β) ένα αρχείο username.doc που να περιέχει screenshots και άλλα αποτελέσματα από την εκτέλεση της κάθε εργασίας. Στο πάνω μέρος κάθε αρχείου τοποθετήστε το όνομά σας. Η εργασία είναι ατομική και η αντιγραφή απαγορεύεται αυστηρά. Η βαθμολόγηση της εργασίας αυτής θα ακολουθήσει την πιο κάτω λογική: Σωστή υλοποίηση κώδικα (70%) Παρουσίαση αποτελεσμάτων: 30% Η υποβολή του αρχείου zip να γίνει μέσω του Moodle. Παρακαλώ υποβάλετε ΜΟΝΟ ΕΝΑ zip file. Καλή Επιτυχία!