Steckbrief: Machine Learning Tools

Machine Learning mit WEKA: Alles begann, als Java noch in Kinderschuhen steckte

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 WEKA.

Bei dem WEKA-Projekt geht es darum, ein einheitliches Interface für eine Sammlung mehrerer Machine-Learning-Algorithmen anzubieten. Dabei gibt es neben einer grafischen Oberfläche ein Commandline Interface und APIs. WEKA ist in Java implementiert, aber es gibt auch Pakete, die das Scripten in Python oder R erlauben. Es ist außerdem möglich, mit Groovy oder Jython zu programmieren.

Die Entwicklung von WEKA begann schon 1997, als Java selbst noch sehr jung (und langsam) war. Die aktuelle Version WEKA 3.8 erfordert Java 7 oder höher. Die Stärken von WEKA liegen in der Klassifikation: Davon profitieren Applikationen, die eine automatische Datenklassifikation erfordern, aber WEKA unterstützt auch Clustering, Association Rule Mining, Time Series Prediction, Feature Selection und das Erkennen von Anomalien.

Ein paar WEKA-Beispiele

Auf der WEKA-Projektseite gibt es zahlreiche Beispiele. Unter anderem findet sich dort ein Anwendungsbeispiel zur Nutzung von WEKA im Java-Code. Ein einfaches Beispiel ist dieses hier, das ebenfalls auf der Projektseite zu finden ist:

package wekaexamples.classifiers;

import weka.classifiers.bayes.NaiveBayesUpdateable;
import weka.core.Instance;
import weka.core.Instances;
import weka.core.converters.ArffLoader;

import java.io.File;

/**
 * This example trains NaiveBayes incrementally on data obtained
 * from the ArffLoader.
 *
 * @author FracPete (fracpete at waikato dot ac dot nz)
 * @version $Revision$
 */
public class IncrementalClassifier {

  /**
   * Expects an ARFF file as first argument (class attribute is assumed
   * to be the last attribute).
   *
   * @param args        the commandline arguments
   * @throws Exception  if something goes wrong
   */
  public static void main(String[] args) throws Exception {
    // load data
    ArffLoader loader = new ArffLoader();
    loader.setFile(new File(args[0]));
    Instances structure = loader.getStructure();
    structure.setClassIndex(structure.numAttributes() - 1);

    // train NaiveBayes
    NaiveBayesUpdateable nb = new NaiveBayesUpdateable();
    nb.buildClassifier(structure);
    Instance current;
    while ((current = loader.getNextInstance(structure)) != null)
      nb.updateClassifier(current);

    // output generated model
    System.out.println(nb);
  }
}

Das Beispiel trainiert einen naiven Bayes Classifier, indem es Daten aus einer Datei in WEKAs ARFF-Format liest und für jede gelesene Datenzeile das Klassifikationsmodell auf den neuesten Stand bringt.

Wie sieht die Zukunft von WEKA aus?

WEKA 3.8 hat ein Package-Mangement-System und es ist wahrscheinlich, dass WEKA sich vor allem über die Beiträge neuer Packages erweitern wird. So kommen immer neue, lernende Algorithmen und Visualisierungs-Tools dazu. Was das System an sich betrifft, so sind momentan keine Major Changes geplant.

 Steckbrief

Name Waikato Environment for Knowledge Analysis (Weka)
Art Machine Learning Suite
Sprachen Java, Python, R, Groovy, Jython
Lizenz GNU General Public License
Home http://www.cs.waikato.ac.nz/ml/weka/index.html
Kontakt http://www.cs.waikato.ac.nz/ml/people.html

.

Faszination Machine Learning – das Interview

JAXenter: Was ist an Machine Learning so faszinierend?

Eibe Frank: Die Möglichkeit, Muster aus Daten zu extrahieren und diese dann zu nutzen, um Vorhersagen zu machen. Es gibt gute Anwendungsgebiete, wie im medizinischen Bereich, und vielleicht nicht ganz so gute, wie beim direkten Marketing.

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

Eibe Frank: So weit ich weiß, ist niemand nur annähernd so weit, das Geheimnis des Bewusstseins zu lüften. Solange Maschinen nur das tun, was ihnen befohlen wird – ob mit oder ohne Performance-Optimierung mit Machine Learning – sind wir sicher. Zumindest so lange, bis die führende Elite die ganze Maschinerie für Anderes missbrauchen.

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

Eibe Frank: Einen einfachen Einstieg in das praktische Machine Learning bietet Data Mining: Practical Machine Learning Tools and Techniques von I.H. Witten et al. Davon wird eine vierte Edition im Laufe dieses Jahres erscheinen. Darin wird Material zum Thema Deep Learning und Probabilistic Modelling enthalten sein. Disclaimer: Ich bin einer der Co-Autoren.

JAXenter: Beende die folgenden Sätze:

Machine Learning wird in 50 Jahren …

… allgegenwärtig sein.

Wenn Machinen intelligenter als Menschen werden …

… müssen wir neue Wege finden uns zu beschäftigen, denn viele Jobs werden nicht mehr existieren.

Im Vergleich mit Menschen wird eine Machinen nie …

… Menschen sind biologische Maschinen, diesen Satz kann ich nicht beenden.

Die Menschheit würde nie ohne die Hilfe von Machine Learning  …

… in der Lage sein, die großen Mengen an Daten, die heutzutage gesammelt werden, auch zu nutzen.

Eibe Frank ist Associate Professor am Department of Computer Science an der Universität Waikato in Neuseeland.  Er ist dort seit 1996, zuerst als Doktorand, und dann als Fakultätsmitglied. Vorher machte er ein Diplom in Informatik an der Universität Karlsruhe (dem jetzigen KIT). Er ist aktiv an der Entwicklung der WEKA Software beteiligt und programmierte die ersten Komponenten für WEKA als Doktorand in 1997. Sein Hauptarbeitsgebiet ist das maschinelle Lernen und seine Anwendungen.

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

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: