Details

MOA currently supports stream classification, stream clustering, outlier detection and recommender systems. We are working on extending MOA to support other mining tasks on data streams such as frequent pattern mining or change detection and concept drift. If you have any suggestions, wishes, contributions or ideas, do not hesitate to contact us!

Stream Classification

  • Data Sources or Streams: ARFF Reader, Random Tree Generator, SEA Concepts Generator, STAGGER Concepts Generator, Rotating Hyperplane, Random RBF Generator, LED Generator, Waveform Generator, and Function Generator.
  • Classifiers: Naive Bayes,  Hoeffding Tree, Hoeffding Option Tree, Hoeffding Adaptive Tree, Bagging, Boosting, Bagging using ADWIN, Leveraging Bagging, SGD, Perceptron, SPegasos.
  • Evaluation procedures for Data Streams: Holdout and Interleaved Test-Then-Train or Prequential

All details can be found here.

Stream Clustering

All details can be found here.

Outlier Detection

All details can be found here.

Recommender Systems

All details can be found here.

Extending MOA

Here we just want to give a short example of how to easily extend MOA with a new learning algorithm. New methods are added to the framework via reflections on start up.

To add a new stream classifier algorithm, implement the Classifier.java interface with the following three main methods

void resetLearningImpl(): a method for initializing a classifier learner
void trainOnInstanceImpl(Instance): a method to train a new instance
double[] getVotesForInstance(Instance): a method to obtain the prediction result

To add a new stream clustering algorithm, implement the Clusterer.java interface with the following three main methods

void resetLearningImpl(): a method for initializing a clusterer learner
void trainOnInstanceImpl(Instance): a method to train a new instance
Clustering getClusteringResult(): a method to obtain the current clustering result for evaluation or visualization