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

Σχετικά έγγραφα
Τεχνικές Εξόρυξης Δεδομένων

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

Προγραμματισμός Υπολογιστών & Εφαρμογές Python. Κ.Π. Γιαλούρης

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ «ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ»

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

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ Εαρινό Εξάμηνο

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

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

Αποθήκες και Εξόρυξη Δεδομένων

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Πεδί α

ΠΛΗΡΟΦΟΡΙΚΗ Ι Εργαστήριο 1 MATLAB ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στο MATLAB και στο Octave

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

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

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

ΠΕΚ ΤΡΙΠΟΛΗΣ ΕΠΙΜΟΡΦΩΣΗ ΕΚΠ/ΚΩΝ ΠΕ19,20 ΗΜ/ΝΙΑ ΣΧΕΔΙΟ ΜΑΘΗΜΑΤΟΣ

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

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός

ΘΕΜΑ Α ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ231: ομές εδομένων και Αλγόριθμοι

Γενικές εξετάσεις 2014 Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον Τεχνολογική Κατεύθυνση

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ομή Επανάληψης

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

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

8.4. Δραστηριότητες - ασκήσεις

Μελέτη και Υλοποίηση Αλγορίθμων για Βιολογικές Εφαρμογές σε MapReduce Περιβάλλον

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

Π Τ Υ Χ Ι Α Κ Η Ε Ρ Γ Α Σ Ι Α

Δίκτυα Υπολογιστών Εργαστήρια

Παίζοντας Τόμπολα. Ημερομηνία Ανάρτησης: 16/03/2017 Ημερομηνία Παράδοσης: 30/03/2017, 23:59

ΕΡΓΑΣΙΑ. (στο µάθηµα: Τεχνολογίες Εφαρµογών ιαδικτύου του Η εξαµήνου σπουδών του Τµήµατος Πληροφορικής & Τηλ/νιών)

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

Φάσμα προπαρασκευή για Α.Ε.Ι. & Τ.Ε.Ι.

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

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

1. Δεν μπορεί να γίνει κλήση μίας διαδικασίας μέσα από μία συνάρτηση.

ΕΡΓΑΣΙΑ 1 Ημερομηνία Ανάρτησης: 02/02/2017 Ημερομηνία Παράδοσης: 16/02/2017, 09:00 π.μ. Στόχος Ορισμός

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 1 ΛΥΣΕΙΣ Ανάλυση Πολυπλοκότητας

Microsoft PowerPoint 2010 Πανεπιστήμιο Κύπρου

Παίζοντας με τα νομίσματα (Ευρώ) 2. Παρουσίαση των εφαρμογών του λογισμικού

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

Ανακάλυψη κανόνων συσχέτισης από εκπαιδευτικά δεδομένα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 3 ο

Στοίβες με Δυναμική Δέσμευση Μνήμης

Βασικές Έννοιες Αλγορίθμων. Βασικές Εντολές Αλγορίθμων (Κεφ. 2ο Παρ. 2.4)

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

Άσκηση 3 (ανακοινώθηκε στις 14 Μαΐου 2018, προθεσμία παράδοσης: 8 Ιουνίου 2018, 12 τα μεσάνυχτα).

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

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Γ ΤΑΞΗ

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Γ ΤΑΞΗ

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ

MapReduce Εισαγωγή. MapReduce. ηµήτρης Λεβεντέας

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

Η Διαδικασία Σχεδιασμού Συστημάτων

β. Ποιοι λόγοι θα μας οδηγούσαν στο να αναθέσουμε την επίλυση προβλημάτων στον υπολογιστή; (μονάδες 4) (Μονάδες 6)

Μάθημα 5: Χαρακτηριστικά της Κ.Μ.Ε.

EPL451: Data Mining on the Web Lab 1

EPL451: Data Mining on the Web Lab 1

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

Κατανεμημένα Συστήματα

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

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

Εργαστήριο Τεχνολογίας Πολυμέσων & Γραφικών, Τ.Ε.Π Π.Μ, Μάθημα: Γραφικά με Η/Υ

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος

Διάλεξη 14: Δέντρα IV B Δένδρα. Διδάσκων: Παναγιώτης Ανδρέου

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τµήµα Πληροφορικής ΕΠΛ 646 Προχωρηµένα Θέµατα Βάσεων Δεδοµένων

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ

Αποθήκες Δεδομένων και Εξόρυξη Δεδομένων:

ΠΡΟΧΩΡΗΜΕΝΑ ΘΕΜΑΤΑ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ Ακ. έτος , 9ο Εξάμηνο ΗΜ&ΜΥ Ν. Κοζύρης Εξαμηνιαία Εργασία. Εισαγωγή στο MapReduce και στις βάσεις NoSQL

Α1. Στον προγραµµατισµό χρησιµοποιούνται δοµές δεδοµένων. 1. Τι είναι δυναµική δοµή δεδοµένων; Μονάδες 3 2. Τι είναι στατική δοµή δεδοµένων;

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Γ ΗΜΕΡΗΣΙΩΝ

ΗΜΥ211 Εργαστήριο Ψηφιακών Συστημάτων

Υλοποίηση κατασκευής δέντρου επιθεμάτων σε Hadoop MapReduce

ΗΜΥ 213. Εργαστήριο Οργάνωσης Η.Y. και Μικροεπεξεργαστών. Ασκήσεις: week3 και week4. Διδάσκων: Δρ. Γιώργος Ζάγγουλος

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

ΘΕΜΑΤΑ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΕΞΕΤΑΣΕΩΝ 2014

ΑΣΚΗΣΗ. Δημιουργία Ευρετηρίων Συλλογής Κειμένων

Data mining Εξόρυξη εδοµένων. o Association rules mining o Classification o Clustering o Text Mining o Web Mining

Μ Ε Τ Ρ Α Δ Ι Α Σ Π Ο Ρ Α Σ.

Σύστημα Αναγνώρισης/Αντιστοιχίας Μαθημάτων. Εγχειρίδιο Χρήσης Φοιτητές

Εισαγωγή ΘΕΜΑ 4ο Μονάδες 2 Μονάδες 2 Μονάδες 4 Μονάδες 7 Μονάδες 5 Είσοδοι: Έξοδοι: Ανάλυση ερωτημάτων:

Διάγραμμα Ροής. Σελίδα 1 από 10

ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στην Python και στο IDLE

Προγραμματιστικό Περιβάλλον

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 1 ΛΥΣΕΙΣ Ανάλυση Πολυπλοκότητας

Προαπαιτούμενες Ρυθμίσεις: Για την σωστή εκτύπωση των προσφορών απαιτούνται οι εξής ρυθμίσεις στο φυλλομετρητή (browser) που χρησιμοποιείτε:

Εικόνα 1: Κριτήρια αναζήτησης προϋπολογισμών

Παράδειγμα 2. Λύση & Επεξηγήσεις. Τέλος_επανάληψης Εμφάνισε "Ναι" Τέλος Α2

ΟΜΟΣΠΟΝΔΙΑ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑΔΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2019 Β ΦΑΣΗ Γ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ

Εργαστηριακές Ασκήσεις Σελίδα 1

Σύστημα Αναγνώρισης/Αντιστοιχίας Μαθημάτων. Εγχειρίδιο Χρήσης - Φοιτητές

Οικονοµικό Πανεπιστήµιο Αθηνών. Τµήµα Πληροφορικής. Φθινοπωρινό Εξάµηνο Δοµές Δεδοµένων - Εργασία 2. Διδάσκων: E. Μαρκάκης

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ομή Επανάληψης

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Γ ΗΜΕΡΗΣΙΩΝ

Transcript:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής ΕΠΛ 451 Εξόρυξη Δεδομένων στον Παγκόσμιο Ιστό I. Στόχος ΑΣΚΗΣΗ 1 Ανάλυση συσχετίσεων ανάμεσα σε προϊόντα Διδάσκων: Γιώργος Πάλλης Υπεύθυνος Εργασίας: Παύλος Αντωνίου Ημερομηνία Ανάθεσης: Τετάρτη 01/02/17 Ημερομηνία Παράδοσης: Τετάρτη 22/02/17 και ώρα 12:00 (21 μέρες) (η λύση να υποβληθεί σε zip μέσω του Moodle) http://www.cs.ucy.ac.cy/courses/epl451 Ο στόχος της άσκησης είναι η εξοικείωση με (α) το κατανεμημένο προγραμματιστικό μοντέλο MapReduce, (β) τα συχνά σύνολα αντικειμένων ή στοιχειοσύνολα (frequent itemsets) και (γ) τους κανόνες συσχετίσεων (association rules). Προς την κατεύθυνση αυτή, θα χρησιμοποιήσουμε το Hadoop, ένα δημοφιλές ανοικτού κώδικα εργαλείο που υλοποιεί το μοντέλο MapReduce. II. Περιγραφή Στην άσκηση αυτή, θα δημιουργήσουμε Hadoop job(s) για να επεξεργαστούμε τις αγορές που κάνουν οι πελάτες της υπεραγοράς «Το ευφυές καλάθι». Θα επεξεργαστούμε το καλάθι αγορών για πάνω από εννιά (9) χιλιάδες πελάτες και θα προσπαθήσουμε να αναλύσουμε τις συσχετίσεις ανάμεσα στα προϊόντα που αγοράζουν. Υπάρχουν τρεις (3) διαφορετικές φάσεις για την υλοποίηση της άσκησης αυτής, δύο (2) φάσεις με χρήση της λογικής MapReduce και μια φάση παρουσίασης αποτελεσμάτων. Στη φάση 1 θα χρησιμοποιήσουμε τον αλγόριθμο Apriori για να βρούμε τα συχνά σύνολα αντικειμένων. Στη φάση 2 θα χρησιμοποιήσουμε τα συχνά σύνολα αντικειμένων από τη Φάση 1 για να βρούμε τους κανόνες συσχέτισης στη βάση της εμπιστοσύνης (confidence). Τέλος, στη Φάση 3 θα παρουσιάσουμε τα αποτελέσματα στο χρήστη. Φάση 1: Εύρεση συχνών συνόλων αντικειμένων (frequent itemsets) με χρήση του αλγορίθμου Apriori Ο στόχος της πρώτης φάσης είναι να βρούμε όλα τα συχνά σύνολα αντικειμένων από όλες τις επισκέψεις που έκαναν οι πελάτες στην υπεραγορά. Για το λόγο αυτό, για κάθε επίσκεψη πελάτη στην υπεραγορά θα βρούμε όλους τους συνδυασμούς προϊόντων που υπάρχουν στο καλάθι του και μετά θα αθροίσουμε όλους τους συνδυασμούς προϊόντων και να βρούμε πόσες φορές εμφανίζεται ο κάθε συνδυασμός (support value). Αυτό το Hadoop job θα διαβάζει δεδομένα από ένα αρχείο που περιέχει σε κάθε γραμμή ένα σύνολο προϊόντων (χωρισμένα με κόμμα) που αγόρασε σε μια επίσκεψή του στην υπεραγορά κάθε πελάτης.

Κάθε γραμμή στο αρχείο αφορά μια επίσκεψη πελάτη στην υπεραγορά κα χωρίζεται με μια αλλαγή γραμμής (new line). Το αρχείο με όνομα supermarket_list.csv είναι το πλήρες αρχείο προϊόντων που θα χρησιμοποιηθεί για ανάγνωση δεδομένων στη Φάση 1. Το αρχείο μπορείτε να το κατεβάσετε από την ιστοσελίδα του μαθήματος και πρέπει να το αντιγράψετε στο σύστημα αρχείων HDFS, μέσα στον κατάλογο /user/csdeptucy/input. Για παράδειγμα, μια γραμμή του αρχείου μπορεί να είναι: citrus fruit,semi-finished bread,margarine,ready soups Συνίσταται όμως, όπως ξεκινήσετε την επεξεργασία δεδομένων με ένα μικρότερο αρχείο δεδομένων όπως το αρχείο supermarket_list_small.csv το οποίο περιέχει τα πιο κάτω δεδομένα. citrus fruit,semi-finished bread,margarine,ready soups tropical fruit,yogurt,coffee,cream cheese whole milk coffee,pip fruit,yogurt,cream cheese,meat spreads whole milk,butter,yogurt,rice Κάθε γραμμή του αρχείου θα εισάγεται για επεξεργασία σε μέθοδο τύπου mapper, η οποία θα χωρίζει τα προϊόντα (tokenize), θα αφαιρεί τα όποια κενά (spaces) και θα παράγει όλους τους συνδυασμούς προϊόντων που προκύπτουν από τα προϊόντα της γραμμής και θα δημιουργεί ζεύγη της μορφής <[λίστα προϊόντων], συχνότητα εμφάνισης ή support> όπου η συχνότητα εμφάνισης (ή support) θα είναι ίση με 1. Η μέθοδος τύπου reducer θα λαμβάνει τα ζεύγη αυτά και θα υπολογίζει το άθροισμα της συχνότητας εμφάνισης για κάθε ζεύγος. Η διαδικασία map/reduce φαίνεται στο πιο κάτω σχήμα. Κατά τη φάση του reducer, όσοι συνδυασμοί προϊόντων έχουν συνολική συχνότητα εμφάνισης (support) κάτω από το support threshold (θέστε το ίσο με 2) θα απορρίπτονται και οι υπόλοιποι θα αποθηκεύονται στο HDFS στον κατάλογο /user/csdeptucy/output1 στη μορφή <[λίστα προϊόντων], support>. Το αρχείο θα περιέχει ένα ζεύγος <λίστα, support> ανά γραμμή. Για τα δεδομένα του αρχείου supermarket_list_small.csv, η έξοδος της Φάσης 1 με support_threshold=2 θα είναι:

[coffee,creamcheese,yogurt] 2 [coffee,creamcheese] 2 [coffee,yogurt] 2 [coffee] 2 [creamcheese,yogurt] 2 [creamcheese] 2 [wholemilk] 2 [yogurt] 3 Φάση 2: Υπολογισμός Μετρικής Εμπιστοσύνης των Κανόνων Συσχέτισης (confidence metric evaluation) Ο στόχος της Φάσης 2 είναι να μετρήσουμε την εμπιστοσύνη (confidence) των κανόνων συσχέτισης μεταξύ των προϊόντων που προέκυψαν από τη Φάση 1. Για παράδειγμα, αν πιάσουμε την πρώτη γραμμή εξόδου της Φάσης 1: [coffee,creamcheese,yogurt] 2 οι κανόνες συσχέτισης (association rules) που προκύπτουν είναι: Rule 1: {coffee,creamcheese} -> yogurt Rule 2: {coffee,yogurt} -> creamcheese Rule 3: {creamcheese,yogurt} -> coffee και θα πρέπει να υπολογίσουμε την εμπιστοσύνη του κάθε κανόνα συσχέτισης. Αυτό που μπορείτε να παρατηρήσετε είναι ότι για να παράξουμε τους 3 κανόνες, αφαιρέσαμε από την αρχική λίστα διαδοχικά ένα προϊόν κάθε φορά. Ο υπολογισμός της εμπιστοσύνης για το Rule 1 (πιο πάνω) δίνεται από την Εξίσωση 1: confidence(rule 1) = support([coffee, creamcheese, yogurt]) support([coffee, creamcheese]) Σε πιο γενική μορφή, το confidence για το rule X -> Y δίδεται από την Εξίσωση 2: confidence(x Y) = support(x U Y) support(x) Από την πιο πάνω ανάλυση, είναι εμφανές ότι υπάρχουν 2 βήματα που πρέπει να γίνουν, το ένα μετά το άλλο. Το πρώτο βήμα είναι η εξαγωγή των κανόνων και, όταν αυτό ολοκληρωθεί, το δεύτερο βήμα είναι ο υπολογισμός της εμπιστοσύνης. Και τα 2 βήματα μπορούν να τρέξουν κατανεμημένα. Η μέθοδος τύπου mapper θα λαμβάνει κάθε γραμμή εξόδου της Φάσης 1 και θα παράγει τους κανόνες συσχέτισης. Η μέθοδος τύπου reducer θα υπολογίζει το confidence για τον κάθε κανόνα. Για τον υπολογισμό του confidence, απαιτούνται δύο τιμές support. Για παράδειγμα, στην πιο πάνω Εξίσωση 1 απαιτείται η τιμή του support([coffee,creamcheese,yogurt]) και η τιμή του support([coffee,creamcheese]). Οπότε κάθε ζεύγος που θα παράγει στην έξοδο ο mapper, θα πρέπει να έχει τις δύο αυτές τιμές. Μια προσέγγιση για τον mapper στο πιο πάνω θέμα είναι η εξής. Λαμβάνοντας τη γραμμή:

[coffee,creamcheese,yogurt] 2 να παράγει όλους τους κανόνες που προκύπτουν μαζί με τις 2 τιμές support (για τον καθένα) που θα απαιτηθούν για να υπολογιστεί το confidence για τον κάθε κανόνα. Δηλαδή, η έξοδος του mapper για την πιο πάνω γραμμή να ήταν 3 ζεύγη <key,value> που αντιστοιχούν σε 3 κανόνες: key value [coffee,creamcheese] [coffee,yogurt] [creamcheese,yogurt] Η πρώτη γραμμή (με διακεκομμένες γραμμές) παραπέμπει στον κανόνα {coffee,creamcheese} -> yogurt διότι στο πεδίο value υπάρχει στη λίστα επιπλέον το yogurt, και επίσης υπάρχει η τιμή του support([coffee,creamcheese,yogurt]) που είναι το 2. Το μόνο που λείπει για να υπολογιστεί το confidence για τον εν λόγω κανόνα είναι η τιμή του support([coffee,creamcheese]) το οποίο ο mapper δεν μπορεί να το παράξει από την γραμμή που έλαβε. Αυτό θα το συναντήσει πιο μετά ο mapper (δες 2 η γραμμή της εξόδου της Φάσης 1). Οπότε ο mapper, για την κάθε γραμμή που λαμβάνει, πρέπει, εκτός από τη δημιουργία ενός ζεύγους <key,value> ανά κανόνα, να δημιουργεί επιπλέον και ένα ζεύγος που να περιέχει το support της αρχικής λίστας. Για παράδειγμα, ο mapper στο εν λόγω παράδειγμα, εκτός από τα 3 πιο πάνω ζεύγη, θα έπρεπε να παράξει και το ζεύγος: [coffee,creamcheese,yogurt] 0:2 το οποίο σαν value έχει το 0 (για να ξεχωρίζει από τα άλλα ζεύγη) και το 2 που είναι το support για τη λίστα. Ο reducer θα λαμβάνει την έξοδο του mapper ομαδοποιημένη ως προς το κλειδί και θα υπολογίζει τα confidence values για τον κάθε κανόνα. Για παράδειγμα, η ομαδοποίηση ως προς το κλειδί για το κλειδί [coffee,creamcheese] θα φέρει στον reducer το ζεύγος: [coffee,creamcheese] ΛΙΣΤΑ(0:2, ) η οποία έχει ότι χρειάζεται για να υπολογιστεί ο κανόνας: {coffee,creamcheese} -> yogurt Για το αρχείο supermarket_list_small.csv η έξοδος της Φάσης 2 θα είναι: {coffee,creamcheese} -> yogurt 1.0 {coffee,yogurt} -> creamcheese 1.0 {coffee} -> creamcheese 1.0 {coffee} -> yogurt 1.0 {creamcheese,yogurt} -> coffee 1.0 {creamcheese} -> coffee 1.0 {creamcheese} -> yogurt 1.0 {yogurt} -> creamcheese 0.6666667 {yogurt} -> coffee 0.6666667

Η έξοδος της Φάσης 2 θα πρέπει να αποθηκευτεί στο HDFS στον κατάλογο /user/csdeptucy/output2 στη μορφή <association rule, confidence value> όπως φαίνεται ακριβώς πιο πάνω. Το αρχείο θα περιέχει ένα ζεύγος ανά γραμμή. Φάση 3: Παρουσίαση αποτελεσμάτων Η Φάση 3 δεν είναι φάση MapReduce. Αντιθέτως, περιλαμβάνει ανάγνωση των αποτελεσμάτων της Φάσης 2 και εκτύπωσή τους στην οθόνη. Στην ουσία θα διαβάζονται τα δεδομένα από το αρχείο εξόδου της δεύτερης φάσης που βρίσκεται στο HDFS στον κατάλογο /user/csdeptucy/output2 και θα τα εκτυπώνονται στην οθόνη. III. Οδηγίες Υποβολής Μπορείτε να οργανώσετε τον κώδικά σας όπως θέλετε. Συνίσταται ο διαχωρισμός των κλάσεων σε πολλαπλά αρχεία. Για να υποβάλετε την άσκησή σας, κάντε zip ολόκληρο τον κατάλογο του eclipse project σε ένα zip file. Στο πάνω μέρος κάθε αρχείου τοποθετήστε το όνομά σας, μια σύντομη περιγραφή της λειτουργικότητας που υλοποιήσατε μέσα στο αρχείο, και οποιεσδήποτε οδηγίες για μεταγλώττιση και εκτέλεση (αν χρειάζεται). Ο κώδικάς σας πρέπει να είναι καλά τεκμηριωμένος (σχόλια), ειδικά στις κύριες μεθόδους. Αν ο κώδικάς σας αποτύχει στη μεταγλώττιση θα υπάρχει αρχική ποινή αφαίρεσης 50% της βαθμολογίας πέραν από οποιαδήποτε άλλη αφαίρεση βαθμών. Η εργασία είναι ατομική και η αντιγραφή απαγορεύεται αυστηρά. Οποιαδήποτε υπόνοια αντιγραφής που εκδηλώνεται με μεγάλη ομοιότητα κώδικα θα οδηγεί σε μηδενισμό της εργασίας. Η βαθμολόγηση της εργασίας αυτής θα ακολουθήσει την πιο κάτω λογική: Τεκμηρίωση κώδικα (documentation): 10% Σχεδίαση κώδικα (αρθρωτή σχεδίαση/modular design): 10% Λειτουργικότητα: 80% Η υποβολή του αρχείου zip να γίνει μέσω του Moodle. Παρακαλώ όπως υποβάλετε ΜΟΝΟ ΕΝΑ zip file. Καλή Επιτυχία!