Source-linked AI summary
Scikit-Multiflow: A Multi-output Streaming Framework
Jacob Montiel, Jesse Read, Albert Bifet, Talel Abdessalem
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 · showhide
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.