# Core Concepts¶

Consider a continuous stream of data $$A=\{(\vec{x}_t,y_t)\} | t = 1,\ldots,T$$ where $$T \rightarrow \infty$$. $$\vec{x}_t$$ is a feature vector and $$y_t$$ the corresponding target where $$y$$ is continuous in the case of regression and discrete for classification. The objective is to predict the target $$y$$ for an unknown $$\vec{x}$$. Two target_values are considered in binary classification, $$y\in \{0,1\}$$, while $$K>2$$ labels are used in multi-label classification, $$y\in \{1,\ldots,K\}$$. For both binary and multi-label classification only one class is assigned per instance. On the other hand, in multi-output learning $$y$$ is a target_values vector and $$\vec{x}_i$$ can be assigned multiple-target_values at the same time.

Different to batch learning, where all data is available for training $$train(X, y)$$; in stream learning, training is performed incrementally as new data is available $$train(\vec{x}_i, y_i)$$. Performance $$P$$ of a given model is measured according to some loss function that evaluates the difference between the set of expected labels $$Y$$ and the predicted ones $$\hat{Y}$$.

Hold-out evaluation is a popular performance evaluation method where tests are performed in a separate test set. Prequential-evaluation or interleaved-test-then-train evaluation, is a popular performance evaluation method for the stream setting, where tests are performed on new data before using it to train the model.