Genießen Sie maschinelles Lernen mit Mahout auf Hadoop

"Mahout" ist ein Hindi-Begriff für eine Person, die einen Elefanten reitet. Der Elefant ist in diesem Fall Hadoop - und Mahout ist eines der vielen Projekte, die auf Hadoop sitzen können, obwohl Sie MapReduce nicht immer benötigen, um es auszuführen.

Mahout legt mächtige mathematische Werkzeuge in die Hände der sterblichen Entwickler, die die InterWebs schreiben. Es handelt sich um ein Paket von Implementierungen der beliebtesten und wichtigsten Algorithmen für maschinelles Lernen, wobei die meisten Implementierungen speziell für die Verwendung von Hadoop entwickelt wurden, um eine skalierbare Verarbeitung großer Datenmengen zu ermöglichen. Einige Algorithmen sind aufgrund der Art des Algorithmus nur in einer nicht parallelisierbaren "seriellen" Form verfügbar, aber alle können HDFS für den bequemen Zugriff auf Daten in Ihrer Hadoop-Verarbeitungspipeline nutzen.

[Wissen Sie das jetzt über Hadoop | Arbeiten Sie intelligenter und nicht härter - laden Sie den Developers 'Survival Guide herunter, um alle Tipps und Trends zu erhalten, die Programmierer wissen müssen. | Entdecken Sie mit dem Newsletter Technology: Applications, was in Geschäftsanwendungen neu ist. ]]

Maschinelles Lernen ist wahrscheinlich die praktischste Untergruppe der künstlichen Intelligenz (KI), die sich auf probabilistische und statistische Lerntechniken konzentriert. Für alle KI-Freaks sind hier einige der in Mahout enthaltenen Algorithmen für maschinelles Lernen aufgeführt: K-Mittel-Clustering, Fuzzy-K-Mittel-Clustering, K-Mittelwerte, latente Dirichlet-Zuordnung, Singularwertzerlegung, logistische Regression, naive Bayes und Zufallszahlen Wälder. Mahout bietet auch übergeordnete Abstraktionen zum Generieren von "Empfehlungen" (à la beliebte E-Commerce-Websites oder soziale Netzwerke).

Ich weiß, wenn jemand anfängt, über maschinelles Lernen, KI und Tanimoto-Koeffizienten zu sprechen, machen Sie wahrscheinlich Popcorn und machen es besser, oder? Ich auch nicht. Seltsamerweise verfügt Mahout trotz der Komplexität der Mathematik über eine benutzerfreundliche API. Hier ist ein Vorgeschmack:

//load our datafile somehow

DataModel model = new FileDataModel(new File("data.txt"));

ItemSimilarity sim = new LogLikelihoodSimilarity(model);

GenericItemBasedRecommender r = new GenericItemBasedRecommender(model, sim);

LongPrimitiveIterator items = dm.getItemIDs();

while(items.hasNext()) {

long itemId = items.nextLong();

List recommendations = r.mostSimilarItems(itemId, 10);

//do something with these recommendations

}

Was dieser kleine Snip tun würde, ist eine Datendatei zu laden, durch die Elemente zu fluchen und dann 10 empfohlene Elemente basierend auf ihrer Ähnlichkeit zu erhalten. Dies ist eine häufige E-Commerce-Aufgabe. Nur weil zwei Elemente ähnlich sind, heißt das nicht, dass ich beide möchte. In vielen Fällen möchte ich wahrscheinlich nicht zwei ähnliche Artikel kaufen. Ich meine, ich habe kürzlich ein Fahrrad gekauft - ich möchte nicht das ähnlichste Produkt, das ein anderes Fahrrad wäre. Andere Benutzer, die Fahrräder gekauft haben, haben jedoch auch Reifenpumpen gekauft, sodass Mahout auch benutzerbasierte Empfehlungen anbietet.

Beide Beispiele sind sehr einfache Empfehlungen, und Mahout bietet fortgeschrittenere Empfehlungen, die mehr als nur einige Faktoren berücksichtigen und den Geschmack der Benutzer mit den Produktmerkmalen in Einklang bringen können. Keines davon erfordert fortgeschrittenes verteiltes Rechnen, aber Mahout verfügt über andere Algorithmen, die dies tun.

Über Empfehlungen hinaus

Mahout ist weit mehr als eine ausgefallene E-Commerce-API. Tatsächlich machen andere Algorithmen Vorhersagen und Klassifizierungen (wie die versteckten Markov-Modelle, die den größten Teil der Sprach- und Spracherkennung im Internet unterstützen). Es kann Ihnen sogar helfen, Cluster zu finden oder vielmehr Dinge wie Zellen ... von Menschen oder etwas zu gruppieren, damit Sie sie ... Geschenkkörbe an eine einzige Adresse senden können.

Natürlich steckt der Teufel im Detail und ich habe den wirklich wichtigen Teil beschönigt, nämlich die allererste Zeile:

DataModel model = new FileDataModel(new File("data.txt"));

Hey, wenn Sie ein paar Mathematikfreaks dazu bringen könnten, die ganze Arbeit zu erledigen und den gesamten Rechenaufwand auf etwa 10 Zeilen zu reduzieren, aus denen der Algorithmus besteht, wären wir alle arbeitslos. Wie kamen diese Daten jedoch in das Format, das wir für die Empfehlungen benötigten? In der Lage zu sein, die Implementierung dieses Algorithmus zu entwerfen, ist der Grund, warum Entwickler das große Geld verdienen, und selbst wenn Mahout Hadoop nicht benötigt, um viele seiner Algorithmen für maschinelles Lernen zu implementieren, benötigen Sie möglicherweise Hadoop, um die Daten einfach in die drei Spalten zu setzen Empfehlung erforderlich.

Mahout ist eine großartige Möglichkeit, eine Reihe von Funktionen zu nutzen, von Empfehlungs-Engines über die Mustererkennung bis hin zum Data Mining. Sobald wir als Branche mit dem großen, fetten Hadoop-Einsatz fertig sind, wird das Interesse an maschinellem Lernen und möglicherweise an KI im Allgemeinen explodieren, wie ein aufschlussreicher Kommentator meines Hadoop-Artikels feststellte. Mahout wird da sein, um zu helfen.

Dieser Artikel "Viel Spaß beim maschinellen Lernen mit Mahout auf Hadoop" wurde ursprünglich auf .com veröffentlicht. Bleiben Sie über die neuesten Nachrichten in der Anwendungsentwicklung auf dem Laufenden und lesen Sie mehr über Andrew Olivers Strategic Developer-Blog auf .com. Folgen Sie .com auf Twitter, um die neuesten Nachrichten zur Geschäftstechnologie zu erhalten.