We are happy to announce the following changes/features:
**Wrapper Query Strategies:**
- FR: Addition of the pool-based query strategy wrapper `SubSamplingWrapper`, which allows subsampling a smaller set of sample candidates to accelerate the sample selection via `query` (cf. 349).
- FR: Addition of the pool-based query strategy wrapper `ParallelUtilityEstimationWrapper`, which allows parallelizing the utility computation across the sample candidates via `joblib`. As a requirement, the utility computation must be independent between the candidate samples (cf. 402).
**Query Strategies:**
- FR: Addition of the pool-based query strategy `RegressionTreeBasedAL`, which leverages a regression tree to select samples for regression tasks (cf. 371).
- FR: Addition of the pool-based query strategy `CoreSet`, which leverages `kmeans++` to select diverse samples. Originally, this strategy has been designed for classification tasks. Yet, it can also be used in the context of regression (cf. 281).
- FR: Addition of the pool-based query strategy `TypiClust`, which leverages `kmeans` to balance the trade-off between diversity and representativeness (typicality) of samples. Originally, this strategy has been designed for classification tasks. Yet, it can also be used in the context of regression (cf. 364).
- FR: Addition of the pool-based query strategy `Badge`, which leverages `kmeans++` in the gradient space of the last linear layer of a classification neural network. Thereby, its sample selection balances the trade-off between diverse and uncertain samples.
- FR: Addition of the pool-based query strategy `GreedyBALD`, which performs a `top-k` selection for the utilities computed according to BALD (cf. 323).
- BUG: Fix the issue of estimators outputting zero probabilities, raising warnings when computing log probabilities in `BatchBALD.`
- BUG: Fix the handling of `candidates` in the multi-annotator pool-based query strategy wrapper `SingleAnnotatorWrapper` (cf. 404) and ensure that `missing_label` the wrapper and the wrapped single-annotator query strategy match (cf. 405).
**Estimators:**
- FR: `SklearnClassifier,` `SklearnClassifier,` and `SlidingWindowClassifier` have `match_signature` as new decorators for the methods to enforce the correct mapping between the parameter signature between the wrapper's methods and the wrapped estimator's methods (cf. 375).
**Tutorials:**
- FR: Add a tutorial showcasing query strategies suited for deep learning tasks in combination with self-supervised models to extract self-supervised sample features (cf. 282).
**Requirements:**
- FR: Update of supported Python versions to 3.9, 3.10, 3.11, and 3.12 (cf. 378, 416). The requirements are updated accordingly.
- FR: Removed upper bounds in requirements to avoid undesired downgrades of packages. Still, a guaranteed working installation can be enforced via `max_requirements.txt`.
- FR: Add `makefun` as a new requirement to match signatures when using wrappers (cf. 375).
- FR: Implement automatic dependency check via dependabot (cf. 302, 314).
**Tests:**
- Add and use new test templates for classifiers, regressors, stream-based query strategies, and budget managers (cf. 303).
**Documentation:**
- FR: Add note that outputs of the query strategy examples are given at the bottom of each example (cf. 304).
**Continuous Integration:**
- FR: Addition of automatic formatting check via `black` (cf. 301).
- FR: Parallelize example generation to speed up the CI process (cf. 306).
**Full Changelog**:
- https://github.com/scikit-activeml/scikit-activeml/compare/0.4.1...0.5.0