26-05-2012, 12:09 PM
A command-line primer
WekaManual-3-7-3.pdf (Size: 5.03 MB / Downloads: 32)
Introduction
While for initial experiments the included graphical user interface is quite suf-
ficient, for in-depth usage the command line interface is recommended, because
it offers some functionality which is not available via the GUI - and uses far
less memory. Should you get Out of Memory errors, increase the maximum
heap size for your java engine, usually via -Xmx1024M or -Xmx1024m for 1GB -
the default setting of 16 to 64MB is usually too small. If you get errors that
classes are not found, check your CLASSPATH: does it include weka.jar? You
can explicitly set CLASSPATH via the -cp command line option as well.
We will begin by describing basic concepts and ideas. Then, we will describe
the weka.filters package, which is used to transform input data, e.g. for
preprocessing, transformation, feature generation and so on.
Then we will focus on the machine learning algorithms themselves. These
are called Classifiers in WEKA. We will restrict ourselves to common settings
for all classifiers and shortly note representatives for all main approaches in
machine learning.
Afterwards, practical examples are given.
Finally, in the doc directory of WEKA you find a documentation of all java
classes within WEKA. Prepare to use it since this overview is not intended to
be complete. If you want to know exactly what is going on, take a look at the
mostly well-documented source code, which can be found in weka-src.jar and
can be extracted via the jar utility from the Java Development Kit (or any
archive program that can handle ZIP files).
. A COMMAND-LINE PRIMER
Basic concepts
Dataset
A set of data items, the dataset, is a very basic concept of machine learning. A
dataset is roughly equivalent to a two-dimensional spreadsheet or database table.
In WEKA, it is implemented by the weka.core.Instances class. A dataset is
a collection of examples, each one of class weka.core.Instance. Each Instance
consists of a number of attributes, any of which can be nominal (= one of a
predefined list of values), numeric (= a real or integer number) or a string (= an
arbitrary long list of characters, enclosed in ”double quotes”). Additional types
are date and relational, which are not covered here but in the ARFF chapter.
The external representation of an Instances class is an ARFF file, which consists
of a header describing the attribute types and the data as comma-separated list.
Here is a short, commented example. A complete description of the ARFF file
format can be found here.
Classifier
Any learning algorithm inWEKA is derived from the abstract weka.classifiers.AbstractClassifier
class. This, in turn, implements weka.classifiers.Classifier. Surprisingly
little is needed for a basic classifier: a routine which generates a classifier model
from a training dataset (= buildClassifier) and another routine which eval-
uates the generated model on an unseen test dataset (= classifyInstance), or
generates a probability distribution for all classes (= distributionForInstance).
A classifier model is an arbitrary complex mapping from all-but-one dataset
attributes to the class attribute. The specific form and creation of this map-
ping, or model, differs from classifier to classifier. For example, ZeroR’s (=
weka.classifiers.rules.ZeroR) model just consists of a single value: the
most common class, or the median of all numeric values in case of predicting a
numeric value (= regression learning). ZeroR is a trivial classifier, but it gives a
lower bound on the performance of a given dataset which should be significantly
improved by more complex classifiers. As such it is a reasonable test on how
well the class can be predicted without considering the other attributes.
weka.filters
The weka.filters package is concerned with classes that transform datasets –
by removing or adding attributes, resampling the dataset, removing examples
and so on. This package offers useful support for data preprocessing, which is
an important step in machine learning.
All filters offer the options -i for specifying the input dataset, and -o for
specifying the output dataset. If any of these parameters is not given, standard
input and/or standard output will be read from/written to. Other parameters
are specific to each filter and can be found out via -h, as with any other class.
The weka.filters package is organized into supervised and unsupervised
filtering, both of which are again subdivided into instance and attribute filtering.
We will discuss each of the four subsections separately.