Συχνή εξόρυξη συνόλων στοιχείων με χρήση του MapReduce στο Hadoop

Συχνή εξόρυξη συνόλων στοιχείων με χρήση του MapReduce στο Hadoop

September 30, 2022 0 Von admin

Αυτό το άρθρο δημοσιεύτηκε ως μέρος του Data Science Blogathon.

Εισαγωγή

Το ταξίδι κάθε λάτρη της Επιστήμης Δεδομένων περνά μέσα από ένα από τα πιο σημαντικά προβλήματα δεδομένων – Συχνό σύνολο αντικειμένων, που μερικές φορές αναφέρεται επίσης ως Εξόρυξη κανόνων σύνδεσης ή Ανάλυση Καλαθιού Αγοράς.

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

Ένα κλασικό παράδειγμα θα μπορούσε να είναι το σύστημα συστάσεων της Amazon, το οποίο υποδεικνύει τι είναι πιθανό να αγοράσει ένας χρήστης μαζί με ένα στοιχείο «Χ».

Σύστημα συστάσεων της Amazon – ένα παράδειγμα Ανάλυσης Καλαθιού Αγοράς
[ source: https://www.mageplaza.com/blog/product-recomendation-how-amazon-succeeds-with-it.html]

Σήμερα, ας προσπαθήσουμε να λύσουμε το Frequent Itemset Mining χρησιμοποιώντας τον αλγόριθμο MapReduce στο Hadoop.

Αν λοιπόν είστε ενθουσιασμένοι που θα συμμετάσχετε σε αυτό το ταξίδι, πάμε.

Πράγματα που πρέπει να συσκευάσουμε

1. Oracle VM VirtualBox:
Θα χρησιμοποιήσουμε την εικονική μηχανή VirtualBox της Oracle για την πρακτική εφαρμογή της Εξόρυξης Συχνών Συνόλων Στοιχείων.

2. Cloudera Quickstart VM:
Το Cloudera Quickstart VM είναι μια εικόνα εικονικής μηχανής με προεγκατεστημένο το Hadoop. Αυτό γίνεται για να αποφευχθεί η περιττή ταλαιπωρία της εγκατάστασης του Hadoop, καθώς μερικές φορές, τα πράγματα μπορεί να πάνε στραβά εάν δεν εγκατασταθεί σωστά.

Εντάξει, πριν ξεκινήσουμε, ας παρουσιάσουμε εν συντομία το Frequent Itemset Mining και το MapReduce.

Ο αλγόριθμος εξόρυξης συχνών συνόλων στοιχείων

Η Εξόρυξη Συχνών Συνόλων Στοιχείων, η οποία ονομάζεται επίσης «Εξόρυξη κανόνων σύνδεσης», είναι ένας αλγόριθμος που αναζητά τα συχνά αντικείμενα που αγοράζονται σε ένα σύνολο δεδομένων στοιχείων. Όπως υποδηλώνει η λέξη, κάνει ενδιαφέρουσες συσχετίσεις/εκπτώσεις σχετικά με τα αντικείμενα που είναι πιθανό να αγοραστούν μαζί.

Για παράδειγμα, πηγαίνετε στο σούπερ μάρκετ κοντά στο σπίτι σας για να αγοράσετε κάποια εμπορεύματα.

ΜΕΙΩΣΗ ΧΑΡΤΗ

Λίστα με τα ψώνια
Πηγή: https://www.pinterest.com/pin/picture-grocery-list-mobile-or-printed–412712753335867002/]

Αν αγοράσετε γάλα και ψωμί, τότε το πιθανότερο είναι να αγοράσετε και βούτυρο και τυρί. Αυτή η συσχέτιση των στοιχείων δεδομένων {γάλα + ψωμί} → {βούτυρο, τυρί} ορίζεται από ορισμένους κανόνες. Αυτές ονομάζονται συναλλαγές.

Υποστήριξη: Η υποστήριξη είναι η παράμετρος που ποσοτικοποιεί το μέγεθος του ενδιαφέροντος. Έτσι, εάν η υποστήριξη είναι 20%, τότε το 20% των συναλλαγών θα ακολουθήσει αυτόν τον κανόνα.

Εάν το Α και το Β είναι δύο διαφορετικά είδη, τότε η Υποστήριξη για το στοιχείο Β, όταν αγοράζεται το στοιχείο Α, είναι η ένωση των μετρήσεων υποστήριξης και των δύο στοιχείων.

Υποστήριξη (A → B) = Υποστήριξη_count (AUB)

Αυτοπεποίθηση: Η εμπιστοσύνη είναι η παράμετρος που μας λέει την εμπιστοσύνη/πιθανότητα των πελατών που αγόρασαν τα είδη Α και Β μαζί. Έτσι, εάν η εμπιστοσύνη είναι 40%, τότε το 40% των πελατών που αγόρασαν γάλα και ψωμί αγόρασαν επίσης βούτυρο και τυρί.

Εμπιστοσύνη(A → B) = [Support_count(A U B)] / Υποστήριξη_count(A)

Τώρα που καλύψαμε τα βασικά, ας περάσουμε στο επόμενο σημαντικό μέρος αυτού του ιστολογίου.

ΜΕΙΩΣΗ ΧΑΡΤΗ

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

Όπως υποδηλώνει το όνομα, το MapReduce αποτελείται από δύο στάδια –

1. Στάδιο χάρτη:
Στο στάδιο Χάρτης, η εργασία χαρτογράφησης επεξεργάζεται τα δεδομένα εισόδου. Αυτά τα δεδομένα εισόδου αποθηκεύονται στο σύστημα αρχείων Hadoop (HDFS). Η λειτουργία mapper βασικά «χαρτογραφεί» το αρχείο εισόδου γραμμή προς γραμμή και επεξεργάζεται μικρά κομμάτια των δεδομένων.

2. Μειώστε το στάδιο:
Το στάδιο Μείωση είναι ένας συνδυασμός ανακατεύοντας και αναγωγικός. Η έξοδος του σταδίου χάρτη γίνεται η είσοδος του σταδίου μείωσης. Η έξοδος του σταδίου Reduce είναι η τελική έξοδος που είναι αποθηκευμένη στο HDFS.

MapReduce Architecture

ΜΕΙΩΣΗ ΧΑΡΤΗ
MapReduce Architecture
[source: https://beyondcorner.com/wp-content/uploads/2017/11/Apache-Hadoop-MapReduce-Architecture.png]

Το πλαίσιο MapReduce λειτουργεί σε ζεύγος. Λαμβάνει είσοδο στο ζεύγος και παράγει την έξοδο με τη μορφή.

Μερικές κοινές ορολογίες που χρησιμοποιούνται στο MapReduce:

Φορτίο επί πληρωμή: Εφαρμογές που χρησιμοποιούν MapReduce
Χαρτογράφηση: Η συνάρτηση mapper αντιστοιχίζει τα ζεύγη εισόδου σε ένα ενδιάμεσο ζεύγος.
NameNode: Ο κόμβος που διατηρεί μεταδεδομένα όπως αρ. ενεργών συστάδων, HDFS κ.λπ.
DataNode: Ο κόμβος όπου τα δεδομένα αποθηκεύονται για επεξεργασία.
MasterNode: Ο κόμβος όπου εκτελείται το JobTracker και δέχεται εργασίες από τους πελάτες.
SlaveNode: Ο κόμβος όπου εκτελείται η πραγματική εργασία MapReduce.
JobTracker: Προγραμματίζει εργασίες και παρακολουθεί τις εργασίες που έχουν ανατεθεί στο TaskTracker.
TaskTracker: Παρακολουθεί την εργασία και αναφέρει την κατάσταση στο JobTracker.
Δουλειά: Ένα πρόγραμμα που απαιτεί την εκτέλεση του MapReduce.
Task: Μια εργασία είναι ένα κομμάτι (μικρό μέρος) μιας δουλειάς.

Hands-on: MapReduce για συχνή εξόρυξη συνόλων στοιχείων στο Hadoop

Ας λύσουμε ένα πραγματικό πρόβλημα εξόρυξης συχνών συνόλων στοιχείων χρησιμοποιώντας το MapReduce στο Hadoop.

Βήμα 1: Ανοίξτε το Cloudera Quickstart VM

Ανοίξτε το Cloudera Quickstart VM

Cloudera Quickstart VM Desktop
[source: Screenshot of Cloudera Quickstart VM installed on my local machine]

Βήμα 2: Κλωνοποιήστε το ακόλουθο αποθετήριο στον τοπικό σας υπολογιστή

www.github.com/NSTiwari/Hadoop-MapReduce-Programs

Θα βρείτε το φάκελο Frequent-Temset-Mining μαζί με κάποιους άλλους φακέλους. ο
Συχνό-Σύνολο-Εξόρυξη κατάλογος περιέχει τρία αρχεία –

  • frequency_itemset_data.txt – Το αρχείο δεδομένων κειμένου που περιέχει συναλλαγές (εισαγωγή).
  • frequency_itemset_mapper.py – Το αρχείο αντιστοίχισης για Συχνή Εξόρυξη Συνόλων Στοιχείων.
  • frequency_itemset_reducer.py – Το αρχείο μειωτήρα για την Εξόρυξη συχνών συνόλων στοιχείων.
έξοδος κώδικα
frequency_itemset_data.txt – Εισαγωγή αρχείου συναλλαγών
[source: Screenshot of my local machine]

Αντιγράψτε αυτά τα τρία αρχεία μέσα /home/Cloudera Ευρετήριο. Μόλις γίνει, επιβεβαιώστε την παρουσία τους.

ls

Ανοίξτε το Cloudera Quickstart VM
Οθόνη τερματικού
[ Screenshot of Cloudera Quickstart VM on my local machine]

Υπάρχουν και τα τρία αρχεία.

Βήμα 3: Δοκιμάστε το πρόγραμμα MapReduce τοπικά

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

Απλώς εκτελέστε το αρχείο Mapper Python στα δεδομένα εισόδου.

γάτα frequency_itemset_data.txt | python frequency_itemset_mapper.py | είδος

Δοκιμάστε το πρόγραμμα MapReduce τοπικά
Terminal Screen – Πρόγραμμα Mapper
[source: Screenshot of Cloudera Quickstart VM on my local machine]

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

Μέχρι εδώ καλά. Τώρα ας εκτελέσουμε το πλήρες πρόγραμμα MapReduce.

γάτα frequency_itemset_data.txt | python frequency_itemset_mapper.py | ταξινόμηση | python frequency_itemset_reducer.py

Δοκιμάστε το πρόγραμμα MapReduce τοπικά

Το πρόγραμμα MapReduce εκτελείται τοπικά
[source: Screenshot of Cloudera Quickstart VM on my local machine]

Και πάμε. Αυτά είναι το ζευγάρι των αντικειμένων που αγοράζονται συχνά για ελάχιστη υποστήριξη

του 2. Τα αποτελέσματα που προέκυψαν είναι τα αναμενόμενα. Τώρα μπορούμε να το εκτελέσουμε στο Hadoop.

Βήμα 4: Δημιουργήστε έναν κατάλογο στο HDFS

sudo -u hdfs hadoop fs -mkdir /frequent_itemset
hdfs dfs -ls /

Δημιουργήθηκε ο κατάλογος HDFS
Δημιουργήθηκε ο κατάλογος HDFS
[Image source: Screenshot of Cloudera Quickstart VM on my local machine]

Βήμα 5: Αντιγράψτε το αρχείο εισόδου στο HDFS

sudo -u hdfs hadoop fs -put /home/cloudera/frequent_itemset_data.txt /frequent_itemset
hdfs dfs -ls /frequent_itemset

Το αρχείο εισόδου αντιγράφηκε στον κατάλογο HDFS
Το αρχείο εισόδου αντιγράφηκε στον κατάλογο HDFS
[Image source: Screenshot of Cloudera Quickstart VM on my local machine]

Το αρχείο εισόδου αντιγράφηκε με επιτυχία μέσα το συχνά_στοιχείο κατάλογο στο HDFS.

Βήμα 6: Διαμορφώστε τα δικαιώματα για την εκτέλεση του MapReduce για Συχνή Εξόρυξη Συνόλων Στοιχείων στο Hadoop

Τώρα, πρέπει να παρέχουμε άδεια ανάγνωσης, εγγραφής και εκτέλεσης του προγράμματος MapReduce πριν από την εκτέλεση της εργασίας MapReduce στο Hadoop. Πρέπει επίσης να δώσουμε άδεια στον προεπιλεγμένο χρήστη (cloudera) να γράψει το αρχείο εξόδου σε HDFS.

chmod 777 frequency_itemset_mapper.py frequency_itemset_reducer.py
sudo -u hdfs hadoop fs -chown cloudera /frequent_itemset

Ανάγνωση, εγγραφή και εκτέλεση αδειών που έχουν χορηγηθεί
Ανάγνωση, εγγραφή και εκτέλεση αδειών που έχουν χορηγηθεί
[Image source: Screenshot of Cloudera Quickstart VM on my local machine]

Όλα τα απαιτούμενα δικαιώματα έχουν πλέον διαμορφωθεί. Ας εκτελέσουμε τώρα τη ροή Hadoop.

Βήμα 7: Εκτελέστε το MapReduce στο Hadoop

Εκτελέστε την ακόλουθη εντολή στο τερματικό.

hadoop -jar /home/cloudera/hadoop-streaming-2.7.3.jar
> -input /frequent_itemset/frequent_data.txt
> -output /frequent_itemset/output
> -mapper /home/cloudera/frequent_map.py
> -reducer /home/cloudera/frequent_reduce.py

Εκτελέστε το MapReduce στο Hadoop
Ξεκίνησε η ροή του MapReduce
[ source: Screenshot of Cloudera Quickstart VM on my local machine]
Εκτελέστε το MapReduce στο Hadoop
Η έξοδος αποθηκεύτηκε σε HDFS
[source: Screenshot of Cloudera Quickstart VM on my local machine]

Βήμα 8: Διαβάστε την έξοδο MapReduce

hdfs dfs -cat /frequent_itemset/output/part-00000

Και τέλος, εδώ είναι η έξοδος ολόκληρου του προγράμματος MapReduce που εκτελείται στο Hadoop.

Τελικό MapReduce έξοδο στο Hadoop
Τελικό MapReduce έξοδο στο Hadoop
[source: Screenshot of Cloudera Quickstart VM on my local machine]

Όπως μπορούμε να δούμε, ο κανόνας συσχέτισης μετά την εκτέλεση του προγράμματος MapReduce στο Hadoop για το σύνολο δεδομένων εισόδου υποδηλώνει ότι ένας πελάτης είναι πιθανό να αγοράσει:

  • Ένα πορτοκάλι αν αγόραζε ένα μήλο.
  • Βούτυρο αν αγοράζεται ψωμί.
  • Το γάλα αγοράζεται ψωμί.
  • Βούτυρο αν αγοράζεται γάλα.

συμπέρασμα

Έτσι, αυτό ολοκληρώνει το άρθρο εδώ. Για να συνοψίσουμε γρήγορα αυτό το ιστολόγιο, μάθαμε –

  • Εισαγωγή στο Frequent Itemset Mining
  • Ένα πραγματικό παράδειγμα του αλγόριθμου εξόρυξης συχνών συνόλων στοιχείων – Σύστημα Recommender της Amazon
  • Ο αλγόριθμος εξόρυξης συχνών συνόλων στοιχείων: Επεξήγηση
  • Παράμετροι του αλγόριθμου εξόρυξης συχνών συνόλων στοιχείων: Υποστήριξη και εμπιστοσύνη
  • Εισαγωγή στον αλγόριθμο MapReduce
  • Η Αρχιτεκτονική MapReduce
  • Συνήθεις ορολογίες που χρησιμοποιούνται στο MapReduce
  • Πρακτική πρακτική στη Συχνή Εξόρυξη Συνόλων Αντικειμένων χρησιμοποιώντας το MapReduce στο Hadoop.

Εάν σας άρεσε το άρθρο μου και θα θέλατε να μιλήσετε περισσότερα για θέματα ML, μη διστάσετε να συνδεθείτε μαζί μου στο my LinkedIn Προφίλ. Μέχρι την επόμενη φορά. 🙂

Τα μέσα που εμφανίζονται σε αυτό το άρθρο δεν ανήκουν στο Analytics Vidhya και χρησιμοποιούνται κατά την κρίση του συγγραφέα.