Προγραμματισμός

Απολαύστε μηχανική εκμάθηση με τον Mahout στο Hadoop

Το "Mahout" είναι ένας όρος Χίντι για ένα άτομο που οδηγεί έναν ελέφαντα. Ο ελέφαντας, σε αυτήν την περίπτωση, είναι Hadoop - και το Mahout είναι ένα από τα πολλά έργα που μπορούν να καθίσουν στην κορυφή του Hadoop, αν και δεν χρειάζεστε πάντα το MapReduce για να το εκτελέσετε.

Ο Mahout θέτει ισχυρά μαθηματικά εργαλεία στα χέρια των απλών θνητών προγραμματιστών που γράφουν το InterWebs. Είναι ένα πακέτο υλοποιήσεων των πιο δημοφιλών και σημαντικών αλγορίθμων μηχανικής μάθησης, με την πλειονότητα των εφαρμογών που έχουν σχεδιαστεί ειδικά για να χρησιμοποιούν το Hadoop για να επιτρέψουν την επεκτάσιμη επεξεργασία τεράστιων συνόλων δεδομένων. Ορισμένοι αλγόριθμοι είναι διαθέσιμοι μόνο σε μια μη παραλληλισμένη "σειριακή" μορφή λόγω της φύσης του αλγορίθμου, αλλά όλοι μπορούν να επωφεληθούν από το HDFS για εύκολη πρόσβαση σε δεδομένα στον αγωγό επεξεργασίας Hadoop.

[Γνωρίστε το τώρα για το Hadoop | Εργαστείτε πιο έξυπνα, όχι πιο δύσκολα - κατεβάστε τον Οδηγό επιβίωσης των προγραμματιστών για όλες τις συμβουλές και τις τάσεις που πρέπει να γνωρίζουν οι προγραμματιστές. | Ανακαλύψτε τι νέο υπάρχει στις επιχειρηματικές εφαρμογές με το ενημερωτικό δελτίο τεχνολογίας: Εφαρμογές. ]

Η μηχανική μάθηση είναι ίσως το πιο πρακτικό υποσύνολο της τεχνητής νοημοσύνης (AI), εστιάζοντας στις πιθανοτικές και στατιστικές τεχνικές μάθησης. Για όλους εσάς τους geeks AI, εδώ είναι μερικοί από τους αλγόριθμους μηχανικής μάθησης που περιλαμβάνονται στο Mahout: σύμπλεγμα K-σημαίνει, σύμπλεξη ασαφών K-μέσων, K-μέσα, λανθάνουσα κατανομή Dirichlet, αποσύνθεση μοναδικής τιμής, λογιστική παλινδρόμηση, αφελείς Bayes και τυχαίος δάση. Το Mahout διαθέτει επίσης αφαιρέσεις υψηλότερου επιπέδου για τη δημιουργία "προτάσεων" (à la δημοφιλείς ιστότοποι ηλεκτρονικού εμπορίου ή κοινωνικά δίκτυα).

Ξέρω, όταν κάποιος αρχίζει να μιλάει μηχανική εκμάθηση, συντελεστές τεχνητής νοημοσύνης και Tanimoto, πιθανότατα δημιουργείτε ποπ κορν και κερδίζετε, σωστά; Ούτε εγώ. Παραδόξως, παρά την πολυπλοκότητα των μαθηματικών, το Mahout διαθέτει ένα εύχρηστο API. Εδώ είναι μια γεύση:

// φορτώστε το αρχείο δεδομένων μας κάπως

DataModel model = νέο FileDataModel (νέο αρχείο ("data.txt"));

ItemSimilarity sim = νέο LogLikelihoodSimilarity (μοντέλο);

GenericItemBasedRecommender r = νέο GenericItemBasedRecommender (μοντέλο, sim);

LongPrimitiveIterator στοιχεία = dm.getItemIDs ();

ενώ (items.hasNext ()) {

long itemId = items.nextLong ();

Λίστα προτάσεων = r.mostSimilarItems (itemId, 10);

// κάντε κάτι με αυτές τις προτάσεις

}

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

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

Πέρα από τις συστάσεις

Το Mahout είναι κάτι πολύ περισσότερο από ένα φανταχτερό API ηλεκτρονικού εμπορίου. Στην πραγματικότητα, άλλοι αλγόριθμοι κάνουν προβλέψεις, ταξινομήσεις (όπως τα κρυφά μοντέλα Markov που τροφοδοτούν το μεγαλύτερο μέρος της ομιλίας και της αναγνώρισης γλώσσας στο Διαδίκτυο). Μπορεί ακόμη και να σας βοηθήσει να βρείτε συστάδες ή, μάλλον, να ομαδοποιήσετε πράγματα, όπως κελιά ... ανθρώπων ή κάτι τέτοιο, ώστε να μπορείτε να τα στείλετε .... καλάθια δώρων σε μία μόνο διεύθυνση.

Φυσικά, ο διάβολος βρίσκεται στις λεπτομέρειες και έχω ξεπεράσει το πολύ σημαντικό μέρος, που είναι αυτή η πρώτη γραμμή:

DataModel model = νέο FileDataModel (νέο αρχείο ("data.txt"));

Γεια σου, αν μπορούσες να κάνεις μαθηματικούς geeks για να κάνεις όλη τη δουλειά και να μειώσεις όλο τον υπολογισμό μέχρι τις 10 περίπου γραμμές που συνθέτουν τον αλγόριθμο, θα ήμασταν όλοι άνεργοι. Ωστόσο, πώς πήραν αυτά τα δεδομένα στη μορφή που χρειαζόμασταν για τις προτάσεις; Το να είναι σε θέση να σχεδιάσει την εφαρμογή αυτού του αλγορίθμου είναι ο λόγος για τον οποίο οι προγραμματιστές κάνουν τα μεγάλα κέρδη και ακόμη και αν η Mahout δεν χρειάζεται το Hadoop για να εφαρμόσει πολλούς από τους αλγόριθμους μηχανικής μάθησης, ίσως χρειαστεί το Hadoop για να βάλετε τα δεδομένα στις τρεις στήλες απαιτείται συνιστώμενος.

Το Mahout είναι ένας πολύ καλός τρόπος για να αξιοποιήσετε πολλά χαρακτηριστικά από μηχανές προτάσεων έως αναγνώριση προτύπων έως εξόρυξη δεδομένων. Μόλις ολοκληρώσουμε τη βιομηχανία με τη μεγάλη, λιπαρή Hadoop ανάπτυξη, το ενδιαφέρον για τη μηχανική μάθηση και πιθανώς το AI θα εκραγεί γενικότερα, όπως παρατήρησε ένας διορατικός σχολιαστής στο άρθρο μου Hadoop. Ο Mahout θα είναι εκεί για να βοηθήσει.

Αυτό το άρθρο, "Απολαύστε τη μηχανική εκμάθηση με τον Mahout στο Hadoop", δημοσιεύθηκε αρχικά στο .com. Ενημερωθείτε για τις τελευταίες ειδήσεις στην ανάπτυξη εφαρμογών και διαβάστε περισσότερα για το blog του στρατηγικού προγραμματιστή του Andrew Oliver στο .com. Για τα τελευταία νέα της τεχνολογίας των επιχειρήσεων, ακολουθήστε το .com στο Twitter.