# 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.