Suche
Interview mit Albert Bifet

MOA: Maschinelles Lernen für das Internet der Dinge

Kypriani Sinaris

© 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 MOA.

JAXenter: Welche Idee steckt hinter MOA?

Albert Bifet: MOA ist eine Open-Source-Software für das Maschinelle Lernen bzw. das Data Mining an Daten-Streams in Echtzeit. In so einem Setting treffen Daten kontinuierlich ein und müssen effizient hinsichtlich der Zeit und des Speicherplatzes bearbeitet werden. Ein Beispiel dafür sind die Daten, die von Devices im Internet of Things (IoT) produziert werden. Wir müssen berücksichtigen, dass Daten sich verändern können und somit unsere Modelle kontinuierlich aktualisieren.

JAXenter: Erzähl uns doch etwas mehr darüber, was das Projekt unter der Haube hat: Welche Sprache verwendet es? In welchem Kontext wird MOA angewendet?

Albert Bifet: MOA wurde in Java entwickelt und kann problemlos mit WEKA und Adams verwendet werden. MOA ist für die Benutzung mit großen, sich entwickelnden Datensets und Data Streams geeignet.

JAXenter: Kannst du uns ein Beispiel zeigen? 

Albert Bifet: Scala ist eine leistungsfähige Sprache mit Ressourcen für die funktionelle Programmierung. Die Ausführung in der Java Virtual Machine macht es ziemlich einfach, MOA-Objekte in Scala zu benutzen.

Schauen wir uns einmal ein Beispiel unter Verwendung des Scala Interactive Interpreter an. Den müssen wir zuerst starten und  angeben, wo die MOA Library ist:

scala -cp moa.jar

Welcome to Scala version 2.9.2.
Type in expressions to have them evaluated.
Type :help for more information.

Nun wollen wir ein einfaches Experiment mit einem Decision Tree (Hoeffding Tree) durchführen. Dazu verwenden wir Daten, die von einem Artificial Stream Generator (RandomRBFGenerator) erzeugt werden. Zuerst müssen die benötigten Klassen sowie der Stream und der Learner importiert werden.

scala> import moa.classifiers.trees.HoeffdingTree
import moa.classifiers.trees.HoeffdingTree

scala> import moa.streams.generators.RandomRBFGenerator
import moa.streams.generators.RandomRBFGenerator

scala> val learner = new HoeffdingTree();
learner: moa.classifiers.trees.HoeffdingTree =
Model type: moa.classifiers.trees.HoeffdingTree
model training instances = 0
model serialized size (bytes) = -1
tree size (nodes) = 0
tree size (leaves) = 0
active learning leaves = 0
tree depth = 0
active leaf byte size estimate = 0
inactive leaf byte size estimate = 0
byte size estimate overhead = 0
Model description:
Model has not been trained.

scala> val stream = new RandomRBFGenerator();
stream: moa.streams.generators.RandomRBFGenerator =

Als nächstes werden der Stream und der Classifier initialisiert:

scala> stream.prepareForUse()
scala> learner.setModelContext(stream.getHeader())
scala> learner.prepareForUse()<

Jetzt laden wir eine Instanz aus dem Stream und verwenden sie, um den Decision Tree zu trainieren:

scala> import weka.core.Instance
import weka.core.Instance

scala> val instance = stream.nextInstance()
instance: weka.core.Instance = 0.210372,1.009586,0.0919,0.272071,
0.450117,0.226098,0.212286,0.37267,0.583146,0.297007,class2

scala> learner.trainOnInstance(instance)

Und zum Schluss nutzen wir ihn nun, um eine Vorhersage zu erstellen:

scala> learner.getVotesForInstance(instance)
res9: Array[Double] = Array(0.0, 0.0)

scala> learner.correctlyClassifies(instance)
res7: Boolean = false

Wie dieses Beispiel zeigt, ist es ziemlich einfach, MOA interaktiv laufen zu lassen, indem man den Scala Interpreter verwendet.

JAXenter: Was hält die Zukunft für MOA bereit?

Albert Bifet: Wir möchten weiterhin neue Methoden zu MOA hinzufügen und Entwicklern und Wissenschaftlern bei der Erstellung besserer Algorithmen helfen.

JAXenter: Was ist so spannend am Maschinellen Lernen?

Albert Bifet: Spannend am Maschinellen Lernen ist, dass es in der nahen Zukunft dazu verwendet werden kann, Neues aus Datensätzen zu lernen, die so groß sind, dass sie heutzutage nicht verwendet werden können.

JAXenter: Glaubst du, dass Maschinen irgendwann die Weltherrschaft übernehmen werden? Sind solche Befürchtungen begründet?

Albert Bifet: Nein, das ist bisher reine Science Fiction.

JAXenter: Welche drei Blogs/Bücher/Filme fallen dir zuerst ein, wenn jemand sagt, dass er gern mehr über maschinelles Lernen erfahren möchte?

Albert Bifet: Ich würde die folgenden Bücher empfehlen: The Master Algorithm von Pedro Domingos und Data Mining:Practical Machine Learning Tools and Techniques von Ian Witten, Eibe Frank, and Mark Hall. Außerdem empfehle ich die Website KDnuggets.

Steckbrief

Name Massive On-line Analysis (MOA)
Art Data Mining Framework
Sprachen Java, Scala
Lizenz GNU General Public License
Home http://moa.cms.waikato.ac.nz/
Kontakt http://moa.cms.waikato.ac.nz/people/

JAXenter: Bitte ergänze die folgenden Sätze:

In 50 Jahren wird Maschinelles Lernen…

… immer noch in den Kinderschuhen stecken.

Wenn Maschinen intelligenter werden als Menschen, dann…

… werden Menschen glücklichere und längere Leben führen.

Im Vergleich zu einem Menschen wird eine Maschine niemals…

… das Nichtstun genießen.

Ohne das maschinelle Lernen wird die Menschheit niemals in der Lage sein,…

… Krebs zu heilen.

Albert Bifet

Albert Bifet

Albert Bifet ist Privatdozent an der Telecom ParisTech und wissenschaftlicher Mitarbeiter der WEKA Machine Learning Group an der Universität Waikato. Zuvor hat er im Noah’s Ark Lab von Huawei in Hong Kong gearbeitet, sowie in den Yahoo Labs in Barcelona, an der Universität Waikato und an der UCP BarcelonaTech. Außerdem hat er ein Buch zum Thema “Adaptive Stream Mining: Pattern Learning and Mining from Evolving Data Streams” geschrieben. Albert Bifet ist einer der Leiter von MOA und der Apache SAMOA Software Environments zur Implementierung von Algorithmen und Durchführung von Experimenten mit dem Online-Lernen aus sich entwickelnden Datenströmen. Er fungiert als Co-Chair des Industrial Track der IEEE MDM 2016, der ECML PKDD 2015, der BigMine (2015, 2014, 2013, 2012) und des ACM SAC Data Streams Track (2016, 2015, 2014, 2013,
2012).

.

.

Verwandte Themen:

Geschrieben von
Kypriani Sinaris
Kypriani Sinaris
Kypriani Sinaris studierte Kognitive Linguistik an der Goethe Universität Frankfurt am Main. Seit 2015 ist sie Redakteurin bei JAXenter und dem Java Magazin.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.