Source-linked AI summary

Scikit-Multiflow: A Multi-output Streaming Framework

Jacob Montiel, Jesse Read, Albert Bifet, Talel Abdessalem

arXiv:1807.04662v1cs.LGstat.ML

TL;DR

Stream learning lacks a Python framework that connects it with established machine-learning tools and supports multi-output research. scikit-multiflow addresses this gap with a Python framework combining stream-learning methods, generators, evaluators, and integrations inspired by scikit-learn, MOA, and MEKA. It provides an open-source platform intended to facilitate and democratize stream-learning research.

  • Problem

    The paper addresses the lack of a Python stream-learning framework that interacts with established tools and supports multi-output and multi-label learning.

  • Method

    The authors introduce a Python multi-output, multi-label, and data-stream framework containing stream generators, learners, change detectors, and evaluators.

  • Results

    scikit-multiflow provides a common Python platform connecting stream-learning research with scikit-learn, MOA, and MEKA.

  • Takeaways & Limitations

    The framework brings stream learning closer to the Python machine-learning community and provides tools to facilitate stream-learning research.

Abstract

from arXiv · show

Scikit-multiflow is a multi-output/multi-label and stream data mining framework for the Python programming language. Conceived to serve as a platform to encourage democratization of stream learning research, it provides multiple state of the art methods for stream learning, stream generators and evaluators. scikit-multiflow builds upon popular open source frameworks including scikit-learn, MOA and MEKA. Development follows the FOSS principles and quality is enforced by complying with PEP8 guidelines and using continuous integration and automatic testing. The source code is publicly available at https://github.com/scikit-multiflow/scikit-multiflow.

1. Introduction

scikit-multiflow is a Python framework that bridges stream-learning communities and extends open-source machine-learning tools with methods and utilities for research.

  • scikit-multiflow provides a Python platform for multi-output, multi-label, and data-stream learning.
  • The framework bridges research communities around scikit-learn, MOA, and MEKA while bringing stream learning closer to the Python machine-learning community.
  • Its objectives are to fill the gap for a Python stream-learning framework and provide tools that facilitate stream-learning research.
  • The framework complements scikit-learn’s batch-learning focus and supports use in Jupyter Notebooks with an emphasis on user familiarity.
  • Available components include stream generators, learners, change detectors, and prequential or hold-out evaluators.

2. Notation and background

Stream learning processes an ongoing sequence incrementally, while multi-output learning predicts multiple targets and evaluation can use hold-out or prequential testing.

  • A stream is modeled as feature-target pairs arriving over T →∞, with continuous targets for regression and discrete targets for classification.
  • Multi-output learning represents the target as a vector, allowing one instance to receive multiple targets simultaneously.
  • Unlike batch learning, stream learning trains incrementally on each newly available instance rather than on all data at once.
  • Hold-out evaluation tests on a separate test set, whereas prequential evaluation tests new data before using it for training.

3. Architecture

The architecture centers on StreamModel objects that connect data streams with evaluators, supporting batch or incremental training, prediction, and continuous performance tracking.

  • StreamModel is scikit-multiflow’s base class and defines interfaces for fitting, incremental fitting, prediction, and class-probability calculation.
  • A StreamModel interacts with a Stream that supplies data and an optional StreamEvaluator that trains, tests, and tracks performance.
  • The prequential workflow sequences model training, testing, and performance tracking on streaming data.

4. Development

scikit-multiflow is developed and distributed according to FOSS practices, with public code, documentation, version control, continuous integration, and automatic testing.

  • The framework is distributed under the BSD License and follows FOSS development principles.
  • Development resources include documentation, a user platform, git version control, a public GitHub repository, and a user guide.
  • Continuous integration and automatic testing enforce package deployment and software quality.
Loading 1807.04662v1…