Steckbrief: Machine Learning Tools

Machine Learning und Mathematik: Apache Mahout

Pat Ferrel

© Shutterstock / Daboost (modifiziert)

Im Rahmen unseres Themen-Dossiers zum Maschinellen Lernen stellen wir interessante Projekte und Beispiele für Machine Learning vor. Heute: Machine Learning mit Apache Mahout.

Mit Apache Mahout kann man seine eigenen mathematischen Berechnungen in eine interaktiven Umgebung bringen, die tatsächlich auf Big-Data-Plattformen arbeiten kann. Dann schiebt man den exakt gleichen Code in die Applikation und deployt das Ganze. Mahout Samsara bietet eine performante und verteilte lineare Algebra- und Statistik-Engine zusammen mit einer interaktiven Shell (jetzt innerhalb von Apache Zeppelin) und einer Bibliothek, mit der man alles direkt mit der Applikation in Produktion verbinden kann. Es gibt keine Code-Übersetzungen von R oder Python zu Java, sondern nur eine integrierte Scala-basierte Mathematik-Library mit einer R-ähnlichen DSL.

Unter der Haube von Apache Mahout

Scala ist die Grundlage von dem ganzen neuen (Samsara) Code und es läuft auf Spark (neuste Version) oder Flink (Prototypen-Implementierung). Mahout verwendet eine Mischung aus geläufigen Kern-Abstraktionen als Domain Specific Language (DSL), die lose auf R basieren.  Mit R vertraute Menschen haben also einen Vorsprung. Es kommt mit einem BLAS-ähnlichen Optimizer, um den Code zu optimieren und den schnellsten Code zu finden, der DSL-Befehle ausführt. Zudem bindet es die DSL an Plattformen wie Spark oder Flink, wodurch vieles so geschrieben werden kann, dass es auf beidem läuft. Man hat trotzdem Zugriff auf die rohe API der Rechenplattform, sodass nichts verloren geht und man beispielsweise Mahout Samsara mit MLlib mischen kann.

Was kann Apache Mahout?

Ein interessanter Bereich für mich sind die „Recommender“. Ein in Mahout entwickelter Algorithmus macht starken Gebrauch von linearer Algebra. Ein zentraler Datentyp in Mahout ist eine verteilte Zeilenmatrix (distributed row matrix). Der erste Schritt in Mahouts „Correlated Cross-Occurrence Multimodal Recommender“-Algorithmus ist eine Art Matrizenmultiplikation. Als Beispiel: Wenn P = Alle vergangenen Käufe von Benutzern – die Zeilen sind Benutzer und die Spalten Produkte – und V = Alle besuchten Produktdetail-Seiten eines Benutzers, würden die meisten Algorithmen mit diesen zwei Datenarten nicht arbeiten. Die Mathematik, die wir brauchen ist P‘P und P‘V. Soweit ich weiß, ist Mahout Samsara die einzige Engine, die beide Rechenoperationen optimiert und in wenigen Codezeilen ausführen kann:

    val drmP = IndexedDataset(pairRDD)
    val drmV = IndexedDataset(pairRDD)
	
    val modelPtP = drmP.t %*% drmP // the optimizer performs the best version of this based on several factors like data size and knowledge that this is a self-join
    val modelPtV = drmP.t %*% drmV // ditto but with the knowledge that this is not a self-join

Hinter dem Algorithmus verbirgt sich noch viel. Aber dieser Kernbestandteil, ein einfaches Konstrukt linearer Algebra, wird von anderen ML-Bibliotheken nicht unterstützt. Denn diese tendieren dazu nur Ende-zu-Ende Algorithmen zu supporten, wohingegen Mahout Samsara die allgemeine Mathematik selbst unterstützt. Das bedeutet nicht, dass andere Bibliotheken nicht ebenfalls implementiert sind (z. B. ALS, SSVD oder PCA). Der Unterschied ist, dass Mahout sich auf die Mathematik konzentriert und demnach zu allen Schritten auf dem Weg zum eigenen Algorithmus oder der eigenen Datenaufbereitungspipeline fähig ist.

Wie sieht die Zukunft für Apache Mahout aus?

Durch die Integration in Zeppelin werden wir eine robuste ML-Typenvisualisierung erhalten und nicht bloß Statistiken. Sämtliche in ggplot oder matplotlib eingebauten Visualisierungen werden mit nativen Mahout-Helper-Funktionen verfügbar sein. Für die Zukunft arbeiten wir bereits an nativen Code-Speedups mit C- und C++-Bibliotheken sowie GPU-Beschleunigung.

 Steckbrief

Name Apache Mahout
Art Machine-Learning-Bibliotheken
Sprachen R-ähnliche DSL
Lizenz Apache 2.0
Home http://mahout.apache.org/
Kontakt https://twitter.com/occam

Faszination Machine Learning – das Interview

JAXenter: Was ist an Machine Learning so faszinierend?

Pat Ferrel: Was nicht? Die Mathematik, die vielfach massive Größe an Daten, Dinge tun, die niemals zuvor möglich waren. Einige Applikationen in „Recommendern“ sind ziemlich nahe dran die Gedanken einer Person zu lesen – sie wissen, was die Person machen wird, bevor sie es macht. Es funktioniert nicht immer, aber wenn es funktioniert, ist es ein bisschen unheimlich. Dann ist da die Zufriedenheit in einem Bereich zu arbeiten, der so ist, wie der Bereich Suche vor 20 Jahren war. „Recommender“ werden ein ebenso großer Entdeckung wie die Suche sein. Wer kann sich die Nutzung von Amazon ohne die praktischen Empfehlungen vorstellen und sogar die Suche ist personalisiert, als Amazons „Behavioral Search“. Jetzt zieht der Rest der Welt gleich. Wenn herkömmliche Unternehmen überleben wollen, müssen sie den Übergang zu „Online“ als einen Schritt zum Technologieunternehmen sehen, nicht bloß zu einem Webunternehmen.

JAXenter: Glaubst du, dass Machinen eines Tages die Welt übernehmen werden? Sind diese Ängste gut begründet?

Pat Ferrel: Natürlich werden sie das. Ich kann Skynet und die Zylonen kaum erwarten, denn wir werden die Götter sein, die sie erschaffen.

JAXenter: Welche Top 3 Blogs/Filme/Bücher kommen dir in den Sinn, wenn jemand mehr über Machine Learning erfahren möchte?

Pat Ferrel: Zwei zentrale Mahout-Commiter haben ein Buch über das Entwerfen von verteilten Algorithmen geschrieben, dass als gutes Einstiegswerk dienen kann: Dmitriy Lyubimov und Andrew Palumbo: „Apache Mahout. Beyond MapReduce„. Für eine informellere und intuitivere Diskussion über einzelne Themen empfehle ich Ted Dunning‘s Minibooks der „Practical Machine Learning“-Reihe. Er schrieb beispielsweise eins namens „Innovations in Recommondation“.

JAXenter: Beende die folgenden Sätze:

Machine Learning wird in 50 Jahren…

…in jedem Ding, jeder Applikation und jedem Service embedded sein, dass eine CPU benutzt.

Wenn Machinen intelligenter als Menschen werden…

…lasse ich sie meine Bugs fixen.

Im Vergleich mit Menschen wird eine Machinen nie…

… die Freude eines gesunden Stuhlgangs kennenlernen. Alternativ: Auf biologische Evolution zur Weiterentwicklung seines Mechanismus warten müssen.

Die Menschheit würde folgende Probleme nie ohne die Hilfe von Machine Learning lösen:

…Ihre organischen Limitierung mithilfe angereicherten, organischen Lernens durch Machine Learning zu transzendieren.

Verwandte Themen:

Geschrieben von
Pat Ferrel
Pat Ferrel
Er ist im Apache Mahout Project Management Committee und baut Systeme für das Maschinelle Lernen für viele Apache-Big-Data-Projekte. Er ist außerdem Committer von Apache PredictionIO.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: