# Process-Oriented Stream Classification Pipeline: A Literature Review
## 2 Background and Stream Classification Pipeline
### Definition and Requirements of Data Stream Classification  
Classification is a supervised learning technique for solving decision problems [6]. To avoid confusion with non-stream classification scenarios, we use the terms static or offline for traditional classification, while we use the terms stream-based or online when talking about the in-time processing of data streams.  
The overall goal of classification is to assign one or more (see Section 5.2) discrete classes to an observation. For this purpose, a model is trained on a set \(S=\{(\vec{x}_{1},y_{1}),\ldots,(\vec{x}_{n},y_{n})\}\) of \(n\) labeled observations. Such as in common literature, \(\vec{x}_{i}=(x_{i1},\ldots,x_{ip})\in\mathcal{X}\) defines the feature vector of the \(i\)-th observation, \(i\in\{1,\ldots,n\}\), with \(\mathcal{X}\) being the \(p\)-dimensional feature space. Depending on the space, the features are said to be either numerical (\(x_{ij}\in\mathbb{R}\)), ordinal or categorical (\(\vec{x}_{ij}\in\{r_{1},\ldots,r_{m}\}\) for some \(m>0\)), respectively. Moreover, \(y_{i}\in\mathcal{Y}\) indicates the corresponding class label from the finite set \(\mathcal{Y}:=\{C_{1},\ldots,C_{l}\}\) of \(l\) classes.  
This labeled--so-called training data--is used to construct a classification model or discriminator \(D:\mathcal{X}\times\Theta\rightarrow\mathcal{Y}\), which ideally predicts the correct class label \(D(\vec{x})\in\mathcal{Y}\) for a previously unseen observation \(\vec{x}\in\mathcal{X}\) with a high likelihood. Here, \(\Theta\) defines a parameter space that is specific to the considered learning algorithm. The performance of a classification model is usually evaluated by applying the model to and assessing it on a set of labeled instances, which has not been used during the training procedure itself.  
In contrast to _static_ classification problems, the goal of a stream classification algorithm is to classify data points that are continuously arriving. Thus, the algorithm consists of an online phase, in which it operates on the incoming data stream \(S=\{(\vec{x}_{1},y_{1}),(\vec{x}_{2},y_{2}),\ldots\}\). Observations in the data stream follow the formal definition of the offline scenario but come in a temporal order. According to the literature on basic stream (classification) algorithms, a data stream is a continuous, ordered, and potentially unbounded sequence of observations. Data points can arrive at high speed [1].  
Since data streams are assumed too large to fit entirely into the main memory, new observations (or batches) have to be processed and discarded afterward [1]. All operations on data thus must be highly efficient, since only a limited amount of computational memory is available. The model must be feasible to predict labels of new incoming observations at any point in time without a high temporal delay, even when the data stream changes, e.g., caused by new incoming classes or changing feature space.  
In literature, it is assumed that only a limited number of labeled data points are available for training. This goes with practical application scenarios, where human coders label a subset of the data to build an automated classification model. Coming to the stream setting, it is often assumed that newly labeled observations occasionally arrive, such that the model needs to adapt itself to changes in the data stream in a continuous manner. This is in contrast to the classical static classification scenarios, in which models are set up once at the beginning (based on a batch of training data) and remain fixed. Thus, stream classification aims to train a continuous sequence of classification models.