Repository navigation
The first public FST4 release. Feature Selection Toolbox 4 is a C++17 header-only library and command-line tool that finds near-optimal or provably optimal subsets of a large set under any subset-quality criterion: built-in feature selection filters and wrappers, your own C++ criterion class, or an external program used as a set function. Sequential, floating, oscillating and stochastic search heuristics (near-optimal), Branch & Bound and exhaustive search (provably optimal under a monotone criterion); deterministic and bit-identical at any thread count.
- License: GNU AGPL-3.0 (version 3 only), with a commercial-license option — see LICENSING.md.
- Start here: the introductory tour, the README, the full release notes, and the project site https://fst.utia.cz.
- The budgeted stochastic (sampled) sequential search, a new principal component of FST4 and one of the main contributions of this release, is described in arXiv:2608.01502.
Version history at a glance
Publishing as v4.2 implies a 4.0 and a 4.1: those are internal development milestones — v4.2 is the first published FST4 version (the last public release of the toolbox was FST3). What distinguishes them:
- 4.0 — the modernization. FST3's codebase brought to C++17 (Boost dependency removed), header-only, CMake-only; the
fst4command-line tool making the whole toolbox usable without writing C++; one merged implementation per search algorithm (sequential vs. threaded execution chosen by an injected evaluation engine, not by class choice); a full-codebase audit fully adjudicated; the byte-exact golden-output regression harness as the release gate; optional Eigen cross-validation of the linear-algebra core. - 4.1 — very-high-dimensional selection. The budgeted stochastic (sampled) sequential step evaluator with per-step evaluation cost independent of dimensionality; threaded evaluation made bit-identical to sequential at matched seed (sampled steps and streaming searches alike); the multinomial logistic-regression classifier; the SFFS frontier bound (
--sffs-delta); DAF ranking consolidated to the published 2011 method plus opt-in pairwise group statistics; the cross-platform PRNG shim making seeded runs reproducible across Windows/macOS; ready-to-run parity configs for every published FST3 demo. - 4.2 — the practitioner wrapper expansion. Wrapper metrics beyond accuracy (balanced accuracy, F1, AUC, per-class cost weights, R²/RMSE/MAE); five new deterministic dependency-free wrapper models (Random Forest, linear SVM, RBF kernel SVM, ridge regression, LDA) plus the external-classifier bridge AND the external-criterion/set-function layers; LibSVM thereby demoted to an optional extension (and no longer distributed, per licensing policy); candidate-level threading for all B&B variants and the hybrid/ensemble step evaluators (every search and evaluator now threadable, bit-identical to sequential); the kNN decision-rule unification; the reliability hardening pass behind all of it.
What the 4.2 notes cover
The 4.2 section of RELEASE_NOTES.md details, in this order: the wrapper expansion; leakage-free normalization (--scaler-fit train); CSV input and ARFF robustness; the behavior changes of 4.2 (golden-recaptured); small fixes and hygiene; the three reliability passes (the 4.2 review, the second review pass, the live-code cleanup); and the distribution and repository shape.
Verification
The byte-exact golden-output regression gate (tests/golden.sh, 112 scenarios including the slow tier) passes on this tree on Linux arm64, macOS arm64 and Windows x64 with the per-platform baselines shipped in tests/.
Build
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel --target fst4
build/bin/fst4 --data data/wdbc_30.trn --criterion gmahalanobis --search sfs --target-d 7 --validate knnC++17 compiler and CMake 3.16 or newer; no other dependencies. LibSVM and Eigen are optional extensions (see libsvm/readme.txt and the README).